refract-ui 0.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -3
- package/dist/RefractProvider-Bzz4G22S.cjs +25 -0
- package/dist/RefractProvider-Bzz4G22S.cjs.map +1 -0
- package/dist/RefractProvider-D__A8gQl.js +238 -0
- package/dist/RefractProvider-D__A8gQl.js.map +1 -0
- package/dist/assets/iphone-11.glb +0 -0
- package/dist/assets/macbook-pro.glb +0 -0
- package/dist/carousel.cjs +48 -1
- package/dist/carousel.cjs.map +1 -1
- package/dist/carousel.js +300 -0
- package/dist/carousel.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +10 -0
- package/dist/components/Breadcrumbs/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +22 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Carousel/Carousel.d.ts +21 -0
- package/dist/components/Carousel/index.d.ts +1 -0
- package/dist/components/Divider/Divider.d.ts +12 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Heading/Heading.d.ts +9 -0
- package/dist/components/Heading/index.d.ts +2 -0
- package/dist/components/Icon/Icon.d.ts +30 -0
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Image/Image.d.ts +27 -0
- package/dist/components/Image/index.d.ts +1 -0
- package/dist/components/Input/Input.d.ts +21 -0
- package/dist/components/Input/TextArea.d.ts +11 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Link/Link.d.ts +10 -0
- package/dist/components/Link/index.d.ts +1 -0
- package/dist/components/LinkProvider/LinkProvider.d.ts +11 -0
- package/dist/components/LinkProvider/index.d.ts +1 -0
- package/dist/components/List/List.d.ts +11 -0
- package/dist/components/List/index.d.ts +1 -0
- package/dist/components/Loader/Loader.d.ts +6 -0
- package/dist/components/Loader/index.d.ts +2 -0
- package/dist/components/Model/Model.d.ts +40 -0
- package/dist/components/Model/deviceModels.d.ts +29 -0
- package/dist/components/Model/index.d.ts +2 -0
- package/dist/components/RefractProvider/RefractProvider.d.ts +20 -0
- package/dist/components/RefractProvider/index.d.ts +1 -0
- package/dist/components/ScrambleReveal/ScrambleReveal.d.ts +9 -0
- package/dist/components/ScrambleReveal/index.d.ts +1 -0
- package/dist/components/Section/Section.d.ts +8 -0
- package/dist/components/Section/index.d.ts +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +15 -0
- package/dist/components/SegmentedControl/index.d.ts +1 -0
- package/dist/components/Table/Table.d.ts +11 -0
- package/dist/components/Table/index.d.ts +1 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +21 -0
- package/dist/components/ThemeProvider/index.d.ts +5 -0
- package/dist/components/ThemeProvider/theme.d.ts +138 -0
- package/dist/components/ThemeProvider/useTheme.d.ts +2 -0
- package/dist/components/Transition/Transition.d.ts +19 -0
- package/dist/components/Transition/index.d.ts +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +10 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/components/Wordmark/Wordmark.d.ts +5 -0
- package/dist/components/Wordmark/index.d.ts +2 -0
- package/dist/entries/carousel.d.ts +1 -1
- package/dist/entries/model.d.ts +1 -1
- package/dist/hooks/useFormInput.d.ts +11 -0
- package/dist/hooks/useFps.d.ts +8 -0
- package/dist/hooks/useHasMounted.d.ts +1 -0
- package/dist/hooks/useInViewport.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.js +914 -45
- package/dist/index.js.map +1 -1
- package/dist/model.cjs +4 -1
- package/dist/model.cjs.map +1 -1
- package/dist/model.js +267 -0
- package/dist/model.js.map +1 -1
- package/dist/style-CWBkJEps.cjs +2 -0
- package/dist/style-CWBkJEps.cjs.map +1 -0
- package/dist/style-uMN7vipQ.js +96 -0
- package/dist/style-uMN7vipQ.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/three-CWsiEOQZ.js +48 -0
- package/dist/three-CWsiEOQZ.js.map +1 -0
- package/dist/three-aeLbW1yA.cjs +2 -0
- package/dist/three-aeLbW1yA.cjs.map +1 -0
- package/dist/tokens.css +1 -0
- package/dist/utils/delay.d.ts +1 -0
- package/dist/utils/image.d.ts +31 -0
- package/dist/utils/three.d.ts +29 -0
- package/package.json +5 -5
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils/style.ts","../src/components/Text/Text.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\n\n/**\n * Media query breakpoints\n */\nexport const media = {\n desktop: 2080,\n laptop: 1680,\n tablet: 1040,\n mobile: 696,\n mobileS: 400,\n} as const;\n\n/**\n * Convert a px string to a number\n */\nexport const pxToNum = (px: string): number => Number(px.replace('px', ''));\n\n/**\n * Convert a number to a px string\n */\nexport const numToPx = (num: number): string => `${num}px`;\n\n/**\n * Convert pixel values to rem for a11y\n */\nexport const pxToRem = (px: number): string => `${px / 16}rem`;\n\n/**\n * Convert ms token values to a raw numbers for ReactTransitionGroup\n * Transition delay props\n */\nexport const msToNum = (msString: string): number => Number(msString.replace('ms', ''));\n\n/**\n * Convert a number to an ms string\n */\nexport const numToMs = (num: number): string => `${num}ms`;\n\n/**\n * Convert an rgb theme property (e.g. rgbBlack: '0 0 0')\n * to values that can be spread into a ThreeJS Color class\n */\nexport const rgbToThreeColor = (rgb: string | undefined): number[] =>\n rgb?.split(' ').map(value => Number(value) / 255) || [];\n\n/**\n * Convert a JS object into `--` prefixed css custom properties.\n * Optionally pass a second param for normal styles\n */\nexport function cssProps(\n props: Record<string, string | number>,\n style: CSSProperties = {}\n): Record<string, string | number> & CSSProperties {\n const result: Record<string, string | number> = {};\n\n const keys = Object.keys(props);\n\n for (const key of keys) {\n let value: string | number = props[key];\n\n if (typeof value === 'number' && key === 'delay') {\n value = numToMs(value);\n }\n\n if (typeof value === 'number' && key !== 'opacity') {\n value = numToPx(value);\n }\n\n result[`--${key}`] = value;\n }\n\n return { ...result, ...style };\n}\n\n/**\n * Concatenate classNames together\n */\nexport function classes(...args: (string | false | undefined | null)[]): string {\n return args.filter(Boolean).join(' ');\n}\n","import { type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './Text.module.css';\n\nexport interface TextProps extends ComponentPropsWithoutRef<'span'> {\n children?: ReactNode;\n size?: 's' | 'm' | 'l' | 'xl';\n as?: ElementType;\n align?: string;\n weight?: string;\n secondary?: boolean;\n}\n\nexport const Text = ({\n children,\n size = 'm',\n as: Component = 'span',\n align = 'auto',\n weight = 'auto',\n secondary,\n className,\n ...rest\n}: TextProps) => {\n return (\n <Component\n className={classes(styles.text, className)}\n data-align={align}\n data-size={size}\n data-weight={weight}\n data-secondary={secondary}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n"],"names":["media","pxToNum","px","numToPx","num","pxToRem","msToNum","msString","numToMs","rgbToThreeColor","rgb","value","cssProps","props","style","result","keys","key","classes","args","Text","children","size","Component","align","weight","secondary","className","rest","jsx","styles"],"mappings":"kIAKaA,EAAQ,CACnB,QAAS,KACT,OAAQ,KACR,OAAQ,KACR,OAAQ,IACR,QAAS,GACX,EAKaC,EAAWC,GAAuB,OAAOA,EAAG,QAAQ,KAAM,EAAE,CAAC,EAK7DC,EAAWC,GAAwB,GAAGA,CAAG,KAKzCC,EAAWH,GAAuB,GAAGA,EAAK,EAAE,MAM5CI,EAAWC,GAA6B,OAAOA,EAAS,QAAQ,KAAM,EAAE,CAAC,EAKzEC,EAAWJ,GAAwB,GAAGA,CAAG,KAMzCK,EAAmBC,IAC9BA,GAAA,YAAAA,EAAK,MAAM,KAAK,IAAIC,GAAS,OAAOA,CAAK,EAAI,OAAQ,CAAA,EAMhD,SAASC,EACdC,EACAC,EAAuB,GAC0B,CACjD,MAAMC,EAA0C,CAAA,EAE1CC,EAAO,OAAO,KAAKH,CAAK,EAE9B,UAAWI,KAAOD,EAAM,CACtB,IAAIL,EAAyBE,EAAMI,CAAG,EAElC,OAAON,GAAU,UAAYM,IAAQ,UACvCN,EAAQH,EAAQG,CAAK,GAGnB,OAAOA,GAAU,UAAYM,IAAQ,YACvCN,EAAQR,EAAQQ,CAAK,GAGvBI,EAAO,KAAKE,CAAG,EAAE,EAAIN,CACvB,CAEA,MAAO,CAAE,GAAGI,EAAQ,GAAGD,CAAA,CACzB,CAKO,SAASI,KAAWC,EAAqD,CAC9E,OAAOA,EAAK,OAAO,OAAO,EAAE,KAAK,GAAG,CACtC,oCCnEaC,EAAO,CAAC,CACnB,SAAAC,EACA,KAAAC,EAAO,IACP,GAAIC,EAAY,OAChB,MAAAC,EAAQ,OACR,OAAAC,EAAS,OACT,UAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAEIC,EAAAA,IAACN,EAAA,CACC,UAAWL,EAAQY,EAAO,KAAMH,CAAS,EACzC,aAAYH,EACZ,YAAWF,EACX,cAAaG,EACb,iBAAgBC,EACf,GAAGE,EAEH,SAAAP,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/components/Text/Text.tsx","../src/components/Heading/Heading.tsx","../src/components/Section/Section.tsx","../src/components/List/List.tsx","../src/components/Divider/Divider.tsx","../src/components/Table/Table.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/Transition/Transition.tsx","../src/components/Loader/Loader.tsx","../src/components/Icon/svg/arrow-left.svg","../src/components/Icon/svg/arrow-right.svg","../src/components/Icon/svg/articles.svg","../src/components/Icon/svg/check.svg","../src/components/Icon/svg/chevron-right.svg","../src/components/Icon/svg/close.svg","../src/components/Icon/svg/company.svg","../src/components/Icon/svg/copy.svg","../src/components/Icon/svg/download.svg","../src/components/Icon/svg/error.svg","../src/components/Icon/svg/figma.svg","../src/components/Icon/svg/github.svg","../src/components/Icon/svg/link.svg","../src/components/Icon/svg/linkedin.svg","../src/components/Icon/svg/menu.svg","../src/components/Icon/svg/pause.svg","../src/components/Icon/svg/play.svg","../src/components/Icon/svg/send.svg","../src/components/Icon/svg/skills.svg","../src/components/Icon/svg/storybook.svg","../src/components/Icon/svg/twitter.svg","../src/components/Icon/Icon.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Input/TextArea.tsx","../src/components/Input/Input.tsx","../src/components/Link/Link.tsx","../src/components/Button/Button.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/utils/delay.ts","../src/components/ScrambleReveal/ScrambleReveal.tsx","../src/components/Image/Image.tsx","../src/components/Wordmark/Wordmark.tsx"],"sourcesContent":["import { type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './Text.module.css';\n\nexport interface TextProps extends ComponentPropsWithoutRef<'span'> {\n children?: ReactNode;\n size?: 's' | 'm' | 'l' | 'xl';\n as?: ElementType;\n align?: string;\n weight?: string;\n secondary?: boolean;\n}\n\nexport const Text = ({\n children,\n size = 'm',\n as: Component = 'span',\n align = 'auto',\n weight = 'auto',\n secondary,\n className,\n ...rest\n}: TextProps) => {\n return (\n <Component\n className={classes(styles.text, className)}\n data-align={align}\n data-size={size}\n data-weight={weight}\n data-secondary={secondary}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n","import { Fragment, type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './Heading.module.css';\n\nexport interface HeadingProps extends ComponentPropsWithoutRef<'h1'> {\n children?: ReactNode;\n level?: number;\n as?: ElementType;\n align?: string;\n weight?: string;\n}\n\nexport const Heading = ({\n children,\n level = 1,\n as,\n align = 'auto',\n weight = 'medium',\n className,\n ...rest\n}: HeadingProps) => {\n const clampedLevel = Math.min(Math.max(level, 0), 5);\n const Component = as || (`h${Math.max(clampedLevel, 1)}` as ElementType);\n\n return (\n <Fragment>\n <Component\n className={classes(styles.heading, className)}\n data-align={align}\n data-weight={weight}\n data-level={clampedLevel}\n {...rest}\n >\n {children}\n </Component>\n </Fragment>\n );\n};\n","import { forwardRef, type ElementType, type ReactNode, type Ref } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './Section.module.css';\n\ntype SectionProps = {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n} & Record<string, unknown>;\n\nexport const Section = forwardRef<HTMLElement | null, SectionProps>(\n ({ as: Component = 'div', children, className, ...rest }, ref) => {\n const Element = Component as ElementType;\n return (\n <Element\n className={classes(styles.section, className as string)}\n ref={ref as Ref<HTMLElement>}\n {...rest}\n >\n {children}\n </Element>\n );\n }\n);\n","import { type ReactNode, type ComponentPropsWithoutRef } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './List.module.css';\n\ninterface ListProps extends ComponentPropsWithoutRef<'ul'> {\n ordered?: boolean;\n children?: ReactNode;\n}\n\nexport const List = ({ ordered, children, className, ...rest }: ListProps) => {\n const Element = ordered ? 'ol' : 'ul';\n\n return (\n <Element className={classes(styles.list, className)} {...rest}>\n {children}\n </Element>\n );\n};\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n children?: ReactNode;\n}\n\nexport const ListItem = ({ children, ...rest }: ListItemProps) => {\n return (\n <li className={styles.item} {...rest}>\n {children}\n </li>\n );\n};\n","import { type ComponentPropsWithoutRef } from 'react';\nimport { classes, cssProps, numToMs } from '../../utils/style';\nimport styles from './Divider.module.css';\n\nexport interface DividerProps extends ComponentPropsWithoutRef<'div'> {\n lineWidth?: string;\n lineHeight?: string;\n notchWidth?: string;\n notchHeight?: string;\n collapseDelay?: number;\n collapsed?: boolean;\n notch?: boolean;\n light?: boolean;\n}\n\nexport const Divider = ({\n lineWidth = '100%',\n lineHeight = '2px',\n notchWidth = '90px',\n notchHeight = '10px',\n collapseDelay = 0,\n collapsed = false,\n notch = true,\n light = false,\n className,\n style,\n ...rest\n}: DividerProps) => (\n <div\n className={classes(styles.divider, className)}\n data-light={light}\n style={cssProps(\n {\n lineWidth: lineWidth,\n lineHeight: lineHeight,\n notchWidth: notchWidth,\n notchHeight: notchHeight,\n collapseDelay: numToMs(collapseDelay),\n },\n style\n )}\n {...rest}\n >\n <div className={styles.line} data-collapsed={collapsed} />\n {notch && (\n <div\n className={styles.notch}\n data-collapsed={collapsed}\n style={cssProps({ collapseDelay: numToMs(collapseDelay + 160) })}\n />\n )}\n </div>\n);\n","import { type ReactNode } from 'react';\nimport styles from './Table.module.css';\n\ninterface TableChildProps {\n children?: ReactNode;\n}\n\nexport const Table = ({ children }: TableChildProps) => <table className={styles.table}>{children}</table>;\nexport const TableRow = ({ children }: TableChildProps) => <tr className={styles.row}>{children}</tr>;\nexport const TableHead = ({ children }: TableChildProps) => <thead className={styles.head}>{children}</thead>;\nexport const TableBody = ({ children }: TableChildProps) => <tbody className={styles.body}>{children}</tbody>;\nexport const TableHeadCell = ({ children }: TableChildProps) => <th className={styles.headCell}>{children}</th>;\nexport const TableCell = ({ children }: TableChildProps) => <td className={styles.cell}>{children}</td>;\n","import { forwardRef, type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './VisuallyHidden.module.css';\n\nexport interface VisuallyHiddenProps extends ComponentPropsWithoutRef<'span'> {\n showOnFocus?: boolean;\n as?: ElementType;\n children?: ReactNode;\n visible?: boolean;\n href?: string;\n [key: string]: unknown;\n}\n\nexport const VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(\n ({ className, showOnFocus, as: Component = 'span', children, visible, ...rest }, ref) => {\n const Element = Component as ElementType;\n return (\n <Element\n className={classes(styles.hidden, className as string)}\n data-hidden={!visible && !showOnFocus}\n data-show-on-focus={showOnFocus}\n ref={ref}\n {...rest}\n >\n {children}\n </Element>\n );\n }\n);\n","import { AnimatePresence, usePresence } from 'framer-motion';\nimport { type MutableRefObject, type ReactNode, useEffect, useRef, useState } from 'react';\n\ntype TransitionTimeout = number | { enter: number; exit: number };\ntype TransitionStatus = 'entering' | 'entered' | 'exiting' | 'exited';\ntype TransitionRenderFn = (visible: boolean, status: TransitionStatus) => ReactNode;\n\ninterface TransitionProps {\n children: TransitionRenderFn;\n timeout?: TransitionTimeout;\n onEnter?: () => void;\n onEntered?: () => void;\n onExit?: () => void;\n onExited?: () => void;\n in?: boolean;\n unmount?: boolean;\n}\n\ninterface TransitionContentProps {\n children: TransitionRenderFn;\n timeout: TransitionTimeout;\n enterTimeout: MutableRefObject<ReturnType<typeof setTimeout> | undefined>;\n exitTimeout: MutableRefObject<ReturnType<typeof setTimeout> | undefined>;\n onEnter?: () => void;\n onEntered?: () => void;\n onExit?: () => void;\n onExited?: () => void;\n show?: boolean;\n}\n\nexport const Transition = ({\n children,\n timeout = 0,\n onEnter,\n onEntered,\n onExit,\n onExited,\n in: show,\n unmount,\n}: TransitionProps) => {\n const enterTimeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const exitTimeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n useEffect(() => {\n // Cancel a stale, opposite-direction timer left over from a rapid\n // show/hide flip — not the one TransitionContent's own effect just\n // scheduled for *this* direction (that ran first, since child effects\n // fire before parent effects, and clearing it here every time would\n // cancel every enter/exit before it ever gets to fire).\n if (show) {\n clearTimeout(exitTimeout.current);\n } else {\n clearTimeout(enterTimeout.current);\n }\n }, [show]);\n\n return (\n <AnimatePresence>\n {(show || !unmount) && (\n <TransitionContent\n timeout={timeout}\n enterTimeout={enterTimeout}\n exitTimeout={exitTimeout}\n onEnter={onEnter}\n onEntered={onEntered}\n onExit={onExit}\n onExited={onExited}\n show={show}\n >\n {children}\n </TransitionContent>\n )}\n </AnimatePresence>\n );\n};\n\nconst TransitionContent = ({\n children,\n timeout,\n enterTimeout,\n exitTimeout,\n onEnter,\n onEntered,\n onExit,\n onExited,\n show,\n}: TransitionContentProps) => {\n const [status, setStatus] = useState<TransitionStatus>('exited');\n const [isPresent, safeToRemove] = usePresence();\n const [hasEntered, setHasEntered] = useState(false);\n const splitTimeout = typeof timeout === 'object';\n\n useEffect(() => {\n if (hasEntered || !show) return;\n\n const actualTimeout = splitTimeout ? timeout.enter : timeout;\n\n clearTimeout(enterTimeout.current);\n clearTimeout(exitTimeout.current);\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setHasEntered(true);\n setStatus('entering');\n onEnter?.();\n\n // eslint-disable-next-line react-hooks/immutability\n enterTimeout.current = setTimeout(() => {\n setStatus('entered');\n onEntered?.();\n }, actualTimeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onEnter, onEntered, timeout, status, show]);\n\n useEffect(() => {\n if (isPresent && show) return;\n\n const actualTimeout = splitTimeout ? timeout.exit : timeout;\n\n clearTimeout(enterTimeout.current);\n clearTimeout(exitTimeout.current);\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setStatus('exiting');\n onExit?.();\n\n // eslint-disable-next-line react-hooks/immutability\n exitTimeout.current = setTimeout(() => {\n setStatus('exited');\n safeToRemove?.();\n onExited?.();\n }, actualTimeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isPresent, onExit, safeToRemove, timeout, onExited, show]);\n\n return children(hasEntered && show ? isPresent : false, status);\n};\n","import { Text } from '../Text';\nimport { useRefractConfig } from '../RefractProvider';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { useReducedMotion } from 'framer-motion';\nimport { useHasMounted } from '../../hooks/useHasMounted';\nimport { type ComponentPropsWithoutRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { classes, cssProps } from '../../utils/style';\nimport styles from './Loader.module.css';\n\nexport interface LoaderProps extends ComponentPropsWithoutRef<'div'> {\n size?: number;\n text?: string;\n}\n\nexport const Loader = ({\n className,\n style,\n size = 32,\n text = 'Loading...',\n ...rest\n}: LoaderProps) => {\n const reduceMotion = useReducedMotion();\n const hasMounted = useHasMounted();\n const { portalContainer } = useRefractConfig();\n\n const renderScreenReaderTextPortal = () => {\n if (!hasMounted) return null;\n\n const container = portalContainer();\n if (!container) return null;\n\n return createPortal(\n <VisuallyHidden className=\"loader-announcement\" aria-live=\"assertive\">\n {text}\n </VisuallyHidden>,\n container\n );\n };\n\n if (reduceMotion) {\n return (\n <Text className={classes(styles.text, className)} weight=\"medium\" {...rest}>\n {text}\n {renderScreenReaderTextPortal()}\n </Text>\n );\n }\n\n const gapSize = Math.round((size / 3) * 0.2);\n const spanSize = Math.round(size / 3 - gapSize * 2 - 1);\n\n return (\n <div\n className={classes(styles.loader, className)}\n style={cssProps({ size, spanSize, gapSize }, style)}\n {...rest}\n >\n <div className={styles.content}>\n <div className={styles.span} />\n <div className={styles.span} />\n <div className={styles.span} />\n </div>\n {renderScreenReaderTextPortal()}\n </div>\n );\n};\n","import * as React from \"react\";\nconst SvgArrowLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.793 19.207-6.5-6.5L2.586 12l.707-.707 6.5-6.5 1.414 1.414L6.414 11H21v2H6.414l4.793 4.793-1.414 1.414Z\" }));\nexport default SvgArrowLeft;\n","import * as React from \"react\";\nconst SvgArrowRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.207 4.793l6.5 6.5.707.707-.707.707-6.5 6.5-1.414-1.414L17.586 13H3v-2h14.586l-4.793-4.793 1.414-1.414z\" }));\nexport default SvgArrowRight;\n","import * as React from \"react\";\nconst SvgArticles = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 128 128\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M35.34,16.5h72.75v30.73l-72.75,0V16.5L35.34,16.5z M23.42,91.7c-0.67,2.24-1.63,4.05-2.8,5.46l88.47,0l0.04,0 c3.19-0.18,5.57-1.03,7.16-2.54c1.56-1.48,2.43-3.69,2.62-6.62V3.97H24.36v80.06C24.36,87.43,24.4,88.42,23.42,91.7L23.42,91.7 L23.42,91.7z M13.15,101.13c-0.45,0.03-0.91,0.03-1.36,0.01c-1.82-0.11-3.61-0.67-5.23-1.62c-3.55-2.09-6.29-6.09-6.54-11.32 C0.01,88.12,0,88.03,0,87.95v-70.4c0-1.1,0.89-1.98,1.98-1.98l18.41,0V1.98c0-1.1,0.89-1.98,1.98-1.98l98.52,0 c1.1,0,1.98,0.89,1.98,1.98v86.07c0,0.11-0.01,0.21-0.02,0.31c-0.27,3.9-1.55,6.95-3.84,9.13c-2.28,2.17-5.5,3.38-9.67,3.62 c-0.08,0.01-0.17,0.02-0.26,0.02L13.15,101.13L13.15,101.13L13.15,101.13z M12.05,97.19c0.1-0.02,0.21-0.03,0.32-0.03h0.72 c0.79-0.08,1.56-0.3,2.28-0.68c4.41-2.31,5.02-7.95,5.02-12.42V19.53H3.97v68.41c0,0.02,0,0.05,0,0.07 c0.19,3.76,2.12,6.62,4.61,8.09c1.08,0.64,2.26,1.01,3.43,1.08L12.05,97.19L12.05,97.19L12.05,97.19z M40.87,24.15h3.9l5.07,8.52 v-8.52h3.94v15.42l-3.94,0l-5.04-8.47v8.47h-3.92V24.15L40.87,24.15z M57.21,24.15h11.17v3.3l-6.98,0v2.46l6.47,0v3.14H61.4v3.04 h7.19v3.49H57.21V24.15L57.21,24.15L57.21,24.15z M70.12,24.15h3.96l1.42,8.61l2.09-8.61h3.93l2.1,8.62l1.43-8.62H89l-2.98,15.42 l-4.09,0l-2.37-9.71l-2.36,9.71h-4.09L70.12,24.15L70.12,24.15L70.12,24.15z M90.31,34.48l3.96-0.28c0.08,0.73,0.26,1.29,0.52,1.67 c0.43,0.62,1.04,0.93,1.84,0.93c0.59,0,1.05-0.16,1.37-0.48c0.32-0.32,0.48-0.69,0.48-1.11c0-0.4-0.15-0.76-0.46-1.07 c-0.3-0.32-1.02-0.61-2.13-0.89c-1.83-0.47-3.13-1.09-3.91-1.87c-0.79-0.78-1.18-1.77-1.18-2.97c0-0.79,0.2-1.54,0.6-2.24 c0.4-0.71,1.01-1.26,1.81-1.66c0.81-0.4,1.92-0.6,3.32-0.6c1.73,0,3.04,0.37,3.95,1.1c0.91,0.73,1.44,1.9,1.62,3.5l-3.92,0.27 c-0.1-0.7-0.32-1.21-0.66-1.53c-0.34-0.32-0.8-0.48-1.39-0.48c-0.48,0-0.85,0.12-1.1,0.35c-0.25,0.23-0.37,0.52-0.37,0.86 c0,0.24,0.1,0.46,0.3,0.66c0.19,0.2,0.66,0.39,1.39,0.57c1.82,0.45,3.13,0.9,3.91,1.36c0.79,0.46,1.36,1.03,1.72,1.71 c0.36,0.68,0.54,1.44,0.54,2.28c0,0.99-0.24,1.9-0.72,2.74c-0.48,0.83-1.15,1.47-2.01,1.9c-0.86,0.43-1.94,0.65-3.25,0.65 c-2.3,0-3.89-0.51-4.77-1.52C90.93,37.31,90.43,36.03,90.31,34.48L90.31,34.48L90.31,34.48z M35.8,60.85 c-1.1,0-1.98-0.89-1.98-1.98s0.89-1.98,1.98-1.98h30.25c1.09,0,1.98,0.89,1.98,1.98s-0.89,1.98-1.98,1.98H35.8L35.8,60.85z M74.73,60.85c-1.1,0-1.99-0.89-1.99-1.99c0-1.1,0.89-1.99,1.99-1.99h32.63c1.1,0,1.99,0.89,1.99,1.99c0,1.1-0.89,1.99-1.99,1.99 H74.73L74.73,60.85z M74.73,72.36c-1.1,0-1.99-0.89-1.99-1.99s0.89-1.99,1.99-1.99h32.63c1.1,0,1.99,0.89,1.99,1.99 c0,1.1-0.89,1.99-1.99,1.99H74.73L74.73,72.36z M74.73,83.87c-1.1,0-1.99-0.89-1.99-1.99s0.89-1.99,1.99-1.99l32.63,0 c1.1,0,1.99,0.89,1.99,1.99c0,1.1-0.89,1.99-1.99,1.99L74.73,83.87L74.73,83.87z M35.8,83.87c-1.1,0-1.98-0.89-1.98-1.98 s0.89-1.98,1.98-1.98l30.25,0c1.09,0,1.98,0.89,1.98,1.98s-0.89,1.98-1.98,1.98L35.8,83.87L35.8,83.87z M36.76,72.36 c-1.1,0-1.98-0.89-1.98-1.98s0.89-1.98,1.98-1.98h30.25c1.1,0,1.98,0.89,1.98,1.98s-0.89,1.98-1.98,1.98H36.76L36.76,72.36z\" }));\nexport default SvgArticles;\n","import * as React from \"react\";\nconst SvgCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m20.207 7.207-10 10-.707.707-.707-.707-5-5 1.414-1.414L9.5 15.086l9.293-9.293 1.414 1.414Z\" }));\nexport default SvgCheck;\n","import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.586 12L7.793 6.207l1.414-1.414 6.5 6.5.707.707-.707.707-6.5 6.5-1.414-1.414L13.586 12z\" }));\nexport default SvgChevronRight;\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgCompany = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.763.075A.5.5 0 0 1 15 .5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V14h-1v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .342-.474L6 7.64V4.5a.5.5 0 0 1 .276-.447l8-4a.5.5 0 0 1 .487.022zM6 8.694 1 10.36V15h5V8.694zM7 15h2v-1.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5V15h2V1.309l-7 3.5V15z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 11h1v1H2v-1zm2 0h1v1H4v-1zm-2 2h1v1H2v-1zm2 0h1v1H4v-1zm4-4h1v1H8V9zm2 0h1v1h-1V9zm-2 2h1v1H8v-1zm2 0h1v1h-1v-1zm2-2h1v1h-1V9zm0 2h1v1h-1v-1zM8 7h1v1H8V7zm2 0h1v1h-1V7zm2 0h1v1h-1V7zM8 5h1v1H8V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm0-2h1v1h-1V3z\" }));\nexport default SvgCompany;\n","import * as React from \"react\";\nconst SvgCopy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 1H2v16h4v-2H4V3h10v2h2V1H3Zm5 6h14v12.414l-.293.293-3 3-.293.293H8V7Zm2 14h7.586L20 18.586V9H10v12Z\" }));\nexport default SvgCopy;\n","import * as React from \"react\";\nconst SvgDownload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\" }));\nexport default SvgDownload;\n","import * as React from \"react\";\nconst SvgError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 5.068 19.697 19H4.302L12 5.068Zm-.876-2.552-9.392 17L2.607 21h18.785l.875-1.484-9.392-17h-1.75ZM11 14v-4h2v4h-2Zm0 3v-2h2v2h-2Z\" }));\nexport default SvgError;\n","import * as React from \"react\";\nconst SvgFigma = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M15 10a2 2 0 100 4 2 2 0 000-4zm-2 5.464A4 4 0 0017.646 9 4 4 0 0015 2H9a4 4 0 00-2.646 7 4.01 4.01 0 00-.818 1 4 4 0 00.818 5 3.977 3.977 0 00-.818 1A4 4 0 1013 18v-2.536zM11 16H9a2 2 0 102 2v-2zM9 8h2V4H9a2 2 0 100 4zm0 2a2 2 0 100 4h2v-4H9zm4-2V4h2a2 2 0 010 4h-2z\" }));\nexport default SvgFigma;\n","import * as React from \"react\";\nconst SvgGithub = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2C6.477 2 2 6.477 2 12c0 4.42 2.87 8.17 6.84 9.5.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34-.46-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.87 1.52 2.34 1.07 2.91.83.09-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.92 0-1.11.38-2 1.03-2.71-.1-.25-.45-1.29.1-2.64 0 0 .84-.27 2.75 1.02.79-.22 1.65-.33 2.5-.33.85 0 1.71.11 2.5.33 1.91-1.29 2.75-1.02 2.75-1.02.55 1.35.2 2.39.1 2.64.65.71 1.03 1.6 1.03 2.71 0 3.82-2.34 4.66-4.57 4.91.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0012 2z\" }));\nexport default SvgGithub;\n","import * as React from \"react\";\nconst SvgLink = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 4 8 5v2h2V6h10v7H10v-2H8v3l1 1h12l1-1V5l-1-1H9Zm2 4H3L2 9v9l1 1h12l1-1v-2h-2v1H4v-7h10v2h2V9l-1-1h-4Z\" }));\nexport default SvgLink;\n","import * as React from \"react\";\nconst SvgLinkedin = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z\" }));\nexport default SvgLinkedin;\n","import * as React from \"react\";\nconst SvgMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 6H2V4h20v2zM2 13h16v-2H2v2zm0 7h20v-2H2v2z\" }));\nexport default SvgMenu;\n","import * as React from \"react\";\nconst SvgPause = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6 19h4V5H6v14zm8-14v14h4V5h-4z\" }));\nexport default SvgPause;\n","import * as React from \"react\";\nconst SvgPlay = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 5v14l11-7z\" }));\nexport default SvgPlay;\n","import * as React from \"react\";\nconst SvgSend = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.01 21L23 12 2.01 3 2 10l15 2-15 2 .01 7z\" }));\nexport default SvgSend;\n","import * as React from \"react\";\nconst SvgSkills = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 128 128\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19,70.15c-4.75,1-9.66,1.1-14.42-3.79C1.4,63.1-.19,58.23,0,53.13c12.17,14.15,27-3.34,9-12.43,8.69-4.12,16.89-.25,21.24,7.76,2.06,3.78,3.29,5.76,4.86,7.11a8.58,8.58,0,0,0,.9.69A8.1,8.1,0,0,1,39.8,51.8,7.14,7.14,0,0,1,43.05,51c3.18,0,7.14,1.9,7.81,5.14h0a1.61,1.61,0,0,1,.44-.06h2.31a1.5,1.5,0,0,1,.37,0,5.6,5.6,0,0,1,5,4.59,1.65,1.65,0,0,1,.71-.16H62a1.5,1.5,0,0,1,.37,0c3.31.51,4.65,2.55,5.12,5.12l.26,0h2.31a1.5,1.5,0,0,1,.37,0c3.8.59,5.29,3.08,5.87,6.08,7-1.07,14.57-5.27,22,2.33a17.78,17.78,0,0,1,4.57,13.23c-12.17-14.15-27,3.34-9,12.43-7.47,3.54-14.59,1.17-19.2-4.66a30.06,30.06,0,0,1-2.34,4.92c-.38.62-.77,1.26-1.27,2.14a.16.16,0,0,0,0,.07,19.77,19.77,0,0,1-1.3,2h1.6a2.51,2.51,0,0,1,2.5,2.5v13.61a2.51,2.51,0,0,1-2.5,2.5H35.13a2.51,2.51,0,0,1-2.5-2.5V106.77a2.51,2.51,0,0,1,2.5-2.5H36a18,18,0,0,1-.9-3.79L22.64,80.07,22.58,80a22.48,22.48,0,0,1-2.5-4.24,12.37,12.37,0,0,1-1.08-4,10.22,10.22,0,0,1,0-1.57Zm92-33.29a2,2,0,0,0-.37-.74,1.51,1.51,0,0,0-.57-.46,1.61,1.61,0,0,0-.7-.22,2.62,2.62,0,0,0-.76.09l-.06,0-7.36,2.24a3,3,0,0,1-3.63-1.55c-.38-.64-.75-1.27-1.2-2s-1-1.38-1.39-2S94,31,93.4,30.38s-1-1.14-1.69-1.83A3.09,3.09,0,0,1,91.22,25l3.91-7.35a1.63,1.63,0,0,0,.13-1.46,2.07,2.07,0,0,0-.31-.65,1.82,1.82,0,0,0-.61-.49l-9.26-4.93a2.81,2.81,0,0,0-.68-.26,2.72,2.72,0,0,0-.82.11,1.31,1.31,0,0,0-.61.33,1.82,1.82,0,0,0-.49.61l-3.6,6.75a3.13,3.13,0,0,1-3.69,1.52c-.82-.21-1.59-.41-2.27-.55s-1.54-.28-2.36-.39a23.32,23.32,0,0,0-2.4-.19c-.84-.06-1.62,0-2.37-.06a3,3,0,0,1-3-2.18l-2.5-8.1c0-.06,0-.06,0-.1a2.52,2.52,0,0,0-.3-.66,2.09,2.09,0,0,0-1.26-.61,1.94,1.94,0,0,0-.82.11L48,9.48a1.9,1.9,0,0,0-.74.36,1.71,1.71,0,0,0-.47.57,1.5,1.5,0,0,0-.21.71,2.29,2.29,0,0,0,.09.75l0,.05,2.25,7.35a3.08,3.08,0,0,1-1.56,3.64c-.64.37-1.27.74-2,1.2s-1.38.95-2,1.39-1.3,1-1.91,1.54-1.15,1-1.83,1.7a3.1,3.1,0,0,1-3.59.48l-7.34-3.91a1.88,1.88,0,0,0-.75-.23,3.3,3.3,0,0,0-.69.07,1.31,1.31,0,0,0-.61.32,1.75,1.75,0,0,0-.49.62l-.4.74a24.3,24.3,0,0,0-6.73-.35l1.78-3.35a8.61,8.61,0,0,1,2-2.49,8.51,8.51,0,0,1,2.81-1.5,8.08,8.08,0,0,1,3.18-.33,8.57,8.57,0,0,1,3,1l5.43,2.9.4-.33c.7-.61,1.45-1.19,2.2-1.78s1.56-1.18,2.3-1.66l.26-.19-1.5-5.05a7.44,7.44,0,0,1-.33-3.17,7.84,7.84,0,0,1,.92-3.06,7.75,7.75,0,0,1,2-2.46,8.26,8.26,0,0,1,2.82-1.5L56.28.41l0,0A8.58,8.58,0,0,1,59.43,0a7.71,7.71,0,0,1,3.06.92A8.54,8.54,0,0,1,65,3a7.27,7.27,0,0,1,1.39,2.81l1.83,5.88a2.12,2.12,0,0,0,.43,0c.9.05,1.83.16,2.81.25s1.87.28,2.81.46a1,1,0,0,1,.39.1l2.46-4.63a7.84,7.84,0,0,1,4.82-3.92l.06,0a7.71,7.71,0,0,1,3.11-.31,8.44,8.44,0,0,1,3,.89l9.25,4.94a8.58,8.58,0,0,1,2.49,2,7.68,7.68,0,0,1,1.5,2.82,8,8,0,0,1,.33,3.17,8.31,8.31,0,0,1-1,3l-2.9,5.44c.11.11.23.28.34.39.6.71,1.19,1.45,1.77,2.2s1.19,1.56,1.66,2.3l.19.27,5.05-1.51a7.43,7.43,0,0,1,3.17-.32,8,8,0,0,1,3.06.91,7.67,7.67,0,0,1,2.46,2l0,.08a8.26,8.26,0,0,1,1.5,2.82l3,9.91.05,0a8.8,8.8,0,0,1,.35,3.13,7.87,7.87,0,0,1-.92,3.06,8.54,8.54,0,0,1-2,2.46A7.31,7.31,0,0,1,114.63,55l-5.88,1.83c0,.15,0,.32,0,.47,0,.91-.15,1.83-.24,2.71,0,0,0,.11,0,.15A26.84,26.84,0,0,1,108,63l-.07.34,4.67,2.49a7.52,7.52,0,0,1,2.47,2,8,8,0,0,1,1.45,2.79l0,.07a7.66,7.66,0,0,1,.31,3.1,8.25,8.25,0,0,1-.9,3l-.74,1.39-1.32-.71a25.71,25.71,0,0,0-4.34-7.75c-.14-.19-.29-.37-.45-.55a27.07,27.07,0,0,0-7.55-6.25c.09-.37.18-.75.26-1.13.13-.75.28-1.54.37-2.42,0,0,0-.11,0-.15.11-.81.17-1.54.23-2.27s.09-1.59.07-2.37a3,3,0,0,1,2.18-3l8.09-2.5s.07,0,.11,0a2.31,2.31,0,0,0,.65-.3,1.52,1.52,0,0,0,.41-.55,1.77,1.77,0,0,0,.21-.71,1.94,1.94,0,0,0-.11-.82L111,36.8l0,.06Zm-34-3.09a21.79,21.79,0,0,1,3.93,2.64,23.11,23.11,0,0,1,3.3,3.33,29.87,29.87,0,0,1,2.5,3.79,21.32,21.32,0,0,1,1.72,4.13,20.05,20.05,0,0,1,.86,4.44,20.89,20.89,0,0,1,0,4.54c0,.11,0,.19,0,.26a23,23,0,0,1-.68,3.77c-1.64.16-3.27.42-4.88.71l-1.48-.79c.13-.34.24-.69.35-1.05a18.63,18.63,0,0,0,.64-3.14.8.8,0,0,1,0-.22,17.14,17.14,0,0,0,0-3.44,17.56,17.56,0,0,0-.62-3.23,14.89,14.89,0,0,0-1.28-3,18.34,18.34,0,0,0-1.91-2.87A16.74,16.74,0,0,0,77,41.19a18.31,18.31,0,0,0-6.2-3.3,18.63,18.63,0,0,0-3.14-.64.57.57,0,0,1-.22,0,18.76,18.76,0,0,0-3.44,0,17.57,17.57,0,0,0-3.23.63,14.89,14.89,0,0,0-3,1.28,18.26,18.26,0,0,0-2.87,1.9,17.35,17.35,0,0,0-2.43,2.42c-.23.27-.46.56-.68.87l-5.46-2.91a20.4,20.4,0,0,1,1.42-1.9A22.63,22.63,0,0,1,51,36.26a28.91,28.91,0,0,1,3.79-2.51A24.63,24.63,0,0,1,59,32a22,22,0,0,1,4.39-.88,21.63,21.63,0,0,1,4.55,0c.1,0,.19.05.25,0a23.26,23.26,0,0,1,4.35.84,26.43,26.43,0,0,1,4.39,1.79l0,0Zm-37.89,24h0v.1h0l0,0V58h0v.21h0v.11h0v.11h0v.34h0V59h0v.12h0v.23h0v.13h0v.13h0V60h0v.13h0v.14h0v.25h0V79a1.68,1.68,0,1,1-3.35,0v-3.1h0a1.84,1.84,0,0,1-.25-.17L31.8,73.16l-4.34-3.57A6.52,6.52,0,0,0,26,68.66H24.87a2.57,2.57,0,0,0-1.45.06,1.46,1.46,0,0,0-.79.81h-.1a5.44,5.44,0,0,0-.2,2.11,8.87,8.87,0,0,0,.81,2.9A18.68,18.68,0,0,0,25.26,78s.07.1.1.16l12.7,20.76a1.68,1.68,0,0,1,.28.76h0a11.41,11.41,0,0,0,1.31,4.59H65a11,11,0,0,0,3.08-3.63.47.47,0,0,1,.06-.09c.36-.62.84-1.41,1.31-2.18a29.64,29.64,0,0,0,2.86-6.82v0l0-.06,0-.1,0-.06v0l0-.1,0-.07v0l0-.1.06-.2,0-.1h0l0-.09,0-.1v0l0-.07,0-.1v-.1l0-.1V90l0-.1,0-.09h0l0-.1,0-.1h0l0-.08,0-.1v0l0-.07,0-.1v-.1l0-.1,0-.07v0l0-.1,0-.08v0l0-.09,0-.1h0l0-.09,0-.1v-.1l0-.09v-.29l0-.1v-.1l0-.09v-.1h0v-.09l0-.1v-.84h0v-1l-.13-5.7a1.94,1.94,0,0,1,0-.24c0-.08,0-.62,0-1.34v-.18h0V76.84h0v-.19h0V75.36h0v-.19h0V74.1h0v-.17h0v-.18h0v-.19l0-.09v-.64l0-.08,0-.09,0-.09h0v-.09l0-.07h0l0-.09v-.08l0-.09V72a3.67,3.67,0,0,0-2.89-3H67.74c0,.47,0,.93,0,1.4h0v0h0v0h0v0h0v.1h0v0h0v.08h0V71h0v0h0v0h0v.1h0v0h0v0h0v0h0v.07h0v0h0v0h0v0h0v0h0v.05h0v0h0v0h0v0h0v0h0v.05h0v0h0v0h0v0h0v0h0v0h0v0h0v0h0v.05c-.06.93-.11,1.84-.11,2.7a1.68,1.68,0,0,1-3.36,0c0-.86.07-1.86.13-2.9v-.33h0v-.17h0v-.15h0v-.33h0v-.17h0v-.15h0v-.17h0V70.2h0v-.34h0v-.33h0V69.2h0V69c0-2.52-.45-4.71-2.48-5.08H59.7a1.37,1.37,0,0,1-.36,0c0,.94,0,1.92-.08,2.87v1c-.06.93-.11,1.83-.11,2.69a1.68,1.68,0,1,1-3.36,0c0-.86.07-1.86.13-2.9v-.17h0v-.15h0v-.16h0v-.17h0v-.17h0v-.17h0v-.32h0v-.16h0v-.17h0v-.14h0v-.17h0v-.17h0v-.07c.08-2.84-.23-5.46-2.47-5.87H51.29a1.49,1.49,0,0,1-.43-.06v6.49a1.68,1.68,0,0,1-3.36,0v-8.2c0-2.32-2.3-3.32-4.45-3.32a3.85,3.85,0,0,0-1.74.42,5,5,0,0,0-2.26,3ZM35.29,70l-1.58-.65a19.89,19.89,0,0,0-2.2-.75l2.41,2,1.37,1.12V70Z\" }));\nexport default SvgSkills;\n","import * as React from \"react\";\nconst SvgStorybook = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.71.243l-.12 2.71a.18.18 0 00.29.15l1.06-.8.9.7a.18.18 0 00.28-.14l-.1-2.76 1.33-.1a1.2 1.2 0 011.279 1.2v21.596a1.2 1.2 0 01-1.26 1.2l-16.096-.72a1.2 1.2 0 01-1.15-1.16l-.75-19.797a1.2 1.2 0 011.13-1.27L16.7.222zM13.64 9.3c0 .47 3.16.24 3.59-.08 0-3.2-1.72-4.89-4.859-4.89-3.15 0-4.899 1.72-4.899 4.29 0 4.45 5.999 4.53 5.999 6.959 0 .7-.32 1.1-1.05 1.1-.96 0-1.35-.49-1.3-2.16 0-.36-3.649-.48-3.769 0-.27 4.03 2.23 5.2 5.099 5.2 2.79 0 4.969-1.49 4.969-4.18 0-4.77-6.099-4.64-6.099-6.999 0-.97.72-1.1 1.13-1.1.45 0 1.25.07 1.19 1.87z\" }));\nexport default SvgStorybook;\n","import * as React from \"react\";\nconst SvgTwitter = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M22.92 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.83 4.5 17.72 4 16.46 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98-3.56-.18-6.73-1.89-8.84-4.48-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 01-1.93.07 4.28 4.28 0 004 2.98 8.521 8.521 0 01-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.9 20.29 6.16 21 8.58 21c7.88 0 12.21-6.54 12.21-12.21 0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z\" }));\nexport default SvgTwitter;\n","import { classes } from '../../utils/style';\nimport styles from './Icon.module.css';\nimport ArrowLeft from './svg/arrow-left.svg';\nimport ArrowRight from './svg/arrow-right.svg';\nimport Article from './svg/articles.svg';\nimport Check from './svg/check.svg';\nimport ChevronRight from './svg/chevron-right.svg';\nimport Close from './svg/close.svg';\nimport Company from './svg/company.svg';\nimport Copy from './svg/copy.svg';\nimport Download from './svg/download.svg';\nimport Error from './svg/error.svg';\nimport Figma from './svg/figma.svg';\nimport Github from './svg/github.svg';\nimport Link from './svg/link.svg';\nimport Linkedin from './svg/linkedin.svg';\nimport Menu from './svg/menu.svg';\nimport Pause from './svg/pause.svg';\nimport Play from './svg/play.svg';\nimport Send from './svg/send.svg';\nimport Skills from './svg/skills.svg';\nimport Storybook from './svg/storybook.svg';\nimport Twitter from './svg/twitter.svg';\n\nexport const icons = {\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n articles: Article,\n company: Company,\n check: Check,\n chevronRight: ChevronRight,\n close: Close,\n copy: Copy,\n download: Download,\n error: Error,\n figma: Figma,\n github: Github,\n link: Link,\n linkedin: Linkedin,\n menu: Menu,\n pause: Pause,\n play: Play,\n send: Send,\n skills: Skills,\n storybook: Storybook,\n twitter: Twitter,\n};\n\nexport type IconName = keyof typeof icons;\n\nexport interface IconProps {\n icon: IconName;\n className?: string;\n [key: string]: unknown;\n}\n\nexport const Icon = ({ icon, className, ...rest }: IconProps) => {\n const IconComponent = icons[icon];\n\n return (\n <IconComponent aria-hidden className={classes(styles.icon, className)} {...rest} />\n );\n};\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport type { KeyboardEvent, ReactNode, RefObject } from 'react';\nimport { VisuallyHidden } from '../VisuallyHidden';\nimport { cssProps } from '../../utils/style';\nimport styles from './SegmentedControl.module.css';\n\ninterface SegmentedControlContextValue {\n optionRefs: { current: RefObject<HTMLButtonElement>[] };\n currentIndex: number;\n onChange: (index: number) => void;\n registerOption: (optionRef: RefObject<HTMLButtonElement>) => void;\n unRegisterOption: (optionRef: RefObject<HTMLButtonElement>) => void;\n}\n\nconst SegmentedControlContext = createContext<SegmentedControlContextValue>(\n {} as SegmentedControlContextValue\n);\n\ninterface SegmentedControlProps {\n children: ReactNode;\n currentIndex: number;\n onChange: (index: number) => void;\n label: string;\n [key: string]: unknown;\n}\n\nexport const SegmentedControl = ({\n children,\n currentIndex,\n onChange,\n label,\n ...props\n}: SegmentedControlProps) => {\n const id = useId();\n const labelId = `${id}segmented-control-label`;\n const optionRefs = useRef<RefObject<HTMLButtonElement>[]>([]);\n const [indicator, setIndicator] = useState<{ width?: number; left?: number }>();\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const { length } = optionRefs.current;\n const prevIndex = (currentIndex - 1 + length) % length;\n const nextIndex = (currentIndex + 1) % length;\n\n if (['ArrowLeft', 'ArrowUp'].includes(event.key)) {\n onChange(prevIndex);\n optionRefs.current[prevIndex].current?.focus();\n } else if (['ArrowRight', 'ArrowDown'].includes(event.key)) {\n onChange(nextIndex);\n optionRefs.current[nextIndex].current?.focus();\n }\n };\n\n const registerOption = useCallback((optionRef: RefObject<HTMLButtonElement>) => {\n optionRefs.current = [...optionRefs.current, optionRef];\n }, []);\n\n const unRegisterOption = useCallback((optionRef: RefObject<HTMLButtonElement>) => {\n optionRefs.current = optionRefs.current.filter(ref => ref !== optionRef);\n }, []);\n\n useEffect(() => {\n const currentOption = optionRefs.current[currentIndex]?.current;\n if (!currentOption) return;\n\n const resizeObserver = new ResizeObserver(() => {\n const rect = currentOption.getBoundingClientRect();\n const left = currentOption.offsetLeft;\n setIndicator({ width: rect.width, left });\n });\n\n resizeObserver.observe(currentOption);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [currentIndex]);\n\n return (\n <SegmentedControlContext.Provider\n value={{ optionRefs, currentIndex, onChange, registerOption, unRegisterOption }}\n >\n <div\n className={styles.container}\n role=\"radiogroup\"\n aria-labelledby={labelId}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <VisuallyHidden as=\"label\" id={labelId}>\n {label}\n </VisuallyHidden>\n <div className={styles.options}>\n {!!indicator && (\n <div\n className={styles.indicator}\n // Options register themselves into this ref on mount; length is\n // correct by the time this re-renders after registration settles.\n // eslint-disable-next-line react-hooks/refs\n data-last={currentIndex === optionRefs.current.length - 1}\n style={cssProps(indicator)}\n />\n )}\n {children}\n </div>\n </div>\n </SegmentedControlContext.Provider>\n );\n};\n\ninterface SegmentedControlOptionProps {\n children: ReactNode;\n [key: string]: unknown;\n}\n\nexport const SegmentedControlOption = ({ children, ...props }: SegmentedControlOptionProps) => {\n const { optionRefs, currentIndex, onChange, registerOption, unRegisterOption } =\n useContext(SegmentedControlContext);\n const optionRef = useRef<HTMLButtonElement>(null);\n // Same as above: the parent's ref collection settles by the time this\n // re-renders after this option registers itself on mount.\n // eslint-disable-next-line react-hooks/refs\n const index = optionRefs.current.indexOf(optionRef as RefObject<HTMLButtonElement>);\n const isSelected = currentIndex === index;\n\n useEffect(() => {\n registerOption(optionRef as RefObject<HTMLButtonElement>);\n\n return () => {\n unRegisterOption(optionRef as RefObject<HTMLButtonElement>);\n };\n }, [registerOption, unRegisterOption]);\n\n return (\n <button\n className={styles.button}\n tabIndex={isSelected ? 0 : -1}\n role=\"radio\"\n aria-checked={isSelected}\n onClick={() => onChange(index)}\n ref={optionRef}\n {...props}\n >\n {children}\n </button>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\nimport type { ChangeEvent, TextareaHTMLAttributes } from 'react';\nimport { classes, cssProps } from '../../utils/style';\nimport styles from './TextArea.module.css';\n\ninterface TextAreaDimensions {\n lineHeight: number;\n paddingHeight: number;\n}\n\ninterface TextAreaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> {\n className?: string;\n resize?: string;\n value?: string;\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n minRows?: number;\n maxRows?: number;\n}\n\nexport const TextArea = ({\n className,\n resize = 'none',\n value,\n onChange,\n minRows = 1,\n maxRows,\n ...rest\n}: TextAreaProps) => {\n const [rows, setRows] = useState(minRows);\n const [textareaDimensions, setTextareaDimensions] = useState<TextAreaDimensions>();\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n const style = getComputedStyle(textareaRef.current!);\n const lineHeight = parseInt(style.lineHeight, 10);\n const paddingHeight =\n parseInt(style.paddingTop, 10) + parseInt(style.paddingBottom, 10);\n setTextareaDimensions({ lineHeight, paddingHeight });\n }, []);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event);\n\n const { lineHeight, paddingHeight } = textareaDimensions!;\n const previousRows = event.target.rows;\n event.target.rows = minRows;\n\n const currentRows = ~~((event.target.scrollHeight - paddingHeight) / lineHeight);\n\n if (currentRows === previousRows) {\n event.target.rows = currentRows;\n }\n\n if (maxRows && currentRows >= maxRows) {\n event.target.rows = maxRows;\n event.target.scrollTop = event.target.scrollHeight;\n }\n\n setRows(maxRows && currentRows > maxRows ? maxRows : currentRows);\n };\n\n return (\n <textarea\n className={classes(styles.textarea, className)}\n ref={textareaRef}\n onChange={handleChange}\n style={cssProps({ resize })}\n rows={rows}\n value={value}\n {...rest}\n />\n );\n};\n","import React, { useId, useRef, useState } from 'react';\nimport type { ChangeEvent, ElementType, FocusEvent } from 'react';\nimport { Icon } from '../Icon';\nimport { tokens } from '../ThemeProvider';\nimport { Transition } from '../Transition';\nimport { classes, cssProps, msToNum } from '../../utils/style';\nimport styles from './Input.module.css';\nimport { TextArea } from './TextArea';\n\nexport interface InputProps {\n id?: string;\n label?: string;\n value?: string;\n multiline?: boolean;\n className?: string;\n style?: React.CSSProperties;\n error?: string | null;\n onBlur?: (event: FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n autoComplete?: string;\n required?: boolean;\n maxLength?: number;\n type?: string;\n placeholder?: string;\n /** Multiline only: cap the auto-grow at this many rows, then scroll inside. */\n maxRows?: number;\n onChange?: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n [key: string]: unknown;\n}\n\nexport const Input = ({\n id,\n label,\n value,\n multiline,\n className,\n style,\n error,\n onBlur,\n autoComplete,\n required,\n maxLength,\n type,\n placeholder,\n maxRows,\n onChange,\n ...rest\n}: InputProps) => {\n const [focused, setFocused] = useState(false);\n const generatedId = useId();\n const errorRef = useRef<HTMLDivElement>(null);\n const inputId = id || `${generatedId}input`;\n const labelId = `${inputId}-label`;\n const errorId = `${inputId}-error`;\n const InputElement = (multiline ? TextArea : 'input') as ElementType;\n\n const handleBlur = (event: FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setFocused(false);\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n return (\n <div\n className={classes(styles.container, className)}\n data-error={!!error}\n data-multiline={!!multiline}\n style={style}\n {...rest}\n >\n <div className={styles.content}>\n <label\n className={styles.label}\n data-focused={focused}\n data-filled={!!value}\n data-placeholder={!!placeholder}\n id={labelId}\n htmlFor={inputId}\n >\n {label}\n </label>\n <InputElement\n className={styles.input}\n id={inputId}\n aria-labelledby={labelId}\n aria-describedby={error ? errorId : undefined}\n onFocus={() => setFocused(true)}\n onBlur={handleBlur}\n value={value}\n onChange={onChange}\n autoComplete={autoComplete}\n required={required}\n maxLength={maxLength}\n type={type}\n placeholder={placeholder}\n {...(multiline ? { maxRows } : {})}\n />\n <div className={styles.underline} data-focused={focused} />\n </div>\n <Transition unmount in={!!error} timeout={msToNum(tokens.base.durationM)}>\n {(visible: boolean) => (\n <div\n className={styles.error}\n data-visible={visible}\n id={errorId}\n role=\"alert\"\n style={cssProps({\n height: visible ? errorRef.current?.getBoundingClientRect().height ?? 0 : 0,\n })}\n >\n <div className={styles.errorMessage} ref={errorRef}>\n <Icon icon=\"error\" />\n {error}\n </div>\n </div>\n )}\n </Transition>\n </div>\n );\n};\n","import { forwardRef, type ReactNode, type ComponentPropsWithoutRef } from 'react';\nimport { useLinkComponent, type LinkComponent } from '../LinkProvider';\nimport { classes } from '../../utils/style';\nimport styles from './Link.module.css';\n\nconst VALID_EXT = ['txt', 'png', 'jpg'];\n\nfunction isAnchor(href?: string): boolean {\n const isValidExtension = VALID_EXT.includes(href?.split('.').pop() ?? '');\n return !!href?.includes('://') || href?.[0] === '#' || isValidExtension;\n}\n\ninterface LinkProps extends ComponentPropsWithoutRef<'a'> {\n secondary?: boolean;\n children?: ReactNode;\n /** Overrides the LinkProvider-supplied component for this instance only. */\n linkComponent?: LinkComponent;\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ rel, target, children, secondary, className, href, linkComponent, ...rest }, ref) => {\n const ContextLink = useLinkComponent();\n const RouterLink = linkComponent ?? ContextLink;\n const isExternal = href?.includes('://');\n const relValue = rel || (isExternal ? 'noreferrer noopener' : undefined);\n const targetValue = target || (isExternal ? '_blank' : undefined);\n const linkProps = {\n className: classes(styles.link, className),\n 'data-secondary': secondary,\n rel: relValue,\n href,\n target: targetValue,\n ref,\n ...rest,\n };\n\n if (isAnchor(href)) {\n return <a {...linkProps}>{children}</a>;\n }\n\n return (\n <RouterLink {...linkProps} href={href ?? ''}>\n {children}\n </RouterLink>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef, type ElementType, type ReactNode } from 'react';\nimport { Icon } from '../Icon';\nimport { useLinkComponent, type LinkComponent } from '../LinkProvider';\nimport { Loader } from '../Loader';\nimport { Transition } from '../Transition';\nimport type { icons } from '../Icon';\nimport { classes } from '../../utils/style';\nimport styles from './Button.module.css';\n\nfunction isExternalLink(href?: string): boolean {\n return !!href?.includes('://');\n}\n\nexport interface ButtonProps extends ComponentPropsWithoutRef<'button'> {\n href?: string;\n as?: ElementType;\n secondary?: boolean;\n loading?: boolean;\n loadingText?: string;\n icon?: keyof typeof icons;\n iconEnd?: keyof typeof icons;\n iconHoverShift?: boolean;\n iconOnly?: boolean;\n children?: ReactNode;\n rel?: string;\n target?: string;\n disabled?: boolean;\n download?: string;\n /** Overrides the LinkProvider-supplied component for this instance only. */\n linkComponent?: LinkComponent;\n}\n\nexport const Button = forwardRef<HTMLElement, ButtonProps>(\n ({ href, linkComponent, ...rest }, ref) => {\n const ContextLink = useLinkComponent();\n const RouterLink = linkComponent ?? ContextLink;\n\n if (isExternalLink(href) || !href) {\n return <ButtonContent href={href} ref={ref} {...rest} />;\n }\n\n return <ButtonContent as={RouterLink} href={href} ref={ref} {...rest} />;\n }\n);\n\nconst ButtonContent = forwardRef<HTMLElement, ButtonProps>(\n (\n {\n className,\n as,\n secondary,\n loading,\n loadingText = 'loading',\n icon,\n iconEnd,\n iconHoverShift,\n iconOnly,\n children,\n rel,\n target,\n href,\n disabled,\n ...rest\n },\n ref\n ) => {\n const isExternal = isExternalLink(href);\n const defaultComponent = href ? 'a' : 'button';\n const Component = as || defaultComponent;\n\n return (\n <Component\n className={classes(styles.button, className)}\n data-loading={loading}\n data-icon-only={iconOnly}\n data-secondary={secondary}\n data-icon={icon}\n href={href}\n rel={rel || isExternal ? 'noopener noreferrer' : undefined}\n target={target || isExternal ? '_blank' : undefined}\n disabled={disabled}\n ref={ref}\n {...rest}\n >\n {!!icon && (\n <Icon\n className={styles.icon}\n data-start={!iconOnly}\n data-shift={iconHoverShift}\n icon={icon}\n />\n )}\n {!!children && <span className={styles.text}>{children}</span>}\n {!!iconEnd && (\n <Icon\n className={styles.icon}\n data-end={!iconOnly}\n data-shift={iconHoverShift}\n icon={iconEnd}\n />\n )}\n <Transition unmount in={loading}>\n {(visible: boolean) => (\n <Loader\n className={styles.loader}\n size={32}\n text={loadingText}\n data-visible={visible}\n />\n )}\n </Transition>\n </Component>\n );\n }\n);\n","import { Icon } from '../Icon';\nimport { Link } from '../Link';\nimport { classes } from '../../utils/style';\nimport styles from './Breadcrumbs.module.css';\n\nexport interface BreadcrumbItem {\n label: string;\n href: string;\n}\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[];\n className?: string;\n}\n\nexport const Breadcrumbs = ({ items, className }: BreadcrumbsProps) => {\n return (\n <nav aria-label=\"Breadcrumb\" className={classes(styles.breadcrumbs, className)}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={item.href} className={styles.item}>\n {index > 0 && (\n <Icon\n className={styles.separator}\n icon=\"chevronRight\"\n aria-hidden=\"true\"\n />\n )}\n {isLast ? (\n <span className={styles.current} aria-current=\"page\">\n {item.label}\n </span>\n ) : (\n <Link className={styles.link} href={item.href}>\n {item.label}\n </Link>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n","export async function delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import { VisuallyHidden } from '../VisuallyHidden';\nimport { useReducedMotion, useSpring } from 'framer-motion';\nimport { memo, useEffect, useRef } from 'react';\nimport { delay } from '../../utils/delay';\nimport { classes } from '../../utils/style';\nimport styles from './ScrambleReveal.module.css';\n\n// Standalone-renderable Devanagari only — no matras/conjuncts (they render\n// broken with a dotted-circle placeholder when shown in isolation).\n// prettier-ignore\nconst glyphs = [\n // Independent vowels\n 'अ', 'आ', 'इ', 'ई', 'उ',\n 'ऊ', 'ऋ', 'ए', 'ऐ', 'ओ', 'औ',\n // Consonants\n 'क', 'ख', 'ग', 'घ', 'ङ',\n 'च', 'छ', 'ज', 'झ', 'ञ',\n 'ट', 'ठ', 'ड', 'ढ', 'ण',\n 'त', 'थ', 'द', 'ध', 'न',\n 'प', 'फ', 'ब', 'भ', 'म',\n 'य', 'र', 'ल', 'व', 'श',\n 'ष', 'स', 'ह', 'ळ',\n // Devanagari digits\n '०', '१', '२', '३', '४',\n '५', '६', '७', '८', '९',\n];\n\nconst CharType = {\n Glyph: 'glyph',\n Value: 'value',\n} as const;\n\ninterface CharItem {\n type: (typeof CharType)[keyof typeof CharType];\n value: string;\n}\n\nfunction shuffle(content: string[], output: CharItem[], position: number): CharItem[] {\n return content.map((value, index) => {\n if (index < position) {\n return { type: CharType.Value, value };\n }\n\n if (position % 1 < 0.5) {\n const rand = Math.floor(Math.random() * glyphs.length);\n return { type: CharType.Glyph, value: glyphs[rand] };\n }\n\n return { type: CharType.Glyph, value: output[index].value };\n });\n}\n\ninterface ScrambleRevealProps {\n text: string;\n start?: boolean;\n delay?: number;\n className?: string;\n [key: string]: unknown;\n}\n\nexport const ScrambleReveal = memo(\n ({ text, start = true, delay: startDelay = 0, className, ...rest }: ScrambleRevealProps) => {\n const output = useRef<CharItem[]>([{ type: CharType.Glyph, value: '' }]);\n const container = useRef<HTMLSpanElement>(null);\n const reduceMotion = useReducedMotion();\n const decoderSpring = useSpring(0, { stiffness: 8, damping: 5 });\n\n useEffect(() => {\n const containerInstance = container.current;\n const content = text.split('');\n let animation: number | undefined;\n\n const renderOutput = () => {\n const characterMap = output.current.map(item => {\n return `<span class=\"${styles[item.type]}\">${item.value}</span>`;\n });\n\n if (containerInstance) {\n containerInstance.innerHTML = characterMap.join('');\n }\n };\n\n const unsubscribeSpring = decoderSpring.on('change', (value: number) => {\n output.current = shuffle(content, output.current, value);\n renderOutput();\n });\n\n const startSpring = async () => {\n await delay(startDelay);\n decoderSpring.set(content.length);\n };\n\n if (start && !animation && !reduceMotion) {\n startSpring();\n }\n\n if (reduceMotion) {\n output.current = content.map((value, index) => ({\n type: CharType.Value,\n value: content[index],\n }));\n renderOutput();\n }\n\n return () => {\n unsubscribeSpring?.();\n };\n }, [decoderSpring, reduceMotion, start, startDelay, text]);\n\n return (\n <span className={classes(styles.text, className)} {...rest}>\n <VisuallyHidden className={styles.label}>{text}</VisuallyHidden>\n <span aria-hidden className={styles.content} ref={container} />\n </span>\n );\n }\n);\n","import { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { useTheme } from '../ThemeProvider';\nimport { useReducedMotion } from 'framer-motion';\nimport { useHasMounted } from '../../hooks/useHasMounted';\nimport { useInViewport } from '../../hooks/useInViewport';\nimport { Fragment, useCallback, useEffect, useRef, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes, ReactEventHandler, VideoHTMLAttributes } from 'react';\nimport { resolveSrcFromSrcSet, srcSetToString } from '../../utils/image';\nimport { classes, cssProps, numToMs } from '../../utils/style';\nimport styles from './Image.module.css';\n\ninterface ImageSrc {\n src: string;\n width?: number;\n height?: number;\n}\n\ninterface SrcSetItem {\n src: string;\n width: number;\n}\n\ninterface ImageProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n style?: CSSProperties;\n reveal?: boolean;\n delay?: number;\n raised?: boolean;\n src?: ImageSrc;\n srcSet?: SrcSetItem[];\n placeholder?: ImageSrc;\n alt?: string;\n play?: boolean;\n restartOnPause?: boolean;\n sizes?: string;\n noPauseButton?: boolean;\n}\n\nexport const Image = ({\n className,\n style,\n reveal,\n delay = 0,\n raised,\n src: baseSrc,\n srcSet,\n placeholder,\n ...rest\n}: ImageProps) => {\n const [loaded, setLoaded] = useState(false);\n const { themeId } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const src = baseSrc || srcSet?.[0];\n const inViewport = useInViewport(containerRef, !getIsVideo(src));\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n return (\n <div\n className={classes(styles.image, className)}\n data-visible={inViewport || loaded}\n data-reveal={reveal}\n data-raised={raised}\n data-theme={themeId}\n style={cssProps({ delay: numToMs(delay) }, style)}\n ref={containerRef}\n >\n <ImageElements\n delay={delay}\n onLoad={onLoad}\n loaded={loaded}\n inViewport={inViewport}\n reveal={reveal}\n src={src}\n srcSet={srcSet}\n placeholder={placeholder}\n {...rest}\n />\n </div>\n );\n};\n\ninterface ImageElementsProps {\n onLoad: ReactEventHandler;\n loaded: boolean;\n inViewport: boolean;\n srcSet?: SrcSetItem[];\n placeholder?: ImageSrc;\n delay: number;\n src?: ImageSrc | SrcSetItem;\n alt?: string;\n play?: boolean;\n restartOnPause?: boolean;\n reveal?: boolean;\n sizes?: string;\n noPauseButton?: boolean;\n [key: string]: unknown;\n}\n\nconst ImageElements = ({\n onLoad,\n loaded,\n inViewport,\n srcSet,\n placeholder,\n delay,\n src,\n alt,\n play = true,\n restartOnPause,\n reveal,\n sizes,\n noPauseButton,\n ...rest\n}: ImageElementsProps) => {\n const reduceMotion = useReducedMotion();\n const [showPlaceholder, setShowPlaceholder] = useState(true);\n const [playing, setPlaying] = useState(!reduceMotion);\n const [videoSrc, setVideoSrc] = useState<string>();\n const [videoInteracted, setVideoInteracted] = useState(false);\n const placeholderRef = useRef<HTMLImageElement>(null);\n const videoRef = useRef<HTMLVideoElement>(null);\n const isVideo = getIsVideo(src);\n const showFullRes = inViewport;\n const srcSetString = srcSetToString(srcSet);\n const hasMounted = useHasMounted();\n\n useEffect(() => {\n const resolveVideoSrc = async () => {\n const resolvedVideoSrc = await resolveSrcFromSrcSet({ srcSet, sizes });\n setVideoSrc(resolvedVideoSrc);\n };\n\n if (isVideo && srcSet) {\n resolveVideoSrc();\n } else if (isVideo) {\n // Sync counterpart to the async branch above; kept in the same effect\n // so `videoSrc` always resolves the same way regardless of source shape.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setVideoSrc((src as ImageSrc).src);\n }\n }, [isVideo, sizes, src, srcSet]);\n\n useEffect(() => {\n if (!videoRef.current || !videoSrc) return;\n\n const playVideo = () => {\n setPlaying(true);\n videoRef.current!.play();\n };\n\n const pauseVideo = () => {\n setPlaying(false);\n videoRef.current!.pause();\n };\n\n if (!play) {\n pauseVideo();\n\n if (restartOnPause) {\n videoRef.current.currentTime = 0;\n }\n }\n\n if (videoInteracted) return;\n\n if (!inViewport) {\n pauseVideo();\n } else if (inViewport && !reduceMotion && play) {\n playVideo();\n }\n }, [inViewport, play, reduceMotion, restartOnPause, videoInteracted, videoSrc]);\n\n const togglePlaying = (event: React.MouseEvent) => {\n event.preventDefault();\n\n setVideoInteracted(true);\n\n if (videoRef.current!.paused) {\n setPlaying(true);\n videoRef.current!.play();\n } else {\n setPlaying(false);\n videoRef.current!.pause();\n }\n };\n\n return (\n <div\n className={styles.elementWrapper}\n data-reveal={reveal}\n data-visible={inViewport || loaded}\n style={cssProps({ delay: numToMs(delay + 1000) })}\n >\n {isVideo && hasMounted && (\n <Fragment>\n <video\n muted\n loop\n playsInline\n className={styles.element}\n data-loaded={loaded}\n autoPlay={!reduceMotion}\n role=\"img\"\n onLoadStart={onLoad as ReactEventHandler<HTMLVideoElement>}\n src={videoSrc}\n aria-label={alt}\n ref={videoRef}\n {...(rest as VideoHTMLAttributes<HTMLVideoElement>)}\n />\n {!noPauseButton && (\n <Button className={styles.button} onClick={togglePlaying}>\n <Icon icon={playing ? 'pause' : 'play'} />\n {playing ? 'Pause' : 'Play'}\n </Button>\n )}\n </Fragment>\n )}\n {!isVideo && (\n <img\n className={styles.element}\n data-loaded={loaded}\n onLoad={onLoad}\n decoding=\"async\"\n src={showFullRes ? (src as ImageSrc)?.src : undefined}\n srcSet={showFullRes ? srcSetString : undefined}\n width={(src as ImageSrc)?.width}\n height={(src as ImageSrc)?.height}\n alt={alt}\n sizes={sizes}\n {...(rest as React.ImgHTMLAttributes<HTMLImageElement>)}\n />\n )}\n {showPlaceholder && placeholder && (\n <img\n aria-hidden\n className={styles.placeholder}\n data-loaded={loaded}\n style={cssProps({ delay: numToMs(delay) })}\n ref={placeholderRef}\n src={placeholder.src}\n width={placeholder.width}\n height={placeholder.height}\n onTransitionEnd={() => setShowPlaceholder(false)}\n decoding=\"async\"\n alt=\"\"\n role=\"presentation\"\n />\n )}\n </div>\n );\n};\n\nfunction getIsVideo(src?: ImageSrc | SrcSetItem): boolean {\n if (!src) return false;\n return typeof (src as ImageSrc).src === 'string' && (src as ImageSrc).src.endsWith('.mp4');\n}\n","import { forwardRef, useId, type SVGProps } from 'react';\nimport { classes } from '../../utils/style';\nimport styles from './Wordmark.module.css';\n\nexport interface WordmarkProps extends SVGProps<SVGSVGElement> {\n highlight?: boolean;\n}\n\nexport const Wordmark = forwardRef<SVGSVGElement, WordmarkProps>(\n ({ highlight, className, ...props }, ref) => {\n const id = useId();\n const clipId = `${id}wordmark-clip`;\n\n return (\n <svg\n aria-hidden\n className={classes(styles.wordmark, className)}\n width=\"46\"\n height=\"29\"\n viewBox=\"0 0 46 29\"\n ref={ref}\n {...props}\n >\n <defs>\n <clipPath id={clipId}>\n <path\n d=\"M 10.3281 17.7888 l 4.4875 -11.4688 l 0.0019 -0.0006 l 6.075 11.5263 a 0.5238 0.5238 90 0 0 0.9525 -0.0581 l 2.1187 -5.515 a 0.5288 0.5288 90 0 0 -0.025 -0.4288 L 18.9419 2.2531 A 4.1863 4.1863 90 0 0 15.2294 0 h -2.875 a 0.525 0.525 90 0 0 -0.4625 0.7688 l 2.2687 4.3044 l -2.2844 5.7188 l -4.45 -8.5388 A 4.1863 4.1863 90 0 0 3.7138 0 h -2.875 a 0.5262 0.5262 90 0 0 -0.4675 0.7688 L 9.375 17.8462 a 0.5244 0.5244 90 0 0 0.9525 -0.0575 z M 26.495 5.5037 a 0.5219 0.5219 90 0 0 0.2419 -0.2787 v 0.0006 l 1.6687 -4.5188 a 0.5238 0.5238 90 0 0 -0.4906 -0.7056 h -4.1113 a 0.5231 0.5231 90 0 0 -0.46 0.7737 l 2.4419 4.5163 c 0.1375 0.2562 0.4556 0.35 0.7094 0.2125 z M 39.375 0 l 0 18.125 L 34.375 18.125 l 0 -11.875 A 4.1863 4.1863 90 0 0 34.375 18.125 L 34.375 18.125 L 34.375 0 z z\"\n transform=\"rotate(180 23 15)\"\n />\n </clipPath>\n </defs>\n <rect clipPath={`url(#${clipId})`} width=\"100%\" height=\"100%\" />\n {highlight && (\n <g clipPath={`url(#${clipId})`}>\n <rect className={styles.highlight} width=\"100%\" height=\"100%\" />\n </g>\n )}\n </svg>\n );\n }\n);\n"],"names":["Text","children","size","Component","align","weight","secondary","className","rest","jsx","classes","styles","Heading","level","as","clampedLevel","Fragment","Section","forwardRef","ref","Element","List","ordered","ListItem","Divider","lineWidth","lineHeight","notchWidth","notchHeight","collapseDelay","collapsed","notch","light","style","jsxs","cssProps","numToMs","Table","TableRow","TableHead","TableBody","TableHeadCell","TableCell","VisuallyHidden","showOnFocus","visible","Transition","timeout","onEnter","onEntered","onExit","onExited","show","unmount","enterTimeout","useRef","exitTimeout","useEffect","AnimatePresence","TransitionContent","status","setStatus","useState","isPresent","safeToRemove","usePresence","hasEntered","setHasEntered","splitTimeout","actualTimeout","Loader","text","reduceMotion","useReducedMotion","hasMounted","useHasMounted","portalContainer","useRefractConfig","renderScreenReaderTextPortal","container","createPortal","gapSize","spanSize","SvgArrowLeft","props","React","SvgArrowRight","SvgArticles","SvgCheck","SvgChevronRight","SvgClose","SvgCompany","SvgCopy","SvgDownload","SvgError","SvgFigma","SvgGithub","SvgLink","SvgLinkedin","SvgMenu","SvgPause","SvgPlay","SvgSend","SvgSkills","SvgStorybook","SvgTwitter","icons","ArrowLeft","ArrowRight","Article","Company","Check","ChevronRight","Close","Copy","Download","Error","Figma","Github","Link","Linkedin","Menu","Pause","Play","Send","Skills","Storybook","Twitter","Icon","icon","IconComponent","SegmentedControlContext","createContext","SegmentedControl","currentIndex","onChange","label","labelId","useId","optionRefs","indicator","setIndicator","handleKeyDown","event","length","prevIndex","nextIndex","_a","_b","registerOption","useCallback","optionRef","unRegisterOption","currentOption","resizeObserver","rect","left","SegmentedControlOption","useContext","index","isSelected","TextArea","resize","value","minRows","maxRows","rows","setRows","textareaDimensions","setTextareaDimensions","textareaRef","paddingHeight","handleChange","previousRows","currentRows","Input","id","multiline","error","onBlur","autoComplete","required","maxLength","type","placeholder","focused","setFocused","generatedId","errorRef","inputId","errorId","InputElement","handleBlur","msToNum","tokens","VALID_EXT","isAnchor","href","isValidExtension","rel","target","linkComponent","ContextLink","useLinkComponent","RouterLink","isExternal","relValue","targetValue","linkProps","isExternalLink","Button","ButtonContent","loading","loadingText","iconEnd","iconHoverShift","iconOnly","disabled","Breadcrumbs","items","item","isLast","delay","ms","resolve","glyphs","CharType","shuffle","content","output","position","rand","ScrambleReveal","memo","start","startDelay","decoderSpring","useSpring","containerInstance","renderOutput","characterMap","unsubscribeSpring","Image","reveal","raised","baseSrc","srcSet","loaded","setLoaded","themeId","useTheme","containerRef","src","inViewport","useInViewport","getIsVideo","onLoad","ImageElements","alt","play","restartOnPause","sizes","noPauseButton","showPlaceholder","setShowPlaceholder","playing","setPlaying","videoSrc","setVideoSrc","videoInteracted","setVideoInteracted","placeholderRef","videoRef","isVideo","showFullRes","srcSetString","srcSetToString","resolvedVideoSrc","resolveSrcFromSrcSet","playVideo","pauseVideo","togglePlaying","Wordmark","highlight","clipId"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
export * from './components/Text';
|
|
2
|
+
export * from './components/Heading';
|
|
3
|
+
export * from './components/Section';
|
|
4
|
+
export * from './components/List';
|
|
5
|
+
export * from './components/Divider';
|
|
6
|
+
export * from './components/Table';
|
|
7
|
+
export * from './components/VisuallyHidden';
|
|
8
|
+
export * from './components/Transition';
|
|
9
|
+
export * from './components/Loader';
|
|
10
|
+
export * from './components/Icon';
|
|
11
|
+
export * from './components/SegmentedControl';
|
|
12
|
+
export * from './components/Input';
|
|
13
|
+
export * from './components/Link';
|
|
14
|
+
export * from './components/Button';
|
|
15
|
+
export * from './components/Breadcrumbs';
|
|
16
|
+
export * from './components/ScrambleReveal';
|
|
17
|
+
export * from './components/Image';
|
|
18
|
+
export * from './components/Wordmark';
|
|
19
|
+
export * from './components/ThemeProvider';
|
|
20
|
+
export * from './components/LinkProvider';
|
|
21
|
+
export * from './components/RefractProvider';
|
|
2
22
|
export * from './utils/style';
|