diff --git a/.astro/types.d.ts b/.astro/types.d.ts index 03d7cc4..f964fe0 100644 --- a/.astro/types.d.ts +++ b/.astro/types.d.ts @@ -1,2 +1 @@ /// -/// \ No newline at end of file diff --git a/cspell.json b/cspell.json index 360f6e3..23b822c 100644 --- a/cspell.json +++ b/cspell.json @@ -12,6 +12,7 @@ "pnpm-lock.yaml" ], "words": [ + "astropub", "astrojs", "Bluesky", "Devries", diff --git a/package.json b/package.json index 2000ec8..87a56fd 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "dependencies": { "@astrojs/check": "0.9.4", "@astrojs/vercel": "^8.0.7", + "@astropub/md": "^1.0.0", "@fontsource-variable/inter": "^5.1.1", "@fontsource-variable/josefin-sans": "^5.1.1", "@fontsource-variable/urbanist": "^5.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e6732bf..7bca966 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@astrojs/vercel': specifier: ^8.0.7 version: 8.0.7(astro@5.3.0(@types/node@22.13.4)(jiti@2.4.2)(rollup@4.34.8)(typescript@5.7.3)(yaml@2.7.0))(rollup@4.34.8) + '@astropub/md': + specifier: ^1.0.0 + version: 1.0.0(@astrojs/markdown-remark@6.1.0) '@fontsource-variable/inter': specifier: ^5.1.1 version: 5.1.1 @@ -169,6 +172,11 @@ packages: '@astrojs/yaml2ts@0.2.2': resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} + '@astropub/md@1.0.0': + resolution: {integrity: sha512-++urcyulQogbLAF0VC2rEp6qLUfnRX9iaDREAkN1su9fF8V84DVaMHbQXn7qqQ27wYT5AVVeoK+4+vggYYVbQg==} + peerDependencies: + '@astrojs/markdown-remark': ^5 + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -3671,6 +3679,10 @@ snapshots: dependencies: yaml: 2.7.0 + '@astropub/md@1.0.0(@astrojs/markdown-remark@6.1.0)': + dependencies: + '@astrojs/markdown-remark': 6.1.0 + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 diff --git a/src/assets/glyphs/dropdown.svg b/src/assets/glyphs/dropdown.svg new file mode 100644 index 0000000..54a81f8 --- /dev/null +++ b/src/assets/glyphs/dropdown.svg @@ -0,0 +1,13 @@ + + + diff --git a/src/components/Header.astro b/src/components/Header.astro index 75364c9..73b75aa 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -23,6 +23,7 @@ function hrefProps(pathname: string) { About Articles CFP + FAQs Shop Travel About Articles CFP + FAQs Shop Travel + + - + {description} diff --git a/src/pages/cfp.astro b/src/pages/cfp.astro index 5831263..fea8a4d 100644 --- a/src/pages/cfp.astro +++ b/src/pages/cfp.astro @@ -243,6 +243,10 @@ const topicAreas = [ Apply to the CFP here! + + + See FAQs > CFP for answers to common questions. + @@ -259,4 +263,8 @@ const topicAreas = [ .apply-button-bottom { margin: 3.5rem auto 0; } + + .faq-link { + margin-top: 3.5rem; + } diff --git a/src/pages/faqs.astro b/src/pages/faqs.astro new file mode 100644 index 0000000..112731d --- /dev/null +++ b/src/pages/faqs.astro @@ -0,0 +1,252 @@ +--- +import { markdown } from "@astropub/md"; +import { Image } from "astro:assets"; + +import dropdown from "~/assets/glyphs/dropdown.svg"; +import BodyText from "~/components/BodyText.astro"; +import ContentArea from "~/components/ContentArea.astro"; +import Heading from "~/components/Heading.astro"; +import Hero from "~/components/hero/Hero.astro"; +import HeroContentsStandard from "~/components/hero/HeroContentsStandard.astro"; +import { links } from "~/data/links"; +import PageLayout from "~/layouts/PageLayout.astro"; + +const description = + "Common questions and answers around attending, speaking at, and sponsoring SquiggleConf 2025."; + +const title = "Frequently Asked Questions"; + +type FAQSection = [string, [string, string][]]; + +const faqs: FAQSection[] = [ + [ + "General", + [ + ["How big is SquiggleConf?", "We're targeting 200 total attendees."], + [ + "What is the dress code for SquiggleConf?", + "Casual. T-shirt and jeans, optionally with a hoodie, is fine for all genders.", + ], + [ + "Will there be alcohol at SquiggleConf?", + "There will be no alcohol provided during any SquiggleConf events, including talks, workshops, and social events.", + ], + ], + ], + [ + "Schedule", + [ + [ + "What events are you planning?", + await markdown(` +We will let you know soon! This is partially dependent on corporate sponsorships. Subscribe to the newsletter to be the first to know! + + + +At the very least, SquiggleConf will include: + +- Social events for all attendees around the conference +- Breaks and breakout sessions during the conference +- Spaces to ask speakers questions and network with other attendees + `), + ], + ], + ], + [ + "Sessions", + [ + [ + "How can I ask speakers questions?", + await markdown(`Talks have time reserved for live Q&A. Additionally, each session has a channel in Discord where you can ask questions. + + We'd also encourage you to find them in-person between sessions and start conversations. They're friendly people.`), + ], + [ + "Will talks be recorded?", + "Yes! Talks will be made available online for free after the conference.", + ], + [ + "Will workshops be recorded?", + "No, if we hold workshops this year, they will be intended as a live in-person experience.", + ], + ], + ], + [ + "Tickets", + [ + [ + "Do you have bulk purchasing and/or group options?", + await markdown( + `Yes! See the [tickets purchase link](${links.tickets}) for the options.`, + ), + ], + [ + "If I can't afford a full ticket, is there a way for me to come?", + await markdown( + `Yes! See [How to Attend SquiggleConf for Free](/articles/how-to-attend-squiggleconf-for-free).`, + ), + ], + [ + "What does or doesn't a ticket include?", + await markdown( + ` +Your ticket gets you: + +- Access to all attendee social events before, during, and after the conference +- Complete access to all talks +- Light beverages and snacks through the conference days +- One "swag bag" with branded apparel and items + +Note that talk tickets _do not_ include: + +- Meals, including lunch at Faneuil Hall Marketplace +- Travel to or from the conference + `, + ), + ], + [ + "What is your refund policy?", + await markdown( + "Full refunds. If you can't make it, please let us know - we can work with you. Do not come to SquiggleConf if you have any COVID symptoms.", + ), + ], + [ + "Will there be ticket sales at the door?", + await markdown( + "No. All tickets will be sold online. We also cannot guarantee tickets will be available day-of.", + ), + ], + ], + ], +] as const; +--- + + + + + {description} + + + + + + Got questions not covered here? Reach out, we'd be happy to talk! + questions@squiggleconf.com + + + + { + faqs.map(([title, section]) => ( + + + {title} + + {section.map(([question, answer]) => ( + + + {question} + + + {answer} + + ))} + + )) + } + + + + + + + + + + +