diff --git a/src/components/top/Sponsors.astro b/src/components/top/Sponsors.astro new file mode 100644 index 0000000..715cebe --- /dev/null +++ b/src/components/top/Sponsors.astro @@ -0,0 +1,91 @@ +--- +import SectionTitle from "../ui/SectionTitle.astro"; +import SponsorList from "./sponsor/SponsorList.astro"; +import GopherList from "./sponsor/GopherList.astro"; +import { + goldSponsors, + silverSponsors, + drinkSponsors, + lunchSponsors, + bronzeSponsors, + gopherSponsors, + toolSponsors, +} from "./sponsors"; + +if ( + goldSponsors.length === 0 && + silverSponsors.length === 0 && + drinkSponsors.length === 0 && + lunchSponsors.length === 0 && + bronzeSponsors.length === 0 && + gopherSponsors.length === 0 && + toolSponsors.length === 0 +) { + return null; +} +--- + +
+ + + ポンサー + + + + + Goルド + + シルバー + ドリンク + ランチ + ブロンズ + Gopher + ツールスポンサー +
+ + diff --git a/src/components/top/sponsor/Dialog.astro b/src/components/top/sponsor/Dialog.astro new file mode 100644 index 0000000..4afd6c9 --- /dev/null +++ b/src/components/top/sponsor/Dialog.astro @@ -0,0 +1,135 @@ +--- +import { Image } from "astro:assets"; +import type { Sponsor } from "../sponsors"; +import Tag from "../../ui/Tag.astro"; +import TextLink from "../../ui/TextLink.astro"; + +import CloseIcon from "../../../assets/icons/close.svg"; + +interface Props { + openId: string; + sponsorSectionTitle: string; + sponsor: Sponsor; +} + +const { openId, sponsorSectionTitle, sponsor } = Astro.props; +--- + + + + diff --git a/src/components/top/sponsor/GopherList.astro b/src/components/top/sponsor/GopherList.astro new file mode 100644 index 0000000..81ed663 --- /dev/null +++ b/src/components/top/sponsor/GopherList.astro @@ -0,0 +1,90 @@ +--- +import { Image } from "astro:assets"; +import type { Sponsor } from "../sponsors"; + +interface Props { + sponsors: Sponsor[]; +} + +const { sponsors } = Astro.props; + +if (sponsors.length === 0) { + return null; +} +--- + + + + diff --git a/src/components/top/sponsor/SponsorList.astro b/src/components/top/sponsor/SponsorList.astro new file mode 100644 index 0000000..cbacc17 --- /dev/null +++ b/src/components/top/sponsor/SponsorList.astro @@ -0,0 +1,157 @@ +--- +import { Image } from "astro:assets"; +import type { Sponsor } from "../sponsors"; +import Dialog from "./Dialog.astro"; + +interface Props { + size: "learge" | "medium" | "small"; + sponsors: Sponsor[]; + dialogSectionTitle?: string; +} + +const { size, sponsors, dialogSectionTitle } = Astro.props; + +const sizeMap = { + learge: { width: 532, height: 280 }, + medium: { width: 354, height: 164 }, + small: { width: 208, height: 100 }, +}; + +const { width, height } = sizeMap[size]; + +if (sponsors.length === 0) { + return null; +} +--- + + + + diff --git a/src/components/top/sponsors.ts b/src/components/top/sponsors.ts new file mode 100644 index 0000000..9050c99 --- /dev/null +++ b/src/components/top/sponsors.ts @@ -0,0 +1,77 @@ +import type { ImageMetadata } from "astro"; + +export type Sponsor = { + name: string; + imageSrc: ImageMetadata; + dialog?: { + openId: string; + link: string; + description: string; + }; +}; + +import img1 from "../../assets/footer_logo.svg"; +import img2 from "../../assets/page-header-gopher.png"; + +export const goldSponsors: Sponsor[] = [ + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold1", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold2", link:"", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold3", link:"http://localhost:4321", description: ""}}, + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold4", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold5", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "gold sponsor", imageSrc: img1 ,dialog:{openId:"gold6", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, +]; + +export const silverSponsors: Sponsor[] = [ + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver1", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver2", link:"", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver3", link:"http://localhost:4321", description: ""}}, + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver4", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver5", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "silver sponsor", imageSrc: img1 ,dialog:{openId:"silver6", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, +]; + +export const lunchSponsors: Sponsor[] = [ + { name: "lunch sponsor", imageSrc: img1 ,dialog:{openId:"lunch1", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "lunch sponsor", imageSrc: img1 ,dialog:{openId:"lunch2", link:"", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + +]; + +export const drinkSponsors: Sponsor[] = [ + { name: "drink sponsor", imageSrc: img1 ,dialog:{openId:"drink1", link:"http://localhost:4321", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, + { name: "drink sponsor", imageSrc: img1 ,dialog:{openId:"drink2", link:"", description: "dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description. dummy description."}}, +]; + +export const bronzeSponsors: Sponsor[] = [ + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, + { name: "bronze sponsor", imageSrc: img1 }, +]; + +export const gopherSponsors: Sponsor[] = [ + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, + { name: "gopher sponsor", imageSrc: img2 }, +]; + +export const toolSponsors: Sponsor[] = [ + { name: "tool sponsor", imageSrc: img1 }, +]; diff --git a/src/components/ui/Tag.astro b/src/components/ui/Tag.astro new file mode 100644 index 0000000..2819055 --- /dev/null +++ b/src/components/ui/Tag.astro @@ -0,0 +1,23 @@ +--- +type Props = { + text: string; +}; + +const { text } = Astro.props as Props; +--- + +
+ {text} +
+ + diff --git a/src/components/ui/TextLink.astro b/src/components/ui/TextLink.astro index 89cc9be..d9c6608 100644 --- a/src/components/ui/TextLink.astro +++ b/src/components/ui/TextLink.astro @@ -7,6 +7,7 @@ type Props = { isBlankLink?: boolean; withArrowIcon?: boolean; text: string; + isAccentColor?: boolean; }; const { @@ -14,6 +15,7 @@ const { isBlankLink = false, withArrowIcon = false, text, + isAccentColor = false, } = Astro.props as Props; --- @@ -21,6 +23,7 @@ const { href={href} target={isBlankLink ? "_blank" : undefined} rel={isBlankLink ? "noopener noreferrer" : undefined} + data-accent={isAccentColor || undefined} > {text} {isBlankLink && } @@ -39,6 +42,10 @@ const { width: 100%; } + a[data-accent] { + color: var(--text-accent); + } + a:hover { color: var(--text-accent); } diff --git a/src/pages/index.astro b/src/pages/index.astro index abd914e..caa7429 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,6 +3,7 @@ import About from "../components/top/About.astro"; import MainVisual from "../components/top/MainVisual.astro"; import SponsorRecruitment from "../components/top/SponsorRecruitment.astro"; import News from "../components/top/News.astro"; +import Sponsors from "../components/top/Sponsors.astro"; import Layout from "../layouts/Layout.astro"; --- @@ -12,5 +13,6 @@ import Layout from "../layouts/Layout.astro"; +