{"version":3,"file":"static/chunks/app/contact/page-0e7c3920c9a9feb2.js","mappings":"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","sources":["webpack://_N_E/?1360","webpack://_N_E/./src/hooks/use-throttled-effect.ts","webpack://_N_E/./src/components/Link/ButtonLink.tsx","webpack://_N_E/./src/app/contact/LabeledInput.tsx","webpack://_N_E/./src/app/contact/ContactForm.tsx","webpack://_N_E/./src/app/contact/FaqList.helpers.ts","webpack://_N_E/./src/app/contact/FaqList.tsx","webpack://_N_E/./src/app/contact/FaqProvider.tsx","webpack://_N_E/./src/components/ButtonPlayful/ButtonPlayful.tsx","webpack://_N_E/./src/components/ButtonPlayful/index.ts","webpack://_N_E/./src/components/FadeIn/FadeIn.tsx","webpack://_N_E/./src/components/FadeIn/index.ts","webpack://_N_E/./src/components/Icons/IconDismiss.tsx","webpack://_N_E/./src/components/JericaMascot/JericaMascot.tsx","webpack://_N_E/./src/components/SkipNav/SkipNav.tsx","webpack://_N_E/./src/components/Toast/Toast.tsx","webpack://_N_E/./src/components/Toast/index.ts","webpack://_N_E/./src/app/contact/CSSMascotIllustration.linaria.module.css","webpack://_N_E/./src/app/contact/ContactClouds.linaria.module.css","webpack://_N_E/./src/app/contact/ContactForm.linaria.module.css","webpack://_N_E/./src/app/contact/FaqList.linaria.module.css","webpack://_N_E/./src/app/contact/LabeledInput.linaria.module.css","webpack://_N_E/./src/app/contact/page.linaria.module.css","webpack://_N_E/./src/components/ButtonPlayful/ButtonPlayful.linaria.module.css","webpack://_N_E/./src/components/FadeIn/FadeIn.linaria.module.css","webpack://_N_E/./src/components/Icons/IconDismiss.linaria.module.css","webpack://_N_E/./src/components/JericaMascot/JericaMascot.linaria.module.css","webpack://_N_E/./src/components/Link/ButtonLink.linaria.module.css","webpack://_N_E/./src/components/SkipNav/SkipNav.linaria.module.css","webpack://_N_E/./src/components/Toast/Toast.linaria.module.css","webpack://_N_E/./src/helpers/mdx-mappings/contact-faq.components.linaria.module.css"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/vercel/path0/node_modules/.pnpm/next@15.1.3_@babel+core@7.24.6_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f99473_henqbhbmro4if2cwhftw2bam2a/node_modules/next/dist/client/image-component.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/node_modules/.pnpm/next@15.1.3_@babel+core@7.24.6_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f99473_henqbhbmro4if2cwhftw2bam2a/node_modules/next/dist/client/script.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/app/contact/ContactForm.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/app/contact/FaqList.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/app/contact/FaqProvider.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Aside/Aside.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Browsers/ExcludingChrome.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Browsers/FirefoxOnly.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Browsers/SafariOnly.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/ClickToReveal/ClickToReveal.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/CodeSnippet/AnnotatedContainer.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/CodeSnippet/CodeWrapper.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/app/contact/CSSMascotIllustration.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Asterisk/Asterisk.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Blockquote/Blockquote.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/CodeSnippet/WithCopyButton.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"SectionHeading\",\"SectionSubHeading\",\"SectionSubSubHeading\"] */ \"/vercel/path0/src/components/ContentHeading/ContentHeading.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ContentImage/ContentImage.helpers.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ContentImage/DynamicImage.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ContentImage/ContentImage.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ContentErrorMessage/ContentErrorMessage.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Chunk/Chunk.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/ContentImage/ToggleableGifImage.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/ContentNewsletterSignup/ContentNewsletterSignup.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/CycleTextOnClick/CycleTextOnClick.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Divider/Divider.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/EpilepsyWarning/EpilepsyWarning.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconBluesky.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconColorMode.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconRSS.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconSearch.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Icons/IconSpeaker.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/InlineCode/InlineCode.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ContentGrids/FullWidthChild.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/ColorModeContainer/ColorModeContainer.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/app/contact/page.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/JericaMascot/JericaMascot.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Keys/MetaKey.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Keys/OptionAltKey.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Keys/OptionShiftKey.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Link/Link.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Link/UnclickableLink.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\",\"ListItem\"] */ \"/vercel/path0/src/components/List/List.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/MotionWarning/MotionWarning.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/OverscrollColor/OverscrollColor.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Paragraph/Paragraph.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Playground/index.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/RenderWhenOnscreen/RenderWhenOnscreen.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/Sandbox/index.ts\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SideBySide/SideBySide.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/MaxWidthWrapper/MaxWidthWrapper.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Logo/Logo.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/Affirmation.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FooterLink.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/FooterCategoryList.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/app/contact/ContactClouds.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/FooterNewsletterForm.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteFooter/IconLink.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/SiteHeader/SiteHeader.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"SkipNavTrigger\",\"SkipNavTarget\"] */ \"/vercel/path0/src/components/SkipNav/SkipNav.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Sparkles/Sparkles.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SquigglyLine/SquigglyLine.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Spacer/Spacer.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Spicy/Spicy.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Term/Term.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/Link/TextLink.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/TimeRemaining/index.ts\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\",\"Popover\"] */ \"/vercel/path0/src/components/Tooltip/Tooltip.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/helpers/mdx-mappings/contact-faq.components.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\" */ \"/vercel/path0/src/components/SiteFooter/SiteFooter.linaria.module.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/vercel/path0/src/components/VideoGif/VideoGif.tsx\");\n","import * as React from 'react';\n\nfunction useThrottledEffect(\n callback: Function,\n dependencies: Array,\n throttleBy: number = 100\n) {\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n\n const lastRun = React.useRef(null);\n\n React.useEffect(() => {\n // For the very first time, we want to run the callback immediately\n if (lastRun.current === null) {\n lastRun.current = Date.now();\n callbackRef.current();\n return;\n }\n\n const elapsed = Date.now() - lastRun.current;\n\n if (elapsed > throttleBy) {\n lastRun.current = Date.now();\n callbackRef.current();\n } else {\n const timeout = setTimeout(() => {\n lastRun.current = Date.now();\n callbackRef.current();\n }, throttleBy - elapsed);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n}\n\nexport default useThrottledEffect;\n","import { styled } from '@linaria/react';\n\nimport { WarningAside } from '@/components/Aside';\n\nexport const ButtonLink = styled.button`\n display: inline;\n color: inherit;\n height: 1.5em;\n font-weight: var(--font-weight-medium);\n text-decoration: none;\n box-shadow: 0px 1.5px 0px var(--color-primary);\n transition: 200ms box-shadow;\n will-change: transform;\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n\n html[data-color-mode='light'] ${WarningAside} & {\n box-shadow: 0px 1.5px 0px var(--color-warning-700);\n }\n\n strong & {\n font-weight: inherit;\n }\n\n /* Double the selector so that it overrides dark/light styles */\n &:hover&:hover {\n box-shadow: 0px 0px 0px transparent;\n }\n\n &:focus-visible {\n outline: 2px auto var(--color-primary);\n outline-offset: 4px;\n }\n\n &:has(> code) {\n box-shadow: 0px 0px 0px transparent;\n }\n`;\n\nexport default ButtonLink;\n","import React from 'react';\nimport { styled } from '@linaria/react';\n\ninterface Props extends React.InputHTMLAttributes {\n as?: 'input' | 'textarea';\n label: string;\n value: string;\n setValue: React.Dispatch>;\n}\n\nfunction LabeledInput({\n as,\n label,\n value,\n setValue,\n style = {},\n ...delegated\n}: Props) {\n const id = React.useId();\n\n return (\n
\n \n ) =>\n setValue(event.target.value)\n }\n style={{\n minHeight: as === 'textarea' ? '14rem' : undefined,\n ...style,\n }}\n {...delegated}\n />\n
\n );\n}\n\nconst Label = styled.label`\n display: block;\n margin-bottom: 0.25rem;\n font-size: 1rem;\n color: var(--color-gray-900);\n transform: translateX(-1px);\n`;\n\nconst Input = styled.input`\n display: block;\n width: 100%;\n /* Don’t allow textareas to be resized beyond the container */\n max-width: 100%;\n border: 1px solid var(--color-gray-300);\n border-radius: 2px;\n font-size: 1rem;\n padding: 4px 8px;\n outline-color: var(--color-primary);\n outline-offset: 4px;\n`;\n\nexport default LabeledInput;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { ArrowRight, AlertTriangle } from 'lucide-react';\n\nimport { RECAPTCHA_PUBLIC_KEY } from '@/constants';\nimport {\n generateFullName,\n generateEmailDomain,\n} from '@/helpers/fake-data.helpers';\nimport { delay } from '@/utils';\nimport useThrottledEffect from '@/hooks/use-throttled-effect';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\nimport Toast from '@/components/Toast';\nimport ButtonPlayful from '@/components/ButtonPlayful';\nimport Spinner from '@/components/Spinner';\nimport TextLink from '@/components/Link/TextLink';\nimport ButtonLink from '@/components/Link/ButtonLink';\n\nimport LabeledInput from './LabeledInput';\nimport { FaqContext } from './FaqProvider';\n\nconst MSG_KEY = 'contact-message';\ntype Status = 'idle' | 'submitting' | 'success' | 'error';\n\nfunction ContactForm(props: React.HTMLAttributes) {\n const [name, setName] = React.useState('');\n const [email, setEmail] = React.useState('');\n const [message, setMessage] = React.useState('');\n\n const { relevantMatches, setRelevantMatches } =\n React.useContext(FaqContext);\n\n const relevantMatchesRef = React.useRef(relevantMatches);\n React.useEffect(() => {\n relevantMatchesRef.current = relevantMatches;\n }, [relevantMatches]);\n\n const [status, setStatus] = React.useState('idle');\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n React.useEffect(() => {\n const savedMessageData = window.localStorage.getItem(MSG_KEY);\n if (!savedMessageData) {\n return;\n }\n\n const { name, email, message } = JSON.parse(savedMessageData);\n\n setName(name);\n setEmail(email);\n setMessage(message);\n }, []);\n\n React.useEffect(() => {\n window.localStorage.setItem(\n MSG_KEY,\n JSON.stringify({ name, email, message })\n );\n }, [name, email, message]);\n\n // Check and see if their message is answered by one of the frequently asked questions\n useThrottledEffect(\n () => {\n async function runEffect() {\n // If they’ve erased their whole message, unset the suggestions\n if (message.trim().length < 3) {\n setRelevantMatches([]);\n return;\n }\n\n try {\n const response = await fetch(\n '/api/contact-page-answer-relevance',\n {\n method: 'POST',\n body: JSON.stringify({ messageText: message }),\n }\n );\n\n const json = await response.json();\n\n // If there are any matches, set them.\n // NOTE: This logic means that if their message *stops* matching a previous match, that stale match will still be shown. This is because in testing, it was annoying for the suggestion to appear/disappear over and over. I'd rather show a stale suggestion than a flickering one.\n if (json.relevantMatches?.length > 0) {\n setRelevantMatches(json.relevantMatches);\n }\n } catch (err) {\n // Ignore errors, since this is a nice-to-have feature.\n }\n }\n\n runEffect();\n },\n [message],\n 1000\n );\n\n const [namePlaceholder] = React.useState(generateFullName);\n const [emailPlaceholder] = React.useState(() => {\n const name = namePlaceholder.match(/^Dr\\./)\n ? 'the-doctor'\n : namePlaceholder.split(' ')[0].toLowerCase();\n const domain = generateEmailDomain();\n\n return `${name}@${domain}`;\n });\n\n async function handleSubmit(\n event: React.FormEvent\n ) {\n event.preventDefault();\n\n setStatus('submitting');\n\n const startAt = Date.now();\n\n // @ts-ignore\n const { grecaptcha } = window;\n\n if (!grecaptcha) {\n setStatus('error');\n return;\n }\n\n grecaptcha.enterprise.ready(async () => {\n try {\n const token = await grecaptcha.enterprise.execute(\n RECAPTCHA_PUBLIC_KEY,\n { action: 'CONTACTFORM' }\n );\n\n const res = await fetch('/api/contact-josh', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ name, email, message, token }),\n });\n\n const duration = Date.now() - startAt;\n\n // If the submission happens *too* fast, it feels like maybe it didn't work. Wait a minimum amount of time.\n const MIN_TIME = 1000;\n if (duration < MIN_TIME) {\n await delay(MIN_TIME - duration);\n }\n\n if (res.ok) {\n setStatus('success');\n setName('');\n setEmail('');\n setMessage('');\n } else {\n setStatus('error');\n }\n } catch (err) {\n // If there's a network failure or whatever, we'll end up here.\n setStatus('error');\n }\n });\n }\n\n return (\n \n
\n \n \n \n \n \n \n \n \n \n\n {relevantMatches.length > 0 && (\n \n )}\n\n \n Send message\n \n \n\n {status === 'success' && (\n setStatus('idle')}\n popTimeout={0}\n >\n Your message has been delivered. Thanks for reaching out!\n \n )}\n {status === 'error' && (\n setStatus('idle')}\n popTimeout={0}\n >\n Unfortunately, your message could not be delivered. Sorry\n about that! Please send your message to{' '}\n \n support@joshwcomeau.com\n \n .\n \n )}\n
\n );\n}\n\nfunction RelevanceIndicator({\n relevantMatches,\n prefersReducedMotion,\n}: {\n relevantMatches: Array;\n prefersReducedMotion: boolean;\n}) {\n if (relevantMatches?.length === 0) {\n return null;\n }\n\n let copy =\n relevantMatches.length === 1 ? (\n <>\n It looks like your message is related to one of the\n {\n const elem = document.querySelector(\n `[data-faq-slug=\"${relevantMatches[0]}\"]`\n ) as HTMLDetailsElement | null;\n\n if (!elem) {\n return;\n }\n\n elem.open = true;\n\n elem.scrollIntoView({\n behavior: prefersReducedMotion ? 'instant' : 'smooth',\n block: 'start',\n });\n }}\n >\n Frequently Asked Questions\n \n . Please give it a quick read, if you haven’t already. ❤️\n \n ) : (\n <>\n It looks like your message is related to some of the{' '}\n Frequently Asked Questions! The relevant\n questions have been highlighted.\n \n );\n\n return (\n \n \n \n {copy}\n \n If you still have questions afterwards, feel free to reach\n out!\n \n \n \n );\n}\n\nconst Wrapper = styled.div`\n --red: hsl(0deg 85% 70%);\n --blue: hsl(210deg 85% 65%);\n --blue-darker: hsl(225deg 40% 20%);\n\n margin-inline: calc(var(--stripe-border-width) * -1);\n background: repeating-linear-gradient(\n 45deg,\n var(--red) 0px 15px,\n white 15px 25px,\n var(--blue) 25px 40px,\n white 40px 50px\n );\n padding: var(--stripe-border-width);\n border-radius: 8px;\n border: 2px solid white;\n box-shadow:\n 0px 1px 2px hsl(0deg 0% 0% / 0.1),\n 0px 2px 4px hsl(0deg 0% 0% / 0.1),\n 0px 4px 8px hsl(0deg 0% 0% / 0.1);\n`;\n\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background: white;\n border-radius: 4px;\n container-type: inline-size;\n`;\n\nconst Row = styled.div`\n display: flex;\n gap: 16px;\n\n @container (max-width: 330px) {\n display: block;\n }\n`;\n\nconst Column = styled.div`\n flex: 1;\n`;\n\nconst RelevanceWrapper = styled.div`\n --color-primary: var(--color-warning-500);\n display: flex;\n gap: 12px;\n padding: 12px;\n border-radius: 4px;\n background: var(--color-warning-100);\n animation: fadeIn 400ms;\n\n svg {\n flex-shrink: 0;\n color: var(--color-primary);\n }\n`;\n\nconst RelevanceContent = styled.p`\n && {\n font-size: 0.875rem;\n margin: 0;\n text-align: left;\n animation: fadeIn 400ms 300ms both;\n\n &:first-child {\n margin-bottom: 1em;\n }\n }\n`;\n\nexport default ContactForm;\n","export const LINE_DATA = [\n {\n plus: {\n x1: 6,\n y1: 12,\n x2: 18,\n y2: 12,\n },\n flat: {\n x1: 8,\n y1: 12,\n x2: 16,\n y2: 12,\n },\n chevron: {\n x1: 6,\n y1: 9,\n x2: 12,\n y2: 15,\n },\n },\n {\n plus: {\n x1: 12,\n y1: 18,\n x2: 12,\n y2: 6,\n },\n flat: {\n x1: 8,\n y1: 12,\n x2: 16,\n y2: 12,\n },\n chevron: {\n x1: 12,\n y1: 15,\n x2: 18,\n y2: 9,\n },\n },\n];\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\nimport { FaqContext } from './FaqProvider';\nimport { LINE_DATA } from './FaqList.helpers';\n\ninterface Faq {\n slug: string;\n frontmatter: {\n question: string;\n };\n content: React.ReactNode;\n}\n\ninterface Props {\n data: Array;\n}\n\nfunction FaqList({ data }: Props) {\n const { openItems, relevantMatches, toggleItem } =\n React.useContext(FaqContext);\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n return (\n \n {data.map((faq) => (\n \n ))}\n \n );\n}\n\ninterface FaqItemProps extends Faq {\n isOpen: boolean;\n isHighlighted: boolean;\n prefersReducedMotion: boolean;\n handleToggle: (slug: string) => void;\n}\n\nconst FaqItem = React.memo(function FaqItem({\n slug,\n frontmatter,\n content,\n isOpen,\n isHighlighted,\n prefersReducedMotion,\n handleToggle,\n}: FaqItemProps) {\n const [isPressed, setIsPressed] = React.useState(false);\n\n const detailsRef = React.useRef(null);\n\n const leftPoints = isPressed\n ? LINE_DATA[0].flat\n : isOpen\n ? LINE_DATA[0].chevron\n : LINE_DATA[0].plus;\n const rightPoints = isPressed\n ? LINE_DATA[1].flat\n : isOpen\n ? LINE_DATA[1].chevron\n : LINE_DATA[1].plus;\n const leftLineSpring = useSpring({\n ...leftPoints,\n config: {\n tension: 300,\n friction: 10,\n clamp: true,\n },\n immediate: prefersReducedMotion,\n });\n const rightLineSpring = useSpring({\n ...rightPoints,\n config: {\n tension: 300,\n friction: 10,\n clamp: true,\n },\n immediate: prefersReducedMotion,\n });\n\n return (\n {\n event.preventDefault();\n handleToggle(slug);\n }}\n >\n {\n setIsPressed(true);\n }}\n onMouseUp={() => {\n setIsPressed(false);\n }}\n >\n \n \n \n \n \n \n \n {frontmatter.question}\n \n \n {content}\n \n \n );\n});\n\nconst ListWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n`;\n\nconst Wrapper = styled.details`\n position: relative;\n list-style: none;\n container-type: inline-size;\n scroll-margin-top: 24px;\n\n &[data-is-highlighted='true'] {\n --selection-background-color: hsl(50deg 100% 78% / 0.75);\n }\n`;\n\nconst Question = styled.summary`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n outline-color: var(--color-primary);\n outline-offset: 8px;\n font-weight: var(--font-weight-medium);\n color: black;\n list-style: none;\n\n /* Hide the caret, since we have our own custom one. This is done differently in Safari vs other browsers. */\n &::marker {\n display: none;\n }\n &::-webkit-details-marker {\n display: none;\n }\n\n ${Wrapper}[data-is-highlighted='true'] &::before {\n content: '';\n position: absolute;\n inset: -15px;\n background: hsl(200deg 100% 97%);\n animation: fadeIn 400ms;\n border-radius: 8px;\n box-shadow:\n 0px 1px 2px hsl(200deg 100% 30% / 0.1),\n 0px 3px 6px hsl(200deg 100% 30% / 0.1);\n }\n\n ${Wrapper}[data-is-highlighted='true'] &:focus-visible {\n outline: none;\n }\n ${Wrapper}[data-is-highlighted='true'] &:focus-visible::before {\n outline: 2px auto var(--color-primary);\n outline-offset: 0px;\n }\n`;\n\nconst Answer = styled(animated.div)`\n font-size: 1rem;\n will-change: transform;\n padding-top: 0.5rem;\n padding-left: calc(2rem + 0.5rem);\n opacity: 0;\n\n &[data-status='open'] {\n animation: enterKeyframeAnimation\n cubic-bezier(0.215, 0.61, 0.355, 1) 600ms forwards;\n\n @keyframes enterKeyframeAnimation {\n from {\n transform: translateY(-10px);\n opacity: 0;\n }\n to {\n transform: translateY(0px);\n opacity: 1;\n }\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n opacity: 1;\n &[data-status='open'] {\n animation: none;\n }\n }\n\n p,\n li {\n font-size: inherit;\n }\n`;\n\nconst IconWrapper = styled.span`\n position: relative;\n flex-shrink: 0;\n display: grid;\n place-content: center;\n width: 2rem;\n height: 2rem;\n`;\n\nconst Background = styled.span`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: var(--color-cloud-500);\n border-radius: 4px;\n transition:\n transform 250ms,\n background 250ms;\n\n @media (prefers-reduced-motion: no-preference) {\n ${Question}:hover & {\n transform: scale(1.125);\n transition: transform 150ms;\n }\n }\n ${Wrapper}[data-is-highlighted='true'] & {\n background: var(--color-warning-300);\n background: lch(85 112.86 83.18);\n }\n`;\n\nconst Svg = styled.svg`\n position: relative;\n`;\n\nconst QuestionText = styled.div`\n position: relative;\n`;\n\nexport default FaqList;\n","/*\n This provider manages the state for the Frequently Asked Questions. It doesn’t load the questions themselves, since this is a Client Component and we need to do that on the server. Instead, it keeps track of which FAQs are open in a map-like object, keyed by slug.\n*/\n'use client';\n\nimport * as React from 'react';\n\nexport const FaqContext = React.createContext<{\n relevantMatches: Array;\n openItems: Record;\n setRelevantMatches: React.Dispatch<\n React.SetStateAction>\n >;\n toggleItem: (slug: string) => void;\n}>({\n openItems: {},\n toggleItem: () => {},\n relevantMatches: [],\n setRelevantMatches: () => {},\n});\n\nfunction FaqProvider({ children }: { children: React.ReactNode }) {\n const [openItems, setOpenItems] = React.useState<\n Record\n >({});\n\n const [relevantMatches, setRelevantMatches] = React.useState<\n Array\n >([]);\n\n const toggleItem = React.useCallback((slug: string) => {\n setOpenItems((currentValue: Record) => ({\n ...currentValue,\n [slug]: !currentValue[slug],\n }));\n }, []);\n\n const contextValue = React.useMemo(() => {\n return {\n openItems,\n toggleItem,\n relevantMatches,\n setRelevantMatches,\n };\n }, [openItems, toggleItem, relevantMatches, setRelevantMatches]);\n\n return (\n \n {children}\n \n );\n}\n\nexport default React.memo(FaqProvider);\n","import * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { animated } from 'react-spring';\n\nimport useBoop from '@/hooks/use-boop';\n\nexport interface Props extends React.ComponentProps<'button'> {\n Icon: any;\n backgroundColor?: string;\n highlightColor?: string;\n iconSide?: 'left' | 'right';\n iconProps?: any;\n boopEffect?: any;\n discouraged?: boolean;\n href?: string;\n textAlign?: 'center' | 'true-center';\n children: React.ReactNode;\n}\n\nconst ButtonPlayful = React.forwardRef(\n function ButtonPlayful(\n {\n Icon,\n iconSide = 'left',\n iconProps = {},\n backgroundColor = 'var(--color-gray-900)',\n highlightColor = 'var(--color-gray-800)',\n boopEffect = { rotation: 10 },\n children,\n style = {},\n discouraged = false,\n href,\n textAlign = 'center',\n ...delegated\n }: Props,\n ref\n ) {\n const [boopStyle, trigger] = useBoop(boopEffect);\n\n return (\n {\n trigger();\n }}\n style={{\n '--background-color': backgroundColor,\n ...style,\n }}\n data-discouraged={discouraged}\n // @ts-ignore\n href={href}\n as={typeof href === 'string' ? 'a' : 'button'}\n {...delegated}\n >\n {Icon && (\n \n \n \n \n \n \n \n )}\n {children && (\n {children}\n )}\n {textAlign === 'true-center' && (\n \n )}\n \n );\n }\n);\n\ninterface WrapperProps {\n style: React.CSSProperties;\n}\n\nconst Wrapper = styled.button`\n --height: 2.625rem;\n display: flex;\n align-items: center;\n border-radius: 4px;\n background: var(--background-color);\n color: var(--text-color, white);\n height: var(--height);\n font-size: 1rem;\n text-decoration: none;\n\n &:focus {\n outline-offset: 3px;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.325;\n }\n\n &[data-discouraged='true'] {\n cursor: not-allowed;\n filter: contrast(0.75) brightness(0.75);\n }\n`;\n\nconst Col = styled.span`\n position: relative;\n height: var(--height);\n width: var(--height);\n`;\n\nconst IconCol = styled(Col)`\n --indent-by: 0.8;\n\n transition: transform 200ms cubic-bezier(0, 0.67, 0.6, 1.24);\n\n ${Wrapper}:active & {\n transform: scale(var(--indent-by));\n transition: transform 0ms;\n }\n\n svg {\n display: block;\n transition: transform 300ms cubic-bezier(0, 0.67, 0.6, 1.24);\n\n ${Wrapper}:active & {\n transform: scale(calc(1 / var(--indent-by)));\n transition: transform 0ms;\n }\n }\n`;\n\nconst IconBox = styled.span`\n position: absolute;\n top: 4px;\n left: 4px;\n right: 4px;\n bottom: 4px;\n display: grid;\n place-content: center;\n border-radius: 2px;\n background: var(--background-color);\n`;\n\nconst IconWrapper = styled(animated.span)`\n display: block;\n`;\n\nconst ChildWrapper = styled.span`\n flex: 1;\n display: flex;\n justify-content: center;\n padding: 0 16px;\n padding-right: calc(16px + 4px);\n font-weight: var(--font-weight-medium);\n font-size: inherit;\n white-space: nowrap;\n`;\n\nexport default ButtonPlayful;\n","export { default } from './ButtonPlayful';\n","import React from 'react';\nimport { styled } from '@linaria/react';\n\ninterface Props extends React.HTMLAttributes {\n duration?: number;\n delay?: number;\n children: React.ReactNode;\n}\n\nconst FadeIn = ({\n duration = 333,\n delay = 0,\n children,\n ...delegated\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nconst Wrapper = styled.div`\n @media (prefers-reduced-motion: no-preference) {\n animation-name: fadeIn;\n animation-fill-mode: backwards;\n }\n`;\n\nexport default FadeIn;\n","export { default } from './FadeIn';\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\nimport {\n getFirstLineProps,\n getThirdLineProps,\n} from './IconHamburger.helpers';\n\ninterface Props extends React.HTMLAttributes {\n size?: number;\n isPressed: boolean;\n isBooped: boolean;\n}\n\nexport function IconDismiss({\n size = 20,\n isPressed,\n isBooped,\n ...delegated\n}: Props) {\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const sharedConfig = {\n tension: 300,\n friction: 16,\n clamp: !!isPressed,\n };\n\n const firstLineProps = useSpring({\n ...getFirstLineProps(\n isPressed && !prefersReducedMotion ? 'closing' : 'open',\n isBooped\n ),\n config: sharedConfig,\n });\n const thirdLineProps = useSpring({\n ...getThirdLineProps(\n isPressed && !prefersReducedMotion ? 'closing' : 'open',\n isBooped\n ),\n config: sharedConfig,\n });\n\n return (\n \n \n \n \n );\n}\n\nconst Svg = styled.svg`\n stroke: currentColor;\n display: block;\n overflow: visible;\n\n line {\n transform-origin: center center;\n }\n`;\n\nexport default IconDismiss;\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { UserPreferencesContext } from '@/components/UserPreferencesProvider';\nimport FadeIn from '@/components/FadeIn';\n\n// I have other moods, but I need to fix the dark mode images before I can use them. See instructions in /images/josh/__README.md\nexport type Mood = 'happy' | 'sad' | 'very-happy' | 'heart-eyes';\n\nexport interface Props extends React.HTMLAttributes {\n colorModeOverride?: 'light' | 'dark';\n mood?: Mood;\n fadeDuration?: number;\n fadeDelay?: number;\n}\n\nfunction JericaMascot({\n colorModeOverride,\n mood = 'happy',\n fadeDuration = 600,\n fadeDelay = 200,\n ...delegated\n}: Props) {\n const isUsingGlobalColorMode = !colorModeOverride;\n\n const { colorMode: globalColorMode } = React.useContext(\n UserPreferencesContext\n );\n\n const colorMode = colorModeOverride || globalColorMode;\n\n return (\n \n \n \n \n \n \n {mood !== 'happy' && (\n \n \n \n \n )}\n \n \n \n \n \n \n {mood !== 'happy' && (\n \n \n \n \n )}\n \n \n );\n}\n\nconst Wrapper = styled(FadeIn)`\n position: relative;\n`;\n\nconst DarkLayer = styled.div`\n position: relative;\n`;\n\nconst LightLayer = styled.div`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: var(--opacity);\n transition: opacity calc(var(--color-swap-duration) + 500ms)\n var(--color-swap-timing-function);\n\n /*\n Ok there's some tricky business here.\n When this component first renders on the server, we don't know what the user’s chosen color mode is. If we specify an override, we don't care, but otherwise, we'll read the global color value from the HTML tag. That way, the correct mascot is shown from the very first paint.\n */\n html[data-color-mode='light'] &[data-use-global-color-mode='true'] {\n opacity: 1;\n }\n html[data-color-mode='dark'] &[data-use-global-color-mode='true'] {\n opacity: 0;\n }\n`;\n\nconst MascotBase = styled.img`\n display: block;\n top: 0;\n left: 0;\n width: 137.5px;\n height: 232px;\n user-select: none;\n pointer-events: none;\n`;\n\nconst Head = styled.img`\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n /* Dragging the face off is SUPER creepy */\n user-select: none;\n pointer-events: none;\n`;\n\nexport default JericaMascot;\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\nconst SKIP_TARGET_ID = `jwc-skip-here`;\n\nexport function SkipNavTrigger({\n children = `Skip to content`,\n}: {\n children?: React.ReactNode;\n}) {\n const [hasAValidTarget, setHasAValidTarget] = React.useState(false);\n\n React.useEffect(() => {\n const target = document.querySelector(`#${SKIP_TARGET_ID}`);\n\n if (!!target !== hasAValidTarget) {\n setHasAValidTarget(!!target);\n }\n // We only want to do this on-mount, because we have no way of knowing when the SkipNavTarget will show up. We assume it's there on mount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // If we've rendered the trigger, but there is no target available, we don't want to show the trigger. Doing so would just be frustrating, since it wouldn't skip anything.\n if (!hasAValidTarget) {\n return null;\n }\n\n return {children};\n}\n\nexport function SkipNavTarget({\n scrollMarginTop = 64,\n}: {\n scrollMarginTop?: number;\n}) {\n return ;\n}\n\nconst Trigger = styled.a`\n position: fixed;\n z-index: 99999;\n top: 32px;\n left: 32px;\n padding: 16px 24px;\n border-radius: 12px;\n background: var(--color-background);\n color: var(--color-text);\n box-shadow:\n 0 -5.9px 2.7px rgba(0, 0, 0, 0.018),\n 0 -1.2px 6.9px rgba(0, 0, 0, 0.024),\n 0 8px 14.2px rgba(0, 0, 0, 0.03),\n 0 21.9px 29.2px rgba(0, 0, 0, 0.039),\n 0 49px 80px rgba(0, 0, 0, 0.07);\n\n /* Visually hidden stuff */\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n position: absolute !important;\n width: 1px;\n\n &:focus {\n width: auto;\n height: auto;\n clip: auto;\n }\n`;\n\nconst Target = styled.div`\n contain: none;\n`;\n","import * as React from 'react';\nimport { styled } from '@linaria/react';\nimport {\n Info,\n AlertTriangle,\n AlertOctagon,\n CheckCircle,\n} from 'lucide-react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { LIGHT_COLORS_RAW } from '@/constants';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\nimport useRequestAnimationFrameLoop from '@/hooks/use-request-animation-frame-loop';\n\nimport IconDismiss from '@/components/Icons/IconDismiss';\nimport { LightWrapper } from '@/components/ColorModeContainer';\nimport VisuallyHidden from '@/components/VisuallyHidden';\nimport InPortal from '@/components/InPortal';\n\nconst ICONS_BY_TYPE = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertOctagon,\n};\n\ninterface Props extends React.HTMLAttributes {\n id?: string;\n type: keyof typeof ICONS_BY_TYPE;\n title: string;\n handleDismiss: () => void;\n popTimeout?: number;\n children: React.ReactNode;\n}\n\nfunction Toast({\n id,\n type,\n title,\n handleDismiss,\n popTimeout = 400,\n children,\n ...delegated\n}: Props) {\n const Icon = ICONS_BY_TYPE[type];\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const [poppedAt, setPoppedAt] = React.useState(\n false\n );\n const [hasBeenInterrupted, setHasBeenInterrupted] =\n React.useState(false);\n\n const [dismissBtnStatus, setDismissBtnStatus] = React.useState<\n 'idle' | 'booped' | 'pressed'\n >('idle');\n\n // `totalTime` will be the number of milliseconds to show the toast for, *or* it will be `null` if the toast should not auto-dismiss.\n const totalTime = 30_000;\n const [timeRemaining, setTimeRemaining] = React.useState(totalTime);\n\n React.useEffect(() => {\n const timeoutId = window.setTimeout(\n () => setPoppedAt(Date.now()),\n popTimeout\n );\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [popTimeout]);\n\n React.useEffect(() => {\n if (dismissBtnStatus !== 'booped') {\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n setDismissBtnStatus('idle');\n }, 150);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [dismissBtnStatus]);\n\n React.useEffect(() => {\n if (!poppedAt) {\n return;\n }\n\n function handleKeyDown(ev: KeyboardEvent) {\n if (ev.key === 'Escape') {\n setPoppedAt(false);\n }\n }\n\n window.addEventListener('keydown', handleKeyDown, {\n capture: true,\n });\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, {\n capture: true,\n });\n };\n }, [poppedAt]);\n\n const isCountingDown =\n typeof poppedAt === 'number' &&\n typeof timeRemaining === 'number' &&\n timeRemaining > 0 &&\n !hasBeenInterrupted;\n\n useRequestAnimationFrameLoop(() => {\n if (typeof poppedAt !== 'number') {\n return;\n }\n const timeElapsed = Date.now() - poppedAt;\n const nextTimeRemaining = Math.max(0, totalTime - timeElapsed);\n\n if (nextTimeRemaining === 0) {\n // We don't want to auto-dismiss *right* away, we want to do it after an additional delay.\n window.setTimeout(() => setPoppedAt(false), 500);\n }\n\n setTimeRemaining(nextTimeRemaining);\n }, isCountingDown);\n\n const style = useSpring({\n from: { transform: 'translateY(150%)' },\n to: {\n transform: poppedAt ? 'translateY(0px)' : 'translateY(150%)',\n },\n config: {\n tension: 350,\n friction: 20,\n mass: 2,\n precision: 0.001,\n },\n immediate: prefersReducedMotion,\n });\n\n const hasPoppedAlready = React.useRef(false);\n const handleDismissRef = React.useRef();\n handleDismissRef.current = handleDismiss;\n\n React.useEffect(() => {\n let timeoutId: number;\n if (poppedAt) {\n hasPoppedAlready.current = true;\n } else if (hasPoppedAlready.current) {\n timeoutId = window.setTimeout(handleDismissRef.current, 500);\n }\n\n return () => window.clearTimeout(timeoutId);\n }, [poppedAt]);\n\n const barScale =\n typeof timeRemaining === 'number' && !hasBeenInterrupted\n ? timeRemaining / totalTime\n : 1;\n\n // success -> colorSuccess500\n const colorName = `color${type[0].toUpperCase()}${type.slice(1)}500`;\n\n return (\n \n {\n setHasBeenInterrupted(true);\n if (typeof delegated.onMouseEnter === 'function') {\n delegated.onMouseEnter(ev);\n }\n }}\n onFocus={(ev) => {\n setHasBeenInterrupted(true);\n if (typeof delegated.onFocus === 'function') {\n delegated.onFocus(ev);\n }\n }}\n data-test=\"toast\"\n data-test-type={type}\n data-test-title={title}\n data-test-body={children}\n data-toast-id={id}\n >\n \n \n \n \n \n
\n {title}\n {typeof children === 'string' ? (\n

{children}

\n ) : (\n children\n )}\n
\n setPoppedAt(false)}\n onMouseEnter={() => setDismissBtnStatus('booped')}\n onMouseLeave={() => setDismissBtnStatus('idle')}\n onMouseDown={() => setDismissBtnStatus('pressed')}\n onMouseUp={() => setDismissBtnStatus('idle')}\n >\n \n Dismiss Toast\n \n \n \n
\n );\n}\n\nconst OuterWrapper = styled.div`\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n padding: 16px;\n display: flex;\n justify-content: center;\n\n @media print {\n display: none;\n }\n`;\n\nconst CloseButton = styled.button`\n color: var(--color-gray-700);\n\n &:hover {\n color: var(--color-text);\n }\n`;\n\nconst Wrapper = styled(LightWrapper)`\n display: flex;\n align-items: center;\n gap: 16px;\n padding-right: 16px;\n box-shadow:\n 0px 2px 4px hsl(0deg 0% 0% / 0.1),\n 0px 4px 8px hsl(0deg 0% 0% / 0.1),\n 0px 8px 16px hsl(0deg 0% 0% / 0.1),\n 0px 16px 32px hsl(0deg 0% 0% / 0.1);\n border-radius: 4px;\n max-width: 600px;\n pointer-events: auto;\n will-change: transform;\n /* Trim corners */\n overflow: hidden;\n overflow: clip;\n\n svg {\n display: block !important;\n }\n`;\n\nconst TimeColumn = styled.div`\n align-self: stretch;\n position: relative;\n width: 6px;\n background: hsl(\n var(--h) calc(var(--s) * 0.675) calc(var(--l) * 0.875)\n );\n\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n height: 100%;\n width: 100%;\n background: linear-gradient(\n to right,\n transparent 50%,\n hsl(var(--h) calc(var(--s) * 0.675) calc(var(--l) * 0.75))\n );\n }\n`;\n\nconst TimeRemaining = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0;\n border-radius: 2px 2px 0 0;\n transform-origin: center bottom;\n background: hsl(from var(--main-color) h s calc(l * 1.1));\n background: hsl(var(--h) var(--s) calc(var(--l) * 1.1));\n\n /* Trim corners of ::after */\n overflow: hidden;\n overflow: clip;\n will-change: transform;\n\n @media (prefers-reduced-motion: no-preference) {\n transform: var(--transform);\n transition: var(--transition);\n }\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 50%;\n background: linear-gradient(\n to bottom,\n hsl(0deg 0% 100% / 0.333),\n hsl(0deg 0% 100% / 0)\n );\n\n @media (prefers-reduced-motion: no-preference) {\n opacity: var(--gradient-opacity);\n transition: opacity 300ms;\n }\n }\n`;\n\nconst Main = styled.div`\n flex: 1;\n padding-top: 12px;\n padding-bottom: 15px;\n\n p {\n margin-bottom: 0.5em;\n font-size: 1rem;\n color: var(--color-gray-800);\n }\n\n p:last-of-type {\n margin-bottom: 0;\n }\n`;\n\nconst Heading = styled.h2`\n font-weight: var(--font-weight-medium);\n font-size: 1rem;\n margin-bottom: 4px;\n`;\n\nexport default Toast;\n","export { default } from './Toast';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fialie\":\"fialie\",\"bcf7ah9\":\"bcf7ah9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sigr403\":\"sigr403\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1yap34s\":\"w1yap34s\",\"f1auxxjm\":\"f1auxxjm\",\"rtx1idc\":\"rtx1idc\",\"chs1dss\":\"chs1dss\",\"r7krwe8\":\"r7krwe8\",\"fadeIn\":\"fadeIn\",\"rzy5uw4\":\"rzy5uw4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"l14gbeqr\":\"l14gbeqr\",\"wuk29qs\":\"wuk29qs\",\"q1j7wadz\":\"q1j7wadz\",\"fadeIn\":\"fadeIn\",\"a9lb8rg\":\"a9lb8rg\",\"enterKeyframeAnimation-a9lb8rg\":\"enterKeyframeAnimation-a9lb8rg\",\"i1kib7c0\":\"i1kib7c0\",\"bwaqr3i\":\"bwaqr3i\",\"si7sm1d\":\"si7sm1d\",\"q1fuq136\":\"q1fuq136\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"l1tq0m1p\":\"l1tq0m1p\",\"ik2yzzn\":\"ik2yzzn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wr52gk3\":\"wr52gk3\",\"m1kq3b8r\":\"m1kq3b8r\",\"m8yktbl\":\"m8yktbl\",\"tautsx7\":\"tautsx7\",\"pficl5p\":\"pficl5p\",\"bhugqdp\":\"bhugqdp\",\"cwv3kmn\":\"cwv3kmn\",\"f1hdg2ug\":\"f1hdg2ug\",\"m1kxqhyy\":\"m1kxqhyy\",\"s1tipats\":\"s1tipats\",\"s7heqy6\":\"s7heqy6\",\"i1cfl1o9\":\"i1cfl1o9\",\"c7byr1x\":\"c7byr1x\",\"d1x3yivn\":\"d1x3yivn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w19mrn5v\":\"w19mrn5v\",\"c1rpf4ut\":\"c1rpf4ut\",\"iwv8n0j\":\"iwv8n0j\",\"i1qpbbb9\":\"i1qpbbb9\",\"i1m1cbkp\":\"i1m1cbkp\",\"c7sw782\":\"c7sw782\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wv8ehy8\":\"wv8ehy8\",\"fadeIn\":\"fadeIn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"s1c9ipa9\":\"s1c9ipa9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wvm4gg4\":\"wvm4gg4\",\"d1qadnsl\":\"d1qadnsl\",\"l1enswin\":\"l1enswin\",\"mr2l5ys\":\"mr2l5ys\",\"hjm134z\":\"hjm134z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"b1sstqy5\":\"b1sstqy5\",\"wcnkszl\":\"wcnkszl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"t1v2vbab\":\"t1v2vbab\",\"t1jehbg7\":\"t1jehbg7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ozep5mv\":\"ozep5mv\",\"c1hag6y0\":\"c1hag6y0\",\"waf1f9y\":\"waf1f9y\",\"tbw5dg6\":\"tbw5dg6\",\"t169lyus\":\"t169lyus\",\"m15wgv93\":\"m15wgv93\",\"hl4y0lt\":\"hl4y0lt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c1aawmsq\":\"c1aawmsq\",\"saag2jw\":\"saag2jw\",\"line\":\"line\"};"],"names":["useThrottledEffect","dependencies","throttleBy","callbackRef","React","callback","current","lastRun","Date","now","elapsed","timeout","setTimeout","clearTimeout","ButtonLink","styled","name","class","propsAsIs","Label","Input","LabeledInput","as","label","value","setValue","style","delegated","id","event","target","HTMLInputElement","minHeight","undefined","MSG_KEY","RelevanceIndicator","relevantMatches","prefersReducedMotion","length","copy","elem","document","querySelector","scrollIntoView","behavior","block","Wrapper","Form","Row","Column","RelevanceWrapper","RelevanceContent","ContactForm","setName","email","setEmail","message","setMessage","setRelevantMatches","FaqContext","relevantMatchesRef","status","setStatus","usePrefersReducedMotion","savedMessageData","window","localStorage","getItem","JSON","parse","setItem","runEffect","trim","json","response","fetch","method","body","stringify","messageText","err","namePlaceholder","generateFullName","emailPlaceholder","split","toLowerCase","domain","generateEmailDomain","handleSubmit","preventDefault","startAt","grecaptcha","enterprise","ready","token","execute","RECAPTCHA_PUBLIC_KEY","action","res","headers","duration","MIN_TIME","delay","ok","props","paddingBottom","Spinner","ArrowRight","x","LINE_DATA","plus","x1","y1","x2","y2","flat","chevron","FaqItem","slug","frontmatter","content","isOpen","isHighlighted","handleToggle","isPressed","setIsPressed","detailsRef","leftPoints","rightPoints","leftLineSpring","useSpring","config","tension","friction","clamp","immediate","rightLineSpring","String","question","ListWrapper","Question","Answer","animated","div","IconWrapper","Background","Svg","QuestionText","FaqList","data","openItems","toggleItem","map","faq","includes","FaqProvider","children","setOpenItems","currentValue","contextValue","Provider","ButtonPlayful","HTMLButtonElement","Props","Icon","iconSide","iconProps","backgroundColor","highlightColor","boopEffect","rotation","discouraged","href","textAlign","boopStyle","trigger","useBoop","order","Col","IconCol","_exp","IconBox","_exp4","ChildWrapper","FadeIn","animationDelay","IconDismiss","size","isBooped","sharedConfig","firstLineProps","getFirstLineProps","thirdLineProps","getThirdLineProps","DarkLayer","LightLayer","MascotBase","Head","JericaMascot","colorModeOverride","mood","fadeDuration","fadeDelay","colorMode","globalColorMode","UserPreferencesContext","SKIP_TARGET_ID","SkipNavTrigger","hasAValidTarget","setHasAValidTarget","SkipNavTarget","scrollMarginTop","Trigger","Target","ICONS_BY_TYPE","info","Info","success","CheckCircle","warning","AlertTriangle","error","AlertOctagon","OuterWrapper","CloseButton","LightWrapper","TimeColumn","TimeRemaining","Main","Heading","Toast","type","title","handleDismiss","popTimeout","poppedAt","setPoppedAt","hasBeenInterrupted","setHasBeenInterrupted","dismissBtnStatus","timeRemaining","setTimeRemaining","totalTime","timeoutId","setDismissBtnStatus","addEventListener","handleKeyDown","capture","removeEventListener","ev","useRequestAnimationFrameLoop","nextTimeRemaining","Math","max","timeElapsed","isCountingDown","from","transform","to","mass","precision","hasPoppedAlready","handleDismissRef","toUpperCase","slice","onMouseEnter","onFocus","LIGHT_COLORS_RAW","colorName","barScale","color"],"sourceRoot":"","ignoreList":[]}