{"version":3,"file":"static/chunks/43192-aa29026569046964.js","mappings":"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AhB4E,GAETiC,GACE,WAACjD,IAAAA,WACC,UAACkD,SAAAA,UAAO,+BAAmC,yBAWjD,IAAMC,EACJlC,EAAyB,GAAgB,eAAX9P,EAEhC,MACE,WAACL,EAAAA,CAAYA,CAAAA,CAACG,UAAW,GAAYgQ,MAAAA,CAATD,EAAM,KAA0B,OAAvBC,aAClC,CAAC,CAACD,GAAS,UAACoC,MAAAA,CAAK,GAAG1T,CAAS,UAAGuT,IAChC,CAACjC,GAAS,CAACmC,GAAcH,EACzB,CAAChC,GAASmC,GAAc,CAAC,CAACJ,GACzB,UAACT,EAAAA,CAAMA,CAAAA,CAACjT,KAAM0T,GAAkB,QAIxC,6GExIO,IAAMM,EAAoB,IACxB7O,CAAAA,EAAAA,EAAAA,EAAAA,CAASA,CAAC,CACf,QACA,QACA,WACA,OACA,MACA,QACA,MACA,MACA,OACA,QACA,QACA,OACA,UACA,OACA,OACA,OACA,SACA,SACA,OACA,SACA,QACA,UACA,SACA,QACA,YACA,OACA,QACA,QACA,SACA,UACA,OACA,OACA,OACA,UACA,YACA,WACA,QACA,QACA,UACA,WACA,UACA,QACA,SACA,QACD,EAGU8O,EAAmB,IACvB9O,CAAAA,EAAAA,EAAAA,EAAAA,CAASA,CAAC,CACf,OACA,QACA,UACA,WACA,OACA,SACA,MACA,MACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,SACA,UACA,SACA,cACA,OACA,QACA,YACA,MACA,QACA,YACA,UACA,SACA,OACA,UACA,QACA,QACA,OACA,WACA,QACA,WACA,KACA,KACA,QACA,QACD,EAGU+O,EAAmB,KAC9B,IAEIC,EAAQC,EAFRC,EAAYL,IACZM,EAAWL,IAcf,OAVqB,KAAjBxM,CAAuB,IAAlBxC,MAAM,KAEbmP,EAAUjP,CAAAA,EAAAA,EAAAA,EAAAA,CAASA,CAAC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAI,EAAI,KAIvI,KAAj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","sources":["webpack://_N_E/./src/components/AnimatedIcons/ExternalIcon.tsx","webpack://_N_E/./src/components/AnimatedIcons/Svg.ts","webpack://_N_E/./src/components/FadeOnChange/FadeOnChange.tsx","webpack://_N_E/./src/components/FadeOnChange/index.ts","webpack://_N_E/./src/components/GlobalUIProvider/GlobalUIProvider.tsx","webpack://_N_E/./src/components/GlobalUIProvider/index.ts","webpack://_N_E/./src/components/Icons/IconBluesky.tsx","webpack://_N_E/./src/components/Icons/IconColorMode.tsx","webpack://_N_E/./src/components/Icons/IconRSS.tsx","webpack://_N_E/./src/components/Icons/IconSearch.tsx","webpack://_N_E/./src/components/Icons/IconSpeaker.tsx","webpack://_N_E/./src/components/Icons/IconWrapper.tsx","webpack://_N_E/./src/components/Link/Link.tsx","webpack://_N_E/./src/components/Link/TextLink.tsx","webpack://_N_E/./src/components/Link/index.ts","webpack://_N_E/./src/components/NavigationTrackerProvider/index.ts","webpack://_N_E/./src/components/SiteFooter/affirmations.ts","webpack://_N_E/./src/components/SiteFooter/Affirmation.tsx","webpack://_N_E/./src/components/FallAway/FallAway.tsx","webpack://_N_E/./src/components/FallAway/index.ts","webpack://_N_E/./src/components/SiteFooter/FooterSuccessClouds.tsx","webpack://_N_E/./src/components/SiteFooter/FooterNewsletterForm.tsx","webpack://_N_E/./src/components/SiteFooter/IconLink.tsx","webpack://_N_E/./src/components/Spacer/Spacer.tsx","webpack://_N_E/./src/components/Spacer/index.ts","webpack://_N_E/./src/components/Spinner/Spinner.tsx","webpack://_N_E/./src/components/Spinner/index.ts","webpack://_N_E/./src/components/SubscribeError/SubscribeError.tsx","webpack://_N_E/./src/components/SubscribeError/index.ts","webpack://_N_E/./src/helpers/fake-data.helpers.ts","webpack://_N_E/./src/helpers/newsletter.helpers.tsx","webpack://_N_E/./src/hooks/use-boop.ts","webpack://_N_E/./src/hooks/use-request-animation-frame-loop.ts","webpack://_N_E/./src/hooks/use-sound.ts","webpack://_N_E/./src/components/AnimatedIcons/ExternalIcon.linaria.module.css","webpack://_N_E/./src/components/AnimatedIcons/Svg.linaria.module.css","webpack://_N_E/./src/components/ColorModeContainer/ColorModeContainer.linaria.module.css","webpack://_N_E/./src/components/FadeOnChange/FadeOnChange.linaria.module.css","webpack://_N_E/./src/components/FallAway/FallAway.linaria.module.css","webpack://_N_E/./src/components/Icons/IconBluesky.linaria.module.css","webpack://_N_E/./src/components/Icons/IconColorMode.linaria.module.css","webpack://_N_E/./src/components/Icons/IconRSS.linaria.module.css","webpack://_N_E/./src/components/Icons/IconSearch.linaria.module.css","webpack://_N_E/./src/components/Icons/IconSpeaker.linaria.module.css","webpack://_N_E/./src/components/Icons/IconWrapper.linaria.module.css","webpack://_N_E/./src/components/Link/Link.linaria.module.css","webpack://_N_E/./src/components/Link/TextLink.linaria.module.css","webpack://_N_E/./src/components/Logo/Logo.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/Affirmation.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FooterCategoryList.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FooterLink.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FooterNewsletterForm.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/FooterSuccessClouds.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/IconLink.linaria.module.css","webpack://_N_E/./src/components/SiteFooter/SiteFooter.linaria.module.css","webpack://_N_E/./src/components/Spacer/Spacer.linaria.module.css","webpack://_N_E/./src/components/Spinner/Spinner.linaria.module.css"],"sourcesContent":["import React from 'react';\nimport { styled } from '@linaria/react';\nimport { animated, useSpring } from 'react-spring';\n\nimport { SPRINGS } from '@/constants';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\nimport useBoopMinimal from '@/hooks/use-boop-minimal';\n\nimport Svg from './Svg';\n\ninterface Props extends React.SVGProps {\n size?: string | number;\n isHovering: boolean;\n accentColor: string;\n timing?: number;\n style?: React.CSSProperties;\n}\n\nconst ExternalIcon = ({\n size = 16,\n isHovering,\n accentColor,\n timing = 150,\n style = {},\n ...delegated\n}: Props) => {\n const id = React.useId();\n\n const isBooped = useBoopMinimal(isHovering, timing);\n\n const maskId = `external-icon-mask-${id}`;\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const springSettings = {\n config: SPRINGS.springy,\n immediate: prefersReducedMotion,\n };\n\n const arrowSpring = useSpring({\n d: isBooped\n ? `M 10 14 L 21 3 h -6 h 6 v 6`\n : `M 10 14 L 20 4 h -6 h 6 v 6`,\n ...springSettings,\n });\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nconst Arrow = styled(animated.path)`\n transition: stroke 250ms;\n`;\n\nexport default ExternalIcon;\n","import { styled } from '@linaria/react';\n\nconst Svg = styled.svg`\n stroke: currentColor;\n stroke-width: 2px;\n stroke-linecap: round;\n stroke-linejoin: round;\n will-change: transform;\n backface-visibility: hidden;\n transition: opacity 200ms;\n`;\n\nexport default Svg;\n","/**\n * NOTE: Interrupts are kinda buggy.\n * Needs to be better-thought-out before general usage.\n */\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\ninterface Props extends React.HTMLAttributes {\n as?: React.ElementType;\n duration?: number;\n changeKey: any;\n children: React.ReactNode;\n}\n\nfunction FadeOnChange({\n as = 'span',\n duration = 250,\n changeKey,\n children,\n style = {},\n ...delegated\n}: Props) {\n const [status, setStatus] = React.useState('idle');\n\n const wrapperRef = React.useRef(null);\n const cachedChildren = React.useRef(children);\n\n React.useEffect(() => {\n // Ignore initial mount\n if (children === cachedChildren.current) {\n return;\n }\n\n setStatus((s) => (s === 'idle' ? 'fading-out' : 'idle'));\n\n function handleTransitionEnd() {\n cachedChildren.current = children;\n setStatus('idle');\n }\n\n const elem = wrapperRef.current;\n\n if (!elem) {\n return;\n }\n\n elem.addEventListener('transitionend', handleTransitionEnd);\n\n return () => {\n elem?.removeEventListener('transitionend', handleTransitionEnd);\n };\n // I only want to do the unmount-fade dance when the `changeKey` changes. The bug of outdated UI is actually a feature in this case.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeKey]);\n\n return (\n \n {cachedChildren.current}\n \n );\n}\n\nconst Wrapper = styled.span`\n transition: opacity var(--duration);\n transition-delay: 0ms;\n`;\n\nexport default FadeOnChange;\n","export { default } from './FadeOnChange';\n","'use client';\n\nimport * as React from 'react';\nimport { produce } from 'immer';\nimport { isBefore } from 'date-fns';\n\ninterface Modal {\n id: string;\n isOpen: boolean;\n}\n\ninterface GlobalUIState {\n modals: Record;\n superheader: null | 'us-election';\n // NOTE: `countryFromIP` is always undefined right now, since we are no longer making the request on mount to fetch it.\n // See commit cd4b95852d186a63b11fc060129c3eeeaeae961f to see how this used to work.\n countryFromIP?: string;\n}\n\nconst INITIAL_STATE = {\n modals: {},\n superheader: null,\n};\n\nexport const GlobalUIContext =\n React.createContext(INITIAL_STATE);\n\nexport const GlobalUIDispatchContext = React.createContext<\n React.Dispatch\n>(function () {});\n\nfunction reducer(state: GlobalUIState, action: any): GlobalUIState {\n return produce(state, (draftState) => {\n switch (action.type) {\n case 'OPEN_MODAL':\n case 'CLOSE_MODAL':\n case 'TOGGLE_MODAL': {\n let modal = draftState.modals[action.modalId];\n\n if (!modal) {\n modal = draftState.modals[action.modalId] = {\n id: action.modalId,\n isOpen: false,\n };\n }\n\n modal.isOpen =\n action.type === 'OPEN_MODAL'\n ? true\n : action.type === 'CLOSE_MODAL'\n ? false\n : typeof action.forcedValue === 'boolean'\n ? action.forcedValue\n : !modal.isOpen;\n\n return;\n }\n\n case 'CLOSE_ALL_MODALS': {\n draftState.modals = INITIAL_STATE.modals;\n return;\n }\n\n case 'DISMISS_SUPERHEADER': {\n draftState.superheader = null;\n return;\n }\n\n case 'RECEIVE_COUNTRY_FROM_IP': {\n draftState.countryFromIP = action.country;\n return;\n }\n\n default:\n return state;\n }\n });\n}\n\nfunction GlobalUIProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const [state, dispatch] = React.useReducer(reducer, INITIAL_STATE);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function useGlobalUIState() {\n return React.useContext(GlobalUIContext);\n}\nexport function useGlobalUIDispatch() {\n return React.useContext(GlobalUIDispatchContext);\n}\n\nexport function useGlobalUIActions() {\n const dispatch = useGlobalUIDispatch();\n\n const openModal = React.useCallback(\n (modalId: string) => {\n dispatch({ type: 'OPEN_MODAL', modalId });\n },\n [dispatch]\n );\n\n const closeModal = React.useCallback(\n (modalId: string) => {\n dispatch({ type: 'CLOSE_MODAL', modalId });\n },\n [dispatch]\n );\n const closeAllModals = React.useCallback(() => {\n dispatch({ type: 'CLOSE_ALL_MODALS' });\n }, [dispatch]);\n\n const toggleModal = React.useCallback(\n (modalId: string, forcedValue?: boolean) => {\n dispatch({ type: 'TOGGLE_MODAL', modalId, forcedValue });\n },\n [dispatch]\n );\n\n const dismissSuperheader = React.useCallback(() => {\n dispatch({ type: 'DISMISS_SUPERHEADER' });\n }, [dispatch]);\n\n return {\n openModal,\n closeModal,\n closeAllModals,\n toggleModal,\n dismissSuperheader,\n };\n}\n\nexport default GlobalUIProvider;\n","export {\n default,\n GlobalUIContext,\n GlobalUIDispatchContext,\n useGlobalUIState,\n useGlobalUIDispatch,\n useGlobalUIActions,\n} from './GlobalUIProvider';\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { random, sampleOne } from '@/utils';\nimport useSound from '@/hooks/use-sound';\n\nimport IconWrapper from './IconWrapper';\n\nconst FLAP_SPRITE = {\n first: [72, 500],\n second: [625, 500],\n third: [1182, 500],\n fourth: [1769, 500],\n};\n\nconst FLAP_KEYS = Object.keys(\n FLAP_SPRITE\n) as (keyof typeof FLAP_SPRITE)[];\n\nexport function IconBluesky({\n size = 20,\n isBooped,\n}: {\n size?: number;\n isBooped: boolean;\n}) {\n const leftWingStyle = useSpring({\n transform: isBooped ? 'rotateY(-48deg)' : 'rotateY(0deg)',\n config: {\n tension: 250,\n friction: random(8, 20),\n },\n delay: sampleOne([0, 0, 0, 25, 50]),\n });\n const rightWingStyle = useSpring({\n transform: isBooped ? 'rotateY(-64deg)' : 'rotateY(0deg)',\n config: {\n tension: 250,\n friction: random(15, 27),\n },\n delay: sampleOne([0, 25, 50, 50, 50, 50, 50, 75]),\n });\n\n return (\n \n \n \n \n );\n}\n\nfunction WrappedIconBluesky(props: { size?: number }) {\n const [playRaw] = useSound('/sounds/flap.mp3', {\n sprite: FLAP_SPRITE,\n volume: 0.2,\n });\n\n return (\n {\n const key = sampleOne(FLAP_KEYS);\n playRaw({ id: key });\n }}\n >\n {({ isBooped }) => }\n \n );\n}\n\nconst Svg = styled.svg`\n display: block;\n overflow: visible;\n`;\n\nconst Wing = styled(animated.path)`\n transform-origin: 50% 50%;\n`;\n\nexport default WrappedIconBluesky;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, useTrail, animated } from 'react-spring';\n\nimport { ColorMode, SPRINGS } from '@/constants';\nimport { range, roundTo } from '@/utils';\nimport useSound from '@/hooks/use-sound';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\nimport {\n UserPreferencesContext,\n SetUserPreferencesContext,\n} from '@/components/UserPreferencesProvider';\nimport { NavigationTrackerContext } from '@/components/NavigationTrackerProvider';\n\nimport IconWrapper from './IconWrapper';\n\ninterface Props {\n colorMode: ColorMode;\n size?: number;\n isBooped?: boolean;\n isTransitioning?: boolean;\n includeEnterAnimation: boolean;\n enterAnimationDelay?: number;\n}\n\nconst SUN_RADIUS = 6;\nconst MOON_RADIUS = 9.5;\n\nexport function IconColorMode({\n colorMode,\n size = 20,\n isBooped,\n isTransitioning,\n includeEnterAnimation,\n enterAnimationDelay = 0,\n}: Props) {\n const prefersReducedMotion = usePrefersReducedMotion();\n const id = React.useId().replace(/:/g, '');\n\n const isDark = colorMode === 'dark';\n\n const rotation = isDark ? (isBooped ? 28 : 40) : 90;\n\n const config = {\n tension: 160,\n friction: 30,\n };\n\n const svgSpring = useSpring({\n transform: `rotate(${rotation}deg)`,\n immediate: prefersReducedMotion,\n config: isTransitioning ? config : SPRINGS.springy,\n });\n const moonCutoutSpring = useSpring({\n cx: 12,\n cy: isDark ? 4 : -4,\n config,\n immediate: prefersReducedMotion,\n });\n const sunMoonSpring = useSpring({\n // prettier-ignore\n r: isDark\n ? MOON_RADIUS\n : isBooped\n ? SUN_RADIUS - 2\n : SUN_RADIUS,\n immediate: prefersReducedMotion,\n config:\n isBooped && !isTransitioning\n ? { tension: 300, friction: 20 }\n : config,\n });\n\n // The sun/moon is masked by a circle that is in the same spot, and very slightly larger (increased by 50% of the `stroke-width`). When we shift to Dark Mode, `moonCutoutSpring` causes a circle to move in, but we want to clip that circle when it's not above the sun, to create the final effect.\n // This is a bit lazy, and it won't work on a background that isn't `--color-background`; ideally, we would have a more sophisticated masking setup. I can always migrate if/when it becomes necessary.\n const sunMaskSpring = useSpring({\n r: isDark ? MOON_RADIUS + 1 : SUN_RADIUS + 1,\n immediate: prefersReducedMotion,\n config,\n });\n\n const numOfDots = 8;\n const sunDotAngles = range(numOfDots).map((_, index) => {\n return index * (360 / numOfDots);\n });\n\n const sunDotTrail = useTrail(sunDotAngles.length, {\n isVisible: isDark ? 0 : 1,\n transformOrigin: 'center center',\n immediate: isDark || prefersReducedMotion,\n config: {\n tension: 210,\n friction: 20,\n },\n });\n const sunDotSpring = useSpring({\n hypothenuse: isBooped ? 9 : 10,\n config: SPRINGS.springy,\n });\n\n return (\n \n {/* This mask stops the sun dots from showing inside the sun, as they scale up from the very center. */}\n \n \n \n \n\n {/* The moon has a chunk removed. This mask removes that chunk */}\n \n \n \n \n\n {/* The moon is given a crescent by another circle, above and to the right of the moon. This crescent should be trimmed to only show the content over the moon */}\n \n \n \n \n\n {/* Sun dots */}\n \n {sunDotTrail.map(({ isVisible, ...props }, index) => {\n const angle = sunDotAngles[index];\n const centerX = 12;\n const centerY = 12;\n\n const angleInRads = (angle / 180) * Math.PI;\n\n // Alright, this is kinda complicated.\n // `sunDotTrail` is an array of angles, going from 0 to 360 (exclusive). This creates a pleasing clockwise motion, which matches the exit animation of the moon.\n // For the INITIAL on-enter animation, however, it makes more sense for the dots to animate from the top. Rather than going clockwise or counter-clockwise, they cascade from top to bottom.\n // This array holds the angles that have been reordered to match this cascading flow. And we use that when calculating `--enter-animation-delay` below.\n const initialAnimationAngles = [\n 180, 135, 225, 90, 270, 45, 315, 0,\n ];\n let indexInInitialArray =\n initialAnimationAngles.indexOf(angle);\n\n // The code above assumes we have 8 sun dots. If that changes in the future, we should fall back to a standard clockwise animation.\n if (sunDotAngles.length !== 8) {\n indexInInitialArray = index;\n }\n\n return (\n \n roundTo(centerX + c * Math.cos(angleInRads), 4)\n )}\n cy={sunDotSpring.hypothenuse.to((c) =>\n roundTo(centerY + c * Math.sin(angleInRads), 4)\n )}\n r={1.5}\n fill=\"currentColor\"\n style={{\n ...props,\n '--enter-animation-delay':\n enterAnimationDelay +\n indexInInitialArray * 40 +\n 'ms',\n transform: isVisible.to((val) => `scale(${val})`),\n }}\n />\n );\n })}\n \n\n \n \n \n \n {/* Moon crescent circle: */}\n \n \n \n );\n}\n\ninterface WrappedProps\n extends React.HTMLAttributes {\n size?: number;\n enterAnimationDelay?: number;\n}\n\nexport function WrappedIconColorMode({\n size,\n enterAnimationDelay = 0,\n ...delegated\n}: WrappedProps) {\n const { colorMode } = React.useContext(UserPreferencesContext);\n const { toggleColorMode } = React.useContext(\n SetUserPreferencesContext\n );\n\n // Certain springs use different configuration depending on whether we're transitioning from light/dark OR booping on hover. When the user changes from light/dark, we'll set `isTransitioning` to true, and then automatically flip it back to false after a short delay.\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n\n const mostRecentNavigationFrom = React.useContext(\n NavigationTrackerContext\n );\n\n const [playOn] = useSound('/sounds/switch-on.mp3');\n const [playOff] = useSound('/sounds/switch-off.mp3');\n\n const timeoutId = React.useRef();\n\n function onTrigger(event: React.MouseEvent) {\n event.preventDefault();\n\n const isDark = colorMode === 'dark';\n\n toggleColorMode(isDark ? 'light' : 'dark');\n setIsTransitioning(true);\n\n if (isDark) {\n playOn();\n } else {\n playOff();\n }\n\n window.clearTimeout(timeoutId.current);\n timeoutId.current = window.setTimeout(() => {\n setIsTransitioning(false);\n }, 500);\n }\n\n return (\n \n {({ isBooped }) => (\n \n )}\n \n );\n}\n\nconst Svg = styled(animated.svg)`\n position: relative;\n overflow: visible;\n stroke-width: 2px;\n`;\n\nconst SunDot = styled(animated.circle)`\n &[data-include-enter-animation='true'] {\n animation: pop 500ms cubic-bezier(0.07, 0.7, 0.35, 1.35) backwards;\n animation-delay: var(--enter-animation-delay);\n\n @keyframes pop {\n from {\n transform: scale(0);\n }\n }\n }\n`;\n\nexport default WrappedIconColorMode;\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport IconWrapper from './IconWrapper';\n\ninterface Props extends React.HTMLAttributes {\n size?: number;\n isBooped: boolean;\n}\n\nexport function IconRSS({\n size = 20,\n isBooped,\n ...delegated\n}: Props) {\n const circleSpring = useSpring({\n r: isBooped ? 2 : 1,\n config: {\n tension: 300,\n friction: 22,\n },\n });\n\n const i = 2;\n const innerRingSpring = useSpring({\n d: isBooped\n ? `M4 ${11 - i} a ${9 + i} ${9 + i} 0 0 1 ${9 + i} ${9 + i}`\n : 'M4 11 a 9 9 0 0 1 9 9',\n config: {\n tension: 300,\n friction: 18,\n },\n delay: 16.6 * 4,\n });\n const o = 2;\n const outerRingSpring = useSpring({\n d: isBooped\n ? `M4 ${4 - o} a ${16 + o} ${16 + o} 0 0 1 ${16 + o} ${16 + o}`\n : 'M4 4 a 16 16 0 0 1 16 16',\n config: {\n tension: 250,\n friction: 12,\n },\n delay: 16.6 * 8,\n });\n\n return (\n \n \n \n \n \n );\n}\n\nfunction RSSLink(props: { size?: number }) {\n return (\n \n {({ isBooped }) => }\n \n );\n}\n\nconst Svg = styled.svg`\n stroke: currentColor;\n display: block;\n overflow: visible;\n\n circle {\n fill: currentColor;\n }\n`;\n\nexport default RSSLink;\n","'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { SEARCH_MODAL_ID } from '@/constants';\nimport { useGlobalUIActions } from '@/components/GlobalUIProvider';\n\nimport { IconProps } from './Icon.types';\nimport IconWrapper from './IconWrapper';\n\nexport function IconSearch({\n size = 20,\n isBooped,\n style = {},\n ...delegated\n}: IconProps) {\n const iconStyle = useSpring({\n ...style,\n transform: isBooped\n ? 'scale(1.1) rotate(8deg)'\n : 'scale(1) rotate(0deg)',\n config: {\n tension: 300,\n friction: 10,\n },\n });\n const shimmerStyle = useSpring({\n transform: isBooped\n ? 'rotate(-20deg) translateX(-40%)'\n : 'rotate(-20deg) translateX(50%)',\n config: {\n tension: 300,\n friction: 12,\n },\n });\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction WrappedIconSearch(props: Omit) {\n const { toggleModal } = useGlobalUIActions();\n\n return (\n <>\n {\n toggleModal(SEARCH_MODAL_ID);\n }}\n >\n {({ isBooped }) => (\n \n )}\n \n \n );\n}\n\nconst Wrapper = styled.span`\n position: relative;\n display: inline-block;\n transition:\n transform 300ms cubic-bezier(0.06, 0.63, 0.43, 1),\n opacity 300ms;\n`;\n\nconst ShimmerWrapper = styled.span`\n position: absolute;\n width: 50%;\n height: 45%;\n top: 23%;\n right: 30%;\n border-radius: 50%;\n overflow: hidden;\n overflow: clip;\n transform: scale(0.85) rotate(-20deg);\n transform-origin: center center;\n transition: opacity 500ms;\n transition-delay: 400ms;\n\n html[data-color-mode='light'] & {\n opacity: 0;\n transition: opacity 0ms;\n transition-delay: 0ms;\n }\n`;\n\nconst Shimmer = styled(animated.span)`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: var(--search-shimmer-color, white);\n opacity: var(--search-shimmer-opacity, 0.5);\n animation: shimmer 400ms both;\n border-radius: 50%;\n\n html[data-color-mode='light'] & {\n background: var(--search-shimmer-color, var(--color-background));\n opacity: var(--search-shimmer-opacity, 1);\n }\n`;\n\nconst Svg = styled(animated.svg)`\n stroke: currentColor;\n display: block;\n overflow: visible;\n transform-origin: ${(11 / 24) * 100}% ${(11 / 24) * 100}%;\n`;\n\nexport default WrappedIconSearch;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport { SPRINGS } from '@/constants';\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\nimport useSound from '@/hooks/use-sound';\n\nimport {\n UserPreferencesContext,\n SetUserPreferencesContext,\n} from '@/components/UserPreferencesProvider';\n\nimport { IconProps } from './Icon.types';\nimport IconWrapper from './IconWrapper';\n\ninterface Props extends IconProps {\n soundEnabled: boolean;\n isBooped: boolean;\n hasBeenToggled: boolean;\n}\n\nexport function IconSpeaker({\n soundEnabled,\n isBooped,\n hasBeenToggled,\n size = 20,\n ...delegated\n}: Props) {\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const speakerSpring = useSpring({\n transform: `rotate(${isBooped && !soundEnabled ? -10 : 0}deg)`,\n immediate: prefersReducedMotion,\n config: SPRINGS.springy,\n });\n\n const waveOneSpring = useSpring({\n transform: `translateX(${isBooped && soundEnabled ? 1.5 : 0}px)`,\n immediate: prefersReducedMotion,\n config: SPRINGS.springy,\n });\n const waveTwoSpring = useSpring({\n transform: `translateX(${isBooped && soundEnabled ? 2 : 0}px)`,\n immediate: prefersReducedMotion,\n config: SPRINGS.springy,\n delay: 50,\n });\n\n return (\n \n \n \n \n\n \n \n \n \n \n \n \n );\n}\n\ninterface WrappedProps\n extends React.HTMLAttributes {\n size?: number;\n}\n\nfunction WrappedIconSpeaker({\n size = 20,\n ...delegated\n}: WrappedProps) {\n const { soundEnabled } = React.useContext(UserPreferencesContext);\n const { toggleSoundEnabled } = React.useContext(\n SetUserPreferencesContext\n );\n\n // Don't do the wiggly thing on mount. Only when sound is toggled.\n const [hasBeenToggled, setHasBeenToggled] = React.useState(false);\n\n const [playOn] = useSound('/sounds/enable-sound.mp3', {\n volume: 0.4,\n });\n const [playOff] = useSound('/sounds/disable-sound.mp3', {\n volume: 0.25,\n });\n\n return (\n {\n ev.preventDefault();\n\n setHasBeenToggled(true);\n\n toggleSoundEnabled(!soundEnabled);\n\n if (soundEnabled) {\n playOff({ forceSoundEnabled: true });\n } else {\n playOn({ forceSoundEnabled: true });\n }\n }}\n >\n {({ isBooped }) => (\n \n )}\n \n );\n}\n\nconst Svg = styled.svg`\n display: block;\n overflow: visible;\n`;\n\nconst Path = styled(animated.path)`\n stroke: currentColor;\n stroke-width: 2px;\n`;\n\nconst SpeakerWrapper = styled.g`\n transform: translateX(var(--x));\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform 300ms;\n }\n`;\nconst Speaker = styled(Path)`\n transform-origin: 30% center;\n\n @media (prefers-reduced-motion: no-preference) {\n &[data-should-wiggle='true'] {\n animation: speakerWiggle 350ms;\n }\n }\n\n @keyframes speakerWiggle {\n 0% {\n transform: rotate(0deg);\n }\n 25% {\n transform: rotate(15deg);\n }\n 50% {\n transform: rotate(-13deg);\n }\n 75% {\n transform: rotate(12deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n }\n`;\n\nconst WaveWrapper = styled.g`\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 200ms;\n }\n`;\n\nexport default WrappedIconSpeaker;\n","/*\n This component provides the clickable wrapper (either a button or link) that wraps around various icons.\n\n Getting TS working property was a fool’s errand, so I slapped a bunch of `any` here. When I get significantly better at TS, I should try and solve this properly. See my original attempt in `IconWrapper.abandoned.tsx`.\n*/\n'use client';\n\nimport React from 'react';\nimport { styled } from '@linaria/react';\n\nimport useBoopMinimal from '@/hooks/use-boop-minimal';\n\nimport VisuallyHidden from '@/components/VisuallyHidden';\nimport Link from '@/components/Link';\n\ninterface RenderData {\n isBooped: boolean;\n}\n\ntype ChildlessAnchor = Omit<\n React.AnchorHTMLAttributes,\n 'children'\n>;\n\ninterface Props extends ChildlessAnchor {\n ref?: React.Ref;\n alt?: string;\n size?: number;\n boopOn?: 'hover' | 'click';\n onClick?: (ev: React.MouseEvent) => void;\n prefetch?: boolean;\n href?: string;\n boopTiming?: number;\n children: (data: RenderData) => React.ReactNode;\n}\n\nfunction IconWrapper({\n ref,\n alt,\n size = 20,\n boopOn = 'hover',\n children,\n boopTiming,\n ...delegated\n}: Props) {\n const [isEngaged, setIsEngaged] = React.useState(false);\n const isBooped = useBoopMinimal(isEngaged, boopTiming);\n\n const isLink = !!delegated.href;\n\n return (\n {\n delegated.onClick?.(ev);\n }}\n onMouseEnter={(ev: any) => {\n delegated.onMouseEnter?.(ev);\n\n if (boopOn === 'hover') {\n setIsEngaged(true);\n }\n }}\n onMouseLeave={(ev: any) => {\n delegated.onMouseLeave?.(ev);\n\n // Whether we’re engaging on hover or press, we should disengage if the mouse leaves this element.\n setIsEngaged(false);\n }}\n onMouseDown={(ev: any) => {\n delegated.onMouseDown?.(ev);\n\n if (boopOn === 'click') {\n setIsEngaged(true);\n }\n }}\n onMouseUp={(ev: any) => {\n delegated.onMouseUp?.(ev);\n\n if (boopOn === 'click') {\n setIsEngaged(false);\n }\n }}\n onTouchStart={(ev: any) => {\n delegated.onTouchStart?.(ev);\n\n if (boopOn === 'click') {\n setIsEngaged(true);\n }\n }}\n onTouchEnd={(ev: any) => {\n delegated.onTouchEnd?.(ev);\n\n if (boopOn === 'click') {\n setIsEngaged(false);\n }\n }}\n >\n {children({ isBooped })}\n {alt && {alt}}\n \n );\n}\n\nconst Wrapper = styled.a`\n position: relative;\n display: block;\n height: 32px;\n width: 32px;\n min-width: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n /* For focus outlines: */\n border-radius: 1000px;\n outline-offset: 2px;\n\n /* Increase tap target size */\n &::before {\n content: '';\n position: absolute;\n inset: -4px;\n }\n\n &:hover {\n color: var(--icon-hover-color, inherit);\n }\n`;\n\nexport default IconWrapper;\n","/*\n This wrapper around next/link is used for a few reasons:\n\n 1. Automatically adds \"target=_blank\" + icon to external links\n 2. Uses View Transitions API to smooth out SPA navigation\n 3. Adds focus styles (but no other cosmetics; use for\n styled links)\n*/\n'use client';\n\nimport React from 'react';\nimport NextLink from 'next/link';\nimport { styled } from '@linaria/react';\nimport { useViewTransition } from 'use-view-transitions/react';\nimport { useRouter } from 'next/navigation';\nimport { usePathname } from 'next/navigation';\n\nimport { SetNavigationTrackerContext } from '@/components/NavigationTrackerProvider';\nimport ExternalIcon from '@/components/AnimatedIcons/ExternalIcon';\nimport VisuallyHidden from '@/components/VisuallyHidden';\n\ntype LinkDestination = 'internal' | 'external' | 'hash' | 'mailto';\n\nexport interface Props extends React.HTMLProps {\n href?: string;\n target?: '_blank';\n rel?: string;\n prefetch?: boolean;\n skipViewTransitions?: boolean;\n preventExternalIcon?: boolean;\n}\n\nconst Link = (\n {\n href = '',\n target,\n rel,\n prefetch = true,\n onClick = function () {},\n skipViewTransitions,\n preventExternalIcon,\n children,\n ...delegated\n }: Props,\n ref: React.ForwardedRef\n) => {\n const [isHovering, setIsHovering] = React.useState(false);\n\n const [, startTransition] = React.useTransition();\n const { startViewTransition } = useViewTransition();\n\n const setMostRecentNavigationFrom = React.useContext(\n SetNavigationTrackerContext\n );\n\n const router = useRouter();\n const pathname = usePathname();\n\n let linkDestination: LinkDestination = 'internal';\n if (href.match(/^#/)) {\n linkDestination = 'hash';\n } else if (href.match(/^http/i) || target === '_blank') {\n linkDestination = 'external';\n } else if (href.match(/^mailto/)) {\n linkDestination = 'mailto';\n }\n\n // By default, external links should open in a new tab.\n // This is overrideable though.\n if (typeof target === 'undefined') {\n target = linkDestination === 'external' ? '_blank' : undefined;\n }\n\n const safeRel = target === '_blank' ? 'noopener noreferrer' : rel;\n\n const includeExternalIcon =\n target === '_blank' &&\n !preventExternalIcon &&\n typeof children === 'string';\n\n // Annoyingly complicated: I don't want the external icon to be an orphan. No combination of   is working, so what I need is to wrap the final word + icon in a span with no wrapping:\n //\n // The Joy of React [Icon]\n //\n let first, last;\n if (includeExternalIcon) {\n const words = children.split(' ');\n first = words.slice(0, -1).join(' ');\n last = words.at(-1);\n } else {\n first = children;\n last = '';\n }\n\n return (\n setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n // Support View Transitions by starting a transition before navigation:\n onClick={(event: React.MouseEvent) => {\n const isTryingToOpenInNewTab = event.metaKey || event.ctrlKey;\n\n if (\n linkDestination === 'internal' &&\n !isTryingToOpenInNewTab &&\n !skipViewTransitions\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n if (pathname) {\n setMostRecentNavigationFrom(pathname);\n }\n\n startViewTransition(() =>\n startTransition(() => {\n router.push(href);\n })\n );\n }\n\n onClick(event);\n }}\n {...delegated}\n >\n {includeExternalIcon ? (\n <>\n {first}{' '}\n \n {last}\n \n (opens in new tab)\n \n \n ) : (\n children\n )}\n \n );\n};\n\nconst StyledLink = styled(NextLink)`\n &:focus-visible {\n outline: 2px auto var(--color-primary);\n outline-offset: 2px;\n }\n`;\n\nconst StyledExternalIcon = styled(ExternalIcon)`\n display: none;\n transform: translateY(0.0625rem);\n margin-left: 0.125em;\n color: var(--base-icon-color, inherit);\n\n /*\n We only want to show the external icon for links within the main content. This became relevant because the \"RSS\" link in the header/footer opens in a new tab, but it shouldn't have the external icon.\n */\n main & {\n display: inline-block;\n }\n`;\n\nconst PreventOrphan = styled.span`\n white-space: nowrap;\n`;\n\nexport default React.forwardRef(Link);\n","import * as React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { WarningAside } from '@/components/Aside';\n\nimport Link, { Props } from './Link';\n\nfunction TextLink(\n props: Props,\n ref: React.ForwardedRef\n) {\n return ;\n}\n\nexport const Anchor = styled(Link)`\n color: inherit;\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 React.forwardRef(TextLink);\n","export { default } from './Link';\n","export {\n default,\n SetNavigationTrackerContext,\n NavigationTrackerContext,\n} from './NavigationTrackerProvider';\n","import { getTimeOfDay } from '@/utils';\n\nexport default [\n '🏳️‍⚧️ Trans rights are human rights.',\n 'Have a lovely day. ❤️',\n 'I hope you’re having a wonderful day!',\n 'I hope you’re having a stellar day!',\n 'I hope you’re having a marvelous day!',\n 'I hope you’re having a sensational day!',\n 'Be kind, rewind.',\n 'An apple a day keeps the doctor away. 🍎',\n 'Every day is an adventure. ✨',\n 'You belong in this world. 💖',\n 'You are an unstoppable force of nature. 🌪️',\n 'Be as kind to yourself as you are to others.',\n 'The world needs more kindness.',\n 'You miss 100% of the shots you don’t take. 🏀',\n 'You are a rockstar. 🌟',\n 'Thanks for reading. 💖',\n 'Hey! What a wonderful kind of day.',\n 'Move it, football head!',\n 'This blog kills fascists.',\n 'Black lives matter.',\n 'You’re like sunshine on a rainy day. 🌈',\n '👀 Be intentional with your attention.',\n 'Never stop learning. 📚',\n 'Cowabunga!',\n 'Alphanumeric!',\n function timeAppropriateGreeting() {\n const timeOfDay = getTimeOfDay();\n\n switch (timeOfDay) {\n case 'morning':\n return '🥱 Good morning!';\n case 'afternoon':\n return 'Hope you’re having a lovely afternoon!';\n case 'evening':\n case 'night':\n return 'Good evening! 🌙';\n default:\n // Should be impossible\n return 'Good day! 🌞';\n }\n },\n 'I’m an oddity, and that’s alright.',\n 'Dream on, little dreamer. ❤️',\n 'Keep your ideals high. The sky belongs to no one. ✨',\n 'Let the waves of time and space surround me',\n];\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\n\nimport { sampleOne } from '@/utils';\n\nimport affirmations from './affirmations';\n\nfunction Affirmation(props: React.HTMLAttributes) {\n const [affirmation, setAffirmation] = React.useState('');\n\n React.useEffect(() => {\n // Get teh current month\n const currentMonth = new Date().getMonth();\n const isPrideMonth = currentMonth === 4;\n\n let selectedAffirmation;\n\n if (isPrideMonth) {\n // During Pride month, we’ll wish the user a happy Pride half of the time.\n selectedAffirmation =\n Math.random() < 0.5\n ? 'Happy Pride month! 🏳️‍🌈'\n : sampleOne(affirmations);\n } else {\n selectedAffirmation = sampleOne(affirmations);\n }\n\n if (typeof selectedAffirmation === 'function') {\n setAffirmation(selectedAffirmation());\n } else {\n setAffirmation(selectedAffirmation);\n }\n }, []);\n\n return {affirmation};\n}\n\nconst Wrapper = styled.div`\n /* Prevent layout shift */\n min-height: 1.3125rem;\n font-weight: var(--font-weight-medium);\n`;\n\nexport default Affirmation;\n","import * as React from 'react';\nimport { styled } from '@linaria/react';\n\ninterface Props {\n when: boolean;\n as?: any;\n distance: number; // in rems\n duration?: number;\n rotation?: number;\n delay?: number;\n children: React.ReactNode;\n}\n\nfunction FallAway({\n when,\n as = 'span',\n distance,\n duration = 500,\n rotation = 0,\n delay = 0,\n children,\n}: Props) {\n return (\n \n {children}\n \n );\n}\n\nconst Wrapper = styled.span`\n display: block;\n\n &[data-animate='true'] {\n animation: fallAway var(--duration) cubic-bezier(0.28, 0, 1, 0.65)\n forwards;\n animation-delay: var(--delay);\n }\n\n @keyframes fallAway {\n from {\n transform: translateY(0) rotate(0);\n opacity: 1;\n }\n\n to {\n transform: translateY(var(--distance)) rotate(var(--rotation));\n opacity: 0;\n }\n }\n`;\n\nexport default FallAway;\n","export { default } from './FallAway';\n","import React from 'react';\nimport { styled } from '@linaria/react';\n\nfunction FooterSuccessClouds({\n baseDelay = 0,\n}: {\n baseDelay?: number;\n}) {\n // const [key, setKey] = React.useState(0);\n return (\n setKey(key + 1)} key={key}\n style={{\n '--base-delay': `${baseDelay}ms`,\n }}\n >\n \n

\n Success!\n

\n

\n I just sent you a welcome email, which includes the “Jerica\n Starter Pack”, a collection of my most popular content. 😄\n

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst Wrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1.5rem;\n max-width: 400px;\n animation: enter 1000ms both cubic-bezier(0, 0.25, 0.23, 1.01);\n animation-delay: var(--base-delay);\n transform-origin: 50% 50%;\n will-change: transform;\n\n @keyframes enter {\n from {\n opacity: 0;\n transform: translateY(50%) scale(0.8);\n }\n }\n`;\n\nconst Content = styled.div`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 52px;\n /* Optical alignment */\n padding-bottom: 8px;\n text-align: center;\n color: black;\n animation: fadeIn 800ms both;\n animation-delay: calc(var(--base-delay) + 1000ms);\n\n p:not(:last-child) {\n margin-bottom: 0.75em;\n }\n`;\n\nconst Svg = styled.svg`\n display: block;\n width: 100%;\n height: 10.9375rem;\n --curve: cubic-bezier(0.17, 0, 0.21, 1.01);\n\n circle {\n fill: var(--color-adaptive-white);\n /* Each circle has its own origin */\n transform-box: fill-box;\n\n &:nth-child(1) {\n animation: growOne 1300ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 100% 100%;\n @keyframes growOne {\n from {\n transform: scale(0.7);\n }\n }\n }\n &:nth-child(2) {\n animation: growTwo 700ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 100ms);\n transform-origin: 90% 100%;\n @keyframes growTwo {\n from {\n transform: scale(0.6);\n }\n }\n }\n &:nth-child(3) {\n animation: growThree 1200ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 90% 0%;\n @keyframes growThree {\n from {\n transform: scale(0.8);\n }\n }\n }\n &:nth-child(4) {\n animation: growFour 1200ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 60% 100%;\n @keyframes growFour {\n from {\n transform: scale(0.5);\n }\n }\n }\n &:nth-child(5) {\n animation: growFive 1600ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 50% 0%;\n @keyframes growFive {\n from {\n transform: scale(0.8);\n }\n }\n }\n &:nth-child(6) {\n animation: growSix 950ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 100ms);\n transform-origin: 40% 100%;\n\n @keyframes growSix {\n from {\n transform: scale(0.65);\n }\n }\n }\n &:nth-child(7) {\n animation: growSeven 750ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 150ms);\n transform-origin: 40% 0%;\n\n @keyframes growSeven {\n from {\n transform: scale(0.75);\n }\n }\n }\n &:nth-child(8) {\n animation: growEight 1650ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 40% 100%;\n\n @keyframes growEight {\n from {\n transform: scale(0.85);\n }\n }\n }\n &:nth-child(9) {\n animation: growNine 850ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 100% 0%;\n\n @keyframes growNine {\n from {\n transform: scale(0.65);\n }\n }\n }\n &:nth-child(10) {\n animation: growTen 1680ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 10% 0%;\n\n @keyframes growTen {\n from {\n transform: scale(0.75);\n }\n }\n }\n &:nth-child(11) {\n animation: growEleven 1225ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 0ms);\n transform-origin: 20% 80%;\n\n @keyframes growEleven {\n from {\n transform: scale(0.5);\n }\n }\n }\n &:nth-child(12) {\n animation: growTwelve 1225ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 300ms);\n transform-origin: 100% 50%;\n\n @keyframes growTwelve {\n from {\n transform: scale(0.25);\n }\n }\n }\n &:nth-child(13) {\n animation: growThirteen 725ms both var(--curve);\n animation-delay: calc(var(--base-delay) + 50ms);\n transform-origin: 0% 70%;\n\n @keyframes growThirteen {\n from {\n transform: scale(0.65);\n }\n }\n }\n }\n`;\n\nexport default FooterSuccessClouds;\n","'use client';\n\nimport * as React from 'react';\nimport { styled } from '@linaria/react';\nimport { useSpring, animated } from 'react-spring';\n\nimport useBoopMinimal from '@/hooks/use-boop-minimal';\nimport useRequestAnimationFrameLoop from '@/hooks/use-request-animation-frame-loop';\nimport {\n useNewsletterSignup,\n Status,\n} from '@/helpers/newsletter.helpers';\n\nimport Spinner from '@/components/Spinner';\nimport VisuallyHidden from '@/components/VisuallyHidden';\nimport FallAway from '@/components/FallAway';\nimport SubscribeError from '@/components/SubscribeError';\n\nimport FooterSuccessClouds from './FooterSuccessClouds';\n\nfunction FooterNewsletterForm({\n ...delegated\n}: React.HTMLAttributes) {\n const {\n status,\n emailFields,\n error,\n numOfEncounteredErrors,\n emailId,\n honeypotElem,\n handleSubmit,\n escapeHatches: { inputRef },\n } = useNewsletterSignup({\n tags: ['primaryNewsletter'],\n formName: 'primaryNewsletter',\n });\n\n return (\n \n \n {honeypotElem}\n {\n inputRef.current?.focus();\n }}\n >\n \n Want to know when I publish new content?\n \n \n Enter your email to join my free newsletter:\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n {status === 'success' && (\n \n )}\n \n );\n}\n\nfunction SubmitButton({ status }: { status: Status }) {\n const [progress, setProgress] = React.useState(0);\n\n const [isHovering, setIsHovering] = React.useState(false);\n const isBooped = useBoopMinimal(isHovering, 150);\n\n const boopStrength = 3;\n const lineSpring = useSpring({\n x2: isBooped ? 18 + boopStrength : 18,\n config: {\n tension: 300,\n friction: 10,\n },\n });\n const caretSpring = useSpring({\n points: isBooped\n ? `${12 + boopStrength} 5 ${19 + boopStrength} 12 ${12 + boopStrength} 19`\n : '12 5 19 12 12 19',\n config: {\n tension: 300,\n friction: 10,\n },\n });\n\n React.useEffect(() => {\n switch (status) {\n case 'submitting': {\n setProgress(0);\n return;\n }\n case 'success': {\n setProgress(100);\n return;\n }\n }\n }, [status]);\n\n useRequestAnimationFrameLoop(() => {\n const progressIncrement = (100 - progress) * 0.0175;\n setProgress((p) => Math.min(100, p + progressIncrement));\n }, status === 'submitting');\n\n const iconSize = 20;\n\n const showArrow = status !== 'submitting' && status !== 'success';\n\n return (\n setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n disabled={status === 'submitting' || status === 'success'}\n >\n \n Submit\n \n \n \n \n {status === 'submitting' && (\n \n \n \n )}\n \n );\n}\n\nconst OuterWrapper = styled.div`\n position: relative;\n`;\n\nconst Wrapper = styled.form`\n position: relative;\n padding-bottom: 16px;\n /*\n I measured, and this is the default height of the form.\n Doing this to prevent a layout shift when the success message is swapped in.\n */\n min-height: 7.25rem;\n /*\n On success, the fields fall away, and it looks a bit cleaner if we cut them off. Still looks fine in browsers that don't support 'overflow: clip'\n */\n overflow-y: clip;\n`;\n\nconst Intro = styled.p`\n font-size: 0.875rem;\n margin-bottom: 1em;\n cursor: default;\n max-width: 25rem;\n`;\n\nconst Row = styled.div`\n display: flex;\n gap: 8px;\n background: var(--color-background);\n max-width: 22rem;\n border-radius: 8px;\n padding: 4px;\n margin-left: -12px;\n margin-right: -12px;\n\n &:has(input:focus-visible) {\n background: var(--color-background);\n outline-color: Highlight;\n outline-color: -webkit-focus-ring-color;\n outline-style: auto;\n outline-width: 3px;\n outline-offset: 2px;\n }\n`;\n\nconst Input = styled.input`\n flex: 1;\n background: transparent;\n border: none;\n outline: none;\n font-size: 1rem;\n padding: 4px 8px;\n`;\nconst Button = styled.button`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 2.25rem;\n height: 2.25rem;\n background: black;\n color: white;\n border-radius: 4px;\n font-size: 0.875rem;\n transition:\n color var(--color-swap-duration),\n background var(--color-swap-duration);\n /* Hide the arrow when it takes off */\n overflow: hidden;\n overflow: clip;\n\n html[data-color-mode='dark'] & {\n background: hsl(50deg 100% 50%);\n background: oklch(0.9 0.22 97.52);\n color: black;\n }\n`;\n\nconst ProgressIndicator = styled.span`\n position: absolute;\n top: 0;\n right: 0;\n width: 120%;\n height: 100%;\n clip-path: polygon(\n 0% 0%,\n var(--progress) 0%,\n calc(var(--progress) + 20%) 100%,\n 0% 100%\n );\n\n html[data-color-mode='light'] & {\n background: hsl(200deg 70% 70% / 0.4);\n }\n html[data-color-mode='dark'] & {\n background: hsl(0deg 0% 100% / 0.8);\n }\n`;\n\nconst ArrowIcon = styled.svg`\n position: absolute;\n inset: 0;\n margin: auto;\n transition: transform 300ms;\n`;\n\nconst SpinnerWrapper = styled.span`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n animation: enter 500ms both;\n animation-delay: 200ms;\n\n @keyframes enter {\n from {\n opacity: 0;\n transform: scale(0.25);\n }\n }\n`;\n\nconst Error = styled(SubscribeError)`\n --color-primary: var(--color-error-500);\n background: var(--color-error-100);\n max-width: 22rem;\n border-radius: 8px;\n padding: 12px;\n margin-left: -12px;\n margin-top: 4px;\n animation: dropIn 400ms cubic-bezier(0.23, 0.62, 0.41, 1.01) both;\n animation-delay: 200ms;\n\n p {\n margin-bottom: 1em;\n font-size: 0.875rem;\n color: var(--color-error-500);\n text-align: center;\n animation: fadeIn 300ms 400ms both;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n a {\n color: inherit;\n }\n\n @keyframes dropIn {\n from {\n opacity: 0;\n transform: translateY(-6px);\n }\n }\n`;\n\nexport default FooterNewsletterForm;\n","'use client';\n\nimport { styled } from '@linaria/react';\nimport { animated } from 'react-spring';\nimport { Github, Linkedin } from 'lucide-react';\n\nimport useBoop from '@/hooks/use-boop';\n\nimport VisuallyHidden from '@/components/VisuallyHidden';\n\nconst ICON_MAP = {\n github: Github,\n linkedin: Linkedin,\n};\n\ninterface Props {\n href: string;\n alt: string;\n icon: keyof typeof ICON_MAP;\n}\n\nfunction IconLink({ href, alt, icon }: Props) {\n const [style, trigger] = useBoop({\n rotation: 5,\n });\n\n const Icon = ICON_MAP[icon];\n\n return (\n \n \n {alt}\n \n );\n}\n\nconst Wrapper = styled(animated.a)`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n height: 32px;\n color: inherit;\n transform-origin: 50% 85%;\n /* For focus outlines: */\n border-radius: 1000px;\n outline-offset: 2px;\n\n /* Increase tap target size */\n &::before {\n content: '';\n position: absolute;\n inset: -4px;\n }\n\n &:hover {\n color: var(--color-text);\n }\n`;\n\nexport default IconLink;\n","import { styled } from '@linaria/react';\n\ninterface Props extends React.HTMLAttributes {\n size: number | string;\n axis?: 'horizontal' | 'vertical';\n}\n\nfunction Spacer({ size, axis, style = {}, ...delegated }: Props) {\n return (\n \n );\n}\n\nconst Wrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport default Spacer;\n","export { default } from './Spacer';\n","import React from 'react';\nimport { styled } from '@linaria/react';\nimport { Loader } from 'lucide-react';\n\nimport { normalize } from '@/utils';\n\ninterface Props extends React.HTMLAttributes {\n size?: number;\n speed?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n color?: string;\n}\n\nconst Spinner = ({\n size = 24,\n color,\n speed = 5,\n style = {},\n ...delegated\n}: Props) => {\n const duration = normalize(speed, 1, 10, 2400, 200);\n return (\n \n \n \n );\n};\n\nconst Wrapper = styled.span`\n display: block;\n color: inherit;\n opacity: 0.75;\n transform-origin: center center;\n line-height: 0px;\n\n @media (prefers-reduced-motion: no-preference) {\n animation: spin var(--duration) linear infinite;\n }\n\n svg {\n display: block !important;\n height: var(--size);\n }\n\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n`;\n\nexport default Spinner;\n","export { default } from './Spinner';\n","/*\n This component is intended to be used, alongside with newsletter.helpers.tsx, whenever we have a newsletter signup form.\n It returns unstyled DOM nodes; for styling, compose with styled-components. For example:\n\n const ErrorMessage = styled(SubscribeError)`\n p {\n color: red;\n }\n `\n*/\n\nimport * as React from 'react';\n\nimport type { Status } from '@/helpers/newsletter.helpers';\nimport type { SubscribeErrorType } from '@/server/helpers/subscription.helpers';\n\nimport FadeOnChange from '@/components/FadeOnChange';\nimport TextLink from '@/components/Link/TextLink';\nimport Spacer from '@/components/Spacer';\n\ntype Variant = 'standard' | 'footer' | 'effective-portfolio';\n\ninterface Props extends React.HTMLAttributes {\n variant?: Variant;\n status: Status;\n error: SubscribeErrorType | null;\n // Sometimes, the error appearing and disappearing can cause ugly layout shifts. We can provide an `errorMinHeight`, which will ensure that a spacer is included specifically while there is at least 1 error and the status is `submitting`.\n errorMinHeight?: string;\n numOfEncounteredErrors: number;\n fallback?: React.ReactNode;\n}\n\nfunction SubscribeError({\n variant = 'standard',\n status,\n error,\n errorMinHeight,\n numOfEncounteredErrors,\n fallback,\n ...delegated\n}: Props) {\n let errorText = null;\n\n if (numOfEncounteredErrors > 1) {\n switch (variant) {\n case 'effective-portfolio': {\n errorText = (\n

\n Hmm, that still didn’t work. Sorry for the trouble!{' '}\n \n Please{' '}\n \n email me\n {' '}\n and I’ll send you a copy of my book.\n \n

\n );\n break;\n }\n\n case 'footer': {\n errorText = (\n <>\n

Hmm, that still didn’t work. Sorry about that!

\n

\n Please{' '}\n \n shoot me an email\n {' '}\n and I'll make sure you get subscribed.\n

\n \n );\n break;\n }\n\n default: {\n errorText = (\n

\n Hmm, that still didn’t work. Sorry for the trouble!{' '}\n \n Please{' '}\n \n email me\n {' '}\n and I’ll make sure you get subscribed.\n \n

\n );\n break;\n }\n }\n } else if (error === 'unreachable-server') {\n errorText = (\n

\n The server could not be reached. Please check\n your internet connection and try again.\n

\n );\n } else if (error === 'invalid-email') {\n errorText = (\n

\n Your email address appears to be invalid. If\n this is a mistake in my validation logic, please{' '}\n \n shoot me an email\n {' '}\n and let me know!\n

\n );\n } else if (error !== null) {\n // Catch-all, for unpredicted errors / errors that don't need custom messaging.\n errorText = (\n

\n Ack, something went wrong! Please try again.\n

\n );\n }\n\n // We have “fallback” context which should fade to/from an error message, but the logic for this is surprisingly thorny:\n // • For the happy path, the fallback message should never fade out. It should act like static content.\n // • When an error is encountered, it should fade to the error, but it should NOT fade back to the disclaimer on submit. It should stay blank instead, until the next error or a successful submission.\n //\n // NOTE: There is a known bug right now where the `fallback` doesn't come back on successful submission after encountering at least 1 error. I don't think it's a big enough deal to worry about.\n\n const isRetrying =\n numOfEncounteredErrors > 0 && status === 'submitting';\n\n return (\n \n {!!error &&
{errorText}
}\n {!error && !isRetrying && fallback}\n {!error && isRetrying && !!errorMinHeight && (\n \n )}\n
\n );\n}\n\nexport default SubscribeError;\n","export { default } from './SubscribeError';\n","import { sampleOne } from '@/utils';\n\nexport const generateFirstName = () => {\n return sampleOne([\n 'Maria',\n 'Nushi',\n 'Mohammed',\n 'Jose',\n 'Wei',\n 'Ahmed',\n 'Yan',\n 'Ali',\n 'John',\n 'David',\n 'Abdul',\n 'Anna',\n 'Michael',\n 'Juan',\n 'Mary',\n 'Jean',\n 'Robert',\n 'Daniel',\n 'Luis',\n 'Carlos',\n 'James',\n 'Antonio',\n 'Joseph',\n 'Elena',\n 'Francisco',\n 'Hong',\n 'Marie',\n 'Peter',\n 'Fatima',\n 'Richard',\n 'Paul',\n 'Olga',\n 'Rosa',\n 'William',\n 'Elizabeth',\n 'Patricia',\n 'Mario',\n 'Luigi',\n 'Patrick',\n 'Svetlana',\n 'Natalya',\n 'Sarah',\n 'Samuel',\n 'Ndeye',\n ]);\n};\n\nexport const generateLastName = () => {\n return sampleOne([\n 'Wang',\n 'Smith',\n 'Johnson',\n 'Williams',\n 'Devi',\n 'Ivanov',\n 'Kim',\n 'Ali',\n 'García',\n 'Müller',\n 'da Silva',\n 'Singh',\n 'Wilson',\n 'Martinez',\n 'Anderson',\n 'Taylor',\n 'Tesfaye',\n 'Nguyen',\n 'González',\n 'Deng',\n 'Lopez',\n 'Rodriguez',\n 'Lee',\n 'Moore',\n 'Hernandez',\n 'Jackson',\n 'Hansen',\n 'Chen',\n 'Schmidt',\n 'Gomez',\n 'Reyes',\n 'Zhao',\n 'Hoffmann',\n 'Kumar',\n 'Tremblay',\n 'Li',\n 'Wu',\n 'Ahmed',\n 'Jiang',\n ]);\n};\n\nexport const generateFullName = () => {\n let firstName = generateFirstName();\n let lastName = generateLastName();\n let prefix, initial;\n\n // 25% chance of middle initial\n if (Math.random() <= 0.25) {\n // prettier-ignore\n initial = sampleOne(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']) + '.';\n }\n\n // 5% of Dr. prefix\n if (Math.random() <= 0.05) {\n prefix = 'Dr.';\n }\n\n return [prefix, firstName, initial, lastName]\n .filter(Boolean)\n .join(' ');\n};\n\nexport const generateEmailDomain = () => {\n return sampleOne([\n 'gmail.com',\n 'yahoo.com',\n 'hotmail.com',\n 'aol.com',\n 'yahoo.co.uk',\n 'live.com',\n 'web.de',\n 'libero.it',\n 'comcast.net',\n ]);\n};\n\nexport const generateEmail = () => {\n const firstName = generateFirstName().toLowerCase();\n const domain = sampleOne([\n 'gmail.com',\n 'yahoo.com',\n 'hotmail.com',\n 'aol.com',\n 'yahoo.co.uk',\n 'live.com',\n 'web.de',\n 'libero.it',\n 'comcast.net',\n generateLastName().toLowerCase() + '.dev',\n ]);\n\n return `${firstName}@${domain}`;\n};\n\nexport const generateHandle = (name?: string) => {\n // if we provide a name, there's a 75% chance we'll use their first name plus some numbers\n if (name && Math.random() <= 0.75) {\n return `${name.split(' ')[0]}${Math.floor(Math.random() * 100)}`;\n }\n\n // Otherwise, make something up from scratch\n return sampleOne(COOL_HANDLES);\n};\n\nexport const generateLocation = (): [string, string] => {\n const [city, country] = sampleOne(LOCATIONS);\n\n return [city, country];\n};\nexport const generateJob = (): string => {\n return sampleOne(JOBS);\n};\n\nconst LOCATIONS = [\n ['Buenos Aires', 'AR'],\n ['Sydney', 'AU'],\n ['São Paulo', 'BR'],\n ['Ottawa', 'CA'],\n ['Toronto', 'CA'],\n ['Kinshasa', 'CD'],\n ['Chongqing', 'CN'],\n ['Frankfurt', 'DE'],\n ['Cairo', 'EG'],\n ['Paris', 'FR'],\n ['London', 'GB'],\n ['Hong Kong', 'HK'],\n ['Jakarta', 'ID'],\n ['Delhi', 'IN'],\n ['Mumbai', 'IN'],\n ['Baghdad', 'IQ'],\n ['Tehran', 'IR'],\n ['Tokyo', 'JP'],\n ['Seoul', 'KR'],\n ['Kuala Lumpur', 'MY'],\n ['Mexico City', 'MX'],\n ['Amsterdam', 'NL'],\n ['Karachi', 'PK'],\n ['Singapore', 'SG'],\n ['Barcelona', 'SP'],\n ['Istanbul', 'TR'],\n ['Chicago', 'US'],\n ['New York', 'US'],\n ['San Francisco', 'US'],\n];\n\nconst COOL_HANDLES = [\n 'ExpertCoder99',\n 'eyeofthestorm',\n 'peaceandlove42069',\n 'TransRightsAreHumanRights',\n 'taylorswiftfan2',\n 'porterrobinsonfan',\n 'gohabsgo',\n 'modularmusic',\n 'webdevwizard',\n 'codingisfun',\n 'javascriptjammer',\n 'envelopegenerator',\n 'fractal161',\n 'vandweller',\n 'solarpowered',\n 'bengalragdoll',\n 'lychee1213',\n 'luckycat',\n 'dogplayingtetris',\n 'pixeljosh',\n 'boxmodel',\n 'stickjoy',\n 'blanketfort',\n 'blinkofaneye',\n 'cheerleader',\n 'bubblepop',\n 'nostalgic9',\n 'virtualmotion',\n 'solarsurfer',\n 'somethingcorporate',\n 'andsoifall',\n 'sunsetdreams',\n 'blasphemous',\n 'prettysunset',\n 'foxstevenson',\n 'pianowiggle',\n 'timhenson',\n 'KentuckyFriedDodds',\n 'supersawpluck',\n 'distortedsines',\n 'alltheharmonics',\n];\n\nconst JOBS = [\n 'Software Developer',\n 'Crypto Grifter',\n 'Freelancer',\n 'Web Designer',\n '3D Artist',\n 'Producer',\n 'Product Manager',\n 'Engineering Manager',\n 'Data Scientist',\n 'Teacher',\n 'Student',\n 'Street Performer',\n 'Lead Guitarist',\n 'Intern',\n 'Staff Software Engineer',\n 'Principal Engineer',\n 'Senior Eng Manager',\n 'Director of Engineering',\n 'VP of Engineering',\n 'CEO',\n 'CTO',\n 'Accountant',\n 'HR Manager',\n 'Recruiter',\n 'Director of Sales',\n 'Sales Manager',\n 'QA Engineer',\n 'Barista',\n 'Tattoo Artist',\n 'Graphic Designer',\n 'Illustrator',\n 'Funemployed',\n 'Influencer',\n];\n","/*\n So the thing is, it's just not realistic to have a single component. There are too many possible variations. Instead, this helper module has all of the bits of logic I can use to quickly build as many signup forms as I need.\n*/\n\nimport * as React from 'react';\n\nimport { generateEmail } from '@/helpers/fake-data.helpers';\nimport useSound from '@/hooks/use-sound';\nimport type {\n NewsletterFormName,\n NewsletterTagName,\n} from '@/constants';\nimport type { SubscribeErrorType } from '@/server/helpers/subscription.helpers';\n\nimport VisuallyHidden from '@/components/VisuallyHidden';\n\nexport type Status = 'loading' | 'idle' | 'submitting' | 'success';\nexport type ConfettiStatus = 'inert' | 'preload' | 'active';\n\ninterface Options {\n formName?: NewsletterFormName;\n tags?: Array;\n callbacks?: {\n onStart?: (ev: React.FormEvent) => void;\n onSuccess?: (email: string) => void;\n onFailure?: (error: SubscribeErrorType) => void;\n };\n}\n\nexport function useNewsletterSignup({\n formName = 'primaryNewsletter',\n tags = ['primaryNewsletter'],\n callbacks = {},\n}: Options) {\n const id = React.useId();\n const honeypotId = 'pot-' + id.replace(/:/g, '-');\n const emailId = 'email-' + id.replace(/:/g, '-');\n\n const inputRef = React.useRef(null);\n\n const timeoutIdRef = React.useRef(null);\n\n const tagsRef = React.useRef(tags);\n tagsRef.current = tags;\n const callbacksRef = React.useRef(callbacks);\n callbacksRef.current = callbacks;\n\n const [status, setStatus] = React.useState('loading');\n const [error, setError] = React.useState(\n null\n );\n const [numOfEncounteredErrors, setNumOfEncounteredErrors] =\n React.useState(0);\n\n const [email, setEmail] = React.useState('');\n const [emailPlaceholder, setEmailPlaceholder] = React.useState('');\n\n const [honeypotTripped, setHoneypotTripped] = React.useState(false);\n\n React.useEffect(() => {\n setEmailPlaceholder(generateEmail());\n setStatus('idle');\n\n return () => {\n if (typeof timeoutIdRef.current === 'number') {\n window.clearTimeout(timeoutIdRef.current);\n }\n };\n }, []);\n\n const internalHandleFailure = React.useCallback(\n (error: SubscribeErrorType, requestStartAt: number) => {\n // We want to wait at least 500ms before showing the error, to make it not seem automatic / illegitimate.\n const timeElapsed = Date.now() - requestStartAt;\n const timeRemaining = 500 - timeElapsed;\n\n if (timeRemaining > 0) {\n timeoutIdRef.current = window.setTimeout(() => {\n internalHandleFailure(error, requestStartAt);\n }, timeRemaining);\n return;\n }\n\n setStatus('idle');\n setError(error);\n setNumOfEncounteredErrors((prev) => prev + 1);\n\n // We want to re-focus the input so that the user can easily fix their email / try again. The FadeOnChange component takes a bit of time to show the new error message, though. So we’ll synchronize the refocusing with the error message:\n timeoutIdRef.current = window.setTimeout(() => {\n inputRef.current?.focus({ preventScroll: true });\n }, 300);\n\n callbacksRef.current?.onFailure?.(error);\n },\n [inputRef]\n );\n\n const handleSubmit = React.useCallback(\n (ev: React.FormEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (status === 'loading') {\n window.alert(\n 'This form is still loading. Please try again in a few seconds.'\n );\n return;\n } else if (status === 'submitting') {\n // Ignore requests made by spamming the button\n return;\n }\n\n const { onStart, onSuccess } = callbacksRef.current;\n const tags = tagsRef.current;\n\n setStatus('submitting');\n setError(null);\n\n onStart?.(ev);\n\n const requestStartAt = Date.now();\n\n fetch('/api/subscribe-user', {\n method: 'POST',\n body: JSON.stringify({\n email,\n terms: honeypotTripped,\n tags,\n formName,\n }),\n })\n .then((res) => res.json())\n .then((json) => {\n // Skip the confetti and all that if we have a URL to forward to:\n if (json.status === 'success' && json.forwardTo) {\n window.location.href = json.forwardTo;\n return;\n }\n\n if (json.status !== 'success') {\n internalHandleFailure(\n json.status || 'unknown-error',\n requestStartAt\n );\n return;\n }\n\n setStatus('success');\n\n onSuccess?.(email);\n })\n .catch(() => {\n internalHandleFailure('unreachable-server', requestStartAt);\n });\n },\n [email, status, formName, honeypotTripped, internalHandleFailure]\n );\n\n const honeypotElem = (\n \n \n {\n setHoneypotTripped(event.target.checked);\n }}\n />\n \n );\n\n const emailFields = {\n ref: inputRef,\n type: 'email',\n placeholder: emailPlaceholder,\n value: email,\n onChange: (ev: React.ChangeEvent) => {\n setEmail(ev.currentTarget.value);\n },\n disabled: status === 'submitting',\n autoComplete: 'email',\n required: true,\n };\n\n return {\n emailId,\n status,\n error,\n numOfEncounteredErrors,\n emailFields,\n honeypotElem,\n handleSubmit,\n\n escapeHatches: {\n setEmail,\n inputRef,\n },\n };\n}\n\nexport function useConfetti() {\n const hasBeenTriggered = React.useRef(false);\n\n const [confettiStatus, setConfettiStatus] =\n React.useState('inert');\n\n const [playFanfare] = useSound('/sounds/fanfare.mp3', {\n volume: 0.4,\n });\n const [playPfff] = useSound('/sounds/pfff.mp3', { volume: 0.4 });\n\n const timeoutId = React.useRef(null);\n\n const handleLoadConfetti = React.useCallback(() => {\n setConfettiStatus('preload');\n }, []);\n\n // NOTE: Cannot wrap in `useCallback` since that breaks audio playback. I guess Chrome no longer views the function call as happening in response to an event?\n const handleTriggerConfetti = () => {\n // The confetti only fires the first time, since we aren't resetting `SubscribeGeyser`. Rather than fix that, seems easier to skip the SFX and all the business on repeated submissions.\n if (hasBeenTriggered.current) {\n return;\n }\n\n hasBeenTriggered.current = true;\n\n if (typeof timeoutId.current === 'number') {\n window.clearTimeout(timeoutId.current);\n }\n\n playFanfare();\n\n timeoutId.current = window.setTimeout(() => {\n playPfff();\n setConfettiStatus('active');\n }, 1750);\n\n return () => {\n if (typeof timeoutId.current === 'number') {\n window.clearTimeout(timeoutId.current);\n }\n };\n };\n\n return {\n confettiStatus,\n handleLoadConfetti,\n handleTriggerConfetti,\n };\n}\n","import * as React from 'react';\nimport { useSpring, SpringValue } from 'react-spring';\n\nimport usePrefersReducedMotion from '@/hooks/use-prefers-reduced-motion';\n\ntype BoopStyle = {\n transform: SpringValue;\n backfaceVisibility: 'hidden';\n};\ntype BoopTrigger = () => void;\n\nfunction useBoop({\n x = 0,\n y = 0,\n rotation = 0,\n scale = 1,\n timing = 150,\n springConfig = {\n tension: 300,\n friction: 10,\n },\n}): [BoopStyle, BoopTrigger] {\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const [isBooped, setIsBooped] = React.useState(false);\n\n const style: BoopStyle = {\n ...useSpring({\n transform:\n isBooped && !prefersReducedMotion\n ? `translate(${x}px, ${y}px)\n rotate(${rotation}deg)\n scale(${scale})`\n : `translate(0px, 0px)\n rotate(0deg)\n scale(1)`,\n config: springConfig,\n }),\n backfaceVisibility: 'hidden',\n };\n\n React.useEffect(() => {\n if (!isBooped) {\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n setIsBooped(false);\n }, timing);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [isBooped, timing]);\n\n const trigger = React.useCallback(() => {\n setIsBooped(true);\n }, []);\n\n return [style, trigger];\n}\n\nexport default useBoop;\n","import React from 'react';\n\nconst useRequestAnimationFrameLoop = (\n callback: () => any,\n isRunning: boolean = true\n) => {\n const animationFrameId = React.useRef(null);\n const savedCallback = React.useRef(callback);\n\n React.useEffect(() => {\n savedCallback.current = callback;\n });\n\n React.useEffect(() => {\n if (!isRunning) {\n return;\n }\n\n const tick = () => {\n if (typeof savedCallback.current !== 'function') {\n return;\n }\n\n savedCallback.current();\n animationFrameId.current = window.requestAnimationFrame(tick);\n };\n\n tick();\n\n return () => {\n if (typeof animationFrameId.current === 'number') {\n window.cancelAnimationFrame(animationFrameId.current);\n }\n };\n }, [isRunning]);\n\n return animationFrameId.current;\n};\n\nexport default useRequestAnimationFrameLoop;\n","import * as React from 'react';\nimport useSoundBase from 'use-sound';\n\nimport { UserPreferencesContext } from '@/components/UserPreferencesProvider';\n\nexport default function useSound(url: string, delegated: any = {}) {\n const { soundEnabled } = React.useContext(UserPreferencesContext);\n\n return useSoundBase(url, { ...delegated, soundEnabled });\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"amgfren\":\"amgfren\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"s1gvsyfu\":\"s1gvsyfu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"l17lpp8k\":\"l17lpp8k\",\"d16kq653\":\"d16kq653\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wqjv1yv\":\"wqjv1yv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wunnvwv\":\"wunnvwv\",\"fallAway-wunnvwv\":\"fallAway-wunnvwv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"s1x6xrh0\":\"s1x6xrh0\",\"wrjvada\":\"wrjvada\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"smm9umv\":\"smm9umv\",\"s5z4at1\":\"s5z4at1\",\"pop-s5z4at1\":\"pop-s5z4at1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"s11zvmub\":\"s11zvmub\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w4ln40i\":\"w4ln40i\",\"s15za2df\":\"s15za2df\",\"s1qsi09f\":\"s1qsi09f\",\"shimmer\":\"shimmer\",\"slgln6u\":\"slgln6u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"slyn8ky\":\"slyn8ky\",\"pv1k4t7\":\"pv1k4t7\",\"sq4k8cp\":\"sq4k8cp\",\"s1um8jkh\":\"s1um8jkh\",\"speakerWiggle-s1um8jkhpv1k4t7\":\"speakerWiggle-s1um8jkhpv1k4t7\",\"w1azqaf0\":\"w1azqaf0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w17zbdjf\":\"w17zbdjf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"s1j91s21\":\"s1j91s21\",\"s14qet46\":\"s14qet46\",\"p7a6phg\":\"p7a6phg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"a1tdgj4y\":\"a1tdgj4y\",\"wcnkszl\":\"wcnkszl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w17lbfx3\":\"w17lbfx3\",\"gr874hq\":\"gr874hq\",\"goxpqke\":\"goxpqke\",\"scoochLeft-goxpqkegr874hq\":\"scoochLeft-goxpqkegr874hq\",\"f5ggs7\":\"f5ggs7\",\"f7ysafc\":\"f7ysafc\",\"scoochRight-f7ysafcf5ggs7\":\"scoochRight-f7ysafcf5ggs7\",\"l1ngw3bx\":\"l1ngw3bx\",\"l1c4qjpw\":\"l1c4qjpw\",\"selfDraw-l1c4qjpwl1ngw3bx\":\"selfDraw-l1c4qjpwl1ngw3bx\",\"i9xec9h\":\"i9xec9h\",\"idwm85l\":\"idwm85l\",\"selfDraw-idwm85li9xec9h\":\"selfDraw-idwm85li9xec9h\",\"p16e8bzl\":\"p16e8bzl\",\"irj294a\":\"irj294a\",\"i100qmoq\":\"i100qmoq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1cq22pq\":\"w1cq22pq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"t1tlw9bm\":\"t1tlw9bm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fb2am7i\":\"fb2am7i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"o1xij0rw\":\"o1xij0rw\",\"w2bo5dh\":\"w2bo5dh\",\"i10pfxxo\":\"i10pfxxo\",\"r1jmr965\":\"r1jmr965\",\"i1vzjbo1\":\"i1vzjbo1\",\"b1i6gnav\":\"b1i6gnav\",\"p1yz2o0p\":\"p1yz2o0p\",\"arcsmi4\":\"arcsmi4\",\"s1elub26\":\"s1elub26\",\"enter-s1elub26\":\"enter-s1elub26\",\"e11cm64s\":\"e11cm64s\",\"dropIn-e11cm64s\":\"dropIn-e11cm64s\",\"fadeIn\":\"fadeIn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1mujzw7\":\"w1mujzw7\",\"enter-w1mujzw7\":\"enter-w1mujzw7\",\"c1rzx56q\":\"c1rzx56q\",\"fadeIn\":\"fadeIn\",\"s2j6glx\":\"s2j6glx\",\"growOne-s2j6glx\":\"growOne-s2j6glx\",\"growTwo-s2j6glx\":\"growTwo-s2j6glx\",\"growThree-s2j6glx\":\"growThree-s2j6glx\",\"growFour-s2j6glx\":\"growFour-s2j6glx\",\"growFive-s2j6glx\":\"growFive-s2j6glx\",\"growSix-s2j6glx\":\"growSix-s2j6glx\",\"growSeven-s2j6glx\":\"growSeven-s2j6glx\",\"growEight-s2j6glx\":\"growEight-s2j6glx\",\"growNine-s2j6glx\":\"growNine-s2j6glx\",\"growTen-s2j6glx\":\"growTen-s2j6glx\",\"growEleven-s2j6glx\":\"growEleven-s2j6glx\",\"growTwelve-s2j6glx\":\"growTwelve-s2j6glx\",\"growThirteen-s2j6glx\":\"growThirteen-s2j6glx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wtc3d9c\":\"wtc3d9c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bwhtsx5\":\"bwhtsx5\",\"w12sqewt\":\"w12sqewt\",\"wd6hsrp\":\"wd6hsrp\",\"iwnpaet\":\"iwnpaet\",\"s19hmjl2\":\"s19hmjl2\",\"s11c2unw\":\"s11c2unw\",\"lqsyp1m\":\"lqsyp1m\",\"c1ryx62z\":\"c1ryx62z\",\"cewaxi0\":\"cewaxi0\",\"m1p8ktpj\":\"m1p8ktpj\",\"s1jnxy9z\":\"s1jnxy9z\",\"m1e3nesg\":\"m1e3nesg\",\"lfmb6v3\":\"lfmb6v3\",\"l1n09z53\":\"l1n09z53\",\"cmsru6n\":\"cmsru6n\",\"lsaasn7\":\"lsaasn7\",\"ll46nlp\":\"ll46nlp\",\"lmb90g4\":\"lmb90g4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1fjy7al\":\"w1fjy7al\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"w1gpdsbs\":\"w1gpdsbs\",\"spin-w1gpdsbs\":\"spin-w1gpdsbs\"};"],"names":["Arrow","styled","animated","path","name","class","propsAsIs","ExternalIcon","size","isHovering","accentColor","timing","style","delegated","React","isBooped","useBoopMinimal","maskId","id","prefersReducedMotion","usePrefersReducedMotion","springSettings","config","SPRINGS","springy","immediate","arrowSpring","useSpring","d","width","height","opacity","Wrapper","FadeOnChange","as","duration","changeKey","children","status","setStatus","wrapperRef","HTMLSpanElement","cachedChildren","current","handleTransitionEnd","s","elem","addEventListener","INITIAL_STATE","modals","superheader","GlobalUIContext","GlobalUIDispatchContext","reducer","state","action","produce","draftState","type","modal","modalId","isOpen","forcedValue","countryFromIP","country","useGlobalUIState","useGlobalUIDispatch","useGlobalUIActions","dispatch","openModal","closeModal","closeAllModals","toggleModal","dismissSuperheader","GlobalUIProvider","Provider","value","FLAP_SPRITE","first","second","third","fourth","FLAP_KEYS","Object","IconBluesky","leftWingStyle","transform","tension","friction","random","delay","sampleOne","rightWingStyle","Svg","Wing","WrappedIconBluesky","playRaw","useSound","sprite","volume","props","IconColorMode","colorMode","isTransitioning","includeEnterAnimation","enterAnimationDelay","replace","isDark","svgSpring","moonCutoutSpring","cx","cy","sunMoonSpring","r","SUN_RADIUS","MOON_RADIUS","sunMaskSpring","sunDotAngles","range","map","_","index","sunDotTrail","useTrail","length","isVisible","sunDotSpring","angle","angleInRads","Math","PI","indexInInitialArray","indexOf","String","hypothenuse","to","c","roundTo","centerX","cos","centerY","sin","val","_exp","svg","SunDot","circle","WrappedIconColorMode","UserPreferencesContext","toggleColorMode","SetUserPreferencesContext","setIsTransitioning","NavigationTrackerContext","playOn","playOff","timeoutId","onTrigger","preventDefault","clearTimeout","window","setTimeout","mostRecentNavigationFrom","IconRSS","circleSpring","innerRingSpring","i","o","outerRingSpring","RSSLink","IconSearch","iconStyle","shimmerStyle","ShimmerWrapper","Shimmer","span","WrappedIconSearch","Omit","SEARCH_MODAL_ID","IconSpeaker","soundEnabled","hasBeenToggled","speakerSpring","waveOneSpring","waveTwoSpring","transitionDelay","Path","SpeakerWrapper","Speaker","_exp2","WaveWrapper","WrappedIconSpeaker","toggleSoundEnabled","setHasBeenToggled","ev","forceSoundEnabled","IconWrapper","alt","boopOn","boopTiming","isEngaged","setIsEngaged","isLink","Link","onClick","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","StyledLink","StyledExternalIcon","PreventOrphan","ref","last","href","target","rel","prefetch","skipViewTransitions","preventExternalIcon","setIsHovering","startViewTransition","useViewTransition","setMostRecentNavigationFrom","SetNavigationTrackerContext","router","useRouter","pathname","usePathname","linkDestination","LinkDestination","match","undefined","safeRel","includeExternalIcon","words","split","slice","join","isTryingToOpenInNewTab","event","metaKey","ctrlKey","stopPropagation","push","Anchor","TextLink","timeAppropriateGreeting","getTimeOfDay","Affirmation","affirmation","setAffirmation","selectedAffirmation","Date","getMonth","affirmations","FallAway","when","distance","rotation","Content","FooterSuccessClouds","baseDelay","SubmitButton","progress","setProgress","lineSpring","x2","boopStrength","caretSpring","points","useRequestAnimationFrameLoop","progressIncrement","min","p","showArrow","iconSize","transitionTimingFunction","OuterWrapper","Intro","Row","Input","Button","ProgressIndicator","ArrowIcon","SpinnerWrapper","Error","SubscribeError","FooterNewsletterForm","emailFields","error","numOfEncounteredErrors","emailId","honeypotElem","handleSubmit","escapeHatches","inputRef","useNewsletterSignup","tags","formName","focus","ICON_MAP","github","Github","linkedin","Linkedin","a","IconLink","icon","trigger","useBoop","Icon","Spacer","axis","minWidth","minHeight","Spinner","speed","normalize","color","variant","errorMinHeight","fallback","errorText","strong","isRetrying","div","generateFirstName","generateLastName","generateFullName","prefix","initial","firstName","lastName","filter","Boolean","generateEmailDomain","generateEmail","toLowerCase","domain","floor","COOL_HANDLES","generateLocation","city","LOCATIONS","JOBS","callbacks","honeypotId","timeoutIdRef","tagsRef","callbacksRef","setError","setNumOfEncounteredErrors","email","setEmail","emailPlaceholder","setEmailPlaceholder","honeypotTripped","setHoneypotTripped","internalHandleFailure","requestStartAt","timeRemaining","timeElapsed","now","prev","preventScroll","onFailure","alert","onStart","onSuccess","fetch","method","body","JSON","stringify","terms","then","res","json","forwardTo","location","catch","placeholder","onChange","currentTarget","disabled","autoComplete","required","VisuallyHidden","label","htmlFor","input","checked","useConfetti","hasBeenTriggered","confettiStatus","setConfettiStatus","playFanfare","playPfff","handleLoadConfetti","handleTriggerConfetti","x","y","scale","springConfig","setIsBooped","backfaceVisibility","callback","isRunning","animationFrameId","savedCallback","tick","requestAnimationFrame","cancelAnimationFrame","url","useSoundBase"],"sourceRoot":"","ignoreList":[]}