diff --git a/cspell.json b/cspell.json index 42c16dd..7cc01b5 100644 --- a/cspell.json +++ b/cspell.json @@ -8,43 +8,27 @@ "*.svg" ], "words": [ - "Afficianado", - "Autometics", - "Axosoft", - "Cernicova", - "Excalidraw", - "Extism", - "FAANG", - "FOSS", - "Faneuil", - "Fiberplane", - "Harborside", - "Instabase", - "Katerina", - "Livecoder", - "Livestream", - "MBTA", - "Pinterest", - "Rizèl", - "SQUOCT", - "Simons", - "Skroumpelou", "_epichunter", "aakansha", + "Afficianado", "allowfullscreen", "anonrig", "astro", "astrojs", "astropub", + "Autometics", + "Axosoft", "blackgirlbytes", "bluesky", "bootcamp", "bostonts", "cernicova", + "Cernicova", "codesandbox", "contejas", "danvdk", "danvk", + "datastax", "devrel", "devs", "dimitri", @@ -52,21 +36,33 @@ "doshi", "dragomir", "dragomirtitian", + "Excalidraw", + "Extism", + "FAANG", + "Faneuil", "farrelly", + "Fiberplane", "fontsource", + "FOSS", "fosstodon", "griffing", + "Harborside", "igalia", "inngest", + "Instabase", "josefin", "joshuakgoldberg", "jsparty", + "Katerina", "keturakis", "kless", "knip", "konami", "konamimojisplosion", "laurynas", + "Livecoder", + "Livestream", + "MBTA", "michigantypescript", "mitropoulos", "murg", @@ -77,12 +73,17 @@ "nowrap", "openjs", "packagejson", + "Pinterest", "plone", "psyber", "referrerpolicy", "rizel", + "Rizèl", "scarlett", + "Simons", + "Skroumpelou", "squiggleconf", + "SQUOCT", "sugaroverflow", "sylwia", "tejas", diff --git a/src/assets/logos/icon-wifi.svg b/src/assets/logos/icon-wifi.svg new file mode 100644 index 0000000..df91b52 --- /dev/null +++ b/src/assets/logos/icon-wifi.svg @@ -0,0 +1,11 @@ + + + diff --git a/src/assets/qr/discord.png b/src/assets/qr/discord.png new file mode 100644 index 0000000..20d6daa Binary files /dev/null and b/src/assets/qr/discord.png differ diff --git a/src/assets/sponsors/datastax-black.svg b/src/assets/sponsors/datastax-black.svg new file mode 100644 index 0000000..2e6d68e --- /dev/null +++ b/src/assets/sponsors/datastax-black.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/sponsors/datastax-white.svg b/src/assets/sponsors/datastax-white.svg new file mode 100644 index 0000000..e902ae0 --- /dev/null +++ b/src/assets/sponsors/datastax-white.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/components/DeepBlueSea.astro b/src/components/DeepBlueSea.astro index 4a6781d..f4a237f 100644 --- a/src/components/DeepBlueSea.astro +++ b/src/components/DeepBlueSea.astro @@ -30,6 +30,15 @@ const { class: className, light = "bottom", unmasked, ...rest } = Astro.props; text-align: center; } + .deep-blue-sea-bottom, + .deep-blue-sea-top { + --squiggleMask: radial-gradient( + circle at center, + transparent 10%, + #000 80% + ); + } + .deep-blue-sea-bottom { background: linear-gradient( 180deg, @@ -38,14 +47,21 @@ const { class: className, light = "bottom", unmasked, ...rest } = Astro.props; ); } - .deep-blue-sea-contrast { - background: linear-gradient(180deg, #197297 0%, var(--colorHeroShadow) 40%); - } - .deep-blue-sea-top { background: linear-gradient(180deg, #104f69 0%, var(--colorHeroShadow) 90%); } + .deep-blue-sea-contrast { + background: linear-gradient(180deg, #197297 0%, var(--colorHeroShadow) 40%); + --squiggleMask: linear-gradient( + to bottom, + #000 30%, + rgba(0, 0, 0, 0.15) 40%, + rgba(0, 0, 0, 0.25) 70%, + transparent 100% + ); + } + .squiggles { bottom: 0; left: 0; @@ -56,7 +72,7 @@ const { class: className, light = "bottom", unmasked, ...rest } = Astro.props; } .squiggles:not(.squiggles-unmasked) { - mask-image: radial-gradient(circle at center, transparent 10%, #000 80%); + mask-image: var(--squiggleMask); } .squiggle { diff --git a/src/components/SponsorLogos.astro b/src/components/SponsorLogos.astro new file mode 100644 index 0000000..105dbae --- /dev/null +++ b/src/components/SponsorLogos.astro @@ -0,0 +1,125 @@ +--- +import _ from "lodash"; +import { Image } from "astro:assets"; + +import { sponsorsBySlug } from "~/data/sponsors"; + +const sponsorGroups = _.groupBy( + Object.values(sponsorsBySlug), + (sponsor) => sponsor.placement, +); + +interface Props { + light?: boolean; + size?: "normal" | "small"; +} + +const { size = "normal", light } = Astro.props; +--- + +
+ { + Object.values(sponsorGroups).map((sponsors) => ( + + )) + } +
+ + diff --git a/src/components/Sponsors.astro b/src/components/Sponsors.astro index 66f50d7..838264e 100644 --- a/src/components/Sponsors.astro +++ b/src/components/Sponsors.astro @@ -1,17 +1,10 @@ --- import _ from "lodash"; -import { Image } from "astro:assets"; - -import { sponsorsBySlug } from "~/data/sponsors"; import BodyText from "./BodyText.astro"; import FullSection from "./FullSection.astro"; import HeadingFlanked from "./HeadingFlanked.astro"; - -const sponsorGroups = _.groupBy( - Object.values(sponsorsBySlug), - (sponsor) => sponsor.placement, -); +import SponsorLogos from "./SponsorLogos.astro"; --- @@ -21,36 +14,7 @@ const sponsorGroups = _.groupBy( have our sincere appreciation and thanks. -
- { - Object.values(sponsorGroups).map((sponsors) => ( - - )) - } -
+
diff --git a/src/pages/badge/back.astro b/src/pages/badge/back.astro index 3524c30..b0b6f36 100644 --- a/src/pages/badge/back.astro +++ b/src/pages/badge/back.astro @@ -5,22 +5,90 @@ import "@fontsource/urbanist"; import "~/layouts/base.css"; import "~/layouts/normalize.css"; -import Heading from "~/components/Heading.astro"; +import qrDiscord from "~/assets/qr/discord.png"; +import SponsorLogos from "~/components/SponsorLogos.astro"; import BadgeLayout from "~/layouts/BadgeLayout.astro"; +import { Image } from "astro:assets"; --- - hi +
+ +
+
diff --git a/src/pages/badge/front.astro b/src/pages/badge/front.astro index 9a69bbb..dee07f1 100644 --- a/src/pages/badge/front.astro +++ b/src/pages/badge/front.astro @@ -8,21 +8,29 @@ import "~/layouts/normalize.css"; import Heading from "~/components/Heading.astro"; import SquiggleFlanked from "~/components/SquiggleFlanked.astro"; import BadgeLayout from "~/layouts/BadgeLayout.astro"; +import BodyArea from "~/components/BodyArea.astro"; const name = Astro.url.searchParams.get("name"); const role = Astro.url.searchParams.get("role"); --- - - {name?.split(/\s+/g).map((line) =>
{line}
)} -
-
+ + + {name?.split(/\s+/g).map((line) =>
{line}
)} +
+
+
{role}