{
  "version": 3,
  "sources": ["../emotion-shim.js", "../src/themes/colors.ts", "../src/themes/base.ts", "../src/themes/bahamaBlue.ts", "../src/themes/pinkVivid.ts", "../src/themes/blueVivid.ts", "../src/themes/openpatch.ts", "../src/system/index.ts", "../src/system/background.ts", "../src/system/border.ts", "../src/system/colors.ts", "../src/system/cursor.ts", "../src/system/flexbox.ts", "../src/system/grid.ts", "../src/system/layout.ts", "../src/system/position.ts", "../src/system/shadow.ts", "../src/system/space.ts", "../src/system/typography.ts", "../src/system/styled.ts", "../src/Box.tsx", "../src/Icon.tsx", "../src/icons/shade/Check.tsx", "../src/icons/shade/CheveronDown.tsx", "../src/icons/shade/ExternalWindow.tsx", "../src/icons/shade/Important.tsx", "../src/icons/shade/Information.tsx", "../src/Alert.tsx", "../src/Grid.tsx", "../src/AutoGrid.tsx", "../src/Avatar.tsx", "../src/hooks/useMedia.tsx", "../src/hooks/useTheme.tsx", "../src/hooks/useBreakpoints.tsx", "../src/hooks/useClickOutsideListener.tsx", "../src/hooks/useConfirm.tsx", "../src/Button.tsx", "../src/LoadingDots.tsx", "../src/ButtonPrimary.tsx", "../src/ButtonSecondary.tsx", "../src/CardContent.tsx", "../src/CardFooter.tsx", "../src/Text.tsx", "../src/Heading.tsx", "../src/HeadingLink.tsx", "../src/hooks/useLinkComponent.tsx", "../src/LinkComponentProvider.tsx", "../src/CardHeader.tsx", "../src/Modal.tsx", "../src/Card.tsx", "../src/hooks/useFirstRender.tsx", "../src/hooks/useFlipList.tsx", "../src/hooks/useMergeRefs.tsx", "../src/hooks/usePrefersDarkMode.tsx", "../src/hooks/useTimeout.tsx", "../src/Image.tsx", "../src/Badge.tsx", "../src/Blockquote.tsx", "../src/ButtonGroup.tsx", "../src/ButtonLink.tsx", "../src/ButtonOutline.tsx", "../src/ButtonOutlineLink.tsx", "../src/ButtonPrimaryLink.tsx", "../src/ButtonSecondaryLink.tsx", "../src/CardMedia.tsx", "../src/Center.tsx", "../src/Checkbox.tsx", "../src/Code.tsx", "../src/CodeEditor.tsx", "../src/CodeMirror.tsx", "../src/CodeEditorStyles.tsx", "../src/Container.tsx", "../src/Divider.tsx", "../src/Input.tsx", "../src/EmailInput.tsx", "../src/Video.tsx", "../src/FeaturePreview.tsx", "../src/Flex.tsx", "../src/Footer.tsx", "../src/Form.tsx", "../src/FormDescription.tsx", "../src/FormErrorText.tsx", "../src/FormFooter.tsx", "../src/FormHeader.tsx", "../src/FormHelperText.tsx", "../src/FormInfoText.tsx", "../src/FormLabel.tsx", "../src/FormSuccessText.tsx", "../src/FormWarningText.tsx", "../src/Group.tsx", "../src/HookFormController.tsx", "../src/InputAddon.tsx", "../src/InputGroup.tsx", "../src/Link.tsx", "../src/Logo.tsx", "../src/MailTemplate.ts", "../src/Main.tsx", "../src/Markdown.tsx", "../src/TextLink.tsx", "../src/Table.tsx", "../src/TableBody.tsx", "../src/TableCell.tsx", "../src/TableHead.tsx", "../src/TableRow.tsx", "../src/MarkdownEditor.tsx", "../src/Nav.tsx", "../src/icons/outline/ChevronDown.tsx", "../src/icons/outline/ChevronUp.tsx", "../src/icons/outline/Menu.tsx", "../src/icons/outline/X.tsx", "../src/NumberInput.tsx", "../src/PageHeader.tsx", "../src/PasswordInput.tsx", "../src/PatchesProvider.tsx", "../src/NotificationsProvider.tsx", "../node_modules/clsx/dist/clsx.m.js", "../node_modules/react-toastify/src/utils/propValidator.ts", "../node_modules/react-toastify/src/utils/constant.ts", "../node_modules/react-toastify/src/utils/collapseToast.ts", "../node_modules/react-toastify/src/utils/cssTransition.tsx", "../node_modules/react-toastify/src/utils/mapper.ts", "../node_modules/react-toastify/src/core/eventManager.ts", "../node_modules/react-toastify/src/hooks/useToastContainer.ts", "../node_modules/react-toastify/src/hooks/useToast.ts", "../node_modules/react-toastify/src/components/CloseButton.tsx", "../node_modules/react-toastify/src/components/ProgressBar.tsx", "../node_modules/react-toastify/src/components/Icons.tsx", "../node_modules/react-toastify/src/components/Toast.tsx", "../node_modules/react-toastify/src/components/Transitions.tsx", "../node_modules/react-toastify/src/components/ToastContainer.tsx", "../node_modules/react-toastify/src/core/toast.ts", "../src/ThemeProvider.tsx", "../src/Pattern.tsx", "../src/PatternCenter.tsx", "../src/RadioGroup.tsx", "../src/Select.tsx", "../src/Sidenav.tsx", "../src/Slider.tsx", "../src/Tabs.tsx", "../src/TextEditor.tsx", "../src/Textarea.tsx", "../src/Tooltip.tsx"],
  "sourcesContent": ["import { jsx } from \"@emotion/react\";\n\nexport { jsx };\n", "import * as CSS from \"csstype\";\n\nexport type Color = {\n  \"50\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"100\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"200\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"300\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"400\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"500\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"600\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"700\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"800\": Exclude<CSS.Properties[\"color\"], undefined>;\n  \"900\": Exclude<CSS.Properties[\"color\"], undefined>;\n};\n\nexport const teal: Color = {\n  \"50\": \"#EFFCF6\",\n  \"100\": \"#C6F7E2\",\n  \"200\": \"#8EEDC7\",\n  \"300\": \"#65D6AD\",\n  \"400\": \"#3EBD93\",\n  \"500\": \"#27AB83\",\n  \"600\": \"#199473\",\n  \"700\": \"#147D64\",\n  \"800\": \"#0C6B58\",\n  \"900\": \"#014D40\",\n};\n\nexport const mintGreen: Color = {\n  \"50\": \"#eaffea\",\n  \"100\": \"#d6ffd6\",\n  \"200\": \"#ccffcc\",\n  \"300\": \"#b7ffb7\",\n  \"400\": \"#adffad\",\n  \"500\": \"#98ff98\",\n  \"600\": \"#89e689\",\n  \"700\": \"#7acc7a\",\n  \"800\": \"#5b995b\",\n  \"900\": \"#3d663d\",\n};\n\nexport const bahamaBlue: Color = {\n  \"50\": \"#e6f1f4\",\n  \"100\": \"#b3d4df\",\n  \"200\": \"#99c5d5\",\n  \"300\": \"#66a9bf\",\n  \"400\": \"#008ebd\",\n  \"500\": \"#006f95\",\n  \"600\": \"#006282\",\n  \"700\": \"#005977\",\n  \"800\": \"#004359\",\n  \"900\": \"#00384b\",\n};\n\nexport const blueGrey: Color = {\n  \"50\": \"#F0F4F8\",\n  \"100\": \"#D9E2EC\",\n  \"200\": \"#BCCCDC\",\n  \"300\": \"#9FB3C8\",\n  \"400\": \"#829AB1\",\n  \"500\": \"#627D98\",\n  \"600\": \"#486581\",\n  \"700\": \"#334E68\",\n  \"800\": \"#243B53\",\n  \"900\": \"#102A43\",\n};\n\nexport const coolGrey: Color = {\n  \"50\": \"#F5F7FA\",\n  \"100\": \"#E4E7EB\",\n  \"200\": \"#CBD2D9\",\n  \"300\": \"#9AA5B1\",\n  \"400\": \"#7B8794\",\n  \"500\": \"#616E7C\",\n  \"600\": \"#52606D\",\n  \"700\": \"#3E4C59\",\n  \"800\": \"#323F4B\",\n  \"900\": \"#1F2933\",\n};\n\nexport const blue: Color = {\n  \"50\": \"#DCEEFB\",\n  \"100\": \"#B6E0FE\",\n  \"200\": \"#84C5F4\",\n  \"300\": \"#62B0E8\",\n  \"400\": \"#4098D7\",\n  \"500\": \"#2680C2\",\n  \"600\": \"#186FAF\",\n  \"700\": \"#0F609B\",\n  \"800\": \"#0A558C\",\n  \"900\": \"#003E6B\",\n};\n\nexport const blueVivid: Color = {\n  \"50\": \"#E6F6FF\",\n  \"100\": \"#BAE3FF\",\n  \"200\": \"#7CC4FA\",\n  \"300\": \"#47A3F3\",\n  \"400\": \"#2186EB\",\n  \"500\": \"#0967D2\",\n  \"600\": \"#0552B5\",\n  \"700\": \"#03449E\",\n  \"800\": \"#01337D\",\n  \"900\": \"#002159\",\n};\n\nexport const cyanVivid: Color = {\n  \"50\": \"#E1FCF8\",\n  \"100\": \"#C1FEF6\",\n  \"200\": \"#92FDF2\",\n  \"300\": \"#62F4EB\",\n  \"400\": \"#3AE7E1\",\n  \"500\": \"#1CD4D4\",\n  \"600\": \"#0FB5BA\",\n  \"700\": \"#099AA4\",\n  \"800\": \"#07818F\",\n  \"900\": \"#05606E\",\n};\n\nexport const pinkVivid: Color = {\n  \"50\": \"#FFE3EC\",\n  \"100\": \"#FFB8D2\",\n  \"200\": \"#FF8CBA\",\n  \"300\": \"#F364A2\",\n  \"400\": \"#E8368F\",\n  \"500\": \"#DA127D\",\n  \"600\": \"#BC0A6F\",\n  \"700\": \"#A30664\",\n  \"800\": \"#870557\",\n  \"900\": \"#620042\",\n};\n\nexport const purple: Color = {\n  \"50\": \"#EAE2F8\",\n  \"100\": \"#CFBCF2\",\n  \"200\": \"#A081D9\",\n  \"300\": \"#8662C7\",\n  \"400\": \"#724BB7\",\n  \"500\": \"#653CAD\",\n  \"600\": \"#51279B\",\n  \"700\": \"#421987\",\n  \"800\": \"#34126F\",\n  \"900\": \"#240754\",\n};\n\nexport const purpleVivid: Color = {\n  \"50\": \"#F2EBFE\",\n  \"100\": \"#DAC4FF\",\n  \"200\": \"#B990FF\",\n  \"300\": \"#A368FC\",\n  \"400\": \"#9446ED\",\n  \"500\": \"#8719E0\",\n  \"600\": \"#7A0ECC\",\n  \"700\": \"#690CB0\",\n  \"800\": \"#580A94\",\n  \"900\": \"#44056E\",\n};\n\nexport const orangeVivid: Color = {\n  \"50\": \"#FFE8D9\",\n  \"100\": \"#FFD0B5\",\n  \"200\": \"#FFB088\",\n  \"300\": \"#FF9466\",\n  \"400\": \"#F9703E\",\n  \"500\": \"#F35627\",\n  \"600\": \"#DE3A11\",\n  \"700\": \"#C52707\",\n  \"800\": \"#AD1D07\",\n  \"900\": \"#841003\",\n};\n\nexport const red: Color = {\n  \"50\": \"#FFEEEE\",\n  \"100\": \"#FACDCD\",\n  \"200\": \"#F29B9B\",\n  \"300\": \"#E66A6A\",\n  \"400\": \"#D64545\",\n  \"500\": \"#BA2525\",\n  \"600\": \"#A61B1B\",\n  \"700\": \"#911111\",\n  \"800\": \"#780A0A\",\n  \"900\": \"#610404\",\n};\n\nexport const redVivid: Color = {\n  \"50\": \"#FFE3E3\",\n  \"100\": \"#FFBDBD\",\n  \"200\": \"#FF9B9B\",\n  \"300\": \"#F86A6A\",\n  \"400\": \"#EF4E4E\",\n  \"500\": \"#E12D39\",\n  \"600\": \"#CF1124\",\n  \"700\": \"#AB091E\",\n  \"800\": \"#8A041A\",\n  \"900\": \"#610316\",\n};\n\nexport const yellow: Color = {\n  \"50\": \"#FFFAEB\",\n  \"100\": \"#FCEFC7\",\n  \"200\": \"#F8E3A3\",\n  \"300\": \"#F9DA8B\",\n  \"400\": \"#F7D070\",\n  \"500\": \"#E9B949\",\n  \"600\": \"#C99A2E\",\n  \"700\": \"#A27C1A\",\n  \"800\": \"#7C5E10\",\n  \"900\": \"#513C06\",\n};\n\nexport const yellowVivid: Color = {\n  \"50\": \"#FFFBEA\",\n  \"100\": \"#FFF3C4\",\n  \"200\": \"#FCE588\",\n  \"300\": \"#FADB5F\",\n  \"400\": \"#F7C948\",\n  \"500\": \"#F0B429\",\n  \"600\": \"#DE911D\",\n  \"700\": \"#CB6E17\",\n  \"800\": \"#B44D12\",\n  \"900\": \"#8D2B0B\",\n};\n", "import { Theme } from \"@emotion/react\";\nimport { coolGrey, red, yellow, blue, teal, purple } from \"./colors\";\n\nconst base: Theme = {\n  breakpoints: [\"768px\", \"1024px\"],\n  space: {\n    xxsmall: \"4px\",\n    xsmall: \"8px\",\n    small: \"16px\",\n    medium: \"24px\",\n    large: \"32px\",\n    xlarge: \"48px\",\n    xxlarge: \"64px\",\n    standard: \"16px\",\n    none: \"0px\",\n    gutter: \"8px\",\n    auto: \"auto\",\n    full: \"100%\",\n  },\n  sizes: {\n    xsmall: \"400px\",\n    small: \"600px\",\n    medium: \"940px\",\n    large: \"1280px\",\n  },\n  fonts: {\n    body:\n      'Rubik, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif',\n    heading: \"Rubik, system-ui\",\n    monospace: '\"Ubuntu Mono\", Menlo, monospace',\n  },\n  fontSizes: {\n    xsmall: \"12px\",\n    small: \"14px\",\n    medium: \"16px\",\n    large: \"20px\",\n    xlarge: \"24px\",\n    xxlarge: \"32px\",\n    standard: \"16px\",\n  },\n  fontWeights: {\n    hairline: 100,\n    thin: 200,\n    light: 300,\n    standard: 400,\n    medium: 500,\n    semibold: 600,\n    bold: 700,\n    extrabold: 800,\n    black: 900,\n  },\n  lineHeights: {\n    none: \"1\",\n    tight: \"1.25\",\n    snug: \"1.375\",\n    standard: \"1.5\",\n    relaxed: \"1.625\",\n    loose: \"2\",\n  },\n  letterSpacings: {\n    tighter: \"-0.05em\",\n    tight: \"-0.025em\",\n    standard: \"0\",\n    wide: \"0.025em\",\n    wider: \"0.05em\",\n    widest: \"0.1em\",\n  },\n  colors: {\n    currentColor: \"currentColor\",\n    transparent: \"transparent\",\n    text: coolGrey[900],\n    background: coolGrey[50],\n    card: \"#fff\",\n    primary: teal,\n    accent: purple,\n    neutral: coolGrey,\n    success: teal,\n    warning: yellow,\n    error: red,\n    info: blue,\n  },\n  borderWidths: {\n    standard: \"1px\",\n    none: \"0\",\n    light: \"2px\",\n    medium: \"4px\",\n    semibold: \"8px\",\n  },\n  radii: {\n    none: \"0\",\n    small: \"4px\",\n    standard: \"8px\",\n    medium: \"10px\",\n    large: \"12px\",\n    full: \"9999px\",\n  },\n  shadows: {\n    xsmall: \"0 0 0 1px rgba(0, 0, 0, 0.05)\",\n    small: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n    standard: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n    medium:\n      \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n    large:\n      \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n    xlarge:\n      \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n    xxlarge: \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n    inner: \"inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)\",\n    outline: \"0 0 0 3px rgba(66, 153, 225, 0.5)\",\n    none: \"none\",\n  },\n  zIndices: {\n    auto: \"auto\",\n    \"0\": 0,\n    \"10\": 10,\n    \"20\": 20,\n    \"30\": 30,\n    \"40\": 40,\n    \"50\": 50,\n  },\n  cursor: {\n    auto: \"auto\",\n    default: \"default\",\n    pointer: \"pointer\",\n    wait: \"wait\",\n    text: \"text\",\n    move: \"move\",\n    \"not-allowed\": \"not-allowed\",\n  },\n};\n\nexport default base;\n", "import { Theme } from \"@emotion/react\";\nimport { bahamaBlue as primary } from \"./colors\";\nimport { PartialDeep } from \"type-fest\";\n\nconst theme: PartialDeep<Theme> = {\n  colors: {\n    primary,\n  },\n};\n\nexport default theme;\n", "import { Theme } from \"@emotion/react\";\nimport { pinkVivid as primary } from \"./colors\";\nimport { coolGrey as neutral } from \"./colors\";\nimport { cyanVivid as info } from \"./colors\";\nimport { purpleVivid as accent } from \"./colors\";\nimport { redVivid as error } from \"./colors\";\nimport { teal as success } from \"./colors\";\nimport { yellowVivid as warning } from \"./colors\";\nimport { PartialDeep } from \"type-fest\";\n\nconst theme: PartialDeep<Theme> = {\n  colors: {\n    primary,\n    neutral,\n    accent,\n    error,\n    success,\n    warning,\n    info,\n  },\n};\n\nexport default theme;\n", "import { Theme } from \"@emotion/react\";\nimport { blueVivid as primary } from \"./colors\";\nimport { coolGrey as neutral } from \"./colors\";\nimport { cyanVivid as info } from \"./colors\";\nimport { redVivid as error } from \"./colors\";\nimport { teal as success } from \"./colors\";\nimport { yellowVivid as warning } from \"./colors\";\nimport { PartialDeep } from \"type-fest\";\n\nconst theme: PartialDeep<Theme> = {\n  colors: {\n    primary,\n    neutral,\n    accent: info,\n    error,\n    success,\n    warning,\n    info,\n  },\n};\n\nexport default theme;\n", "import { Theme } from \"@emotion/react\";\nimport { PartialDeep } from \"type-fest\";\n\nconst theme: PartialDeep<Theme> = {};\n\nexport default theme;\n", "export { compose, variant } from \"styled-system\";\nexport { background } from \"./background\";\nexport type { BackgroundProps } from \"./background\";\nexport { border } from \"./border\";\nexport type { BorderProps } from \"./border\";\nexport { color } from \"./colors\";\nexport type { ColorProps } from \"./colors\";\nexport { cursor } from \"./cursor\";\nexport type { CursorProps } from \"./cursor\";\nexport { flexbox } from \"./flexbox\";\nexport type { FlexboxProps } from \"./flexbox\";\nexport { grid } from \"./grid\";\nexport type { GridProps } from \"./grid\";\nexport { layout } from \"./layout\";\nexport type { LayoutProps } from \"./layout\";\nexport { position } from \"./position\";\nexport type { PositionProps } from \"./position\";\nexport { shadow } from \"./shadow\";\nexport type { ShadowProps } from \"./shadow\";\nexport { space } from \"./space\";\nexport type { SpaceProps } from \"./space\";\nexport { typography } from \"./typography\";\nexport type { TypographyProps } from \"./typography\";\nexport { styled } from \"./styled\";\n", "import * as CSS from \"csstype\";\nexport { background } from \"styled-system\";\nimport { ResponsiveProp } from \"./types\";\n\nexport type BackgroundProps = {\n  background?: ResponsiveProp<CSS.Properties[\"background\"]>;\n  backgroundImage?: ResponsiveProp<CSS.Properties[\"backgroundImage\"]>;\n  backgroundSize?: ResponsiveProp<CSS.Properties[\"backgroundSize\"]>;\n  backgroundPosition?: ResponsiveProp<CSS.Properties[\"backgroundPosition\"]>;\n  backgroundRepeat?: ResponsiveProp<CSS.Properties[\"backgroundRepeat\"]>;\n};\n", "import * as CSS from \"csstype\";\nimport { SystemBorderWidths, SystemColor, SystemRadii } from \"./types\";\nexport { border } from \"styled-system\";\nimport { ResponsiveProp } from \"./types\";\n\nexport type BorderProps = {\n  borderStyle?: ResponsiveProp<CSS.Properties[\"borderStyle\"]>;\n  borderWidth?: ResponsiveProp<SystemBorderWidths>;\n  borderColor?: ResponsiveProp<SystemColor>;\n  borderRadius?: ResponsiveProp<SystemRadii>;\n  borderTopStyle?: ResponsiveProp<CSS.Properties[\"borderStyle\"]>;\n  borderTopWidth?: ResponsiveProp<SystemBorderWidths>;\n  borderTopColor?: ResponsiveProp<SystemColor>;\n  borderTopLeftRadius?: ResponsiveProp<SystemRadii>;\n  borderTopRightRadius?: ResponsiveProp<SystemRadii>;\n  borderBottomStyle?: ResponsiveProp<CSS.Properties[\"borderStyle\"]>;\n  borderBottomWidth?: ResponsiveProp<SystemBorderWidths>;\n  borderBottomColor?: ResponsiveProp<SystemColor>;\n  borderBottomLeftRadius?: ResponsiveProp<SystemRadii>;\n  borderBottomRightRadius?: ResponsiveProp<SystemRadii>;\n  borderLeftStyle?: ResponsiveProp<CSS.Properties[\"borderStyle\"]>;\n  borderLeftWidth?: ResponsiveProp<SystemBorderWidths>;\n  borderLeftColor?: ResponsiveProp<SystemColor>;\n  borderRightStyle?: ResponsiveProp<CSS.Properties[\"borderStyle\"]>;\n  borderRightWidth?: ResponsiveProp<SystemBorderWidths>;\n  borderRightColor?: ResponsiveProp<SystemColor>;\n};\n", "import { system } from \"styled-system\";\nimport { SystemColor, ResponsiveProp } from \"./types\";\n\nexport type ColorProps = {\n  textColor?: ResponsiveProp<SystemColor>;\n  backgroundColor?: ResponsiveProp<SystemColor>;\n  bg?: ResponsiveProp<SystemColor>;\n};\n\nexport const color = system({\n  textColor: {\n    scale: \"colors\",\n    property: \"color\",\n  },\n  backgroundColor: {\n    scale: \"colors\",\n    property: \"backgroundColor\",\n  },\n  bg: {\n    scale: \"colors\",\n    property: \"backgroundColor\",\n  },\n});\n", "import { system } from \"styled-system\";\nimport { ResponsiveProp, SystemCursor } from \"./types\";\n\nexport type CursorProps = {\n  cursor?: ResponsiveProp<SystemCursor>;\n};\n\nexport const cursor = system({\n  cursor: {\n    scale: \"cursor\",\n    property: \"cursor\",\n  },\n});\n", "import * as CSS from \"csstype\";\nimport { ResponsiveProp } from \"./types\";\nexport { flexbox } from \"styled-system\";\n\nexport type FlexboxProps = {\n  alignItems?: ResponsiveProp<CSS.Properties[\"alignItems\"]>;\n  alignContent?: ResponsiveProp<CSS.Properties[\"alignContent\"]>;\n  justifyItems?: ResponsiveProp<CSS.Properties[\"justifyItems\"]>;\n  justifyContent?: ResponsiveProp<CSS.Properties[\"justifyContent\"]>;\n  flexWrap?: ResponsiveProp<CSS.Properties[\"flexWrap\"]>;\n  flexDirection?: ResponsiveProp<CSS.Properties[\"flexDirection\"]>;\n  flex?: ResponsiveProp<CSS.Properties[\"flex\"]>;\n  flexGrow?: ResponsiveProp<CSS.Properties[\"flexGrow\"]>;\n  flexShrink?: ResponsiveProp<CSS.Properties[\"flexShrink\"]>;\n  flexBasis?: ResponsiveProp<CSS.Properties[\"flexBasis\"]>;\n  justifySelf?: ResponsiveProp<CSS.Properties[\"justifySelf\"]>;\n  alignSelf?: ResponsiveProp<CSS.Properties[\"alignSelf\"]>;\n  order?: ResponsiveProp<CSS.Properties[\"order\"]>;\n};\n", "import * as CSS from \"csstype\";\nimport { SystemSpace, ResponsiveProp } from \"./types\";\nexport { grid } from \"styled-system\";\n\nexport type GridProps = {\n  gridGap?: ResponsiveProp<SystemSpace>;\n  gridRowGap?: ResponsiveProp<SystemSpace>;\n  gridColumnGap?: ResponsiveProp<SystemSpace>;\n  gridColumn?: ResponsiveProp<CSS.Properties[\"gridColumn\"]>;\n  gridRow?: ResponsiveProp<CSS.Properties[\"gridRow\"]>;\n  gridArea?: ResponsiveProp<CSS.Properties[\"gridArea\"]>;\n  gridAutoFlow?: ResponsiveProp<CSS.Properties[\"gridAutoFlow\"]>;\n  gridAutoRows?: ResponsiveProp<CSS.Properties[\"gridAutoRows\"]>;\n  gridAutoColumns?: ResponsiveProp<CSS.Properties[\"gridAutoColumns\"]>;\n  gridTemplateRows?: ResponsiveProp<CSS.Properties[\"gridTemplateRows\"]>;\n  gridTemplateColumns?: ResponsiveProp<CSS.Properties[\"gridTemplateColumns\"]>;\n  gridTemplateAreas?: ResponsiveProp<CSS.Properties[\"gridTemplateAreas\"]>;\n};\n", "import * as CSS from \"csstype\";\nexport { layout } from \"styled-system\";\nimport { ResponsiveProp, SystemSizes } from \"./types\";\n\nexport type LayoutProps = {\n  width?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  height?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  minWidth?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  maxWidth?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  minHeight?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  maxHeight?: ResponsiveProp<SystemSizes | CSS.Properties[\"width\"]>;\n  size?: ResponsiveProp<SystemSizes>;\n  display?: ResponsiveProp<CSS.Properties[\"display\"]>;\n  verticalAlign?: ResponsiveProp<CSS.Properties[\"verticalAlign\"]>;\n  overflow?: ResponsiveProp<CSS.Properties[\"overflow\"]>;\n  overflowX?: ResponsiveProp<CSS.Properties[\"overflowX\"]>;\n  overflowY?: ResponsiveProp<CSS.Properties[\"overflowY\"]>;\n};\n", "import * as CSS from \"csstype\";\nexport { position } from \"styled-system\";\nimport { ResponsiveProp, SystemSpace, SystemZIndices } from \"./types\";\n\nexport type PositionProps = {\n  position?: ResponsiveProp<CSS.Properties[\"position\"]>;\n  zIndex?: ResponsiveProp<SystemZIndices>;\n  top?: ResponsiveProp<SystemSpace | CSS.Properties[\"top\"]>;\n  right?: ResponsiveProp<SystemSpace | CSS.Properties[\"right\"]>;\n  bottom?: ResponsiveProp<SystemSpace | CSS.Properties[\"bottom\"]>;\n  left?: ResponsiveProp<SystemSpace | CSS.Properties[\"left\"]>;\n};\n", "export { shadow } from \"styled-system\";\nimport { ResponsiveProp, SystemShadows } from \"./types\";\n\nexport type ShadowProps = {\n  textShadow?: ResponsiveProp<SystemShadows>;\n  boxShadow?: ResponsiveProp<SystemShadows>;\n};\n", "import { compose, space as styledSpace, system } from \"styled-system\";\nimport { ResponsiveProp, SystemSpace } from \"./types\";\n\nexport const space = compose(\n  styledSpace,\n  system({\n    gap: {\n      property: \"gap\",\n      scale: \"space\",\n    },\n  })\n);\n\nexport type SpaceProps = {\n  m?: ResponsiveProp<SystemSpace>;\n  mt?: ResponsiveProp<SystemSpace>;\n  mb?: ResponsiveProp<SystemSpace>;\n  mr?: ResponsiveProp<SystemSpace>;\n  ml?: ResponsiveProp<SystemSpace>;\n  mx?: ResponsiveProp<SystemSpace>;\n  my?: ResponsiveProp<SystemSpace>;\n  p?: ResponsiveProp<SystemSpace>;\n  pt?: ResponsiveProp<SystemSpace>;\n  pb?: ResponsiveProp<SystemSpace>;\n  pr?: ResponsiveProp<SystemSpace>;\n  pl?: ResponsiveProp<SystemSpace>;\n  px?: ResponsiveProp<SystemSpace>;\n  py?: ResponsiveProp<SystemSpace>;\n  margin?: ResponsiveProp<SystemSpace>;\n  marginTop?: ResponsiveProp<SystemSpace>;\n  marginBottom?: ResponsiveProp<SystemSpace>;\n  marginRight?: ResponsiveProp<SystemSpace>;\n  marginLeft?: ResponsiveProp<SystemSpace>;\n  marginX?: ResponsiveProp<SystemSpace>;\n  marginY?: ResponsiveProp<SystemSpace>;\n  padding?: ResponsiveProp<SystemSpace>;\n  paddingTop?: ResponsiveProp<SystemSpace>;\n  paddingBottom?: ResponsiveProp<SystemSpace>;\n  paddingRight?: ResponsiveProp<SystemSpace>;\n  paddingLeft?: ResponsiveProp<SystemSpace>;\n  paddingX?: ResponsiveProp<SystemSpace>;\n  paddingY?: ResponsiveProp<SystemSpace>;\n  gap?: ResponsiveProp<SystemSpace>;\n};\n", "import * as CSS from \"csstype\";\nexport { typography } from \"styled-system\";\nimport {\n  ResponsiveProp,\n  SystemFonts,\n  SystemFontWeights,\n  SystemLineHeights,\n  SystemLetterSpacings,\n  SystemFontSizes,\n} from \"./types\";\n\nexport type TypographyProps = {\n  fontFamily?: ResponsiveProp<SystemFonts>;\n  fontSize?: ResponsiveProp<SystemFontSizes>;\n  fontWeight?: ResponsiveProp<SystemFontWeights>;\n  lineHeight?: ResponsiveProp<SystemLineHeights>;\n  letterSpacing?: ResponsiveProp<SystemLetterSpacings>;\n  textAlign?: ResponsiveProp<CSS.Properties[\"textAlign\"]>;\n  fontStyle?: ResponsiveProp<CSS.Properties[\"fontStyle\"]>;\n};\n", "// see https://github.com/emotion-js/emotion/issues/2582\nimport emotionStyled from \"@emotion/styled\";\nconst anyEmotionStyled: any = emotionStyled;\nexport const styled: typeof emotionStyled =\n  \"default\" in emotionStyled ? anyEmotionStyled.default : emotionStyled;\n", "import { HTMLAttributes, Ref } from \"react\";\nimport {\n  background,\n  BackgroundProps,\n  border,\n  BorderProps,\n  color,\n  ColorProps,\n  compose,\n  cursor,\n  CursorProps,\n  flexbox,\n  FlexboxProps,\n  grid,\n  GridProps,\n  layout,\n  LayoutProps,\n  position,\n  PositionProps,\n  shadow,\n  ShadowProps,\n  space,\n  SpaceProps,\n  typography,\n  TypographyProps,\n  styled\n} from \"./system\";\nimport { SystemElements } from \"./system/types\";\n\nexport type BoxProps = {\n  as?: SystemElements;\n  id?: string;\n  role?: string;\n  href?: string;\n  className?: string;\n  tabIndex?: number;\n  ref?: Ref<HTMLDivElement>;\n} & ColorProps &\n  CursorProps &\n  SpaceProps &\n  TypographyProps &\n  LayoutProps &\n  FlexboxProps &\n  GridProps &\n  BackgroundProps &\n  BorderProps &\n  PositionProps &\n  ShadowProps &\n  HTMLAttributes<HTMLDivElement>;\n\n/**\n * \u2018Box\u2019 is the most low-level layout component provided by Braid. Its job is to render an individual element on the screen.\n * In terms of page layout, \u2018Box\u2019 most notably provides a set of padding options which can be used to create container elements with internal spacing.\n *\n * p\n * pX\n * pY\n * pt\n * pb\n * pl\n * pr\n *\n * These options accept a value from our space scale.\n *\n * The Box implements all styled-system apis. (see https://styled-system.com/api)\n *\n */\nexport const Box = styled.div<BoxProps>(\n  {\n    boxSizing: \"border-box\",\n    minWidth: 0,\n    transition: \"all 0.2s ease\",\n  },\n  compose(\n    color,\n    cursor,\n    space,\n    typography,\n    layout,\n    flexbox,\n    grid,\n    background,\n    border,\n    position,\n    shadow\n  )\n);\n", "import { css, Theme } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type IconProps = {\n  children?: ReactNode;\n  color?: keyof Theme[\"colors\"];\n  size?: \"auto\" | \"small\" | \"large\";\n  badge?: {\n    tone: SystemColorNames;\n    count: number;\n  };\n};\n\nconst StyledBadge = styled(Box)(\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n      borderColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"badges\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        backgroundColor: \"primary.800\",\n        color: \"primary.100\",\n        borderColor: \"primary.100\",\n      },\n      accent: {\n        backgroundColor: \"accent.800\",\n        color: \"accent.100\",\n        borderColor: \"accent.100\",\n      },\n      neutral: {\n        backgroundColor: \"neutral.800\",\n        color: \"neutral.100\",\n        borderColor: \"neutral.100\",\n      },\n      success: {\n        backgroundColor: \"success.800\",\n        color: \"success.100\",\n        borderColor: \"success.100\",\n      },\n      warning: {\n        backgroundColor: \"warning.800\",\n        color: \"warning.100\",\n        borderColor: \"warning.100\",\n      },\n      error: {\n        backgroundColor: \"error.800\",\n        color: \"error.100\",\n        borderColor: \"error.100\",\n      },\n      info: {\n        backgroundColor: \"info.800\",\n        color: \"info.100\",\n        borderColor: \"info.100\",\n      },\n    },\n  })\n);\n\nconst style = (theme: Theme) => (\n  color: IconProps[\"color\"] = \"primary\",\n  size: IconProps[\"size\"] = \"small\"\n) => {\n  const palette = theme.colors[color];\n  let sizeCSS = css``;\n  switch (size) {\n    case \"auto\":\n      sizeCSS = css`\n        height: 1em;\n\n        svg {\n          height: 1em;\n        }\n      `;\n      break;\n    case \"small\":\n      sizeCSS = css`\n        width: 24px;\n        height: 24px;\n\n        svg {\n          width: 24px;\n          height: 24px;\n        }\n      `;\n      break;\n    case \"large\":\n      sizeCSS = css`\n        width: 48px;\n        height: 48px;\n        background-color: ${palette?.[100] || palette};\n\n        svg {\n          width: 24px;\n          height: 24px;\n        }\n      `;\n  }\n\n  return css`\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    color: ${palette?.[600] || palette};\n\n    ${sizeCSS};\n\n    svg .primary {\n      fill: ${palette?.[300] || palette};\n    }\n\n    svg .secondary {\n      fill: ${palette?.[600] || palette};\n    }\n  `;\n};\n\nexport const Icon = ({\n  children,\n  color = \"primary\",\n  size = \"small\",\n  badge,\n}: IconProps) => {\n  return (\n    <span\n      css={(theme) => [\n        css`\n          position: relative;\n          border-radius: ${theme.radii.full};\n        `,\n        style(theme)(color, size),\n      ]}\n    >\n      {badge && (\n        <StyledBadge\n          borderRadius=\"standard\"\n          fontWeight=\"semibold\"\n          css={css`\n            position: absolute;\n            padding: 2px;\n            font-size: 10px;\n            width: 23px;\n            text-align: center;\n            top: -6px;\n            right: -6px;\n          `}\n          tone={badge.tone}\n        >\n          {badge.count >= 100 ? \"99+\" : badge.count}\n        </StyledBadge>\n      )}\n      {children}\n    </span>\n  );\n};\n", "function CheckIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg className=\"icon-check\" viewBox=\"0 0 24 24\" {...props}>\n      <circle cx={12} cy={12} r={10} className=\"primary\" />\n      <path\n        d=\"M10 14.59l6.3-6.3a1 1 0 011.4 1.42l-7 7a1 1 0 01-1.4 0l-3-3a1 1 0 011.4-1.42l2.3 2.3z\"\n        className=\"secondary\"\n      />\n    </svg>\n  );\n}\n\nexport default CheckIcon;\n", "function CheveronDownIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg className=\"icon-cheveron-down\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        fillRule=\"evenodd\"\n        d=\"M15.3 10.3a1 1 0 011.4 1.4l-4 4a1 1 0 01-1.4 0l-4-4a1 1 0 011.4-1.4l3.3 3.29 3.3-3.3z\"\n        className=\"secondary\"\n      />\n    </svg>\n  );\n}\n\nexport default CheveronDownIcon;\n", "function ExternalWindowIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg className=\"icon-external-window\" viewBox=\"0 0 24 24\" {...props}>\n      <path\n        d=\"M12 8a1 1 0 01-1 1H5v10h10v-6a1 1 0 012 0v6a2 2 0 01-2 2H5a2 2 0 01-2-2V9c0-1.1.9-2 2-2h6a1 1 0 011 1z\"\n        className=\"primary\"\n      />\n      <path\n        d=\"M19 6.41L8.7 16.71a1 1 0 11-1.4-1.42L17.58 5H14a1 1 0 010-2h6a1 1 0 011 1v6a1 1 0 01-2 0V6.41z\"\n        className=\"secondary\"\n      />\n    </svg>\n  );\n}\n\nexport default ExternalWindowIcon;\n", "function ImportantIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg className=\"icon-important\" viewBox=\"0 0 24 24\" {...props}>\n      <path d=\"M12 2a10 10 0 110 20 10 10 0 010-20z\" className=\"primary\" />\n      <path\n        d=\"M12 18a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm1-5.9c-.13 1.2-1.88 1.2-2 0l-.5-5a1 1 0 011-1.1h1a1 1 0 011 1.1l-.5 5z\"\n        className=\"secondary\"\n      />\n    </svg>\n  );\n}\n\nexport default ImportantIcon;\n", "function InformationIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg className=\"icon-information\" viewBox=\"0 0 24 24\" {...props}>\n      <path d=\"M12 2a10 10 0 110 20 10 10 0 010-20z\" className=\"primary\" />\n      <path\n        d=\"M11 12a1 1 0 010-2h2a1 1 0 01.96 1.27L12.33 17H13a1 1 0 010 2h-2a1 1 0 01-.96-1.27L11.67 12H11zm2-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\"\n        className=\"secondary\"\n      />\n    </svg>\n  );\n}\n\nexport default InformationIcon;\n", "import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { Check, Important, Information } from \"./icons/shade\";\n\nexport type AlertProps = {\n  children?: ReactNode;\n  severity?: \"neutral\" | \"warning\" | \"error\" | \"success\" | \"info\";\n};\n\nexport const Alert = ({ children, severity = \"neutral\" }: AlertProps) => {\n  let backgroundColor: BoxProps[\"backgroundColor\"] = \"neutral.50\";\n  let textColor: BoxProps[\"textColor\"] = \"neutral.900\";\n  let icon: ReactNode = <Information />;\n  switch (severity) {\n    case \"info\":\n      backgroundColor = \"info.50\";\n      textColor = \"info.900\";\n      icon = <Information />;\n      break;\n    case \"error\":\n      backgroundColor = \"error.50\";\n      textColor = \"error.900\";\n      icon = <Important />;\n      break;\n    case \"success\":\n      backgroundColor = \"success.50\";\n      textColor = \"success.900\";\n      icon = <Check />;\n      break;\n    case \"warning\":\n      backgroundColor = \"warning.50\";\n      textColor = \"warning.900\";\n      icon = <Important />;\n      break;\n  }\n  return (\n    <Box\n      display=\"flex\"\n      backgroundColor={backgroundColor}\n      textColor={textColor}\n      boxShadow=\"standard\"\n      padding=\"standard\"\n      borderColor={textColor}\n      borderStyle=\"solid\"\n      borderWidth=\"standard\"\n      borderRadius=\"standard\"\n    >\n      <Icon size=\"small\" color={severity}>\n        {icon}\n      </Icon>\n      <Box marginLeft=\"xsmall\" flex=\"1\">\n        {children}\n      </Box>\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { GridProps as SystemGridProps } from \"./system\";\n\nexport type GridProps = {\n  children?: ReactNode;\n} & SystemGridProps;\n\nexport const Grid = ({ children, ...props }: GridProps) => {\n  return (\n    <Box display=\"grid\" {...props}>\n      {children}\n    </Box>\n  );\n};\n", "import * as CSS from \"csstype\";\nimport { ReactNode } from \"react\";\nimport { Grid, GridProps } from \"./Grid\";\nimport { ResponsiveProp } from \"./system/types\";\n\nexport type AutoGridProps = {\n  children?: ReactNode;\n  columns?: ResponsiveProp<number>;\n  minChildWidth?: ResponsiveProp<CSS.Properties[\"width\"]>;\n  gap?: GridProps[\"gridGap\"];\n  gapX?: GridProps[\"gridColumnGap\"];\n  gapY?: GridProps[\"gridRowGap\"];\n};\n\nexport const AutoGrid = ({\n  children,\n  columns,\n  minChildWidth,\n  gap,\n  gapX,\n  gapY,\n}: AutoGridProps) => {\n  let templateColumns: Array<string> = [];\n\n  if (minChildWidth && !Array.isArray(minChildWidth)) {\n    minChildWidth = [minChildWidth];\n    templateColumns = minChildWidth.map(\n      (m) => `repeat(auto-fit, minmax(${m}, 1fr))`\n    );\n  } else if (columns && !Array.isArray(columns)) {\n    columns = [columns];\n  }\n\n  if (Array.isArray(columns)) {\n    if (Array.isArray(children)) {\n      templateColumns = columns.map(\n        (c) => `repeat(${Math.min(c, children.length)}, 1fr)`\n      );\n    } else {\n      templateColumns = columns.map(() => `repeat(${1}, 1fr)`);\n    }\n  }\n\n  return (\n    <Grid\n      gridGap={gap}\n      gridRowGap={gapY}\n      gridColumnGap={gapX}\n      gridTemplateColumns={templateColumns}\n    >\n      {children}\n    </Grid>\n  );\n};\n", "import { Fragment } from \"react\";\nimport { Box } from \"./Box\";\nimport { useBreakpoints } from \"./hooks\";\nimport { Image } from \"./Image\";\nimport { ResponsiveProp } from \"./system/types\";\n\nexport type AvatarProps = {\n  size?: ResponsiveProp<\"small\" | \"medium\" | \"large\" | string>;\n  username?: string;\n  src?: string;\n  placeholder?: boolean;\n};\n\nconst getSize = (size: \"small\" | \"medium\" | \"large\" | string | undefined) => {\n  switch (size) {\n    case \"small\":\n      return \"30px\";\n    case \"medium\":\n      return \"60px\";\n    case \"large\":\n      return \"90px\";\n    default:\n      return size;\n  }\n};\n\nexport const Avatar = ({\n  src,\n  username,\n  size = [\"medium\"],\n  placeholder = false,\n}: AvatarProps) => {\n  if (!Array.isArray(size)) {\n    size = [size];\n  }\n\n  const responsiveSize = useBreakpoints(size);\n  const width = getSize(responsiveSize);\n\n  return (\n    <Fragment>\n      {!placeholder ? (\n        <Image\n          borderRadius=\"full\"\n          src={src}\n          width={width}\n          height={width}\n          alt={username}\n          title={username}\n        />\n      ) : (\n        <Box\n          as=\"span\"\n          display=\"inline-block\"\n          borderRadius=\"full\"\n          width={width}\n          height={width}\n          borderStyle=\"solid\"\n          borderColor=\"neutral.200\"\n        />\n      )}\n    </Fragment>\n  );\n};\n", "import { useState, useEffect } from \"react\";\n// Hook\nexport const useMedia = <T,>(\n  queries: string[],\n  values: T[],\n  defaultValue: T\n) => {\n  // Array containing a media query list for each query\n  const mediaQueryLists = queries.map((q) =>\n    typeof window !== \"undefined\" && window?.matchMedia\n      ? window.matchMedia(q)\n      : {\n          matches: false,\n          addListener: () => {},\n          removeListener: () => {},\n        }\n  );\n\n  // Function that gets value based on matching media query\n  const getValue = () => {\n    // Get index of first media query that matches\n    const index = mediaQueryLists.findIndex((mql) => mql.matches);\n    // Return related value or defaultValue if none\n    return values?.[index] || defaultValue;\n  };\n\n  // State and setter for matched value\n  const [value, setValue] = useState<T>(getValue);\n\n  useEffect(\n    () => {\n      // Event listener callback\n      // Note: By defining getValue outside of useEffect we ensure that it has ...\n      // ... current values of hook args (as this hook callback is created once on mount).\n      const handler = () => {\n        setValue(getValue);\n      };\n\n      // Set a listener for each media query with above handler as callback.\n      mediaQueryLists.forEach((mql) => mql.addListener(handler));\n\n      // Remove listeners on cleanup\n      return () =>\n        mediaQueryLists.forEach((mql) => mql.removeListener(handler));\n    },\n    [] // Empty array ensures effect is only run on mount and unmount\n  );\n\n  return value;\n};\n", "import { useTheme as useThemeEmotion } from \"@emotion/react\";\nimport { PartialDeep } from \"type-fest\";\nimport { Theme } from \"../themes\";\n\nexport const useTheme = (): [Theme, (theme: PartialDeep<Theme>) => void] => {\n  const theme = useThemeEmotion();\n\n  function setTheme() {}\n\n  return [theme, setTheme];\n};\n", "import { ResponsiveProp } from \"../system/types\";\nimport { useMedia } from \"./useMedia\";\nimport { useTheme } from \"./useTheme\";\n\nconst makeQuery = (breakpoint: string) => {\n  return `(min-width: ${breakpoint})`;\n};\n\nexport const useBreakpoints = <T,>(values: ResponsiveProp<T>) => {\n  const [theme] = useTheme();\n  const queries = theme.breakpoints.map((b) => makeQuery(b.toString()));\n  if (!values) {\n    values = [];\n  } else if (!Array.isArray(values)) {\n    values = [values];\n  }\n  // mutations are bad. Therefore, we make a copy.\n  const copyValues = [...values];\n  const defaultValue = copyValues.shift();\n  const value = useMedia<T | undefined>(queries, copyValues, defaultValue);\n\n  return value;\n};\n", "import { RefObject, useEffect } from \"react\";\n\nexport const useClickOutsideListener = <T extends HTMLElement>(\n  ref: RefObject<T>,\n  handler: any\n) => {\n  useEffect(\n    () => {\n      const listener = (event: any) => {\n        // Do nothing if clicking ref's element or descendent elements\n        if (!ref?.current || ref?.current?.contains(event.target)) {\n          return;\n        }\n        handler(event);\n      };\n\n      document.addEventListener(\"mousedown\", listener);\n      document.addEventListener(\"touchstart\", listener);\n\n      return () => {\n        document.removeEventListener(\"mousedown\", listener);\n        document.removeEventListener(\"touchstart\", listener);\n      };\n    },\n\n    // Add ref and handler to effect dependencies\n    // It's worth noting that because passed in handler is a new ...\n    // ... function on every render that will cause this effect ...\n    // ... callback/cleanup to run every render. It's not a big deal ...\n    // ... but to optimize you can wrap handler in useCallback before ...\n    // ... passing it into this hook.\n\n    [ref, handler]\n  );\n};\n", "import { ReactNode, useState } from \"react\";\nimport { ButtonPrimary, ButtonPrimaryProps } from \"../ButtonPrimary\";\nimport { ButtonSecondary } from \"../ButtonSecondary\";\nimport { CardContent } from \"../CardContent\";\nimport { CardFooter } from \"../CardFooter\";\nimport { CardHeader } from \"../CardHeader\";\nimport { Modal } from \"../Modal\";\n\nexport type useConfirmProps = {\n  title: string;\n  description?: ReactNode;\n  onConfirm: () => void;\n  onCancel?: () => void;\n  labels?: {\n    confirm: string;\n    cancel: string;\n  };\n  severity?: \"danger\" | \"warning\" | \"normal\";\n};\n\nexport const useConfirm = ({\n  title: defaultTitle,\n  description: defaultDescription,\n  onConfirm,\n  onCancel,\n  labels = {\n    confirm: \"Confirm\",\n    cancel: \"Cancel\",\n  },\n  severity = \"normal\",\n}: useConfirmProps): [\n  () => void,\n  ReactNode,\n  (title: string) => void,\n  (description: string) => void\n] => {\n  const [open, setOpen] = useState(false);\n  const [title, setTitle] = useState(defaultTitle);\n  const [description, setDescription] = useState(defaultDescription);\n\n  const handleClose = () => {\n    setOpen(false);\n    if (onCancel) {\n      onCancel();\n    }\n  };\n\n  const handleConfirm = () => {\n    setOpen(false);\n    onConfirm();\n  };\n\n  const requestConfirm = () => {\n    setOpen(true);\n  };\n\n  let tone: ButtonPrimaryProps[\"tone\"] = \"neutral\";\n  switch (severity) {\n    case \"danger\": {\n      tone = \"error\";\n      break;\n    }\n    case \"normal\": {\n      tone = \"neutral\";\n      break;\n    }\n    case \"warning\": {\n      tone = \"warning\";\n      break;\n    }\n  }\n\n  const modal = (\n    <Modal open={open} onClose={handleClose}>\n      <CardHeader>{title}</CardHeader>\n      {description && <CardContent>{description}</CardContent>}\n      <CardFooter>\n        <ButtonPrimary tone={tone} onClick={handleConfirm}>\n          {labels.confirm}\n        </ButtonPrimary>\n        <ButtonSecondary tone=\"neutral\" onClick={handleClose}>\n          {labels.cancel}\n        </ButtonSecondary>\n      </CardFooter>\n    </Modal>\n  );\n\n  return [requestConfirm, modal, setTitle, setDescription];\n};\n", "import { css, Theme } from \"@emotion/react\";\nimport { ButtonHTMLAttributes, forwardRef, ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { useBreakpoints } from \"./hooks/useBreakpoints\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport {\n  color,\n  ColorProps,\n  compose,\n  shadow,\n  ShadowProps,\n  typography,\n  TypographyProps,\n  styled\n} from \"./system\";\nimport { ResponsiveProp } from \"./system/types\";\n\nexport type ButtonProps = {\n  children: ReactNode;\n  iconLeft?: ReactNode;\n  iconRight?: ReactNode;\n  disabled?: boolean;\n  type?: \"button\" | \"submit\" | \"reset\";\n  fullWidth?: boolean;\n  loading?: boolean;\n  size?: ResponsiveProp<\"xsmall\" | \"small\" | \"medium\" | \"large\">;\n} & ColorProps &\n  TypographyProps &\n  ShadowProps &\n  ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst StyledButton = styled.button<ColorProps & TypographyProps & ShadowProps>(\n  compose(color, typography, shadow)\n);\n\nconst sizeStyle = (theme: Theme) => (size: ButtonProps[\"size\"]) => {\n  if (size === \"small\") {\n    return css`\n      font-size: ${theme.fontSizes.small};\n      padding-left: 10px;\n      padding-right: 10px;\n      padding-top: 8px;\n      padding-bottom: 8px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.small};\n      }\n\n      span.icon-left {\n        margin-right: 8px;\n      }\n\n      span.icon-right {\n        margin-left: 8px;\n      }\n    `;\n  } else if (size === \"medium\") {\n    return css`\n      font-size: ${theme.fontSizes.standard};\n      padding-left: 16px;\n      padding-right: 16px;\n      padding-top: 12px;\n      padding-bottom: 12px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.large};\n      }\n\n      span.icon-left {\n        margin-right: 12px;\n      }\n\n      span.icon-right {\n        margin-left: 12px;\n      }\n    `;\n  } else if (size === \"large\") {\n    return css`\n      font-size: ${theme.fontSizes.large};\n      padding-left: 30px;\n      padding-right: 30px;\n      padding-top: 15px;\n      padding-bottom: 15px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.xlarge};\n      }\n\n      span.icon-left {\n        margin-right: 15px;\n      }\n\n      span.icon-right {\n        margin-left: 15px;\n      }\n    `;\n  } else if (size === \"xsmall\") {\n    return css`\n      font-size: ${theme.fontSizes.xsmall};\n      padding-left: 8px;\n      padding-right: 8px;\n      padding-top: 6px;\n      padding-bottom: 6px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.xsmall};\n      }\n\n      span.icon-left {\n        margin-right: 6px;\n      }\n\n      span.icon-right {\n        margin-left: 6px;\n      }\n    `;\n  }\n\n  return css``;\n};\n\nconst fullWidthStyle = {\n  width: \"100%\",\n};\n\nconst baseStyle = (theme: Theme) => css`\n  border: none;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  cursor: ${theme.cursor.pointer};\n  border-radius: ${theme.radii.standard};\n  font-weight: ${theme.fontWeights.semibold};\n  transition: all 0.1s ease-out;\n  &:focus {\n    outline: none;\n    box-shadow: ${theme.shadows.outline};\n  }\n\n  span.icon-left,\n  span.icon-right {\n    display: inline-flex;\n    text-align: center;\n    align-items: center;\n    justify-content: center;\n  }\n`;\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\n      children,\n      iconLeft,\n      iconRight,\n      textColor,\n      fullWidth = false,\n      loading = false,\n      size = [\"small\"],\n      ...props\n    },\n    ref\n  ) => {\n    if (!Array.isArray(size)) {\n      size = [size];\n    }\n\n    const responsiveSize = useBreakpoints(size);\n\n    return (\n      <StyledButton\n        ref={ref}\n        css={(theme) => [\n          css`\n            position: relative;\n            &:disabled {\n              cursor: not-allowed;\n              opacity: 0.4;\n            }\n            &:hover:enabled {\n              opacity: 0.8;\n            }\n            &:active:enabled {\n              filter: brightness(80%);\n            }\n          `,\n          baseStyle(theme),\n          sizeStyle(theme)(responsiveSize),\n          fullWidth && fullWidthStyle,\n        ]}\n        textColor={textColor}\n        {...props}\n      >\n        {loading && (\n          <Box\n            position=\"absolute\"\n            display=\"flex\"\n            top=\"0px\"\n            left=\"0px\"\n            right=\"0px\"\n            bottom=\"0px\"\n            justifyContent=\"center\"\n            alignItems=\"center\"\n          >\n            <LoadingDots\n              textColor={textColor}\n              size={responsiveSize === \"large\" ? \"large\" : \"medium\"}\n            />\n          </Box>\n        )}\n        <Box\n          css={(theme) => [\n            baseStyle(theme),\n            loading &&\n              css`\n                visibility: hidden;\n              `,\n          ]}\n        >\n          {iconLeft && <span className=\"icon-left\">{iconLeft}</span>}\n          {children}\n          {iconRight && <span className=\"icon-right\">{iconRight}</span>}\n        </Box>\n      </StyledButton>\n    );\n  }\n);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\nexport type LoadingDotsProps = {\n  children?: ReactNode;\n  size?: \"small\" | \"medium\" | \"large\";\n  textColor?: BoxProps[\"textColor\"];\n};\n\nexport const LoadingDots = ({\n  children,\n  size = \"medium\",\n  textColor,\n}: LoadingDotsProps) => {\n  let width = \"0px\";\n  switch (size) {\n    case \"small\": {\n      width = \"2px\";\n      break;\n    }\n    case \"medium\": {\n      width = \"4px\";\n      break;\n    }\n    case \"large\": {\n      width = \"6px\";\n      break;\n    }\n  }\n  return (\n    <Box\n      css={css`\n        @keyframes blink {\n          /**\n     * At the start of the animation the dot\n     * has an opacity of .2\n     */\n          0% {\n            opacity: 0.2;\n          }\n          /**\n     * At 20% the dot is fully visible and\n     * then fades out slowly\n     */\n          20% {\n            opacity: 1;\n          }\n          /**\n     * Until it reaches an opacity of .2 and\n     * the animation can start again\n     */\n          100% {\n            opacity: 0.2;\n          }\n        }\n\n        & > span {\n          /**\n     * Use the blink animation, which is defined above\n     */\n          animation-name: blink;\n          /**\n     * The animation should take 1.4 seconds\n     */\n          animation-duration: 1.4s;\n          /**\n     * It will repeat itself forever\n     */\n          animation-iteration-count: infinite;\n          /**\n     * This makes sure that the starting style (opacity: .2)\n     * of the animation is applied before the animation starts.\n     * Otherwise we would see a short flash or would have\n     * to set the default styling of the dots to the same\n     * as the animation. Same applies for the ending styles.\n     */\n          animation-fill-mode: both;\n        }\n\n        & > span:nth-of-type(2) {\n          /**\n     * Starts the animation of the third dot\n     * with a delay of .2s, otherwise all dots\n     * would animate at the same time\n     */\n          animation-delay: 0.2s;\n        }\n\n        & > span:nth-of-type(3) {\n          /**\n     * Starts the animation of the third dot\n     * with a delay of .4s, otherwise all dots\n     * would animate at the same time\n     */\n          animation-delay: 0.4s;\n        }\n      `}\n      display=\"inline-flex\"\n      alignItems=\"center\"\n    >\n      {children && (\n        <Box\n          m=\"none\"\n          p=\"none\"\n          textColor={textColor}\n          as=\"p\"\n          marginRight=\"xsmall\"\n        >\n          {children}\n        </Box>\n      )}\n      <Box\n        backgroundColor={textColor || \"currentColor\"}\n        borderRadius=\"full\"\n        width={width}\n        marginRight=\"xxsmall\"\n        height={width}\n        as=\"span\"\n      ></Box>\n      <Box\n        backgroundColor={textColor || \"currentColor\"}\n        borderRadius=\"full\"\n        marginRight=\"xxsmall\"\n        width={width}\n        height={width}\n        as=\"span\"\n      ></Box>\n      <Box\n        backgroundColor={textColor || \"currentColor\"}\n        borderRadius=\"full\"\n        width={width}\n        height={width}\n        as=\"span\"\n      ></Box>\n    </Box>\n  );\n};\n", "import { ButtonHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonPrimaryProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLButtonElement>;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n  Pick<\n    ButtonProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonPrimary: React.FunctionComponent<ButtonPrimaryProps> = styled(\n  Button\n)<ButtonPrimaryProps>(\n  {},\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsPrimary\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        backgroundColor: \"primary.800\",\n        color: \"primary.50\",\n      },\n      accent: {\n        backgroundColor: \"accent.800\",\n        color: \"accent.50\",\n      },\n      neutral: {\n        backgroundColor: \"neutral.800\",\n        color: \"neutral.50\",\n      },\n      success: {\n        backgroundColor: \"success.800\",\n        color: \"success.50\",\n      },\n      warning: {\n        backgroundColor: \"warning.800\",\n        color: \"warning.50\",\n      },\n      error: {\n        backgroundColor: \"error.800\",\n        color: \"error.50\",\n      },\n      info: {\n        backgroundColor: \"info.800\",\n        color: \"info.50\",\n      },\n    },\n  })\n);\n\nexport const ButtonPrimary = StyledButtonPrimary;\nButtonPrimary.defaultProps = {\n  tone: \"primary\",\n};\n", "import { ButtonHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonSecondaryProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLButtonElement>;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n  Pick<\n    ButtonProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonSecondary: React.FunctionComponent<ButtonSecondaryProps> = styled(\n  Button\n)<ButtonSecondaryProps>(\n  () => ({}),\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsSecondary\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        color: \"primary.800\",\n        backgroundColor: \"primary.50\",\n      },\n      accent: {\n        color: \"accent.800\",\n        backgroundColor: \"accent.50\",\n      },\n      neutral: {\n        color: \"neutral.800\",\n        backgroundColor: \"neutral.50\",\n      },\n      success: {\n        color: \"success.800\",\n        backgroundColor: \"success.50\",\n      },\n      warning: {\n        color: \"warning.800\",\n        backgroundColor: \"warning.50\",\n      },\n      error: {\n        color: \"error.800\",\n        backgroundColor: \"error.50\",\n      },\n      info: {\n        color: \"info.800\",\n        backgroundColor: \"info.50\",\n      },\n    },\n  })\n);\n\nexport const ButtonSecondary = StyledButtonSecondary;\nButtonSecondary.defaultProps = {\n  tone: \"primary\",\n};\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type CardContentProps = {\n  children?: ReactNode;\n};\n\nexport const CardContent = ({ children }: CardContentProps) => (\n  <Box p=\"standard\">{children}</Box>\n);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type CardFooterProps = {\n  noSpacing?: boolean;\n  children?: ReactNode;\n  align?: \"left\" | \"center\" | \"right\";\n};\n\nexport const CardFooter = ({\n  children,\n  noSpacing,\n  align = \"right\",\n}: CardFooterProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      backgroundColor=\"neutral.50\"\n      p=\"standard\"\n      css={(theme) => [\n        css`\n          justify-content: ${align === \"right\" && `flex-end`};\n          justify-content: ${align === \"left\" && `flex-start`};\n          justify-content: ${align === \"center\" && `center`};\n        `,\n        !noSpacing &&\n          css`\n            & > :not(:first-of-type) {\n              margin-left: ${theme.space[\"standard\"]};\n            }\n          `,\n      ]}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { Properties } from \"csstype\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { useBreakpoints } from \"./hooks/useBreakpoints\";\nimport { ColorProps, SpaceProps, TypographyProps } from \"./system\";\nimport { ResponsiveProp, SystemElements } from \"./system/types\";\n\nexport type TextProps = {\n  id?: string;\n  htmlFor?: string;\n  as?: SystemElements;\n  truncate?: Properties[\"width\"];\n  lineClamp?: ResponsiveProp<number>;\n  children?: ReactNode;\n  href?: string;\n  className?: string;\n  role?: string;\n  title?: string;\n} & TypographyProps &\n  SpaceProps &\n  Pick<ColorProps, \"textColor\">;\n\nexport const Text = ({\n  truncate,\n  lineClamp,\n  as = \"p\",\n  ...props\n}: TextProps) => {\n  const responsiveLineClamp = useBreakpoints(lineClamp);\n  return (\n    <Box\n      p=\"none\"\n      m=\"none\"\n      display={as == \"span\" ? \"inline\" : undefined}\n      as={as}\n      css={[\n        lineClamp &&\n          css`\n            display: -webkit-box;\n            -webkit-box-orient: vertical;\n            -webkit-line-clamp: ${responsiveLineClamp};\n            overflow: hidden;\n          `,\n        truncate &&\n          css`\n            display: inline-block;\n            white-space: nowrap;\n            width: ${truncate};\n            overflow: hidden;\n            text-overflow: ellipsis;\n          `,\n      ]}\n      {...props}\n    />\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Text, TextProps } from \"./Text\";\n\nexport type HeadingProps = {\n  children?: ReactNode;\n  as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n} & TextProps;\n\nexport const Heading = ({ as = \"h1\", ...props }: HeadingProps) => {\n  return <Text as={as} {...props} />;\n};\n", "import { css } from \"@emotion/react\";\nimport { forwardRef, ReactNode } from \"react\";\nimport { Heading, HeadingProps } from \"./Heading\";\nimport { useLinkComponent } from \"./hooks/useLinkComponent\";\nimport { Icon } from \"./Icon\";\nimport { ExternalWindow } from \"./icons/shade\";\nimport { LinkComponentProps } from \"./LinkComponentProvider\";\nimport { TextProps } from \"./Text\";\n\nexport type HeadingLinkProps = {\n  children?: ReactNode;\n  as?: HeadingProps[\"as\"];\n} & LinkComponentProps &\n  TextProps;\n\nexport const HeadingLink = forwardRef<HTMLAnchorElement, HeadingLinkProps>(\n  ({ children, href, color, as, ...props }, ref) => {\n    const LinkComponent = useLinkComponent(ref);\n    const external = href[0] !== \"/\" && href[0] !== \"#\";\n    return (\n      <Heading as={as} {...props}>\n        <LinkComponent\n          css={(theme) => css`\n            display: inline;\n            color: inherit;\n            text-decoration: none;\n            svg {\n              margin-left: ${theme.space.xxsmall};\n              width: auto;\n              height: 70%;\n            }\n\n            &:hover {\n              color: ${theme.colors.primary[800]};\n            }\n          `}\n          href={href}\n          ref={ref}\n          {...props}\n        >\n          {children}\n          {external && (\n            <Icon size=\"auto\" color=\"currentColor\">\n              <ExternalWindow />\n            </Icon>\n          )}\n        </LinkComponent>\n      </Heading>\n    );\n  }\n);\n", "// see: https://github.com/seek-oss/braid-design-system/blob/master/lib/components/BraidProvider/BraidProvider.tsx\nimport { Ref, useContext } from \"react\";\nimport { LinkComponentContext } from \"../LinkComponentProvider\";\n\nexport type useLinkComponentProps = {};\n\nexport const useLinkComponent = (ref: Ref<HTMLAnchorElement>) => {\n  const linkComponent = useContext(LinkComponentContext);\n\n  if (ref && !(\"__forwardRef__\" in linkComponent)) {\n    throw new Error(\n      `\n      You're passing a ref to a Patches link, but your app is providing a custom link component to 'PatchesProvider' that doesn't appear to support refs.\n      To fix this, you need to use Patches's 'makeLinkComponent' helper function when creating your custom link component. This ensures that refs are forwarded correctly, and allows us to silence this error message.\n    `\n    );\n  }\n\n  if (\"__forwardRef__\" in linkComponent) {\n    return linkComponent.__forwardRef__;\n  }\n\n  return linkComponent;\n};\n", "import {\n  AnchorHTMLAttributes,\n  ComponentType,\n  createContext,\n  forwardRef,\n  ForwardRefRenderFunction,\n  ReactNode,\n} from \"react\";\n\nexport interface LinkComponentProps\n  extends AnchorHTMLAttributes<HTMLAnchorElement> {\n  href: string;\n}\n\nexport const makeLinkComponent = (\n  render: ForwardRefRenderFunction<HTMLAnchorElement, LinkComponentProps>\n) => ({ __forwardRef__: forwardRef(render) } as const);\n\nexport type LinkComponent =\n  | ReturnType<typeof makeLinkComponent>\n  | ComponentType<LinkComponentProps>;\n\nconst DefaultLinkComponent = makeLinkComponent((props, ref) => (\n  <a ref={ref} {...props} />\n));\n\nexport type LinkComponentProviderProps = {\n  children?: ReactNode;\n  linkComponent: LinkComponent;\n};\n\nexport const LinkComponentContext = createContext<LinkComponent>(\n  DefaultLinkComponent\n);\n\nexport const LinkComponentProvider = ({\n  children,\n  linkComponent,\n}: LinkComponentProviderProps) => {\n  return (\n    <LinkComponentContext.Provider value={linkComponent}>\n      {children}\n    </LinkComponentContext.Provider>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { Heading, HeadingProps } from \"./Heading\";\nimport { HeadingLink } from \"./HeadingLink\";\n\nexport type CardHeaderProps = {\n  action?: ReactNode;\n  avatar?: ReactNode;\n  subtitle?: string;\n} & HeadingProps;\n\nexport const CardHeader = ({\n  action,\n  avatar,\n  children,\n  subtitle,\n  ...headingProps\n}: CardHeaderProps) => {\n  let HeadingComp: any = Heading;\n  if (headingProps.href) {\n    HeadingComp = HeadingLink;\n  }\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      paddingX=\"standard\"\n      paddingY=\"small\"\n    >\n      {avatar && (\n        <Box display=\"flex\" alignItems=\"center\">\n          {avatar}\n        </Box>\n      )}\n      <Box flex=\"1\" ml={avatar ? \"standard\" : \"none\"}>\n        <HeadingComp margin=\"none\" fontSize=\"large\" {...headingProps}>\n          {children}\n        </HeadingComp>\n        {subtitle && (\n          <Box fontSize=\"small\" as=\"span\">\n            {subtitle}\n          </Box>\n        )}\n      </Box>\n      {action && (\n        <Box display=\"flex\" alignItems=\"center\">\n          {action}\n        </Box>\n      )}\n    </Box>\n  );\n};\n", "import { ClassNames } from \"@emotion/react\";\nimport { darken, transparentize } from \"polished\";\nimport { KeyboardEvent, MouseEvent, ReactNode, useEffect } from \"react\";\nimport ReactModal, { Props } from \"react-modal\";\nimport { Card } from \"./Card\";\nimport { useTheme } from \"./hooks/useTheme\";\n\nexport type ModalProps = {\n  /**\n   * Determines if the modal is visible or not.\n   */\n  open?: boolean;\n  onClose?: (event: MouseEvent | KeyboardEvent) => void;\n  /**\n   * React Modal's accessibility string.\n   */\n  contentLabel?: string;\n  children?: ReactNode;\n  /**\n   * The element that should be used as root for the\n   * React portal used to display the modal. See\n   * http://reactcommunity.org/react-modal/accessibility/#app-element\n   */\n  appElement?: string | HTMLElement;\n} & Partial<Omit<Props, \"appElement\">>;\n\nexport const TRANSITION_DURATION = 200;\nconst TOP_MARGIN = \"10vh\";\nconst TRANSFORM_Y_FLOATING = \"10vh\";\nconst FLOATING_TRANSITION = `${TRANSITION_DURATION}ms ease-in-out`;\nconst FIXED_TRANSITION = `${TRANSITION_DURATION}ms cubic-bezier(0, 0.37, 0.64, 1)`;\n\nconst makeQuery = (breakpoint: string) => {\n  return `@media screen and (min-width: ${breakpoint})`;\n};\n\n/**\n * Wrapper component for ReactModal. Uses the Card component\n * to wrap content passed as the children prop. Don't forget to set\n * the aria prop when using this.\n * http://reactcommunity.org/react-modal/accessibility/#aria\n */\nexport const Modal = ({\n  open = true,\n  onClose = () => {},\n  contentLabel = \"Modal\",\n  appElement = \"#patches-root\",\n  children,\n  ...props\n}: ModalProps) => {\n  const [theme] = useTheme();\n\n  useEffect(() => {\n    // in testing there is not appElement. Therefore, this would throw an error.\n    if (process.env.NODE_ENV !== \"test\") {\n      ReactModal.setAppElement(appElement);\n    }\n  }, [appElement]);\n\n  return (\n    <ClassNames>\n      {({ css }) => {\n        // React Modal styles\n        // https://reactcommunity.org/react-modal/styles/classes/\n\n        const className = {\n          base: css`\n            label: modal;\n            outline: none;\n            bottom: 0;\n            max-height: 80vh;\n            -webkit-overflow-scrolling: touch;\n            overflow-y: auto;\n            position: fixed;\n            transform: translateY(100%);\n            transition: transform ${FIXED_TRANSITION};\n            width: 100%;\n            width: 100vw;\n\n            ${makeQuery(theme.breakpoints[0].toString())} {\n              transition: transform ${FLOATING_TRANSITION},\n                opacity ${FLOATING_TRANSITION};\n              margin: ${TOP_MARGIN} auto auto;\n              max-height: 90vh;\n              max-width: 90%;\n              min-width: 450px;\n              opacity: 0;\n              position: relative;\n              transform: translateY(${TRANSFORM_Y_FLOATING});\n            }\n            ${makeQuery(theme.breakpoints[1].toString())} {\n              max-width: 720px;\n            }\n          `,\n          afterOpen: css`\n            label: modal--after-open;\n            transform: translateY(0);\n\n            ${makeQuery(theme.breakpoints[0].toString())} {\n              opacity: 1;\n              transform: translateY(0);\n            }\n          `,\n          beforeClose: css`\n            label: modal--before-close;\n            transform: translateY(100%);\n            ${makeQuery(theme.breakpoints[0].toString())} {\n              opacity: 0;\n              transform: translateY(${TRANSFORM_Y_FLOATING});\n            }\n          `,\n        };\n\n        const overlayClassName = {\n          base: css`\n            label: modal__overlay;\n            background: ${transparentize(\n              0.8,\n              darken(0.8, theme.colors.background)\n            )};\n            bottom: 0;\n            left: 0;\n            opacity: 0;\n            position: fixed;\n            right: 0;\n            top: 0;\n            transition: opacity 200ms ease-in-out;\n            z-index: ${theme.zIndices[50]};\n            ${makeQuery(theme.breakpoints[0].toString())} {\n              -webkit-overflow-scrolling: touch;\n              overflow-y: auto;\n            }\n          `,\n          afterOpen: css`\n            label: modal__overlay--after-open;\n            opacity: 1;\n          `,\n          beforeClose: css`\n            label: modal__overlay--before-close;\n            opacity: 0;\n          `,\n        };\n\n        const reactModalProps = {\n          isOpen: open,\n          className,\n          overlayClassName,\n          htmlOpenClassName: \"ReactModal__Html--open\",\n          shouldCloseOnOverlayClick: true,\n          contentLabel,\n          onRequestClose: onClose,\n          closeTimeoutMS: TRANSITION_DURATION,\n          ...props,\n        };\n        return (\n          <ReactModal {...reactModalProps}>\n            <Card boxShadow=\"xlarge\">{children}</Card>\n          </ReactModal>\n        );\n      }}\n    </ClassNames>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\nexport type CardProps = {\n  boxShadow?: BoxProps[\"boxShadow\"];\n  borderRadius?: BoxProps[\"borderRadius\"];\n  children?: ReactNode;\n};\n\nexport const Card = ({\n  boxShadow = \"standard\",\n  borderRadius = \"standard\",\n  children,\n}: CardProps) => {\n  return (\n    <Box\n      boxShadow={boxShadow}\n      borderRadius={borderRadius}\n      overflow=\"hidden\"\n      backgroundColor=\"card\"\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { useEffect, useRef } from 'react'\n\nexport const useFirstRender = () => {\n  const firstRender = useRef(true)\n\n  useEffect(() => {\n    firstRender.current = false\n  }, [])\n\n  return firstRender.current\n}\n", "import { useCallback, useLayoutEffect, useMemo } from \"react\";\n\nconst animationTimeout = 300;\n\nconst entranceTransition = \"transform 0.2s ease, opacity 0.2s ease\";\nconst exitTransition = \"opacity 0.1s ease\";\n\ninterface Transform {\n  property: \"opacity\" | \"transform\" | \"scale\";\n  from?: string;\n  to?: string;\n}\n\nconst animate = (\n  element: HTMLElement,\n  transforms: Transform[],\n  transition: string,\n  done?: () => void\n) => {\n  const fallbackTimeout = setTimeout(() => {\n    if (done) {\n      done();\n    }\n  }, animationTimeout);\n\n  transforms.forEach(({ property, from = \"\" }) => {\n    element.style.setProperty(property, from);\n  });\n  element.style.setProperty(\"transition\", \"\");\n\n  const transitionEndHandler = (ev: TransitionEvent) => {\n    if (ev.target !== element) {\n      return;\n    }\n\n    element.style.setProperty(\"transition\", \"\");\n\n    if (done) {\n      done();\n    }\n\n    element.removeEventListener(\"transitionend\", transitionEndHandler);\n\n    clearTimeout(fallbackTimeout);\n  };\n\n  element.addEventListener(\"transitionend\", transitionEndHandler);\n\n  window.requestAnimationFrame(() => {\n    window.requestAnimationFrame(() => {\n      element.style.setProperty(\"transition\", transition);\n\n      transforms.forEach(({ property, to = \"\" }) => {\n        element.style.setProperty(property, to);\n      });\n    });\n  });\n};\n\nexport const useFlipList = () => {\n  const refs = useMemo(() => new Map<string, HTMLElement | null>(), []);\n  const positions = useMemo(() => new Map<string, number>(), []);\n\n  useLayoutEffect(() => {\n    const animations: Array<{\n      element: HTMLElement;\n      transforms: Transform[];\n      transition: string;\n    }> = [];\n\n    Array.from(refs.entries()).forEach(([id, element]) => {\n      if (element) {\n        const prevTop = positions.get(id);\n        const { top, height } = element.getBoundingClientRect();\n\n        if (typeof prevTop === \"number\" && prevTop !== top) {\n          // Move animation\n          animations.push({\n            element,\n            transition: entranceTransition,\n            transforms: [\n              {\n                property: \"transform\",\n                from: `translateY(${prevTop - top}px)`,\n              },\n            ],\n          });\n        } else if (typeof prevTop !== \"number\") {\n          // Enter animation\n          animations.push({\n            element,\n            transition: entranceTransition,\n            transforms: [\n              {\n                property: \"transform\",\n                from: `translateY(${height}px)`,\n              },\n              {\n                property: \"opacity\",\n                from: \"0\",\n              },\n            ],\n          });\n        }\n\n        positions.set(id, element.getBoundingClientRect().top);\n      } else {\n        refs.delete(id);\n      }\n    });\n\n    animations.forEach(({ element, transforms, transition }) => {\n      animate(element, transforms, transition);\n    });\n  });\n\n  const remove = useCallback(\n    (id: string, cb: () => void) => {\n      const element = refs.get(id);\n\n      if (element) {\n        // Removal animation\n        animate(\n          element,\n          [\n            {\n              property: \"opacity\",\n              to: \"0\",\n            },\n          ],\n          exitTransition,\n          cb\n        );\n      }\n    },\n    [refs]\n  );\n\n  const itemRef = useCallback(\n    (id: string) => (ref: HTMLElement | null) => {\n      refs.set(id, ref);\n    },\n    [refs]\n  );\n\n  return {\n    itemRef,\n    remove,\n  };\n};\n", "/**\n * @see https://github.com/JakeGinnivan/merge-refs-hook\n */\nimport React from 'react'\n\nfunction setRefs<T>(ref: React.Ref<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value)\n  } else if (ref) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ;(ref as any).current = value\n  }\n}\n\nexport function useMergeRefs<ForwardRef, LocalRef extends ForwardRef>(\n  forwardedRef: React.Ref<ForwardRef>,\n  localRef: React.Ref<LocalRef>,\n): (instance: LocalRef | null) => void {\n  return React.useCallback(\n    (value) => {\n      setRefs(forwardedRef, value)\n      setRefs(localRef, value)\n    },\n    [forwardedRef, localRef],\n  )\n}\n", "import { useMedia } from \"./useMedia\";\n\nexport type usePrefersDarkModeProps = {};\n\nexport const usePrefersDarkMode = ({}: usePrefersDarkModeProps) => {\n  return useMedia([\"(prefers-color-scheme: dark\"], [true], false);\n};\n", "import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport type useTimeoutProps = {\n  onTimeout: () => void;\n  duration: number;\n};\nexport const useTimeout = ({ onTimeout, duration }: useTimeoutProps) => {\n  const [activated, setActivated] = useState(true);\n  const timeoutRef = useRef<number | undefined>();\n\n  const stopTimeout = useCallback(() => {\n    window.clearTimeout(timeoutRef.current);\n    setActivated(false);\n  }, []);\n\n  useEffect(() => {\n    if (activated) {\n      timeoutRef.current = window.setTimeout(() => {\n        onTimeout();\n      }, duration);\n\n      return () => {\n        stopTimeout();\n      };\n    }\n\n    return () => {};\n  }, [onTimeout, activated, duration, stopTimeout]);\n\n  const startTimeout = useCallback(() => {\n    setActivated(true);\n  }, []);\n\n  return {\n    stopTimeout,\n    startTimeout,\n  };\n};\n", "import { HTMLAttributes } from \"react\";\nimport { border, BorderProps, space, SpaceProps, styled } from \"./system\";\n\n\nexport type ImageProps = BorderProps &\n  SpaceProps &\n  HTMLAttributes<HTMLImageElement>;\n\n// @ts-ignore\nexport const Image = styled.img<ImageProps>(border, space);\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type BadgeProps = {\n  children?: ReactNode;\n  tone?: SystemColorNames;\n  icon?: ReactNode;\n};\n\nconst StyledBadge = styled(Box)(\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n      borderColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"badges\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        color: \"primary.800\",\n        backgroundColor: \"primary.100\",\n        borderColor: \"primary.800\",\n      },\n      accent: {\n        color: \"accent.800\",\n        backgroundColor: \"accent.100\",\n        borderColor: \"accent.800\",\n      },\n      neutral: {\n        color: \"neutral.800\",\n        backgroundColor: \"neutral.100\",\n        borderColor: \"neutral.800\",\n      },\n      success: {\n        color: \"success.800\",\n        backgroundColor: \"success.100\",\n        borderColor: \"success.800\",\n      },\n      warning: {\n        color: \"warning.800\",\n        backgroundColor: \"warning.100\",\n        borderColor: \"warning.800\",\n      },\n      error: {\n        color: \"error.800\",\n        backgroundColor: \"error.100\",\n        borderColor: \"error.800\",\n      },\n      info: {\n        color: \"info.800\",\n        backgroundColor: \"info.100\",\n        borderColor: \"info.800\",\n      },\n    },\n  })\n);\n\nexport const Badge = ({ icon, tone = \"primary\", children }: BadgeProps) => {\n  return (\n    <StyledBadge\n      tone={tone}\n      display=\"inline-flex\"\n      alignItems=\"center\"\n      justifyContent=\"center\"\n      fontSize=\"xsmall\"\n      fontWeight=\"semibold\"\n      px=\"xsmall\"\n      py=\"xxsmall\"\n      borderRadius=\"full\"\n      borderStyle=\"solid\"\n      borderWidth=\"standard\"\n    >\n      {icon && (\n        <Box\n          as=\"span\"\n          display=\"inline-flex\"\n          alignItems=\"center\"\n          justifyContent=\"center\"\n          width=\"12px\"\n          mr=\"xxsmall\"\n        >\n          {icon}\n        </Box>\n      )}\n      {children}\n    </StyledBadge>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { TextProps } from \"./Text\";\n\nexport type BlockquoteProps = {\n  children?: ReactNode;\n} & Omit<TextProps, \"as\">;\n\nconst Icon = () => {\n  return (\n    <Box\n      position=\"absolute\"\n      css={css`\n        margin-left: -0.5rem;\n        margin-top: -0.5rem;\n      `}\n    >\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        viewBox=\"0 0 30 30\"\n        css={(theme) => css`\n          fill: ${theme.colors.neutral[100]};\n          width: 2rem;\n          height: 2rem;\n        `}\n      >\n        <path d=\"M15.264 19.552c0 3.648 2.4 5.568 5.088 5.568 2.976 0 5.76-2.496 5.76-5.664 0-2.592-1.824-4.32-4.032-4.32h-.768c1.056-3.072 4.512-6.336 8.064-8.064L26.4 4c-5.952 2.976-11.136 9.504-11.136 15.552zM0 19.552C0 23.2 2.304 25.12 5.088 25.12c2.976 0 5.76-2.496 5.76-5.664 0-2.592-1.92-4.32-4.128-4.32h-.768c1.056-3.072 4.608-6.336 8.064-8.064L11.136 4C5.184 6.976 0 13.504 0 19.552z\"></path>\n      </svg>\n    </Box>\n  );\n};\n\nexport default Icon;\n\nexport const Blockquote = ({ children }: BlockquoteProps) => {\n  return (\n    <Box as=\"blockquote\" fontStyle=\"italic\" position=\"relative\">\n      <Icon />\n      <Box position=\"relative\">{children}</Box>\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css, Theme } from \"@emotion/react\";\n\nexport type ButtonGroupProps = {\n  attached?: boolean;\n  direction?: \"horizontal\" | \"vertical\";\n  space?: keyof Theme[\"space\"];\n  children: ReactNode;\n};\n\nexport const ButtonGroup = ({\n  attached = false,\n  direction = \"horizontal\",\n  space,\n  children,\n}: ButtonGroupProps) => {\n  return (\n    <div\n      role=\"group\"\n      css={(theme) => [\n        css`\n          display: inline-flex;\n        `,\n        direction === \"vertical\" &&\n          css`\n            flex-direction: column;\n          `,\n        attached &&\n          direction === \"vertical\" &&\n          css`\n            > *:first-of-type:not(:last-of-type) {\n              border-bottom-left-radius: 0;\n              border-bottom-right-radius: 0;\n            }\n            > *:not(:first-of-type):not(:last-of-type) {\n              border-radius: 0;\n            }\n            > *:not(:last-of-type) {\n              border-bottom: none;\n            }\n\n            > *:not(:first-of-type):last-of-type {\n              border-top-left-radius: 0;\n              border-top-right-radius: 0;\n            }\n          `,\n        attached &&\n          direction === \"horizontal\" &&\n          css`\n            > *:first-of-type:not(:last-of-type) {\n              border-bottom-right-radius: 0;\n              border-top-right-radius: 0;\n            }\n            > *:not(:first-of-type):not(:last-of-type) {\n              border-radius: 0;\n            }\n            > *:not(:last-of-type) {\n              border-right: none;\n            }\n\n            > *:not(:first-of-type):last-of-type {\n              border-bottom-left-radius: 0;\n              border-top-left-radius: 0;\n            }\n          `,\n        !attached &&\n          direction === \"horizontal\" &&\n          css`\n            > *:not(style) ~ *:not(style) {\n              margin-left: ${space && theme.space[space]};\n            }\n          `,\n        !attached &&\n          direction === \"vertical\" &&\n          css`\n            > *:not(:last-of-type) {\n              margin-bottom: ${space && theme.space[space]};\n            }\n          `,\n      ]}\n    >\n      {children}\n    </div>\n  );\n};\n", "import { css, Theme } from \"@emotion/react\";\nimport { AnchorHTMLAttributes, forwardRef, ReactNode } from \"react\";\nimport { Box } from \"./Box\";\nimport { useBreakpoints } from \"./hooks/useBreakpoints\";\nimport { useLinkComponent } from \"./hooks/useLinkComponent\";\nimport { LoadingDots } from \"./LoadingDots\";\nimport {\n  color,\n  ColorProps,\n  shadow,\n  ShadowProps,\n  typography,\n  TypographyProps,\n} from \"./system\";\nimport { ResponsiveProp } from \"./system/types\";\n\nexport type ButtonLinkProps = {\n  children: ReactNode;\n  iconLeft?: ReactNode;\n  iconRight?: ReactNode;\n  disabled?: boolean;\n  type?: \"button\" | \"submit\" | \"reset\";\n  fullWidth?: boolean;\n  loading?: boolean;\n  size?: ResponsiveProp<\"xsmall\" | \"small\" | \"medium\" | \"large\">;\n} & ColorProps &\n  TypographyProps &\n  ShadowProps &\n  AnchorHTMLAttributes<HTMLAnchorElement>;\n\nconst sizeStyle = (theme: Theme) => (size: ButtonLinkProps[\"size\"]) => {\n  if (size === \"small\") {\n    return css`\n      font-size: ${theme.fontSizes.small};\n      padding-left: 10px;\n      padding-right: 10px;\n      padding-top: 8px;\n      padding-bottom: 8px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.small};\n      }\n\n      span.icon-left {\n        margin-right: 8px;\n      }\n\n      span.icon-right {\n        margin-left: 8px;\n      }\n    `;\n  } else if (size === \"medium\") {\n    return css`\n      font-size: ${theme.fontSizes.standard};\n      padding-left: 16px;\n      padding-right: 16px;\n      padding-top: 12px;\n      padding-bottom: 12px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.large};\n      }\n\n      span.icon-left {\n        margin-right: 12px;\n      }\n\n      span.icon-right {\n        margin-left: 12px;\n      }\n    `;\n  } else if (size === \"large\") {\n    return css`\n      font-size: ${theme.fontSizes.large};\n      padding-left: 30px;\n      padding-right: 30px;\n      padding-top: 15px;\n      padding-bottom: 15px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.xlarge};\n      }\n\n      span.icon-left {\n        margin-right: 15px;\n      }\n\n      span.icon-right {\n        margin-left: 15px;\n      }\n    `;\n  } else if (size === \"xsmall\") {\n    return css`\n      font-size: ${theme.fontSizes.xsmall};\n      padding-left: 8px;\n      padding-right: 8px;\n      padding-top: 6px;\n      padding-bottom: 6px;\n\n      span.icon-left,\n      span.icon-right {\n        width: ${theme.fontSizes.xsmall};\n      }\n\n      span.icon-left {\n        margin-right: 6px;\n      }\n\n      span.icon-right {\n        margin-left: 6px;\n      }\n    `;\n  }\n\n  return css``;\n};\n\nconst fullWidthStyle = {\n  width: \"100%\",\n};\n\nconst baseStyle = (theme: Theme) => css`\n  border: none;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  cursor: ${theme.cursor.pointer};\n  border-radius: ${theme.radii.standard};\n  font-weight: ${theme.fontWeights.semibold};\n  transition: all 0.1s ease-out;\n  &:focus {\n    outline: none;\n    box-shadow: ${theme.shadows.outline};\n  }\n\n  span.icon-left,\n  span.icon-right {\n    display: inline-flex;\n    text-align: center;\n    align-items: center;\n    justify-content: center;\n  }\n`;\n\nexport const ButtonLink = forwardRef<HTMLAnchorElement, ButtonLinkProps>(\n  (\n    {\n      children,\n      iconLeft,\n      iconRight,\n      href = \"#\",\n      textColor,\n      disabled,\n      fullWidth = false,\n      loading = false,\n      size = [\"small\"],\n      ...props\n    },\n    ref\n  ) => {\n    const LinkComponent = useLinkComponent(ref);\n\n    if (!Array.isArray(size)) {\n      size = [size];\n    }\n\n    const responsiveSize = useBreakpoints(size);\n\n    return (\n      <LinkComponent\n        ref={ref}\n        href={href}\n        css={(theme) => [\n          color,\n          typography,\n          shadow,\n          disabled &&\n            css`\n              cursor: not-allowed;\n              opacity: 0.4;\n            `,\n          css`\n            line-height: 1.15;\n            text-decoration: none;\n            position: relative;\n            &:hover:enabled {\n              opacity: 0.8;\n            }\n            &:active:enabled {\n              filter: brightness(80%);\n            }\n          `,\n          baseStyle(theme),\n          sizeStyle(theme)(responsiveSize),\n          fullWidth && fullWidthStyle,\n        ]}\n        {...props}\n      >\n        {loading && (\n          <Box\n            position=\"absolute\"\n            display=\"flex\"\n            top=\"0px\"\n            left=\"0px\"\n            right=\"0px\"\n            bottom=\"0px\"\n            justifyContent=\"center\"\n            alignItems=\"center\"\n          >\n            <LoadingDots\n              textColor={textColor}\n              size={responsiveSize === \"large\" ? \"large\" : \"medium\"}\n            />\n          </Box>\n        )}\n        <Box\n          css={(theme) => [\n            baseStyle(theme),\n            loading &&\n              css`\n                visibility: hidden;\n              `,\n          ]}\n        >\n          {iconLeft && <span className=\"icon-left\">{iconLeft}</span>}\n          {children}\n          {iconRight && <span className=\"icon-right\">{iconRight}</span>}\n        </Box>\n      </LinkComponent>\n    );\n  }\n);\n", "import { ButtonHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonOutlineProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLButtonElement>;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n  Pick<\n    ButtonProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonOutline: React.FunctionComponent<ButtonOutlineProps> = styled(\n  Button\n)<ButtonOutlineProps>(\n  ({ theme }) => {\n    return {\n      borderStyle: \"solid\",\n      borderColor: theme.colors.neutral[\"200\"],\n      backgroundColor: \"none\",\n    };\n  },\n  variant<\n    {\n      color: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsOutline\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        color: \"primary.800\",\n      },\n      accent: {\n        color: \"accent.800\",\n      },\n      neutral: {\n        color: \"neutral.800\",\n      },\n      success: {\n        color: \"success.800\",\n      },\n      warning: {\n        color: \"warning.800\",\n      },\n      error: {\n        color: \"error.800\",\n      },\n      info: {\n        color: \"info.800\",\n      },\n    },\n  })\n);\n\nexport const ButtonOutline = StyledButtonOutline;\nButtonOutline.defaultProps = {\n  tone: \"primary\",\n};\n", "import { AnchorHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { ButtonLink, ButtonLinkProps } from \"./ButtonLink\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonOutlineLinkProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLAnchorElement>;\n} & AnchorHTMLAttributes<HTMLAnchorElement> &\n  Pick<\n    ButtonLinkProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonOutlineLink: React.FunctionComponent<ButtonOutlineLinkProps> = styled(\n  ButtonLink\n)<ButtonOutlineLinkProps>(\n  ({ theme }) => {\n    return {\n      borderStyle: \"solid\",\n      borderColor: theme.colors.neutral[\"200\"],\n      backgroundColor: \"none\",\n    };\n  },\n  variant<\n    {\n      color: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsOutline\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        color: \"primary.800\",\n      },\n      accent: {\n        color: \"accent.800\",\n      },\n      neutral: {\n        color: \"neutral.800\",\n      },\n      success: {\n        color: \"success.800\",\n      },\n      warning: {\n        color: \"warning.800\",\n      },\n      error: {\n        color: \"error.800\",\n      },\n      info: {\n        color: \"info.800\",\n      },\n    },\n  })\n);\n\nexport const ButtonOutlineLink = StyledButtonOutlineLink;\nButtonOutlineLink.defaultProps = {\n  tone: \"primary\",\n};\n", "import { AnchorHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { ButtonLink, ButtonLinkProps } from \"./ButtonLink\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonPrimaryLinkProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLAnchorElement>;\n} & AnchorHTMLAttributes<HTMLAnchorElement> &\n  Pick<\n    ButtonLinkProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonPrimaryLink: React.FunctionComponent<ButtonPrimaryLinkProps> = styled(\n  ButtonLink\n)<ButtonPrimaryLinkProps>(\n  {},\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsPrimary\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        backgroundColor: \"primary.800\",\n        color: \"primary.50\",\n      },\n      accent: {\n        backgroundColor: \"accent.800\",\n        color: \"accent.50\",\n      },\n      neutral: {\n        backgroundColor: \"neutral.800\",\n        color: \"neutral.50\",\n      },\n      success: {\n        backgroundColor: \"success.800\",\n        color: \"success.50\",\n      },\n      warning: {\n        backgroundColor: \"warning.800\",\n        color: \"warning.50\",\n      },\n      error: {\n        backgroundColor: \"error.800\",\n        color: \"error.50\",\n      },\n      info: {\n        backgroundColor: \"info.800\",\n        color: \"info.50\",\n      },\n    },\n  })\n);\n\nexport const ButtonPrimaryLink = StyledButtonPrimaryLink;\nButtonPrimaryLink.defaultProps = {\n  tone: \"primary\",\n};\n", "import { AnchorHTMLAttributes, ReactNode, Ref } from \"react\";\nimport { ButtonLink, ButtonLinkProps } from \"./ButtonLink\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type ButtonSecondaryLinkProps = {\n  children: ReactNode;\n  tone?: SystemColorNames;\n  ref?: Ref<HTMLAnchorElement>;\n} & AnchorHTMLAttributes<HTMLAnchorElement> &\n  Pick<\n    ButtonLinkProps,\n    | \"iconLeft\"\n    | \"iconRight\"\n    | \"size\"\n    | \"disabled\"\n    | \"type\"\n    | \"fullWidth\"\n    | \"loading\"\n  >;\n\nconst StyledButtonSecondaryLink: React.FunctionComponent<ButtonSecondaryLinkProps> = styled(\n  ButtonLink\n)<ButtonSecondaryLinkProps>(\n  {},\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"buttonsSecondary\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        color: \"primary.800\",\n        backgroundColor: \"primary.50\",\n      },\n      accent: {\n        color: \"accent.800\",\n        backgroundColor: \"accent.50\",\n      },\n      neutral: {\n        color: \"neutral.800\",\n        backgroundColor: \"neutral.50\",\n      },\n      success: {\n        color: \"success.800\",\n        backgroundColor: \"success.50\",\n      },\n      warning: {\n        color: \"warning.800\",\n        backgroundColor: \"warning.50\",\n      },\n      error: {\n        color: \"error.800\",\n        backgroundColor: \"error.50\",\n      },\n      info: {\n        color: \"info.800\",\n        backgroundColor: \"info.50\",\n      },\n    },\n  })\n);\n\nexport const ButtonSecondaryLink = StyledButtonSecondaryLink;\nButtonSecondaryLink.defaultProps = {\n  tone: \"primary\",\n};\n", "import { css } from \"@emotion/react\";\nimport { Properties } from \"csstype\";\nimport { forwardRef, Ref } from \"react\";\n\nexport type CardMediaProps = {\n  height?: Properties[\"height\"];\n  image?: string;\n  title?: string;\n  ref?: Ref<HTMLDivElement>;\n};\n\nexport const CardMedia = forwardRef(\n  ({ height, image, title }: CardMediaProps, ref: Ref<HTMLDivElement>) => {\n    return (\n      <div\n        ref={ref}\n        title={title}\n        css={css`\n          display: block;\n          background-size: cover;\n          background-repeat: no-repeat;\n          background-position: center;\n          background-image: url(${image});\n          height: ${height};\n        `}\n      ></div>\n    );\n  }\n);\n", "import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\nexport type CenterProps = {\n  children?: ReactNode;\n} & BoxProps;\n\nexport const Center = ({ children, ...props }: CenterProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      flexDirection=\"column\"\n      justifyContent=\"center\"\n      alignItems=\"center\"\n      {...props}\n    >\n      {children}\n    </Box>\n  );\n};\n", "// follows https://www.w3.org/TR/wai-aria-practices/examples/checkbox/checkbox-1/checkbox-1.html\nimport { KeyboardEvent, ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\n\nexport type CheckboxProps = {\n  id?: string;\n  children?: ReactNode;\n  checked?: boolean;\n  disabled?: boolean;\n  required?: boolean;\n  onChange?: (checked: boolean) => void;\n  onBlur?: () => void;\n};\n\nexport const Checkbox = ({\n  id,\n  children,\n  checked = false,\n  disabled = false,\n  required = false,\n  onChange = () => {},\n  onBlur = () => {},\n}: CheckboxProps) => {\n  function handleClick() {\n    if (!disabled) {\n      onChange(!checked);\n    }\n  }\n\n  function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n    if (!disabled) {\n      if (e.key === \" \") {\n        onChange(!checked);\n        e.stopPropagation();\n        e.preventDefault();\n      }\n    }\n  }\n\n  return (\n    <Box\n      id={id}\n      onClick={handleClick}\n      onKeyDown={handleKeyDown}\n      onBlur={onBlur}\n      css={(theme) => [\n        css`\n          display: inline-block;\n          position: relative;\n          padding-left: 1.4em;\n          cursor: default;\n\n          ::before,\n          ::after {\n            position: absolute;\n            top: 50%;\n            left: 7px;\n            transform: translate(-50%, -50%);\n            content: \"\";\n          }\n\n          ::before {\n            width: 18px;\n            height: 18px;\n            border: 1px solid hsl(0, 0%, 66%);\n            border-radius: 0.2em;\n          }\n\n          :active::before {\n            background-image: linear-gradient(\n              to bottom,\n              hsl(300, 3%, 73%),\n              hsl(300, 3%, 93%) 30%\n            );\n          }\n\n          :focus {\n            outline: none;\n          }\n\n          :focus::before {\n            width: 20px;\n            height: 20px;\n            box-sizing: content-box;\n            box-shadow: ${theme.shadows.outline};\n          }\n        `,\n        checked &&\n          css`\n            ::before {\n              background: ${theme.colors.primary[\"800\"]};\n            }\n\n            ::after {\n              display: block;\n              width: 0.25em;\n              height: 0.5em;\n              border: solid #fff;\n              border-width: 0 0.155em 0.155em 0;\n              transform: translateY(-65%) translateX(-50%) rotate(45deg);\n            }\n\n            :active::before {\n              background: ${theme.colors.primary[\"800\"]};\n            }\n          `,\n        disabled &&\n          css`\n            cursor: not-allowed;\n\n            ::before {\n              background: ${theme.colors.neutral[\"100\"]};\n            }\n            :focus::before {\n              box-shadow: none;\n            }\n\n            :active::before {\n              background-image: none;\n            }\n          `,\n      ]}\n      role=\"checkbox\"\n      aria-checked={checked}\n      aria-disabled={disabled}\n      aria-required={required}\n      tabIndex={0}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport {\n  Prism as SyntaxHighlighter,\n  SyntaxHighlighterProps,\n} from \"react-syntax-highlighter\";\n\nexport type CodeProps = {\n  children: ReactNode;\n} & SyntaxHighlighterProps;\n\nexport const Code = ({ children, ...props }: CodeProps) => {\n  return (\n    <SyntaxHighlighter {...props}>\n      {children}\n    </SyntaxHighlighter>\n  );\n};\n", "import { closeBrackets } from \"@codemirror/autocomplete\";\nimport { sql } from \"@codemirror/lang-sql\";\nimport { java } from \"@codemirror/lang-java\";\nimport { javascript } from \"@codemirror/lang-javascript\";\nimport { markdown } from \"@codemirror/lang-markdown\";\nimport { css } from \"@emotion/react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { CodeMirror, CodeMirrorProps } from \"./CodeMirror\";\nimport { CodeEditorStyles, CodeEditorStylesProps } from \"./CodeEditorStyles\";\nimport { forwardRef, useImperativeHandle, useMemo, useState } from \"react\";\nimport { Extension, Transaction } from \"@codemirror/state\";\nimport { python } from \"@codemirror/lang-python\";\nimport {\n  drawSelection,\n  EditorView,\n  highlightSpecialChars,\n  highlightActiveLineGutter,\n  lineNumbers as lineNumbersEx,\n} from \"@codemirror/view\";\nimport {\n  indentOnInput,\n  defaultHighlightStyle,\n  syntaxHighlighting,\n} from \"@codemirror/language\";\n\nexport type CodeEditorProps = {\n  language?:\n    | \"sql\"\n    | \"java\"\n    | \"python\"\n    | \"javascript\"\n    | \"markdown\"\n    | \"typescript\";\n  height?: BoxProps[\"height\"];\n  value?: string;\n  lineNumbers?: boolean;\n  disabled?: boolean;\n  fontFamily?: CodeEditorStylesProps[\"fontFamily\"];\n  wrapLines?: boolean;\n  selection?: CodeMirrorProps[\"selection\"];\n  variant?: \"outlined\" | \"normal\" | \"input\";\n  onChange?: (value: string, changes: readonly Transaction[]) => void;\n};\n\nexport type CodeEditorRef = EditorView | null;\n\nexport const CodeEditor = forwardRef<unknown, CodeEditorProps>(\n  (\n    {\n      language = \"markdown\",\n      value = \"\",\n      onChange = () => {},\n      selection,\n      disabled,\n      wrapLines = false,\n      height = \"auto\",\n      fontFamily,\n      lineNumbers = false,\n      variant = \"normal\",\n    },\n    ref\n  ) => {\n    const [editorView, setEditorView] = useState<EditorView | null>(null);\n\n    useImperativeHandle(ref, () => editorView);\n\n    const extensions = useMemo<Extension[]>(() => {\n      const e: Extension[] = [\n        highlightActiveLineGutter(),\n        highlightSpecialChars(),\n        syntaxHighlighting(defaultHighlightStyle),\n        drawSelection(),\n        closeBrackets(),\n        indentOnInput(),\n      ];\n\n      if (lineNumbers) {\n        e.push(lineNumbersEx());\n      }\n\n      if (disabled) {\n        e.push(\n          EditorView.contentAttributes.of({ contenteditable: false } as any)\n        );\n      }\n\n      if (wrapLines) {\n        e.push(EditorView.lineWrapping);\n      }\n\n      switch (language) {\n        case \"typescript\":\n        case \"javascript\": {\n          e.push(javascript());\n          break;\n        }\n        case \"python\": {\n          e.push(python());\n          break;\n        }\n        case \"java\": {\n          e.push(java());\n          break;\n        }\n        case \"sql\": {\n          e.push(sql());\n          break;\n        }\n        default: {\n          e.push(markdown());\n        }\n      }\n      return e;\n    }, [lineNumbers, disabled, language]);\n\n    return (\n      <Box\n        height={height}\n        onClick={() => {\n          editorView?.focus();\n        }}\n        overflowY=\"auto\"\n        css={(theme) => [\n          variant === \"outlined\" &&\n            css`\n              border-style: solid;\n              border-radius: ${theme.radii.small};\n              border-width: ${theme.borderWidths.standard};\n              border-color: ${theme.colors.neutral[\"200\"]};\n\n              > div,\n              > div > div {\n                border-radius: ${theme.radii.small};\n              }\n            `,\n          variant === \"input\" &&\n            css`\n              border-radius: ${theme.radii.small};\n              border-color: ${theme.colors.neutral[\"100\"]};\n              border-style: solid;\n              border-width: ${theme.borderWidths.standard};\n\n              > div,\n              > div > div {\n                border-radius: ${theme.radii.small};\n              }\n            `,\n        ]}\n      >\n        <CodeEditorStyles fontFamily={fontFamily} />\n        <CodeMirror\n          value={value}\n          extensions={extensions}\n          selection={selection}\n          onEditorViewChange={setEditorView}\n          onUpdate={(v) => {\n            if (v.docChanged) {\n              onChange(v.state.doc.toString(), v.transactions as any);\n            }\n          }}\n        />\n      </Box>\n    );\n  }\n);\n", "import {\n  EditorState,\n  EditorStateConfig,\n  Extension,\n  StateEffect,\n} from \"@codemirror/state\";\nimport { EditorView, ViewUpdate } from \"@codemirror/view\";\nimport {\n  ComponentProps,\n  forwardRef,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { useMergeRefs } from \"./hooks/useMergeRefs\";\nimport { useFirstRender } from \"./hooks/useFirstRender\";\n\nexport type CodeMirrorProps = {\n  value?: EditorStateConfig[\"doc\"];\n  selection?: EditorStateConfig[\"selection\"];\n  onUpdate?: (update: ViewUpdate) => void;\n  onEditorViewChange?: (editorView: EditorView) => void;\n  onEditorStateChange?: (editorState: EditorState) => void;\n  extensions?: Extension[];\n  elementProps?: ComponentProps<\"div\">;\n};\n\nexport const CodeMirror = forwardRef<HTMLDivElement, CodeMirrorProps>(\n  (\n    {\n      value,\n      selection,\n      onEditorViewChange,\n      onEditorStateChange,\n      onUpdate,\n      extensions: passedExtensions = [],\n      elementProps,\n    },\n    ref\n  ) => {\n    const innerRef = useRef<HTMLDivElement>(null);\n    const mergedRef = useMergeRefs(ref, innerRef);\n\n    const [editorView, setEditorView] = useState<EditorView | null>(null);\n\n    const updateExtension = useMemo<Extension | undefined>(\n      () => (onUpdate ? EditorView.updateListener.of(onUpdate) : undefined),\n      []\n    );\n\n    const extensions = useMemo<Extension>(\n      () =>\n        updateExtension\n          ? [updateExtension, ...passedExtensions]\n          : passedExtensions,\n      [updateExtension, passedExtensions]\n    );\n\n    const isFirstRender = useFirstRender();\n\n    useEffect(() => {\n      const state = EditorState.create({\n        doc: value,\n        selection: selection,\n        extensions,\n      });\n\n      if (!innerRef.current) {\n        return;\n      }\n\n      if (onEditorStateChange) onEditorStateChange(state);\n\n      const view = new EditorView({\n        parent: innerRef.current,\n        state: state\n      });\n\n      setEditorView(view);\n      if (onEditorViewChange) onEditorViewChange(view);\n\n      return () => view.destroy();\n    }, [innerRef]);\n\n    // extensions\n    useEffect(() => {\n      // this is already handled on the first render\n      if (isFirstRender || !editorView) return;\n\n      editorView.dispatch({\n        effects: StateEffect.reconfigure.of(extensions),\n      });\n    }, [passedExtensions]);\n\n    // selection\n    useEffect(() => {\n      if (isFirstRender || !editorView) return;\n\n      const transaction = editorView.state.update({\n        selection: selection\n      });\n\n      editorView.dispatch(transaction);\n    }, [selection, editorView]);\n\n    // value\n    useEffect(() => {\n      if (isFirstRender || !editorView) return;\n\n      const transaction = editorView.state.update({\n        changes: {\n          from: 0,\n          to: editorView.state.doc.length,\n          insert: value,\n        },\n        selection: editorView.state.selection,\n      });\n\n      editorView.dispatch(transaction);\n    }, [value, editorView]);\n\n    return <div ref={mergedRef} {...elementProps} />;\n  }\n);\n\nCodeMirror.displayName = \"CodeMirror\";\n", "import { Global, css } from \"@emotion/react\";\nimport { Theme } from \"./themes\";\n\nexport type CodeEditorStylesProps = {\n  fontFamily?: keyof Theme[\"fonts\"];\n};\n\nexport const CodeEditorStyles = ({\n  fontFamily = \"monospace\",\n}: CodeEditorStylesProps) => {\n  return (\n    <Global\n      styles={(theme) => css`\n        /* BASICS */\n        .cm-editor .cm-content {\n          /* Set height, width, borders, and global font properties here */\n          font-family: ${theme.fonts[fontFamily]};\n          color: black;\n          direction: ltr;\n        }\n      `}\n    />\n  );\n};\n", "import { maxWidth, MaxWidthProps } from \"styled-system\";\nimport { styled } from \"./system\";\n\nexport type ContainerProps = MaxWidthProps;\n\nexport const Container = styled.div<ContainerProps>(\n  {\n    margin: \"0 auto\",\n  },\n  maxWidth\n);\n\nContainer.defaultProps = {\n  maxWidth: \"medium\",\n};\n", "import { Box, BoxProps } from \"./Box\";\n\nexport type DividerProps = {\n  color?: BoxProps[\"backgroundColor\"];\n};\n\nexport const Divider = ({ color = \"neutral.300\" }: DividerProps) => {\n  return (\n    <Box position=\"relative\">\n      <Box\n        position=\"absolute\"\n        width=\"100%\"\n        backgroundColor={color}\n        height=\"1px\"\n      ></Box>\n    </Box>\n  );\n};\n", "import { ChangeEvent, InputHTMLAttributes } from \"react\";\nimport { css } from \"@emotion/react\";\nimport {\n  color,\n  compose,\n  cursor,\n  space,\n  typography,\n  background,\n  border,\n  shadow,\n  ColorProps,\n  CursorProps,\n  SpaceProps,\n  TypographyProps,\n  BackgroundProps,\n  BorderProps,\n  ShadowProps,\n  styled\n} from \"./system\";\n\nexport type StyledInputProps = {\n  error?: boolean;\n} & InputHTMLAttributes<HTMLInputElement> &\n  ColorProps &\n  CursorProps &\n  SpaceProps &\n  TypographyProps &\n  BackgroundProps &\n  BorderProps &\n  ShadowProps;\n\nexport const StyledInput = styled.input<StyledInputProps>(\n  ({ theme, error }) => [\n    css`\n      border-radius: ${theme.radii.small};\n      padding: ${theme.space.xsmall} ${theme.space.xxsmall};\n      border-color: ${theme.colors.neutral[\"100\"]};\n      border-style: solid;\n      border-width: ${theme.borderWidths.standard};\n\n      box-sizing: border-box;\n      width: 100%;\n      ::placeholder {\n        color: ${theme.colors.neutral[\"400\"]};\n      }\n      :focus {\n        outline-color: transparent;\n        outline-width: 0;\n        border-color: ${theme.colors.primary[\"800\"]};\n        box-shadow: ${theme.shadows.outline};\n        z-index: 1;\n      }\n      :disabled {\n        background-color: ${theme.colors.neutral[\"50\"]};\n      }\n    `,\n    error &&\n      css`\n        border-color: ${theme.colors.error[\"500\"]};\n      `,\n  ],\n  compose(color, cursor, space, typography, background, border, shadow)\n);\n\nexport type InputProps = {\n  id?: string;\n  type?: string;\n  disabled?: boolean;\n  placeholder?: string;\n  required?: boolean;\n  value?: string;\n  onChange?: (v: string) => void;\n  onBlur?: () => void;\n  error?: boolean;\n};\n\nexport const Input = ({\n  id,\n  value,\n  error = false,\n  placeholder,\n  type = \"text\",\n  onChange = () => {},\n  onBlur = () => {},\n  disabled = false,\n  required = false,\n}: InputProps) => {\n  function handleChange(e: ChangeEvent<HTMLInputElement>) {\n    if (!disabled) {\n      const newValue = e.currentTarget.value;\n      onChange(newValue);\n    }\n  }\n  return (\n    <StyledInput\n      id={id}\n      type={type}\n      placeholder={placeholder}\n      aria-invalid={error}\n      disabled={disabled}\n      required={required}\n      onChange={handleChange}\n      onBlur={onBlur}\n      error={error}\n      value={value}\n    />\n  );\n};\n", "import { Input, InputProps } from \"./Input\";\n\nexport type EmailInputProps = {} & InputProps;\n\nexport const EmailInput = ({ ...props }: EmailInputProps) => {\n  return <Input type=\"email\" {...props} />;\n};\n", "import { HTMLAttributes } from \"react\";\nimport {\n  border,\n  BorderProps,\n  shadow,\n  ShadowProps,\n  space,\n  SpaceProps,\n  styled\n} from \"./system\";\n\nexport type VideoProps = {\n  src: string;\n  loop?: boolean;\n  autoPlay?: boolean;\n} & BorderProps &\n  SpaceProps &\n  ShadowProps &\n  HTMLAttributes<HTMLVideoElement>;\n\nexport const StyledVideo = styled.video<\n  BorderProps & SpaceProps & ShadowProps & HTMLAttributes<HTMLVideoElement>\n>(border, space, shadow);\n\nexport const Video = ({ src, loop, autoPlay, ...props }: VideoProps) => {\n  return (\n    <StyledVideo loop={loop} autoPlay={autoPlay} {...props}>\n      <source src={src} />\n    </StyledVideo>\n  );\n};\n", "import { Center } from \"./Center\";\nimport { Grid } from \"./Grid\";\nimport { Heading } from \"./Heading\";\nimport { Text } from \"./Text\";\nimport { Video } from \"./Video\";\n\nexport type FeaturePreviewProps = {\n  src: string;\n  title: string;\n  description: string;\n  maxWidth?: number;\n  reverse?: boolean;\n};\n\nexport const FeaturePreview = ({\n  src,\n  title,\n  description,\n  maxWidth = 500,\n}: FeaturePreviewProps) => {\n  const descriptionBox = (\n    <Center>\n      <Heading as=\"h3\">{title}</Heading>\n      <Text textAlign=\"center\">{description}</Text>\n    </Center>\n  );\n\n  const videoBox = (\n    <Center position=\"relative\">\n      <Video\n        src={src}\n        boxShadow=\"large\"\n        borderRadius=\"standard\"\n        loop\n        autoPlay\n        style={{\n          width: \"100%\",\n          maxWidth,\n        }}\n      ></Video>\n    </Center>\n  );\n  return (\n    <Grid gridTemplateColumns={[\"1fr\", \"1fr auto\"]} gridGap=\"large\">\n      {descriptionBox}\n      {videoBox}\n    </Grid>\n  );\n};\n", "import { flexbox, FlexboxProps, styled } from \"./system\";\n\nexport type FlexProps = FlexboxProps;\n\nexport const Flex = styled.div<FlexProps>({ display: \"flex\" }, flexbox);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type FooterProps = {\n  links?: {\n    href: string;\n    label: string;\n  }[];\n  copyright?: ReactNode;\n};\n\nexport const Footer = ({ links, copyright = \"OpenPatch\" }: FooterProps) => {\n  const [year, setYear] = useState<number | null>(null);\n  useEffect(() => {\n    setYear(new Date().getFullYear());\n  }, []);\n  return (\n    <Box as=\"footer\" backgroundColor=\"primary.900\">\n      <Box\n        maxWidth=\"large\"\n        mx=\"auto\"\n        px={[\"small\", \"medium\", \"medium\"]}\n        py={[\"xsmall\", \"small\"]}\n      >\n        {links && (\n          <Box as=\"nav\" aria-label=\"footer-menu\">\n            <ul\n              css={(theme) => css`\n                list-style: none;\n                display: flex;\n                align-items: center;\n                padding: 0;\n                margin-top: 0;\n                margin-bottom: ${theme.space.xxsmall};\n                flex-wrap: wrap;\n                margin-left: -${theme.space.xsmall};\n              `}\n            >\n              {links?.map(({ href, label }) => (\n                <li\n                  key={href}\n                  css={css`\n                    margin: 4px;\n                  `}\n                >\n                  <Box\n                    as=\"a\"\n                    fontWeight=\"semibold\"\n                    borderRadius=\"standard\"\n                    fontSize=\"small\"\n                    padding=\"xsmall\"\n                    css={(theme) => css`\n                      text-decoration: none;\n\n                      :hover {\n                        color: ${theme.colors.primary[\"50\"]};\n                        background-color: ${theme.colors.primary[\"800\"]};\n                      }\n                    `}\n                    textColor=\"primary.200\"\n                    href={href}\n                  >\n                    {label}\n                  </Box>\n                </li>\n              ))}\n            </ul>\n          </Box>\n        )}\n        {copyright && (\n          <Box fontSize=\"small\" textColor=\"primary.300\" fontWeight=\"semibold\">\n            &copy; {year} {copyright}\n          </Box>\n        )}\n      </Box>\n    </Box>\n  );\n};\n", "import { FormEvent, HTMLAttributes } from \"react\";\n\nexport type FormProps = {} & HTMLAttributes<HTMLFormElement>;\n\nexport const Form = ({ onSubmit, ...props }: FormProps) => {\n  function handleSubmit(e: FormEvent<HTMLFormElement>) {\n    e.preventDefault();\n    e.stopPropagation();\n    if (onSubmit) {\n      onSubmit(e);\n    }\n  }\n  return <form onSubmit={handleSubmit} {...props} />;\n};\n", "import { ReactNode } from \"react\";\nimport { Text } from \"./Text\";\n\nexport type FormDescriptionProps = {\n  children?: ReactNode;\n};\n\nexport const FormDescription = ({ children }: FormDescriptionProps) => {\n  return (\n    <Text mb=\"small\" textColor=\"neutral.500\">\n      {children}\n    </Text>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Text } from \"./Text\";\nimport { Important } from \"./icons/shade\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\n\nexport type FormErrorTextProps = {\n  children?: ReactNode;\n};\n\nexport const FormErrorText = ({ children }: FormErrorTextProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      css={(theme) => css`\n        svg {\n          margin-right: ${theme.space.xxsmall};\n        }\n      `}\n    >\n      <Icon color=\"error\" size=\"small\">\n        <Important />\n      </Icon>\n      <Text textColor=\"error.500\" role=\"alert\">\n        {children}\n      </Text>\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Button } from \"./Button\";\nimport { ButtonGroup } from \"./ButtonGroup\";\nimport { ButtonPrimary } from \"./ButtonPrimary\";\nimport { Box } from \"./Box\";\n\nexport type FormFooterProps = {\n  children?: ReactNode;\n  disabled?: boolean;\n  onSave?: () => void;\n  onCancel?: () => void;\n  locale?: {\n    save: string;\n    cancel: string;\n  };\n};\n\nexport const FormFooter = ({\n  locale = { save: \"Save\", cancel: \"Cancel\" },\n  disabled = false,\n  onSave = () => {},\n  onCancel = () => {},\n}: FormFooterProps) => {\n  function handleSave() {\n    if (!disabled) {\n      onSave();\n    }\n  }\n  return (\n    <Box mt=\"large\" display=\"flex\" justifyContent=\"flex-end\">\n      <ButtonGroup space=\"standard\">\n        <Button onClick={onCancel}>{locale.cancel}</Button>\n        <ButtonPrimary onClick={handleSave} type=\"submit\" disabled={disabled}>\n          {locale.save}\n        </ButtonPrimary>\n      </ButtonGroup>\n    </Box>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { Heading } from \"./Heading\";\nimport { Box } from \"./Box\";\nimport { Divider } from \"./Divider\";\nimport { ReactNode } from \"react\";\n\nexport type FormHeaderProps = {\n  id?: string;\n  children?: ReactNode;\n};\n\nexport const FormHeader = ({ id, children }: FormHeaderProps) => {\n  return (\n    <Box\n      mb=\"large\"\n      id={id}\n      css={css`\n        :target:before {\n          content: \"\";\n          display: block;\n          height: 100px;\n          margin: -100px 0 0;\n        }\n      `}\n    >\n      <Heading\n        mb=\"xsmall\"\n        as=\"h3\"\n        css={css`\n          display: flex;\n          align-items: center;\n        `}\n      >\n        {children}\n      </Heading>\n      <Divider color=\"neutral.100\" />\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Text } from \"./Text\";\n\nexport type FormHelperTextProps = {\n  children?: ReactNode;\n};\n\nexport const FormHelperText = ({ children }: FormHelperTextProps) => {\n  return (\n    <Text mt=\"xxsmall\" textColor=\"neutral.500\">\n      {children}\n    </Text>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Text } from \"./Text\";\nimport { Information } from \"./icons/shade\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\n\nexport type FormInfoTextProps = {\n  children?: ReactNode;\n};\n\nexport const FormInfoText = ({ children }: FormInfoTextProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      css={(theme) => css`\n        svg {\n          margin-right: ${theme.space.xxsmall};\n        }\n      `}\n    >\n      <Icon color=\"info\" size=\"small\">\n        <Information />\n      </Icon>\n      <Text textColor=\"info.800\" role=\"alert\">\n        {children}\n      </Text>\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Text } from \"./Text\";\n\nexport type FormLabelProps = {\n  htmlFor: string;\n  children?: ReactNode;\n  required?: boolean;\n};\n\nexport const FormLabel = ({\n  htmlFor,\n  children,\n  required = false,\n}: FormLabelProps) => {\n  return (\n    <Text\n      mt=\"medium\"\n      mb=\"xsmall\"\n      fontWeight=\"medium\"\n      as=\"label\"\n      htmlFor={htmlFor}\n      css={css`\n        display: inline-block;\n      `}\n    >\n      {children} {required && \"*\"}\n    </Text>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Text } from \"./Text\";\nimport { Check } from \"./icons/shade\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\n\nexport type FormSuccessTextProps = {\n  children?: ReactNode;\n};\n\nexport const FormSuccessText = ({ children }: FormSuccessTextProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      css={(theme) => css`\n        svg {\n          margin-right: ${theme.space.xxsmall};\n        }\n      `}\n    >\n      <Icon color=\"success\" size=\"small\">\n        <Check />\n      </Icon>\n      <Text textColor=\"success.700\" role=\"alert\">\n        {children}\n      </Text>\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Text } from \"./Text\";\nimport { Important } from \"./icons/shade\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\n\nexport type FormWarningTextProps = {\n  children?: ReactNode;\n};\n\nexport const FormWarningText = ({ children }: FormWarningTextProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      alignItems=\"center\"\n      css={(theme) => css`\n        svg {\n          margin-right: ${theme.space.xxsmall};\n        }\n      `}\n    >\n      <Icon color=\"warning\" size=\"small\">\n        <Important />\n      </Icon>\n      <Text textColor=\"warning.900\" role=\"alert\">\n        {children}\n      </Text>\n    </Box>\n  );\n};\n", "import { Children, Fragment, ReactNode, useState } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\nimport { Text } from \"./Text\";\n\nexport type GroupProps = {\n  label: string;\n  id?: string;\n  variant?: \"horizontal\" | \"vertical\";\n  children?: ReactNode;\n};\n\nexport const Group = ({\n  children,\n  id,\n  label,\n  variant = \"vertical\",\n}: GroupProps) => {\n  const [genId] = useState(id || Date.now());\n  const labelid = `group-${genId}`;\n  return (\n    <Fragment>\n      <Text fontWeight=\"medium\" id={labelid} mb=\"xsmall\">\n        {label}\n      </Text>\n      <Box\n        role=\"group\"\n        aria-labelledby={labelid}\n        css={[\n          css`\n            ul {\n              list-style: none;\n              margin-left: 0;\n              padding-left: 0em;\n              margin-bottom: 0;\n              margin-top: 0;\n            }\n            li {\n              margin: 8px 0;\n            }\n\n            li:last-of-type {\n              margin-bottom: 0;\n            }\n          `,\n          variant === \"horizontal\" &&\n            css`\n              ul {\n                display: inline-flex;\n                align-items: center;\n                justify-content: center;\n              }\n              li {\n                display: inline;\n                margin: 0px 8px;\n              }\n            `,\n        ]}\n      >\n        <ul>\n          {Children.map(children, (c) => (\n            <li>{c}</li>\n          ))}\n        </ul>\n      </Box>\n    </Fragment>\n  );\n};\n", "import { Fragment, ReactNode } from \"react\";\nimport {\n  Controller,\n  ControllerProps,\n  FieldError,\n  get,\n  useFormContext,\n  ValidateResult,\n} from \"react-hook-form\";\nimport { FormErrorText } from \"./FormErrorText\";\nimport { FormHelperText } from \"./FormHelperText\";\nimport { FormLabel } from \"./FormLabel\";\n\nexport type HookFormControllerRenderProps = {\n  onChange: (...event: any[]) => void;\n  onBlur: () => void;\n  id: string;\n  value: any;\n  name: string;\n  error: boolean;\n  required: boolean;\n};\n\nexport type HookFormControllerProps = Omit<ControllerProps, \"render\" | \"as\"> & {\n  label?: ReactNode;\n  helperText?: ReactNode;\n  render: (props: HookFormControllerRenderProps) => React.ReactElement;\n};\n\ntype FormControllerErrorProps = {\n  message: ValidateResult;\n};\n\nconst FormControllerError = ({ message }: FormControllerErrorProps) => {\n  return <FormErrorText>{message}</FormErrorText>;\n};\n\nexport const HookFormController = ({\n  name,\n  render,\n  control,\n  defaultValue,\n  label,\n  helperText,\n  ...props\n}: HookFormControllerProps) => {\n  const methods = useFormContext();\n  const required = props.rules?.required ? true : false;\n  const errors: FieldError = get(methods.formState.errors, name);\n  return (\n    <Fragment>\n      {label && (\n        <FormLabel required={required} htmlFor={name}>\n          {label}\n        </FormLabel>\n      )}\n      <Controller\n        control={methods.control}\n        name={name}\n        defaultValue={defaultValue}\n        {...props}\n        render={({ field: { onChange, onBlur, value, name } }) => {\n          return render({\n            id: name,\n            onChange,\n            onBlur,\n            value,\n            name,\n            required,\n            error: Boolean(errors),\n          });\n        }}\n      />\n      {helperText && <FormHelperText>{helperText}</FormHelperText>}\n      {errors && <FormControllerError message={errors.message} />}\n    </Fragment>\n  );\n};\n", "import { Box } from \"./Box\";\n\nexport type InputAddonProps = {\n  children?: string;\n  className?: string;\n};\n\nexport const InputAddon = ({ children, ...props }: InputAddonProps) => {\n  return (\n    <Box\n      as=\"span\"\n      minWidth=\"auto\"\n      paddingY=\"xxsmall\"\n      paddingX=\"xsmall\"\n      textColor=\"neutral.400\"\n      backgroundColor=\"neutral.50\"\n      {...props}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { ReactElement } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\nimport { InputAddon } from \"./InputAddon\";\nimport { InputProps } from \"./Input\";\n\nexport type InputGroupProps = {\n  children?: ReactElement<InputProps>;\n  addonLeft?: string;\n  addonRight?: string;\n};\n\nexport const InputGroup = ({\n  children,\n  addonLeft,\n  addonRight,\n}: InputGroupProps) => {\n  return (\n    <Box\n      display=\"flex\"\n      boxShadow=\"small\"\n      borderRadius=\"small\"\n      borderColor=\"neutral.200\"\n      borderStyle=\"solid\"\n      borderWidth=\"standard\"\n      css={css`\n        & > input {\n          border: none;\n          border-radius: 0;\n          flex: 1;\n        }\n      `}\n    >\n      {addonLeft && (\n        <InputAddon\n          css={(theme) => css`\n            border-right-color: ${theme.colors.neutral[\"200\"]};\n            border-right-width: ${theme.borderWidths.standard};\n            border-right-style: solid;\n            border-bottom-left-radius: ${theme.radii.small};\n            border-top-left-radius: ${theme.radii.small};\n          `}\n        >\n          {addonLeft}\n        </InputAddon>\n      )}\n      {children}\n      {addonRight && (\n        <InputAddon\n          css={(theme) => css`\n            border-left-color: ${theme.colors.neutral[\"200\"]};\n            border-left-width: ${theme.borderWidths.standard};\n            border-left-style: solid;\n            border-bottom-right-radius: ${theme.radii.small};\n            border-top-right-radius: ${theme.radii.small};\n          `}\n        >\n          {addonRight}\n        </InputAddon>\n      )}\n    </Box>\n  );\n};\n", "import { css, Theme } from \"@emotion/react\";\nimport { forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport { Icon } from \"./Icon\";\nimport { ExternalWindow } from \"./icons/shade\";\nimport {\n  background,\n  BackgroundProps,\n  border,\n  BorderProps,\n  color,\n  ColorProps,\n  compose,\n  cursor,\n  CursorProps,\n  flexbox,\n  FlexboxProps,\n  grid,\n  GridProps,\n  layout,\n  LayoutProps,\n  position,\n  PositionProps,\n  shadow,\n  ShadowProps,\n  space,\n  SpaceProps,\n  typography,\n  TypographyProps,\n  styled\n} from \"./system\";\n\nexport type StyledLinkProps = ColorProps &\n  CursorProps &\n  SpaceProps &\n  TypographyProps &\n  LayoutProps &\n  FlexboxProps &\n  GridProps &\n  BackgroundProps &\n  BorderProps &\n  PositionProps &\n  ShadowProps &\n  HTMLAttributes<HTMLAnchorElement>;\n\nconst StyledLink = styled.a<StyledLinkProps>(\n  css`\n    box-sizing: border-box;\n    min-width: 0;\n    transition: all 0.2s ease;\n    padding: 0;\n    margin: 0;\n  `,\n  compose(\n    color,\n    cursor,\n    space,\n    typography,\n    layout,\n    flexbox,\n    grid,\n    background,\n    border,\n    position,\n    shadow\n  )\n);\n\nexport type LinkProps = {\n  children?: ReactNode;\n  external?: boolean;\n  href?: string;\n  color?: keyof Theme[\"colors\"];\n} & StyledLinkProps;\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n  ({ href, color, children, external, ...props }, ref) => {\n    return (\n      <StyledLink\n        {...props}\n        ref={ref}\n        href={href}\n        css={(theme) => [\n          css`\n            display: inline-flex;\n            align-items: center;\n            color: inherit;\n            svg {\n              margin-left: ${theme.space.xsmall};\n              width: auto;\n              height: 90%;\n            }\n          `,\n        ]}\n      >\n        {children}\n        {external && (\n          <Icon size=\"auto\" color={color}>\n            <ExternalWindow />\n          </Icon>\n        )}\n      </StyledLink>\n    );\n  }\n);\n", "import { Theme } from \"@emotion/react\";\nimport { CSSProperties } from \"@styled-system/css\";\n\nexport interface LogoProps {\n  /**\n   * Color of the Logo. Defaults to the primary color of the theme.\n   */\n  color?: keyof Theme[\"colors\"] | \"currentColor\";\n  width?: CSSProperties[\"width\"];\n  height?: CSSProperties[\"height\"];\n}\n\nexport const Logo = ({\n  color = \"primary\",\n  height = \"1em\",\n  width = \"1em\",\n}: LogoProps) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={width}\n      height={height}\n      version=\"1.1\"\n      viewBox=\"0 0 82.442 82.442\"\n    >\n      <defs>\n        <clipPath clipPathUnits=\"userSpaceOnUse\">\n          <path d=\"M0 400h550V0H0z\"></path>\n        </clipPath>\n      </defs>\n      <path\n        fillOpacity=\"0\"\n        css={(theme) => ({\n          stroke: color === \"currentColor\" ? color : theme.colors[color][500],\n        })}\n        strokeDasharray=\"none\"\n        strokeLinejoin=\"miter\"\n        strokeMiterlimit=\"4\"\n        strokeOpacity=\"1\"\n        strokeWidth=\"3.54\"\n        d=\"M3.21 1.77h76.023c.797 0 1.439.642 1.439 1.44v76.023c0 .797-.642 1.439-1.44 1.439H3.21a1.436 1.436 0 01-1.439-1.44V3.21c0-.797.642-1.439 1.44-1.439z\"\n        opacity=\"1\"\n      ></path>\n      <path\n        css={(theme) => ({\n          fill: color === \"currentColor\" ? color : theme.colors[color][500],\n        })}\n        fillOpacity=\"1\"\n        fillRule=\"nonzero\"\n        stroke=\"none\"\n        strokeWidth=\"0.353\"\n        d=\"M27.908 53.561c.25.216.374.557.374 1.023v9.654c0 .864-.436 1.3-1.31 1.31l-8.219-.013c-.864 0-1.297-.433-1.297-1.297v-5.239c0-.066.017-.133.05-.2l-.012-.037-.038-.012v-4.166c-.008-.873.424-1.306 1.297-1.297l8.22-.013c.407.008.719.104.935.287m37.343-29.535c.017.881-.416 1.33-1.297 1.347l-8.207-.025c-.898 0-1.355-.44-1.372-1.322l-.013-5.251c.017-.881.474-1.322 1.372-1.322l8.257.025c.848.016 1.264.449 1.248 1.297l.012 5.251m-23.199 0l.012-5.251c.017-.881.474-1.322 1.372-1.322l8.17-.013c.898 0 1.343.445 1.335 1.335l-.013 5.251c.017.881-.424 1.322-1.322 1.322h-8.182c-.898 0-1.355-.44-1.372-1.322m-1.472 0c.008.89-.424 1.33-1.297 1.322h-8.207c-.873.009-1.314-.432-1.322-1.322l-.012-5.251c.016-.881.457-1.322 1.322-1.322h8.232c.864 0 1.288.44 1.272 1.322l.012 5.251M18.753 17.44l8.22.013c.873-.009 1.297.432 1.272 1.322l.012 5.251c.017.881-.407 1.322-1.272 1.322h-8.232c-.864 0-1.305-.44-1.322-1.322l-.012-5.251c.016-.881.461-1.326 1.334-1.335m46.51 28.126l.013 5.251c0 .865-.44 1.305-1.322 1.322l-45.2-.025c-.865 0-1.298-.432-1.298-1.297v-5.263c0-.084.017-.158.05-.225a6.681 6.681 0 01-.075-.524l.025-11c0-.15.013-.304.038-.462a1.085 1.085 0 01-.038-.287v-5.238c-.017-.882.408-1.322 1.272-1.322h8.232c.865 0 1.306.44 1.322 1.322v5.238c0 .1-.004.195-.012.287.008.158.012.312.012.461l-.025 10.428h26.118l.012-9.866H31.064c-.865 0-1.297-.433-1.297-1.297v-5.264c-.017-.881.407-1.322 1.272-1.322l32.877.025c.882-.017 1.33.416 1.347 1.297v5.264a.623.623 0 010 .174v.374l.013 11.388c-.009.125-.009.25 0 .374-.025.041-.03.104-.013.187m4.678 25.581c.798 0 1.201-.403 1.21-1.21l-.013-57.436c0-.715-.328-1.11-.985-1.185-.067 0-.142-.008-.225-.025l-57.399-.025c-.823.025-1.234.437-1.234 1.235v57.674c.091.64.503.952 1.234.935l57.412.037\"\n        opacity=\"1\"\n      ></path>\n    </svg>\n  );\n};\n", "export type MailTemplateProps = {\n  html?: boolean;\n  logoUrl?: string;\n  title: string;\n  body: string;\n  action?: {\n    label: string;\n    href: string;\n  };\n  tagLine?: string;\n  links?: Array<{\n    href: string;\n    label: string;\n  }>;\n};\n\nconst logo =\n  \"https://assets.gitlab-static.net/uploads/-/system/group/avatar/3174248/logo_clean.png?width=64\";\n\nexport const MailTemplate = ({\n  html = true,\n  logoUrl = logo,\n  title,\n  body,\n  tagLine,\n  links = [\n    {\n      label: \"Our Blog\",\n      href: \"https://blog.openpatch.org\",\n    },\n    {\n      label: \"Source Code\",\n      href: \"https://github.com/openpatch\",\n    },\n    {\n      label: \"Discord\",\n      href: \"https://discord.gg/cY5JbMk6\",\n    },\n  ],\n  action,\n}: MailTemplateProps) => {\n  if (!html) {\n    if (!tagLine) {\n      tagLine = \"Made by the OpenPatch Community (https://openpatch.org)\";\n    }\n    return `${title}\\n${\"=\".repeat(title.length)}\\n\\n${body}\\n${\n      action && `${action.label}: ${action.href}`\n    }\\n\\n${\"-\".repeat(80)}\\n\\n${tagLine}\\n\\n${links\n      .map((l) => `${l.label}: ${l.href}`)\n      .join(\"\\n\")}`;\n  }\n\n  if (!tagLine) {\n    tagLine =\n      'Made by the <a href=\"https://openpatch.org\">OpenPatch</a> Community';\n  }\n\n  return `\n<!doctype html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n\n<head>\n  <title> ${title} </title>\n  <!--[if !mso]><!-->\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <!--<![endif]-->\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <style type=\"text/css\">\n    #outlook a {\n      padding: 0;\n    }\n\n    body {\n      margin: 0;\n      padding: 0;\n      -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n    }\n\n    table,\n    td {\n      border-collapse: collapse;\n      mso-table-lspace: 0pt;\n      mso-table-rspace: 0pt;\n    }\n\n    img {\n      border: 0;\n      height: auto;\n      line-height: 100%;\n      outline: none;\n      text-decoration: none;\n      -ms-interpolation-mode: bicubic;\n    }\n\n    p {\n      display: block;\n      margin: 13px 0;\n    }\n  </style>\n  <!--[if mso]>\n        <xml>\n        <o:OfficeDocumentSettings>\n          <o:AllowPNG/>\n          <o:PixelsPerInch>96</o:PixelsPerInch>\n        </o:OfficeDocumentSettings>\n        </xml>\n        <![endif]-->\n  <!--[if lte mso 11]>\n        <style type=\"text/css\">\n          .mj-outlook-group-fix { width:100% !important; }\n        </style>\n        <![endif]-->\n  <!--[if !mso]><!-->\n  <link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\">\n  <style type=\"text/css\">\n    @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);\n  </style>\n  <!--<![endif]-->\n  <style type=\"text/css\">\n    @media only screen and (min-width:480px) {\n      .mj-column-per-100 {\n        width: 100% !important;\n        max-width: 100%;\n      }\n    }\n  </style>\n  <style type=\"text/css\">\n    @media only screen and (max-width:480px) {\n      table.mj-full-width-mobile {\n        width: 100% !important;\n      }\n\n      td.mj-full-width-mobile {\n        width: auto !important;\n      }\n    }\n  </style>\n  <style type=\"text/css\">\n    h2 {\n      margin-bottom: 0px;\n    }\n  </style>\n</head>\n\n<body style=\"word-spacing:normal;\">\n  <div style=\"\">\n    <!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n    <div style=\"margin:0px auto;max-width:600px;\">\n      <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n        <tbody>\n          <tr>\n            <td style=\"border-bottom:1px solid #eee;direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n              <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" width=\"600px\" ><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n              <div style=\"margin:0px auto;max-width:600px;\">\n                <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n                  <tbody>\n                    <tr>\n                      <td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n                        <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]-->\n                        <div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\">\n                          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\">\n                            <tbody>\n                              <tr>\n                                <td align=\"left\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                                  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"border-collapse:collapse;border-spacing:0px;\">\n                                    <tbody>\n                                      <tr>\n                                        <td style=\"width:32px;\">\n                                          <img height=\"auto\" src=\"${logoUrl}\" style=\"border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;\" width=\"32\" />\n                                        </td>\n                                      </tr>\n                                    </tbody>\n                                  </table>\n                                </td>\n                              </tr>\n                              <tr>\n                                <td align=\"left\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                                  <div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:left;color:#555555;\">\n                                    <h2>${title}</h2>\n                                  </div>\n                                </td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </div>\n                        <!--[if mso | IE]></td></tr></table><![endif]-->\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n              <!--[if mso | IE]></td></tr></table></td></tr><tr><td class=\"\" width=\"600px\" ><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n              <div style=\"margin:0px auto;max-width:600px;\">\n                <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n                  <tbody>\n                    <tr>\n                      <td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n                        <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]-->\n                        <div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\">\n                          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\">\n                            <tbody>\n                              <tr>\n                                <td align=\"left\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                                  <div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:20px;text-align:left;color:#555555;\">${body}</div>\n                                </td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </div>\n                        <!--[if mso | IE]></td></tr></table><![endif]-->\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n              ${\n                action &&\n                `<!--[if mso | IE]></td></tr></table></td></tr><tr><td class=\"\" width=\"600px\" ><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n              <div style=\"margin:0px auto;max-width:600px;\">\n                <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n                  <tbody>\n                    <tr>\n                      <td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n                        <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]-->\n                        <div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\">\n                          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\">\n                            <tbody>\n                              <tr>\n                                <td align=\"left\" vertical-align=\"middle\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                                  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"border-collapse:separate;line-height:100%;\">\n                                    <tr>\n                                      <td align=\"center\" bgcolor=\"#414141\" role=\"presentation\" style=\"border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#414141;\" valign=\"middle\">\n                                        <a href=\"${action.href}\" style=\"display:inline-block;background:#414141;color:#ffffff;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;\" target=\"_blank\"> ${action.label} </a>\n                                      </td>\n                                    </tr>\n                                  </table>\n                                </td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </div>\n                        <!--[if mso | IE]></td></tr></table><![endif]-->\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>`\n              }\n              <!--[if mso | IE]></td></tr></table></td></tr><tr><td class=\"\" width=\"600px\" ><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n              <div style=\"margin:0px auto;max-width:600px;\">\n                <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n                  <tbody>\n                    <tr>\n                      <td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n                        <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]-->\n                        <div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\">\n                          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\">\n                            <tbody>\n                              ${\n                                tagLine &&\n                                `<tr>\n                                <td align=\"center\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                                  <div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#555555;\">${tagLine}\n                                  </div>\n                                </td>\n                              </tr>`\n                              }\n                              ${\n                                links &&\n                                `<tr>\n                                <td align=\"center\" style=\"font-size:0px;padding:10px 25px;padding-top:18px;word-break:break-word;\">\n                                  <div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#555555;\">${links\n                                    .map(\n                                      (l) =>\n                                        `<a href=\"${l.href}\">${l.label}</a>`\n                                    )\n                                    .join(\" \u2022 \")}</div>\n                                </td>\n                              </tr>`\n                              }\n                            </tbody>\n                          </table>\n                        </div>\n                        <!--[if mso | IE]></td></tr></table><![endif]-->\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n              <!--[if mso | IE]></td></tr></table></td></tr></table><![endif]-->\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <!--[if mso | IE]></td></tr></table><![endif]-->\n  </div>\n</body>\n\n</html>\n\n`;\n};\n", "import { css } from \"@emotion/react\";\nimport { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { variant, styled } from \"./system\";\n\nexport type MainProps = {\n  children?: ReactNode;\n  variant?: \"stack\" | \"overlap\";\n  maxWidth?: BoxProps[\"maxWidth\"];\n};\n\nconst StyledMain = styled(Box)(\n  variant<{\n    \"::before\"?: object;\n  }>({\n    scale: \"main\",\n    prop: \"variant\",\n    variants: {\n      stack: {},\n      overlap: {\n        \"::before\": {\n          backgroundColor: \"primary.900\",\n          content: \"''\",\n          display: \"block\",\n          left: 0,\n          position: \"absolute\",\n          top: 0,\n          width: \"100%\",\n          \"z-index\": -1,\n        },\n      },\n    },\n  })\n);\n\nexport const Main = ({\n  children,\n  variant = \"stack\",\n  maxWidth = \"large\",\n}: MainProps) => {\n  const contentRef = useRef<HTMLDivElement>(null);\n  const [stackHeight, setStackHeight] = useState(215);\n\n  const onResize = () => {\n    if (contentRef.current) {\n      const offset =\n        contentRef.current.getBoundingClientRect().top + window.pageYOffset;\n      const height = contentRef.current.clientHeight;\n      setStackHeight(Math.min(65, height / 2) + offset);\n    }\n  };\n\n  useEffect(() => {\n    if (variant === \"overlap\") {\n      onResize();\n      // sometimes new content comes in. It would be better to listen to changes\n      // to the page header component, but this will do.\n      setTimeout(() => onResize(), 5000);\n      window.addEventListener(\"resize\", onResize);\n\n      return () => window.removeEventListener(\"resize\", onResize);\n    }\n\n    return;\n  }, []);\n\n  return (\n    <StyledMain\n      as=\"main\"\n      variant={variant}\n      flex={1}\n      css={\n        variant === \"overlap\"\n          ? css`\n              ::before {\n                height: ${stackHeight}px;\n              }\n            `\n          : undefined\n      }\n    >\n      <Box\n        ref={contentRef}\n        maxWidth={maxWidth}\n        margin=\"auto\"\n        px={[\"small\", \"medium\", \"medium\"]}\n        py=\"medium\"\n      >\n        {children}\n      </Box>\n    </StyledMain>\n  );\n};\n", "import ReactMarkdown, { Components } from \"react-markdown\";\nimport gfm from \"remark-gfm\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize, { defaultSchema } from \"rehype-sanitize\";\nimport { Blockquote } from \"./Blockquote\";\nimport { Code } from \"./Code\";\nimport { TextLink } from \"./TextLink\";\nimport { Table } from \"./Table\";\nimport { TableBody } from \"./TableBody\";\nimport { TableCell } from \"./TableCell\";\nimport { TableHead } from \"./TableHead\";\nimport { TableRow } from \"./TableRow\";\n\nexport type MarkdownProps = {\n  markdown: string;\n  allowHtml?: boolean;\n};\n\nconst CodeBlock: Components[\"code\"] = ({ inline, className, children }) => {\n  console.log(className);\n  const match = /language-(\\w+)/.exec(className || \"\");\n  return !inline && match ? (\n    <Code language={match[1]}>{String(children).replace(/\\n$/, \"\")}</Code>\n  ) : (\n    <Code>{children}</Code>\n  );\n};\n\nconst Link: Components[\"a\"] = ({ href, ...props})  => {\n  if (href) {\n    return <TextLink href={href} {...props} />\n  }\n\n  return <a {...props} href={href} />\n}\n\nexport const Markdown = ({ markdown, allowHtml }: MarkdownProps) => {\n  return (\n    <ReactMarkdown\n      remarkPlugins={[gfm]}\n      rehypePlugins={\n        allowHtml\n          ? [\n              rehypeRaw,\n              [\n                rehypeSanitize,\n                {\n                  ...defaultSchema,\n                  attributes: {\n                    ...defaultSchema.attributes,\n                    code: [\n                      ...(defaultSchema.attributes?.code || []),\n                      [\n                        \"className\",\n                        \"language-js\",\n                        \"language-java\",\n                        \"language-md\",\n                        \"language-python\",\n                      ],\n                    ],\n                  },\n                },\n              ],\n            ]\n          : undefined\n      }\n      components={{\n        code: CodeBlock,\n        blockquote: Blockquote,\n        table: Table,\n        thead: TableHead,\n        tbody: TableBody,\n        tr: TableRow,\n        td: TableCell,\n        th: TableCell,\n        a: Link,\n      }}\n      children={markdown}\n    />\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { forwardRef, ReactNode, useEffect, useState } from \"react\";\nimport { useLinkComponent } from \"./hooks\";\nimport { Icon } from \"./Icon\";\nimport { ExternalWindow } from \"./icons/shade\";\nimport { LinkComponentProps } from \"./LinkComponentProvider\";\n\nexport type TextLinkProps = {\n  children?: ReactNode;\n} & LinkComponentProps;\n\n// https://stackoverflow.com/a/6238456\nfunction useIsExternal(url: string): boolean {\n  const [isExternal, setIsExternal] = useState(false);\n\n  useEffect(() => {\n    const match = url.match(\n      /^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/\n    );\n    if (match) {\n      if (\n        typeof match[1] === \"string\" &&\n        match[1].length > 0 &&\n        match[1].toLowerCase() !== location.protocol\n      ) {\n        setIsExternal(true);\n      } else if (\n        typeof match[2] === \"string\" &&\n        match[2].length > 0 &&\n        match[2].replace(\n          new RegExp(\n            \":(\" + { \"http:\": 80, \"https:\": 443 }[location.protocol] + \")?$\"\n          ),\n          \"\"\n        ) !== location.host\n      ) {\n        setIsExternal(true);\n      }\n    } else {\n      setIsExternal(false);\n    }\n  }, [url]);\n\n  return isExternal;\n}\n\nexport const TextLink = forwardRef<HTMLAnchorElement, TextLinkProps>(\n  ({ children, href, color, ...props }, ref) => {\n    const LinkComponent = useLinkComponent(ref);\n    const isExternal = useIsExternal(href);\n    return (\n      <LinkComponent\n        css={(theme) => css`\n          display: inline;\n          color: inherit;\n          svg {\n            margin-left: ${theme.space.xxsmall};\n            width: auto;\n            height: 70%;\n          }\n        `}\n        href={href}\n        ref={ref}\n        {...props}\n      >\n        {children}\n        {isExternal && (\n          <Icon size=\"auto\" color=\"currentColor\">\n            <ExternalWindow />\n          </Icon>\n        )}\n      </LinkComponent>\n    );\n  }\n);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type TableProps = {\n  children?: ReactNode;\n};\n\nexport const Table = ({ children }: TableProps) => {\n  return (\n    <Box\n      as=\"table\"\n      minWidth=\"100%\"\n      css={(theme) => css`\n        border-collapse: collapse;\n        border-width: 1px;\n        border-color: ${theme.colors.neutral[\"100\"]};\n        border-style: solid;\n      `}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type TableBodyProps = {\n  children?: ReactNode;\n};\n\nexport const TableBody = ({ children }: TableBodyProps) => {\n  return (\n    <Box\n      as=\"tbody\"\n      css={(theme) => css`\n        & > tr {\n          border-top-width: 1px;\n          border-top-color: ${theme.colors.neutral[\"100\"]};\n          border-top-style: solid;\n        }\n      `}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\nexport type TableCellProps = {\n  children?: ReactNode;\n  isHeader?: boolean;\n  align?: BoxProps[\"textAlign\"];\n};\n\nexport const TableCell = ({\n  children,\n  isHeader = false,\n  align = \"left\",\n}: TableCellProps) => {\n  return (\n    <Box\n      as={isHeader ? \"th\" : \"td\"}\n      px=\"small\"\n      py=\"xsmall\"\n      textAlign={align}\n      css={(theme) => [\n        isHeader &&\n          css`\n            font-size: ${theme.fontSizes.small};\n            text-transform: uppercase;\n            font-weight: ${theme.fontWeights.semibold};\n            color: ${theme.colors.neutral[\"500\"]};\n            background-color: ${theme.colors.neutral[\"50\"]};\n          `,\n        !isHeader && css``,\n      ]}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type TableHeadProps = {\n  children?: ReactNode;\n};\n\nexport const TableHead = ({ children }: TableHeadProps) => {\n  return <Box as=\"thead\">{children}</Box>;\n};\n", "import { ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type TableRowProps = {\n  children?: ReactNode;\n};\n\nexport const TableRow = ({ children }: TableRowProps) => {\n  return <Box as=\"tr\">{children}</Box>;\n};\n", "import { css } from \"@emotion/react\";\nimport { useRef, useState } from \"react\";\nimport { Box } from \"./Box\";\nimport { ButtonSecondary } from \"./ButtonSecondary\";\nimport { CodeEditor, CodeEditorProps, CodeEditorRef } from \"./CodeEditor\";\nimport { Markdown } from \"./Markdown\";\n\nexport type MarkdownEditorProps = {\n  allowPreview?: boolean;\n  locale?: {\n    preview: string;\n    edit: string;\n  };\n} & Omit<CodeEditorProps, \"language\">;\n\nconst defaultLocale = {\n  preview: \"Preview\",\n  edit: \"Edit\",\n};\n\nexport const MarkdownEditor = ({\n  lineNumbers = false,\n  value = \"\",\n  onChange = () => {},\n  variant,\n  allowPreview = false,\n  locale = defaultLocale,\n  height,\n  ...props\n}: MarkdownEditorProps) => {\n  const editor = useRef<CodeEditorRef>();\n  const [isPreview, setIsPreview] = useState(false);\n\n  function getContent() {\n    return editor.current?.state.doc.toString() || \"\";\n  }\n\n  return (\n    <Box\n      position=\"relative\"\n      minHeight=\"80px\"\n      height={height}\n      overflowY=\"auto\"\n      css={(theme) => [\n        variant === \"outlined\" &&\n          css`\n            border-style: solid;\n            border-radius: ${theme.radii.small};\n            border-width: ${theme.borderWidths.standard};\n            border-color: ${theme.colors.neutral[\"200\"]};\n\n            > div,\n            > div > div {\n              border-radius: ${theme.radii.small};\n            }\n          `,\n        variant === \"input\" &&\n          css`\n            border-radius: ${theme.radii.small};\n            border-color: ${theme.colors.neutral[\"100\"]};\n            border-style: solid;\n            border-width: ${theme.borderWidths.standard};\n\n            > div,\n            > div > div {\n              border-radius: ${theme.radii.small};\n            }\n          `,\n      ]}\n    >\n      {allowPreview && (\n        <ButtonSecondary\n          tone=\"accent\"\n          onClick={() => setIsPreview((p) => !p)}\n          css={(theme) => css`\n            position: absolute;\n            top: 5px;\n            right: 5px;\n            font-size: ${theme.fontSizes.xsmall};\n            z-index: 99;\n            opacity: 0.8;\n          `}\n        >\n          {isPreview ? locale.edit : locale.preview}\n        </ButtonSecondary>\n      )}\n      {isPreview ? (\n        <Box p=\"xxsmall\">\n          <Markdown markdown={getContent()} />\n        </Box>\n      ) : (\n        <CodeEditor\n          ref={editor}\n          variant=\"normal\"\n          language=\"markdown\"\n          wrapLines\n          lineNumbers={lineNumbers}\n          value={value}\n          onChange={onChange}\n          {...props}\n        />\n      )}\n    </Box>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { Fragment, ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Avatar } from \"./Avatar\";\nimport { Box } from \"./Box\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { useClickOutsideListener, useTheme } from \"./hooks\";\nimport { Icon, IconProps } from \"./Icon\";\nimport { Menu, X } from \"./icons/outline\";\nimport { Logo } from \"./Logo\";\nimport { Text } from \"./Text\";\nimport { TextLink } from \"./TextLink\";\n\ntype NavLinkProps = {\n  active?: boolean;\n  label?: string;\n  href: string;\n};\n\ntype ProfileLinkProps = {\n  label?: string;\n  href: string;\n};\n\ntype ActionLinkProps = {\n  label?: string;\n  href: string;\n  variant?: NavItemProps[\"variant\"];\n};\n\ntype TrayIconProps = {\n  icon: ReactNode;\n  badge?: IconProps[\"badge\"];\n  label: string;\n  href: string;\n};\n\nexport const TrayIcon = ({ icon, badge, label, href }: TrayIconProps) => {\n  return (\n    <TextLink\n      css={(theme) => css`\n        position: relative;\n        padding: ${theme.space.xxsmall};\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        border-radius: ${theme.radii.standard};\n        color: ${theme.colors.primary[\"50\"]};\n        :hover {\n          background-color: ${theme.colors.primary[\"800\"]};\n        }\n        svg {\n          margin-left: 0;\n        }\n      `}\n      aria-label={label}\n      title={label}\n      href={href}\n    >\n      <Icon badge={badge} color=\"currentColor\">\n        {icon}\n      </Icon>\n    </TextLink>\n  );\n};\n\nexport type NavProps = {\n  children?: ReactNode;\n  logo?: ReactNode;\n  tray?: TrayIconProps[];\n  links?: NavLinkProps[];\n  actionLinks?: ActionLinkProps[];\n  profileLinks?: ProfileLinkProps[];\n  profile?: {\n    image?: string;\n    username?: string;\n    email?: string;\n  };\n};\n\nexport type NavItemProps = {\n  children?: string;\n  active?: boolean;\n  variant?: \"primary\" | \"secondary\" | \"menu\" | \"accent\";\n  href: string;\n};\n\nexport const NavItem = ({\n  active,\n  children,\n  variant = \"primary\",\n  href,\n}: NavItemProps) => {\n  const [theme] = useTheme();\n  let textColor: string = theme.colors.primary[\"50\"];\n  let focusBackgroundColor: string = theme.colors.primary[\"700\"];\n  switch (variant) {\n    case \"primary\":\n      textColor = theme.colors.primary[\"50\"];\n      break;\n    case \"secondary\":\n      textColor = theme.colors.primary[\"200\"];\n      break;\n    case \"accent\":\n      textColor = theme.colors.accent[\"100\"];\n      focusBackgroundColor = theme.colors.accent[\"600\"];\n      break;\n    case \"menu\":\n      textColor = theme.colors.primary[\"600\"];\n      break;\n  }\n  return (\n    <TextLink\n      href={href}\n      css={(theme) => [\n        css`\n          font-size: ${theme.fontSizes.standard};\n          font-weight: ${theme.fontWeights.semibold};\n          border-radius: ${theme.radii.medium};\n          padding: ${theme.space.xsmall} ${theme.space.small};\n          user-select: none;\n          min-inline-size: max-content;\n          cursor: pointer;\n          display: inline-block;\n          color: ${textColor};\n        `,\n        active &&\n          css`\n            color: white;\n            background-color: ${theme.colors.primary[\"800\"]};\n          `,\n        variant !== \"menu\" &&\n          css`\n            text-decoration: none;\n\n            :focus {\n              outline: none;\n              color: ${textColor};\n              background-color: ${focusBackgroundColor};\n            }\n\n            :hover {\n              background-color: ${focusBackgroundColor};\n            }\n          `,\n\n        variant === \"menu\" &&\n          css`\n            border-radius: 0;\n            text-decoration: none;\n            :focus {\n              color: ${theme.colors.primary[\"800\"]};\n            }\n\n            :hover {\n              color: ${theme.colors.primary[\"800\"]};\n              background-color: ${theme.colors.primary[\"50\"]};\n            }\n          `,\n      ]}\n    >\n      {children}\n    </TextLink>\n  );\n};\n\ntype NavMenuButtonProps = {\n  open?: boolean;\n  onClick?: ButtonProps[\"onClick\"];\n};\n\nconst NavMenuButton = ({ open, onClick }: NavMenuButtonProps) => {\n  return (\n    <Button\n      onClick={onClick}\n      textColor=\"primary.50\"\n      backgroundColor=\"transparent\"\n      css={(theme) => [\n        css`\n          transition: background-color 0.5s ease;\n          padding: 6px;\n          :focus {\n            outline: none;\n            color: white;\n            background-color: ${theme.colors.primary[\"700\"]};\n          }\n\n          :hover {\n            background-color: ${theme.colors.primary[\"700\"]};\n          }\n          svg {\n            height: 1.5em;\n            width: 1.5em;\n          }\n        `,\n      ]}\n    >\n      {open ? <X /> : <Menu />}\n    </Button>\n  );\n};\n\nexport const Nav = ({\n  logo,\n  tray,\n  profile,\n  links,\n  profileLinks,\n  actionLinks,\n}: NavProps) => {\n  const [open, setOpen] = useState(false);\n  const [profileOpen, setProfileOpen] = useState(false);\n  const profileMenuRef = useRef<HTMLDivElement>(null);\n  const navItemsRef = useRef<HTMLDivElement>(null);\n  const [isOverflown, setIsOverflown] = useState<boolean>(false);\n\n  useClickOutsideListener(profileMenuRef, () => setProfileOpen(false));\n\n  function checkOverflow() {\n    if (navItemsRef.current && navItemsRef.current.parentElement) {\n      navItemsRef.current.parentElement.style.display = \"block\";\n      const isOverflown =\n        navItemsRef.current.offsetWidth < navItemsRef.current.scrollWidth;\n      setIsOverflown(isOverflown);\n      navItemsRef.current.parentElement.style.display = isOverflown\n        ? \"none\"\n        : \"block\";\n    }\n  }\n\n  useEffect(() => {\n    checkOverflow();\n    window.addEventListener(\"resize\", checkOverflow);\n\n    return () => window.removeEventListener(\"resize\", checkOverflow);\n  }, []);\n\n  function toggleOpen() {\n    setOpen((o) => !o);\n  }\n\n  function toggleProfileOpen() {\n    setProfileOpen((o) => !o);\n  }\n\n  return (\n    <Fragment>\n      <Box\n        as=\"nav\"\n        aria-label=\"top-menu\"\n        backgroundColor=\"primary.900\"\n        textColor=\"primary.50\"\n      >\n        <Box maxWidth=\"large\" mx=\"auto\">\n          <Box\n            display=\"flex\"\n            justifyContent=\"space-between\"\n            alignItems=\"center\"\n            height=\"4rem\"\n            px={[\"small\", \"medium\", \"medium\"]}\n          >\n            <Box display=\"flex\" alignItems=\"center\">\n              <Box display=\"flex\" alignItems=\"center\" mr=\"small\">\n                {logo ? (\n                  logo\n                ) : (\n                  <Logo color=\"currentColor\" height=\"40px\" width=\"40px\" />\n                )}\n              </Box>\n              <Box display={isOverflown ? \"none\" : \"block\"}>\n                <Box\n                  ref={navItemsRef}\n                  overflow=\"hidden\"\n                  marginLeft={logo ? [\"none\", \"large\", \"xlarge\"] : \"none\"}\n                  display=\"flex\"\n                  alignItems=\"baseline\"\n                  css={css`\n                    & > :nth-of-type(1) {\n                      margin: 0;\n                    }\n\n                    & > a {\n                      display: inline-block;\n                      margin-left: 16px;\n                    }\n                  `}\n                >\n                  {links?.map((link) => (\n                    <NavItem\n                      key={link.label}\n                      active={link.active}\n                      href={link.href}\n                    >\n                      {link.label}\n                    </NavItem>\n                  ))}\n                </Box>\n              </Box>\n            </Box>\n            <Box>\n              <Box\n                display=\"flex\"\n                marginLeft={[\"none\", \"xsmall\", \"small\"]}\n                alignItems=\"center\"\n                marginY=\"small\"\n                css={css`\n                  & > a,\n                  & > div {\n                    margin-left: 16px;\n                  }\n                `}\n              >\n                {tray?.map(({ badge, icon, label, href }) => (\n                  <TrayIcon\n                    key={label}\n                    badge={badge}\n                    icon={icon}\n                    href={href}\n                    label={label}\n                  />\n                ))}\n                {actionLinks && (\n                  <Box\n                    position=\"relative\"\n                    display={isOverflown ? \"none\" : \"block\"}\n                  >\n                    {actionLinks.map((a) => (\n                      <NavItem\n                        variant={a.variant || \"secondary\"}\n                        key={a.href}\n                        href={a.href}\n                      >\n                        {a.label}\n                      </NavItem>\n                    ))}\n                  </Box>\n                )}\n                {profile && (\n                  <Box\n                    position=\"relative\"\n                    display={isOverflown ? \"none\" : \"block\"}\n                  >\n                    <Box\n                      display=\"flex\"\n                      alignItems=\"center\"\n                      cursor=\"pointer\"\n                      id=\"profile-menu\"\n                      aria-label=\"Profile Menu\"\n                      position=\"relative\"\n                      aria-haspopup=\"true\"\n                      onClick={toggleProfileOpen}\n                    >\n                      <Avatar\n                        src={profile?.image}\n                        placeholder={profile?.image === undefined}\n                        username={profile?.username}\n                        size=\"40px\"\n                      />\n                    </Box>\n                    {profileOpen && (\n                      <Box\n                        ref={profileMenuRef}\n                        position=\"absolute\"\n                        marginTop=\"xsmall\"\n                        zIndex=\"50\"\n                        css={css`\n                          transform-origin: top right;\n                          width: 12rem;\n                        `}\n                        right={0}\n                        borderRadius=\"standard\"\n                        boxShadow=\"large\"\n                      >\n                        <Box\n                          borderRadius=\"standard\"\n                          backgroundColor=\"card\"\n                          role=\"menu\"\n                          aria-orientation=\"vertical\"\n                          aria-labelledby=\"user-menu\"\n                          boxShadow=\"small\"\n                          overflow=\"hidden\"\n                          css={css`\n                            & > a {\n                              display: block !important;\n                            }\n                          `}\n                        >\n                          {profileLinks?.map((profileLink) => (\n                            <NavItem\n                              variant=\"menu\"\n                              key={profileLink.label}\n                              href={profileLink.href}\n                            >\n                              {profileLink.label}\n                            </NavItem>\n                          ))}\n                        </Box>\n                      </Box>\n                    )}\n                  </Box>\n                )}\n              </Box>\n            </Box>\n            <Box display={isOverflown ? \"block\" : \"none\"}>\n              <NavMenuButton open={open} onClick={toggleOpen} />\n            </Box>\n          </Box>\n          <Box\n            display={open && isOverflown ? \"block\" : \"none\"}\n            position=\"absolute\"\n            top=\"64px\"\n            right=\"0\"\n            left=\"0\"\n            overflowY=\"auto\"\n            maxHeight=\"70vh\"\n            borderBottomLeftRadius={[\"standard\", \"none\"]}\n            backgroundColor=\"primary.900\"\n            borderBottomRightRadius={[\"standard\", \"none\"]}\n            boxShadow=\"standard\"\n            zIndex=\"40\"\n            px={[\"small\", \"medium\", \"medium\"]}\n          >\n            <Box\n              paddingBottom=\"xsmall\"\n              css={css`\n                & > :nth-of-type(1) {\n                  margin-top: 0;\n                }\n                & > a {\n                  display: block !important;\n                  margin-top: 8px;\n                }\n              `}\n            >\n              {links?.map((link) => (\n                <NavItem key={link.label} active={link.active} href={link.href}>\n                  {link.label}\n                </NavItem>\n              ))}\n            </Box>\n            {actionLinks && (\n              <Box\n                paddingY=\"small\"\n                borderTopColor=\"primary.600\"\n                borderTopStyle=\"solid\"\n                borderTopWidth=\"light\"\n              >\n                {actionLinks?.map((a) => (\n                  <NavItem\n                    key={a.href}\n                    href={a.href}\n                    variant={a.variant || \"secondary\"}\n                  >\n                    {a.label}\n                  </NavItem>\n                ))}\n              </Box>\n            )}\n            {profile && (\n              <Box\n                borderTopColor=\"primary.600\"\n                borderTopStyle=\"solid\"\n                borderTopWidth=\"light\"\n                paddingY=\"small\"\n              >\n                <Box display=\"flex\" paddingLeft=\"small\" mb=\"xxsmall\">\n                  <Box mr=\"xsmall\">\n                    <Avatar\n                      src={profile.image}\n                      placeholder={profile.image === undefined}\n                      size=\"40px\"\n                    />\n                  </Box>\n                  <Box>\n                    <Text>{profile.username}</Text>\n                    <Text fontSize=\"xsmall\" textColor=\"primary.200\">\n                      {profile.email}\n                    </Text>\n                  </Box>\n                </Box>\n                <Box\n                  css={css`\n                    & > a {\n                      display: block !important;\n                    }\n                  `}\n                >\n                  {profileLinks?.map((profileLink) => (\n                    <NavItem\n                      variant=\"secondary\"\n                      key={profileLink.label}\n                      href={profileLink.href}\n                    >\n                      {profileLink.label}\n                    </NavItem>\n                  ))}\n                </Box>\n              </Box>\n            )}\n          </Box>\n        </Box>\n      </Box>\n    </Fragment>\n  );\n};\n", "function ChevronDownIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" {...props}>\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth={2}\n        d=\"M19 9l-7 7-7-7\"\n      />\n    </svg>\n  );\n}\n\nexport default ChevronDownIcon;\n", "function ChevronUpIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" {...props}>\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth={2}\n        d=\"M5 15l7-7 7 7\"\n      />\n    </svg>\n  );\n}\n\nexport default ChevronUpIcon;\n", "function MenuIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" {...props}>\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth={2}\n        d=\"M4 6h16M4 12h16M4 18h16\"\n      />\n    </svg>\n  );\n}\n\nexport default MenuIcon;\n", "function XIcon(props: React.SVGProps<SVGSVGElement>) {\n  return (\n    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" {...props}>\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth={2}\n        d=\"M6 18L18 6M6 6l12 12\"\n      />\n    </svg>\n  );\n}\n\nexport default XIcon;\n", "import { ChangeEvent, KeyboardEvent } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\nimport { StyledInput } from \"./Input\";\nimport { ChevronDown, ChevronUp } from \"./icons/outline\";\n\nexport type NumberInputProps = {\n  id?: string;\n  max?: number;\n  min?: number;\n  step?: number;\n  value?: number;\n  onChange?: (n: number | null) => void;\n  onBlur?: () => void;\n  disabled?: boolean;\n  error?: boolean;\n  required?: boolean;\n};\n\nexport const NumberInput = ({\n  id,\n  min,\n  max,\n  step = 1,\n  value = 0,\n  onChange = () => {},\n  onBlur = () => {},\n  disabled = false,\n  error = false,\n  required = false,\n}: NumberInputProps) => {\n  function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n    let flag = true;\n    switch (e.key) {\n      case \"ArrowUp\":\n        increase();\n        break;\n      case \"ArrowDown\":\n        decrease();\n        break;\n      case \"Home\":\n        toMin();\n        break;\n      case \"End\":\n        toMax();\n        break;\n      default:\n        flag = false;\n    }\n\n    if (flag) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  function handleInnerChange(v: number | null) {\n    if (!disabled) {\n      onChange(v);\n    }\n  }\n\n  function handleChange(e: ChangeEvent<HTMLInputElement>) {\n    const n = Number(e.currentTarget.value);\n    if (Number.isNaN(n)) {\n      handleInnerChange(null);\n    } else {\n      handleInnerChange(n);\n    }\n  }\n\n  function toMax() {\n    if (max) {\n      handleInnerChange(max);\n    }\n  }\n\n  function toMin() {\n    if (min) {\n      handleInnerChange(min);\n    }\n  }\n\n  function increase() {\n    const newValue = value + step;\n    if (!max || newValue <= max) {\n      handleInnerChange(newValue);\n    }\n  }\n\n  function decrease() {\n    const newValue = value - step;\n    if (!min || newValue >= min) {\n      handleInnerChange(newValue);\n    }\n  }\n\n  return (\n    <Box position=\"relative\">\n      <StyledInput\n        id={id}\n        required={required}\n        disabled={disabled}\n        error={error}\n        padding=\"xsmall\"\n        css={css`\n          box-sizing: border-box;\n          appearance: none;\n          margin: 0;\n          width: 100%;\n          position: relative;\n          padding-left: 1rem;\n          padding-right: 1rem;\n        `}\n        onChange={handleChange}\n        value={value?.toString()}\n        onKeyDown={handleKeyDown}\n        onBlur={onBlur}\n        type=\"text\"\n        inputMode=\"decimal\"\n        pattern=\"[0-9]*(.[0-9]+)?\"\n        role=\"spinbutton\"\n      />\n      <Box\n        zIndex=\"10\"\n        cursor=\"pointer\"\n        position=\"absolute\"\n        borderLeftColor=\"neutral.100\"\n        borderLeftStyle=\"solid\"\n        css={css`\n          top: 1px;\n          bottom: 1px;\n          right: 2px;\n          border-left-width: 1px;\n        `}\n        width=\"24px\"\n      >\n        <Box\n          aria-label={`+${step}`}\n          height=\"50%\"\n          width=\"24px\"\n          textAlign=\"center\"\n          top={0}\n          backgroundColor=\"neutral.50\"\n          position=\"absolute\"\n          role=\"button\"\n          tabIndex={-1}\n          css={css`\n            border-bottom-width: 1px;\n          `}\n          borderBottomColor=\"neutral.100\"\n          borderBottomStyle=\"solid\"\n          onClick={increase}\n        >\n          <ChevronUp height=\"1em\" />\n        </Box>\n        <Box\n          aria-label={`-${step}`}\n          height=\"50%\"\n          bottom={0}\n          width=\"24px\"\n          textAlign=\"center\"\n          backgroundColor=\"neutral.50\"\n          position=\"absolute\"\n          role=\"button\"\n          tabIndex={-1}\n          onClick={decrease}\n        >\n          <ChevronDown height=\"1em\" />\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n", "import { ReactElement, ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { ButtonGroup } from \"./ButtonGroup\";\nimport { ButtonOutlineProps } from \"./ButtonOutline\";\nimport { ButtonPrimaryProps } from \"./ButtonPrimary\";\nimport { ButtonSecondaryProps } from \"./ButtonSecondary\";\nimport { Heading, HeadingProps } from \"./Heading\";\nimport { variant, styled } from \"./system\";\nimport { SystemColor, SystemShadows, SystemSizes } from \"./system/types\";\n\ntype ActionProps =\n  | ButtonPrimaryProps\n  | ButtonSecondaryProps\n  | ButtonOutlineProps;\n\nexport type PageHeaderProps = {\n  children?: ReactNode | string;\n  variant?: \"stack\" | \"overlap\";\n  lineClamp?: HeadingProps[\"lineClamp\"];\n  actions?: ReactElement<ActionProps> | ReactElement<ActionProps>[];\n  meta?: ReactNode;\n  maxWidth?: BoxProps[\"maxWidth\"];\n};\n\nconst StyledHeader = styled(Box)(\n  variant<\n    {\n      color?: SystemColor;\n      backgroundColor?: SystemColor;\n      boxShadow?: SystemShadows;\n      marginTop?: SystemSizes | SystemSizes[];\n      \"& > div\"?: object;\n    },\n    \"stack\" | \"overlap\",\n    string\n  >({\n    scale: \"pageHeader\",\n    prop: \"variant\",\n    variants: {\n      stack: {\n        backgroundColor: \"card\",\n        boxShadow: \"standard\",\n      },\n      overlap: {\n        backgroundColor: \"primary.900\",\n        color: \"primary.50\",\n        \"& > div\": {\n          borderTopColor: \"primary.800\",\n          borderTopStyle: \"solid\",\n          borderTopWidth: \"standard\",\n          paddingTop: [\"medium\", \"large\"],\n        },\n      },\n    },\n  })\n);\n\nexport const PageHeader = ({\n  children,\n  lineClamp = 2,\n  variant = \"stack\",\n  actions,\n  meta,\n  maxWidth = \"large\",\n}: PageHeaderProps) => {\n  return (\n    <StyledHeader as=\"header\" variant={variant}>\n      <Box\n        maxWidth={maxWidth}\n        margin=\"auto\"\n        display=\"flex\"\n        alignItems=\"center\"\n        justifyContent=\"space-between\"\n        paddingY={[\"xxsmall\", \"small\"]}\n        px={[\"small\", \"medium\", \"medium\"]}\n        flexWrap=\"wrap\"\n        gap=\"standard\"\n      >\n        <Box display=\"flex\" flexDirection=\"column\">\n          <Box mr={[\"small\", \"medium\", \"medium\"]}>\n            {typeof children === \"string\" ? (\n              <Heading\n                title={children}\n                lineClamp={lineClamp}\n                as=\"h1\"\n                fontSize=\"xlarge\"\n              >\n                {children}\n              </Heading>\n            ) : (\n              children\n            )}\n          </Box>\n          {meta && <Box>{meta}</Box>}\n        </Box>\n        {actions && <ButtonGroup space=\"xsmall\">{actions}</ButtonGroup>}\n      </Box>\n    </StyledHeader>\n  );\n};\n", "import { Input, InputProps } from \"./Input\";\n\nexport type PasswordInputProps = {} & InputProps;\n\nexport const PasswordInput = ({ ...props }: PasswordInputProps) => {\n  return <Input type=\"password\" {...props} />;\n};\n", "import { ReactNode, useContext } from \"react\";\nimport {\n  LinkComponentContext,\n  LinkComponentProvider,\n  LinkComponentProviderProps,\n} from \"./LinkComponentProvider\";\nimport { NotificationsProvider } from \"./NotificationsProvider\";\nimport { ThemeProvider, ThemeProviderProps } from \"./ThemeProvider\";\n\nexport type PatchesProviderProps = {\n  children?: ReactNode;\n} & ThemeProviderProps &\n  Partial<LinkComponentProviderProps>;\n\nexport const PatchesProvider = ({\n  children,\n  theme,\n  linkComponent,\n  standalone\n}: PatchesProviderProps) => {\n  const linkComponentFromContext = useContext(LinkComponentContext);\n  return (\n    <ThemeProvider theme={theme} standalone={standalone}>\n      <NotificationsProvider>\n        <LinkComponentProvider\n          linkComponent={linkComponent || linkComponentFromContext}\n        >\n          {children}\n        </LinkComponentProvider>\n      </NotificationsProvider>\n    </ThemeProvider>\n  );\n};\n", "import { css, Global } from \"@emotion/react\";\nimport { Fragment, ReactNode } from \"react\";\nimport { toast, ToastContainer, ToastContainerProps } from \"react-toastify\";\n\nexport type NotificationsProviderProps = {\n  children?: ReactNode;\n} & ToastContainerProps;\n\nexport const notify = {\n  info: toast.info,\n  warn: toast.warn,\n  success: toast.success,\n  error: toast.error,\n  dismiss: toast.dismiss,\n  isActive: toast.isActive,\n  update: toast.update,\n  clearWaitingQueue: toast.clearWaitingQueue,\n  done: toast.done,\n};\n\nexport const NotificationsProvider = ({\n  children,\n  ...props\n}: NotificationsProviderProps) => {\n  return (\n    <Fragment>\n      <Global\n        styles={(theme) => css`\n          :root {\n            --toastify-color-light: ${theme.colors.card};\n            --toastify-color-dark: ${theme.colors.neutral[\"900\"]};\n            --toastify-color-info: ${theme.colors.info[\"500\"]};\n            --toastify-color-success: ${theme.colors.success[\"500\"]};\n            --toastify-color-warning: ${theme.colors.warning[\"500\"]};\n            --toastify-color-error: ${theme.colors.error[\"500\"]};\n            --toastify-color-transparent: rgba(255, 255, 255, 0.7);\n            --toastify-icon-color-info: var(--toastify-color-info);\n            --toastify-icon-color-success: var(--toastify-color-success);\n            --toastify-icon-color-warning: var(--toastify-color-warning);\n            --toastify-icon-color-error: var(--toastify-color-error);\n            --toastify-toast-width: 320px;\n            --toastify-toast-background: ${theme.colors.card};\n            --toastify-toast-min-height: 64px;\n            --toastify-toast-max-height: 800px;\n            --toastify-font-family: sans-serif;\n            --toastify-z-index: 9999;\n            --toastify-text-color-light: ${theme.colors.text};\n            --toastify-text-color-dark: ${theme.colors.text};\n            --toastify-text-color-info: ${theme.colors.text};\n            --toastify-text-color-success: ${theme.colors.text};\n            --toastify-text-color-warning: ${theme.colors.text};\n            --toastify-text-color-error: ${theme.colors.text};\n            --toastify-spinner-color: #616161;\n            --toastify-spinner-color-empty-area: #e0e0e0;\n            --toastify-color-progress-light: ${theme.colors.accent[\"500\"]};\n            --toastify-color-progress-dark: ${theme.colors.accent[\"500\"]};\n            --toastify-color-progress-info: var(--toastify-color-info);\n            --toastify-color-progress-success: var(--toastify-color-success);\n            --toastify-color-progress-warning: var(--toastify-color-warning);\n            --toastify-color-progress-error: var(--toastify-color-error);\n          }\n\n          .Toastify__toast-container {\n            z-index: var(--toastify-z-index);\n            -webkit-transform: translate3d(0, 0, var(--toastify-z-index) px);\n            position: fixed;\n            padding: 4px;\n            width: var(--toastify-toast-width);\n            box-sizing: border-box;\n            color: #fff;\n          }\n          .Toastify__toast-container--top-left {\n            top: 1em;\n            left: 1em;\n          }\n          .Toastify__toast-container--top-center {\n            top: 1em;\n            left: 50%;\n            transform: translateX(-50%);\n          }\n          .Toastify__toast-container--top-right {\n            top: 1em;\n            right: 1em;\n          }\n          .Toastify__toast-container--bottom-left {\n            bottom: 1em;\n            left: 1em;\n          }\n          .Toastify__toast-container--bottom-center {\n            bottom: 1em;\n            left: 50%;\n            transform: translateX(-50%);\n          }\n          .Toastify__toast-container--bottom-right {\n            bottom: 1em;\n            right: 1em;\n          }\n\n          @media only screen and (max-width: 480px) {\n            .Toastify__toast-container {\n              width: 100vw;\n              padding: 0;\n              left: 0;\n              margin: 0;\n            }\n            .Toastify__toast-container--top-left,\n            .Toastify__toast-container--top-center,\n            .Toastify__toast-container--top-right {\n              top: 0;\n              transform: translateX(0);\n            }\n            .Toastify__toast-container--bottom-left,\n            .Toastify__toast-container--bottom-center,\n            .Toastify__toast-container--bottom-right {\n              bottom: 0;\n              transform: translateX(0);\n            }\n            .Toastify__toast-container--rtl {\n              right: 0;\n              left: initial;\n            }\n          }\n          .Toastify__toast {\n            position: relative;\n            min-height: var(--toastify-toast-min-height);\n            box-sizing: border-box;\n            margin-bottom: 1rem;\n            padding: 8px;\n            border-radius: 4px;\n            box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1),\n              0 2px 15px 0 rgba(0, 0, 0, 0.05);\n            display: -ms-flexbox;\n            display: flex;\n            -ms-flex-pack: justify;\n            justify-content: space-between;\n            max-height: var(--toastify-toast-max-height);\n            overflow: hidden;\n            font-family: var(--toastify-font-family);\n            cursor: pointer;\n            direction: ltr;\n          }\n          .Toastify__toast--rtl {\n            direction: rtl;\n          }\n          .Toastify__toast-body {\n            margin: auto 0;\n            -ms-flex: 1 1 auto;\n            flex: 1 1 auto;\n            padding: 6px;\n            display: -ms-flexbox;\n            display: flex;\n            -ms-flex-align: center;\n            align-items: center;\n          }\n          .Toastify__toast-body > div:last-child {\n            -ms-flex: 1;\n            flex: 1;\n          }\n          .Toastify__toast-icon {\n            -webkit-margin-end: 10px;\n            margin-inline-end: 10px;\n            width: 20px;\n            -ms-flex-negative: 0;\n            flex-shrink: 0;\n            display: -ms-flexbox;\n            display: flex;\n          }\n\n          .Toastify--animate {\n            animation-fill-mode: both;\n            animation-duration: 0.7s;\n          }\n\n          .Toastify--animate-icon {\n            animation-fill-mode: both;\n            animation-duration: 0.3s;\n          }\n\n          @media only screen and (max-width: 480px) {\n            .Toastify__toast {\n              margin-bottom: 0;\n              border-radius: 0;\n            }\n          }\n          .Toastify__toast-theme--dark {\n            background: var(--toastify-color-dark);\n            color: var(--toastify-text-color-dark);\n          }\n          .Toastify__toast-theme--light {\n            background: var(--toastify-color-light);\n            color: var(--toastify-text-color-light);\n          }\n          .Toastify__toast-theme--colored.Toastify__toast--default {\n            background: var(--toastify-color-light);\n            color: var(--toastify-text-color-light);\n          }\n          .Toastify__toast-theme--colored.Toastify__toast--info {\n            color: var(--toastify-text-color-info);\n            background: var(--toastify-color-info);\n          }\n          .Toastify__toast-theme--colored.Toastify__toast--success {\n            color: var(--toastify-text-color-success);\n            background: var(--toastify-color-success);\n          }\n          .Toastify__toast-theme--colored.Toastify__toast--warning {\n            color: var(--toastify-text-color-warning);\n            background: var(--toastify-color-warning);\n          }\n          .Toastify__toast-theme--colored.Toastify__toast--error {\n            color: var(--toastify-text-color-error);\n            background: var(--toastify-color-error);\n          }\n\n          .Toastify__progress-bar-theme--light {\n            background: var(--toastify-color-progress-light);\n          }\n          .Toastify__progress-bar-theme--dark {\n            background: var(--toastify-color-progress-dark);\n          }\n          .Toastify__progress-bar--info {\n            background: var(--toastify-color-progress-info);\n          }\n          .Toastify__progress-bar--success {\n            background: var(--toastify-color-progress-success);\n          }\n          .Toastify__progress-bar--warning {\n            background: var(--toastify-color-progress-warning);\n          }\n          .Toastify__progress-bar--error {\n            background: var(--toastify-color-progress-error);\n          }\n          .Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,\n          .Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,\n          .Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,\n          .Toastify__progress-bar-theme--colored.Toastify__progress-bar--error {\n            background: var(--toastify-color-transparent);\n          }\n\n          .Toastify__close-button {\n            color: #fff;\n            background: transparent;\n            outline: none;\n            border: none;\n            padding: 0;\n            cursor: pointer;\n            opacity: 0.7;\n            transition: 0.3s ease;\n            -ms-flex-item-align: start;\n            align-self: flex-start;\n          }\n          .Toastify__close-button--light {\n            color: #000;\n            opacity: 0.3;\n          }\n          .Toastify__close-button > svg {\n            fill: currentColor;\n            height: 16px;\n            width: 14px;\n          }\n          .Toastify__close-button:hover,\n          .Toastify__close-button:focus {\n            opacity: 1;\n          }\n\n          @keyframes Toastify__trackProgress {\n            0% {\n              transform: scaleX(1);\n            }\n            100% {\n              transform: scaleX(0);\n            }\n          }\n          .Toastify__progress-bar {\n            position: absolute;\n            bottom: 0;\n            left: 0;\n            width: 100%;\n            height: 5px;\n            z-index: var(--toastify-z-index);\n            opacity: 0.7;\n            transform-origin: left;\n          }\n          .Toastify__progress-bar--animated {\n            animation: Toastify__trackProgress linear 1 forwards;\n          }\n          .Toastify__progress-bar--controlled {\n            transition: transform 0.2s;\n          }\n          .Toastify__progress-bar--rtl {\n            right: 0;\n            left: initial;\n            transform-origin: right;\n          }\n\n          .Toastify__spinner {\n            width: 20px;\n            height: 20px;\n            box-sizing: border-box;\n            border: 2px solid;\n            border-radius: 100%;\n            border-color: var(--toastify-spinner-color-empty-area);\n            border-right-color: var(--toastify-spinner-color);\n            animation: Toastify__spin 0.65s linear infinite;\n          }\n\n          @keyframes Toastify__bounceInRight {\n            from,\n            60%,\n            75%,\n            90%,\n            to {\n              animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n            }\n            from {\n              opacity: 0;\n              transform: translate3d(3000px, 0, 0);\n            }\n            60% {\n              opacity: 1;\n              transform: translate3d(-25px, 0, 0);\n            }\n            75% {\n              transform: translate3d(10px, 0, 0);\n            }\n            90% {\n              transform: translate3d(-5px, 0, 0);\n            }\n            to {\n              transform: none;\n            }\n          }\n          @keyframes Toastify__bounceOutRight {\n            20% {\n              opacity: 1;\n              transform: translate3d(-20px, 0, 0);\n            }\n            to {\n              opacity: 0;\n              transform: translate3d(2000px, 0, 0);\n            }\n          }\n          @keyframes Toastify__bounceInLeft {\n            from,\n            60%,\n            75%,\n            90%,\n            to {\n              animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n            }\n            0% {\n              opacity: 0;\n              transform: translate3d(-3000px, 0, 0);\n            }\n            60% {\n              opacity: 1;\n              transform: translate3d(25px, 0, 0);\n            }\n            75% {\n              transform: translate3d(-10px, 0, 0);\n            }\n            90% {\n              transform: translate3d(5px, 0, 0);\n            }\n            to {\n              transform: none;\n            }\n          }\n          @keyframes Toastify__bounceOutLeft {\n            20% {\n              opacity: 1;\n              transform: translate3d(20px, 0, 0);\n            }\n            to {\n              opacity: 0;\n              transform: translate3d(-2000px, 0, 0);\n            }\n          }\n          @keyframes Toastify__bounceInUp {\n            from,\n            60%,\n            75%,\n            90%,\n            to {\n              animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n            }\n            from {\n              opacity: 0;\n              transform: translate3d(0, 3000px, 0);\n            }\n            60% {\n              opacity: 1;\n              transform: translate3d(0, -20px, 0);\n            }\n            75% {\n              transform: translate3d(0, 10px, 0);\n            }\n            90% {\n              transform: translate3d(0, -5px, 0);\n            }\n            to {\n              transform: translate3d(0, 0, 0);\n            }\n          }\n          @keyframes Toastify__bounceOutUp {\n            20% {\n              transform: translate3d(0, -10px, 0);\n            }\n            40%,\n            45% {\n              opacity: 1;\n              transform: translate3d(0, 20px, 0);\n            }\n            to {\n              opacity: 0;\n              transform: translate3d(0, -2000px, 0);\n            }\n          }\n          @keyframes Toastify__bounceInDown {\n            from,\n            60%,\n            75%,\n            90%,\n            to {\n              animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n            }\n            0% {\n              opacity: 0;\n              transform: translate3d(0, -3000px, 0);\n            }\n            60% {\n              opacity: 1;\n              transform: translate3d(0, 25px, 0);\n            }\n            75% {\n              transform: translate3d(0, -10px, 0);\n            }\n            90% {\n              transform: translate3d(0, 5px, 0);\n            }\n            to {\n              transform: none;\n            }\n          }\n          @keyframes Toastify__bounceOutDown {\n            20% {\n              transform: translate3d(0, 10px, 0);\n            }\n            40%,\n            45% {\n              opacity: 1;\n              transform: translate3d(0, -20px, 0);\n            }\n            to {\n              opacity: 0;\n              transform: translate3d(0, 2000px, 0);\n            }\n          }\n          .Toastify__bounce-enter--top-left,\n          .Toastify__bounce-enter--bottom-left {\n            animation-name: Toastify__bounceInLeft;\n          }\n          .Toastify__bounce-enter--top-right,\n          .Toastify__bounce-enter--bottom-right {\n            animation-name: Toastify__bounceInRight;\n          }\n          .Toastify__bounce-enter--top-center {\n            animation-name: Toastify__bounceInDown;\n          }\n          .Toastify__bounce-enter--bottom-center {\n            animation-name: Toastify__bounceInUp;\n          }\n\n          .Toastify__bounce-exit--top-left,\n          .Toastify__bounce-exit--bottom-left {\n            animation-name: Toastify__bounceOutLeft;\n          }\n          .Toastify__bounce-exit--top-right,\n          .Toastify__bounce-exit--bottom-right {\n            animation-name: Toastify__bounceOutRight;\n          }\n          .Toastify__bounce-exit--top-center {\n            animation-name: Toastify__bounceOutUp;\n          }\n          .Toastify__bounce-exit--bottom-center {\n            animation-name: Toastify__bounceOutDown;\n          }\n\n          @keyframes Toastify__zoomIn {\n            from {\n              opacity: 0;\n              transform: scale3d(0.3, 0.3, 0.3);\n            }\n            50% {\n              opacity: 1;\n            }\n          }\n          @keyframes Toastify__zoomOut {\n            from {\n              opacity: 1;\n            }\n            50% {\n              opacity: 0;\n              transform: scale3d(0.3, 0.3, 0.3);\n            }\n            to {\n              opacity: 0;\n            }\n          }\n          .Toastify__zoom-enter {\n            animation-name: Toastify__zoomIn;\n          }\n\n          .Toastify__zoom-exit {\n            animation-name: Toastify__zoomOut;\n          }\n\n          @keyframes Toastify__flipIn {\n            from {\n              transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n              animation-timing-function: ease-in;\n              opacity: 0;\n            }\n            40% {\n              transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n              animation-timing-function: ease-in;\n            }\n            60% {\n              transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n              opacity: 1;\n            }\n            80% {\n              transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n            }\n            to {\n              transform: perspective(400px);\n            }\n          }\n          @keyframes Toastify__flipOut {\n            from {\n              transform: perspective(400px);\n            }\n            30% {\n              transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n              opacity: 1;\n            }\n            to {\n              transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n              opacity: 0;\n            }\n          }\n          .Toastify__flip-enter {\n            animation-name: Toastify__flipIn;\n          }\n\n          .Toastify__flip-exit {\n            animation-name: Toastify__flipOut;\n          }\n\n          @keyframes Toastify__slideInRight {\n            from {\n              transform: translate3d(110%, 0, 0);\n              visibility: visible;\n            }\n            to {\n              transform: translate3d(0, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideInLeft {\n            from {\n              transform: translate3d(-110%, 0, 0);\n              visibility: visible;\n            }\n            to {\n              transform: translate3d(0, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideInUp {\n            from {\n              transform: translate3d(0, 110%, 0);\n              visibility: visible;\n            }\n            to {\n              transform: translate3d(0, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideInDown {\n            from {\n              transform: translate3d(0, -110%, 0);\n              visibility: visible;\n            }\n            to {\n              transform: translate3d(0, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideOutRight {\n            from {\n              transform: translate3d(0, 0, 0);\n            }\n            to {\n              visibility: hidden;\n              transform: translate3d(110%, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideOutLeft {\n            from {\n              transform: translate3d(0, 0, 0);\n            }\n            to {\n              visibility: hidden;\n              transform: translate3d(-110%, 0, 0);\n            }\n          }\n          @keyframes Toastify__slideOutDown {\n            from {\n              transform: translate3d(0, 0, 0);\n            }\n            to {\n              visibility: hidden;\n              transform: translate3d(0, 500px, 0);\n            }\n          }\n          @keyframes Toastify__slideOutUp {\n            from {\n              transform: translate3d(0, 0, 0);\n            }\n            to {\n              visibility: hidden;\n              transform: translate3d(0, -500px, 0);\n            }\n          }\n          .Toastify__slide-enter--top-left,\n          .Toastify__slide-enter--bottom-left {\n            animation-name: Toastify__slideInLeft;\n          }\n          .Toastify__slide-enter--top-right,\n          .Toastify__slide-enter--bottom-right {\n            animation-name: Toastify__slideInRight;\n          }\n          .Toastify__slide-enter--top-center {\n            animation-name: Toastify__slideInDown;\n          }\n          .Toastify__slide-enter--bottom-center {\n            animation-name: Toastify__slideInUp;\n          }\n\n          .Toastify__slide-exit--top-left,\n          .Toastify__slide-exit--bottom-left {\n            animation-name: Toastify__slideOutLeft;\n          }\n          .Toastify__slide-exit--top-right,\n          .Toastify__slide-exit--bottom-right {\n            animation-name: Toastify__slideOutRight;\n          }\n          .Toastify__slide-exit--top-center {\n            animation-name: Toastify__slideOutUp;\n          }\n          .Toastify__slide-exit--bottom-center {\n            animation-name: Toastify__slideOutDown;\n          }\n\n          @keyframes Toastify__spin {\n            from {\n              transform: rotate(0deg);\n            }\n            to {\n              transform: rotate(360deg);\n            }\n          }\n        `}\n      />\n      <ToastContainer {...props} />\n      {children}\n    </Fragment>\n  );\n};\n", "function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n", "import { isValidElement } from 'react';\n\nimport { Id } from '../types';\n\nexport function isNum(v: any): v is Number {\n  return typeof v === 'number' && !isNaN(v);\n}\n\nexport function isBool(v: any): v is Boolean {\n  return typeof v === 'boolean';\n}\n\nexport function isStr(v: any): v is String {\n  return typeof v === 'string';\n}\n\nexport function isFn(v: any): v is Function {\n  return typeof v === 'function';\n}\n\nexport function parseClassName(v: any) {\n  return isStr(v) || isFn(v) ? v : null;\n}\n\nexport function isToastIdValid(toastId?: Id) {\n  return toastId === 0 || toastId;\n}\n\nexport function getAutoCloseDelay(\n  toastAutoClose?: false | number,\n  containerAutoClose?: false | number\n) {\n  return toastAutoClose === false ||\n    (isNum(toastAutoClose) && toastAutoClose > 0)\n    ? toastAutoClose\n    : containerAutoClose;\n}\n\nexport function canBeRendered<T>(content: T): boolean {\n  return (\n    isValidElement(content) || isStr(content) || isFn(content) || isNum(content)\n  );\n}\n", "import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n  | 'TOP_LEFT'\n  | 'TOP_RIGHT'\n  | 'TOP_CENTER'\n  | 'BOTTOM_LEFT'\n  | 'BOTTOM_RIGHT'\n  | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT';\n\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n  TOP_LEFT: 'top-left',\n  TOP_RIGHT: 'top-right',\n  TOP_CENTER: 'top-center',\n  BOTTOM_LEFT: 'bottom-left',\n  BOTTOM_RIGHT: 'bottom-right',\n  BOTTOM_CENTER: 'bottom-center'\n};\n\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n  INFO: 'info',\n  SUCCESS: 'success',\n  WARNING: 'warning',\n  ERROR: 'error',\n  DEFAULT: 'default'\n};\n\nexport const enum Default {\n  COLLAPSE_DURATION = 300,\n  DEBOUNCE_DURATION = 50,\n  CSS_NAMESPACE = 'Toastify',\n  DRAGGABLE_PERCENT = 80\n}\n\nexport const enum Direction {\n  X = 'x',\n  Y = 'y'\n}\n\nexport const enum SyntheticEvent {\n  ENTRANCE_ANIMATION_END = 'd'\n}\n", "import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n  node: HTMLElement,\n  done: () => void,\n  duration = Default.COLLAPSE_DURATION\n) {\n  const { scrollHeight, style } = node;\n\n  requestAnimationFrame(() => {\n    style.minHeight = 'initial';\n    style.height = scrollHeight + 'px';\n    style.transition = `all ${duration}ms`;\n\n    requestAnimationFrame(() => {\n      style.height = '0';\n      style.padding = '0';\n      style.margin = '0';\n      setTimeout(done, duration as number);\n    });\n  });\n}\n", "import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { collapseToast } from './collapseToast';\nimport { Default, SyntheticEvent } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n  /**\n   * Css class to apply when toast enter\n   */\n  enter: string;\n\n  /**\n   * Css class to apply when toast leave\n   */\n  exit: string;\n\n  /**\n   * Append current toast position to the classname.\n   * If multiple classes are provided, only the last one will get the position\n   * For instance `myclass--top-center`...\n   * `Default: false`\n   */\n  appendPosition?: boolean;\n\n  /**\n   * Collapse toast smoothly when exit animation end\n   * `Default: true`\n   */\n  collapse?: boolean;\n\n  /**\n   * Collapse transition duration\n   * `Default: 300`\n   */\n  collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n  Enter,\n  Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n *   enter: \"animate__animated animate__bounceIn\",\n *   exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n  enter,\n  exit,\n  appendPosition = false,\n  collapse = true,\n  collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n  return function ToastTransition({\n    children,\n    position,\n    preventExitTransition,\n    done,\n    nodeRef,\n    isIn\n  }: ToastTransitionProps) {\n    const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n    const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n    const baseClassName = useRef<string>();\n    const animationStep = useRef(AnimationStep.Enter);\n\n    useLayoutEffect(() => {\n      onEnter();\n    }, []);\n\n    useEffect(() => {\n      if (!isIn) preventExitTransition ? onExited() : onExit();\n    }, [isIn]);\n\n    function onEnter() {\n      const node = nodeRef.current!;\n      baseClassName.current = node.className;\n      node.className += ` ${enterClassName}`;\n      node.addEventListener('animationend', onEntered);\n      node.addEventListener('animationcancel', onEntered);\n    }\n\n    function onEntered(e: AnimationEvent) {\n      if (e.target !== nodeRef.current) return;\n\n      const node = nodeRef.current!;\n      node.dispatchEvent(new Event(SyntheticEvent.ENTRANCE_ANIMATION_END));\n      node.removeEventListener('animationend', onEntered);\n      node.removeEventListener('animationcancel', onEntered);\n      if (\n        animationStep.current === AnimationStep.Enter &&\n        e.type !== 'animationcancel'\n      ) {\n        node.className = baseClassName.current!;\n      }\n    }\n\n    function onExit() {\n      animationStep.current = AnimationStep.Exit;\n      const node = nodeRef.current!;\n\n      node.className += ` ${exitClassName}`;\n      node.addEventListener('animationend', onExited);\n    }\n\n    function onExited() {\n      const node = nodeRef.current!;\n\n      node.removeEventListener('animationend', onExited);\n      collapse ? collapseToast(node, done, collapseDuration) : done();\n    }\n\n    return <>{children}</>;\n  };\n}\n", "import { Toast, ToastItem, ToastItemStatus } from '../types';\n\nexport function toToastItem(toast: Toast, status: ToastItemStatus): ToastItem {\n  return {\n    content: toast.content,\n    containerId: toast.props.containerId,\n    id: toast.props.toastId,\n    theme: toast.props.theme,\n    type: toast.props.type,\n    data: toast.props.data || {},\n    isLoading: toast.props.isLoading,\n    icon: toast.props.icon,\n    status\n  };\n}\n", "import {\n  Id,\n  ToastContent,\n  ClearWaitingQueueParams,\n  NotValidatedToastProps,\n  ToastItem\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n  Show,\n  Clear,\n  DidMount,\n  WillUnmount,\n  Change,\n  ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n  content: ToastContent,\n  options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\n\nexport type OnChangeCallback = (toast: ToastItem) => void;\n\ntype Callback =\n  | OnShowCallback\n  | OnClearCallback\n  | OnClearWaitingQueue\n  | OnDidMountCallback\n  | OnWillUnmountCallback\n  | OnChangeCallback;\ntype TimeoutId = ReturnType<typeof setTimeout>;\n\nexport interface EventManager {\n  list: Map<Event, Callback[]>;\n  emitQueue: Map<Event, TimeoutId[]>;\n  on(event: Event.Show, callback: OnShowCallback): EventManager;\n  on(event: Event.Clear, callback: OnClearCallback): EventManager;\n  on(\n    event: Event.ClearWaitingQueue,\n    callback: OnClearWaitingQueue\n  ): EventManager;\n  on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n  on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n  on(event: Event.Change, callback: OnChangeCallback): EventManager;\n  off(event: Event, callback?: Callback): EventManager;\n  cancelEmit(event: Event): EventManager;\n  emit(\n    event: Event.Show,\n    content: React.ReactNode,\n    options: NotValidatedToastProps\n  ): void;\n  emit(event: Event.Clear, id?: string | number): void;\n  emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n  emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n  emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n  emit(event: Event.Change, data: ToastItem): void;\n}\n\nexport const eventManager: EventManager = {\n  list: new Map(),\n  emitQueue: new Map(),\n\n  on(event: Event, callback: Callback) {\n    this.list.has(event) || this.list.set(event, []);\n    this.list.get(event)!.push(callback);\n    return this;\n  },\n\n  off(event, callback) {\n    if (callback) {\n      const cb = this.list.get(event)!.filter(cb => cb !== callback);\n      this.list.set(event, cb);\n      return this;\n    }\n    this.list.delete(event);\n    return this;\n  },\n\n  cancelEmit(event) {\n    const timers = this.emitQueue.get(event);\n    if (timers) {\n      timers.forEach(clearTimeout);\n      this.emitQueue.delete(event);\n    }\n\n    return this;\n  },\n\n  /**\n   * Enqueue the event at the end of the call stack\n   * Doing so let the user call toast as follow:\n   * toast('1')\n   * toast('2')\n   * toast('3')\n   * Without setTimemout the code above will not work\n   */\n  emit(event: Event, ...args: any[]) {\n    this.list.has(event) &&\n      this.list.get(event)!.forEach((callback: Callback) => {\n        const timer: TimeoutId = setTimeout(() => {\n          // @ts-ignore\n          callback(...args);\n        }, 0);\n\n        this.emitQueue.has(event) || this.emitQueue.set(event, []);\n        this.emitQueue.get(event)!.push(timer);\n      });\n  }\n};\n", "import {\n  useEffect,\n  useRef,\n  useReducer,\n  cloneElement,\n  isValidElement,\n  useState\n} from 'react';\nimport {\n  parseClassName,\n  canBeRendered,\n  isBool,\n  isFn,\n  isNum,\n  isStr,\n  isToastIdValid,\n  getAutoCloseDelay,\n  toToastItem\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n  Id,\n  ToastContainerProps,\n  ToastProps,\n  ToastContent,\n  Toast,\n  ToastPosition,\n  ClearWaitingQueueParams,\n  NotValidatedToastProps,\n  ToastTransition\n} from '../types';\n\ninterface QueuedToast {\n  toastContent: ToastContent;\n  toastProps: ToastProps;\n  staleId?: Id;\n}\n\nexport interface ContainerInstance {\n  toastKey: number;\n  displayedToast: number;\n  props: ToastContainerProps;\n  containerId?: Id | null;\n  isToastActive: (toastId: Id) => boolean;\n  getToast: (id: Id) => Toast | null | undefined;\n  queue: QueuedToast[];\n  count: number;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n  const [, forceUpdate] = useReducer(x => x + 1, 0);\n  const [toastIds, setToastIds] = useState<Id[]>([]);\n  const containerRef = useRef(null);\n  const toastToRender = useRef(new Map<Id, Toast>()).current;\n  const isToastActive = (id: Id) => toastIds.indexOf(id) !== -1;\n  const instance = useRef<ContainerInstance>({\n    toastKey: 1,\n    displayedToast: 0,\n    count: 0,\n    queue: [],\n    props,\n    containerId: null,\n    isToastActive,\n    getToast: id => toastToRender.get(id)\n  }).current;\n\n  useEffect(() => {\n    instance.containerId = props.containerId;\n    eventManager\n      .cancelEmit(Event.WillUnmount)\n      .on(Event.Show, buildToast)\n      .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n      .on(Event.ClearWaitingQueue, clearWaitingQueue)\n      .emit(Event.DidMount, instance);\n\n    return () => eventManager.emit(Event.WillUnmount, instance);\n  }, []);\n\n  useEffect(() => {\n    instance.props = props;\n    instance.isToastActive = isToastActive;\n    instance.displayedToast = toastIds.length;\n  });\n\n  function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n    const { limit } = instance.props;\n    if (limit && (!containerId || instance.containerId === containerId)) {\n      instance.count -= instance.queue.length;\n      instance.queue = [];\n    }\n  }\n\n  function removeToast(toastId?: Id) {\n    setToastIds(state =>\n      isToastIdValid(toastId) ? state.filter(id => id !== toastId) : []\n    );\n  }\n\n  function dequeueToast() {\n    const { toastContent, toastProps, staleId } =\n      instance.queue.shift() as QueuedToast;\n    appendToast(toastContent, toastProps, staleId);\n  }\n\n  /**\n   * check if a container is attached to the dom\n   * check for multi-container, build only if associated\n   * check for duplicate toastId if no update\n   */\n  function isNotValid(options: NotValidatedToastProps) {\n    return (\n      !containerRef.current ||\n      (instance.props.enableMultiContainer &&\n        options.containerId !== instance.props.containerId) ||\n      (toastToRender.has(options.toastId) && options.updateId == null)\n    );\n  }\n\n  // this function and all the function called inside needs to rely on refs\n  function buildToast(\n    content: ToastContent,\n    { delay, staleId, ...options }: NotValidatedToastProps\n  ) {\n    if (!canBeRendered(content) || isNotValid(options)) return;\n\n    const { toastId, updateId, data } = options;\n    const { props } = instance;\n    const closeToast = () => removeToast(toastId);\n    const isNotAnUpdate = updateId == null;\n\n    if (isNotAnUpdate) instance.count++;\n\n    const toastProps: ToastProps = {\n      toastId,\n      updateId,\n      containerId: options.containerId,\n      isLoading: options.isLoading,\n      theme: options.theme || props.theme!,\n      icon: options.icon != null ? options.icon : props.icon,\n      isIn: false,\n      key: options.key || instance.toastKey++,\n      type: options.type!,\n      closeToast: closeToast,\n      closeButton: options.closeButton,\n      rtl: props.rtl,\n      position: options.position || (props.position as ToastPosition),\n      transition: options.transition || (props.transition as ToastTransition),\n      className: parseClassName(options.className || props.toastClassName),\n      bodyClassName: parseClassName(\n        options.bodyClassName || props.bodyClassName\n      ),\n      style: options.style || props.toastStyle,\n      bodyStyle: options.bodyStyle || props.bodyStyle,\n      onClick: options.onClick || props.onClick,\n      pauseOnHover: isBool(options.pauseOnHover)\n        ? options.pauseOnHover\n        : props.pauseOnHover,\n      pauseOnFocusLoss: isBool(options.pauseOnFocusLoss)\n        ? options.pauseOnFocusLoss\n        : props.pauseOnFocusLoss,\n      draggable: isBool(options.draggable)\n        ? options.draggable\n        : props.draggable,\n      draggablePercent:\n        options.draggablePercent || (props.draggablePercent as number),\n      draggableDirection:\n        options.draggableDirection || props.draggableDirection,\n      closeOnClick: isBool(options.closeOnClick)\n        ? options.closeOnClick\n        : props.closeOnClick,\n      progressClassName: parseClassName(\n        options.progressClassName || props.progressClassName\n      ),\n      progressStyle: options.progressStyle || props.progressStyle,\n      autoClose: options.isLoading\n        ? false\n        : getAutoCloseDelay(options.autoClose, props.autoClose),\n      hideProgressBar: isBool(options.hideProgressBar)\n        ? options.hideProgressBar\n        : props.hideProgressBar,\n      progress: options.progress,\n      role: options.role || props.role,\n      deleteToast() {\n        const removed = toToastItem(toastToRender.get(toastId)!, 'removed');\n        toastToRender.delete(toastId);\n\n        eventManager.emit(Event.Change, removed);\n\n        const queueLen = instance.queue.length;\n        instance.count = isToastIdValid(toastId)\n          ? instance.count - 1\n          : instance.count - instance.displayedToast;\n\n        if (instance.count < 0) instance.count = 0;\n\n        if (queueLen > 0) {\n          const freeSlot = isToastIdValid(toastId) ? 1 : instance.props.limit!;\n\n          if (queueLen === 1 || freeSlot === 1) {\n            instance.displayedToast++;\n            dequeueToast();\n          } else {\n            const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n            instance.displayedToast = toDequeue;\n\n            for (let i = 0; i < toDequeue; i++) dequeueToast();\n          }\n        } else {\n          forceUpdate();\n        }\n      }\n    };\n\n    if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n    if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n    toastProps.closeButton = props.closeButton;\n\n    if (options.closeButton === false || canBeRendered(options.closeButton)) {\n      toastProps.closeButton = options.closeButton;\n    } else if (options.closeButton === true) {\n      toastProps.closeButton = canBeRendered(props.closeButton)\n        ? props.closeButton\n        : true;\n    }\n\n    let toastContent = content;\n\n    if (isValidElement(content) && !isStr(content.type)) {\n      toastContent = cloneElement(content, {\n        closeToast,\n        toastProps,\n        data\n      });\n    } else if (isFn(content)) {\n      toastContent = content({ closeToast, toastProps, data });\n    }\n\n    // not handling limit + delay by design. Waiting for user feedback first\n    if (\n      props.limit &&\n      props.limit > 0 &&\n      instance.count > props.limit &&\n      isNotAnUpdate\n    ) {\n      instance.queue.push({ toastContent, toastProps, staleId });\n    } else if (isNum(delay)) {\n      setTimeout(() => {\n        appendToast(toastContent, toastProps, staleId);\n      }, delay);\n    } else {\n      appendToast(toastContent, toastProps, staleId);\n    }\n  }\n\n  function appendToast(\n    content: ToastContent,\n    toastProps: ToastProps,\n    staleId?: Id\n  ) {\n    const { toastId } = toastProps;\n\n    if (staleId) toastToRender.delete(staleId);\n\n    const toast = {\n      content,\n      props: toastProps\n    };\n    toastToRender.set(toastId, toast);\n\n    setToastIds(state => [...state, toastId].filter(id => id !== staleId));\n    eventManager.emit(\n      Event.Change,\n      toToastItem(toast, toast.props.updateId == null ? 'added' : 'updated')\n    );\n  }\n\n  function getToastToRender<T>(\n    cb: (position: ToastPosition, toastList: Toast[]) => T\n  ) {\n    const toRender = new Map<ToastPosition, Toast[]>();\n    const collection = Array.from(toastToRender.values());\n\n    if (props.newestOnTop) collection.reverse();\n\n    collection.forEach(toast => {\n      const { position } = toast.props;\n      toRender.has(position) || toRender.set(position, []);\n      toRender.get(position)!.push(toast);\n    });\n\n    return Array.from(toRender, p => cb(p[0], p[1]));\n  }\n\n  return {\n    getToastToRender,\n    containerRef,\n    isToastActive\n  };\n}\n", "import {\n  useState,\n  useRef,\n  useEffect,\n  isValidElement,\n  DOMAttributes\n} from 'react';\n\nimport { isFn, Default, Direction, SyntheticEvent } from '../utils';\nimport { ToastProps } from '../types';\n\ninterface Draggable {\n  start: number;\n  x: number;\n  y: number;\n  delta: number;\n  removalDistance: number;\n  canCloseOnClick: boolean;\n  canDrag: boolean;\n  boundingRect: DOMRect | null;\n  didMove: boolean;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n  return e.targetTouches && e.targetTouches.length >= 1\n    ? e.targetTouches[0].clientX\n    : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n  return e.targetTouches && e.targetTouches.length >= 1\n    ? e.targetTouches[0].clientY\n    : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n  const [isRunning, setIsRunning] = useState(false);\n  const [preventExitTransition, setPreventExitTransition] = useState(false);\n  const toastRef = useRef<HTMLDivElement>(null);\n  const drag = useRef<Draggable>({\n    start: 0,\n    x: 0,\n    y: 0,\n    delta: 0,\n    removalDistance: 0,\n    canCloseOnClick: true,\n    canDrag: false,\n    boundingRect: null,\n    didMove: false\n  }).current;\n  const syncProps = useRef(props);\n  const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n  useEffect(() => {\n    syncProps.current = props;\n  });\n\n  useEffect(() => {\n    if (toastRef.current)\n      toastRef.current.addEventListener(\n        SyntheticEvent.ENTRANCE_ANIMATION_END,\n        playToast,\n        { once: true }\n      );\n\n    if (isFn(props.onOpen))\n      props.onOpen(isValidElement(props.children) && props.children.props);\n\n    return () => {\n      const props = syncProps.current;\n      if (isFn(props.onClose))\n        props.onClose(isValidElement(props.children) && props.children.props);\n    };\n  }, []);\n\n  useEffect(() => {\n    props.pauseOnFocusLoss && bindFocusEvents();\n    return () => {\n      props.pauseOnFocusLoss && unbindFocusEvents();\n    };\n  }, [props.pauseOnFocusLoss]);\n\n  function onDragStart(\n    e: React.MouseEvent<HTMLElement, MouseEvent> | React.TouchEvent<HTMLElement>\n  ) {\n    if (props.draggable) {\n      bindDragEvents();\n      const toast = toastRef.current!;\n      drag.canCloseOnClick = true;\n      drag.canDrag = true;\n      drag.boundingRect = toast.getBoundingClientRect();\n      toast.style.transition = '';\n      drag.x = getX(e.nativeEvent as DragEvent);\n      drag.y = getY(e.nativeEvent as DragEvent);\n\n      if (props.draggableDirection === Direction.X) {\n        drag.start = drag.x;\n        drag.removalDistance =\n          toast.offsetWidth * (props.draggablePercent / 100);\n      } else {\n        drag.start = drag.y;\n        drag.removalDistance =\n          toast.offsetHeight *\n          (props.draggablePercent === Default.DRAGGABLE_PERCENT\n            ? props.draggablePercent * 1.5\n            : props.draggablePercent / 100);\n      }\n    }\n  }\n\n  function onDragTransitionEnd() {\n    if (drag.boundingRect) {\n      const { top, bottom, left, right } = drag.boundingRect;\n\n      if (\n        props.pauseOnHover &&\n        drag.x >= left &&\n        drag.x <= right &&\n        drag.y >= top &&\n        drag.y <= bottom\n      ) {\n        pauseToast();\n      } else {\n        playToast();\n      }\n    }\n  }\n\n  function playToast() {\n    setIsRunning(true);\n  }\n\n  function pauseToast() {\n    setIsRunning(false);\n  }\n\n  function bindFocusEvents() {\n    if (!document.hasFocus()) pauseToast();\n\n    window.addEventListener('focus', playToast);\n    window.addEventListener('blur', pauseToast);\n  }\n\n  function unbindFocusEvents() {\n    window.removeEventListener('focus', playToast);\n    window.removeEventListener('blur', pauseToast);\n  }\n\n  function bindDragEvents() {\n    drag.didMove = false;\n    document.addEventListener('mousemove', onDragMove);\n    document.addEventListener('mouseup', onDragEnd);\n\n    document.addEventListener('touchmove', onDragMove);\n    document.addEventListener('touchend', onDragEnd);\n  }\n\n  function unbindDragEvents() {\n    document.removeEventListener('mousemove', onDragMove);\n    document.removeEventListener('mouseup', onDragEnd);\n\n    document.removeEventListener('touchmove', onDragMove);\n    document.removeEventListener('touchend', onDragEnd);\n  }\n\n  function onDragMove(e: MouseEvent | TouchEvent) {\n    const toast = toastRef.current!;\n    if (drag.canDrag && toast) {\n      drag.didMove = true;\n      if (isRunning) pauseToast();\n      drag.x = getX(e as DragEvent);\n      drag.y = getY(e as DragEvent);\n      if (props.draggableDirection === Direction.X) {\n        drag.delta = drag.x - drag.start;\n      } else {\n        drag.delta = drag.y - drag.start;\n      }\n\n      // prevent false positif during a toast click\n      if (drag.start !== drag.x) drag.canCloseOnClick = false;\n      toast.style.transform = `translate${props.draggableDirection}(${drag.delta}px)`;\n      toast.style.opacity = `${\n        1 - Math.abs(drag.delta / drag.removalDistance)\n      }`;\n    }\n  }\n\n  function onDragEnd() {\n    unbindDragEvents();\n    const toast = toastRef.current!;\n    if (drag.canDrag && drag.didMove && toast) {\n      drag.canDrag = false;\n      if (Math.abs(drag.delta) > drag.removalDistance) {\n        setPreventExitTransition(true);\n        props.closeToast();\n        return;\n      }\n      toast.style.transition = 'transform 0.2s, opacity 0.2s';\n      toast.style.transform = `translate${props.draggableDirection}(0)`;\n      toast.style.opacity = '1';\n    }\n  }\n\n  const eventHandlers: DOMAttributes<HTMLElement> = {\n    onMouseDown: onDragStart,\n    onTouchStart: onDragStart,\n    onMouseUp: onDragTransitionEnd,\n    onTouchEnd: onDragTransitionEnd\n  };\n\n  if (autoClose && pauseOnHover) {\n    eventHandlers.onMouseEnter = pauseToast;\n    eventHandlers.onMouseLeave = playToast;\n  }\n\n  // prevent toast from closing when user drags the toast\n  if (closeOnClick) {\n    eventHandlers.onClick = (e: React.MouseEvent) => {\n      onClick && onClick(e);\n      drag.canCloseOnClick && closeToast();\n    };\n  }\n\n  return {\n    playToast,\n    pauseToast,\n    isRunning,\n    preventExitTransition,\n    toastRef,\n    eventHandlers\n  };\n}\n", "import React from 'react';\nimport { Default } from '../utils';\nimport { Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n  closeToast: (e: React.MouseEvent<HTMLElement>) => void;\n  type: TypeOptions;\n  ariaLabel?: string;\n  theme: Theme;\n}\n\nexport function CloseButton({\n  closeToast,\n  theme,\n  ariaLabel = 'close'\n}: CloseButtonProps) {\n  return (\n    <button\n      className={`${Default.CSS_NAMESPACE}__close-button ${Default.CSS_NAMESPACE}__close-button--${theme}`}\n      type=\"button\"\n      onClick={e => {\n        e.stopPropagation();\n        closeToast(e);\n      }}\n      aria-label={ariaLabel}\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 14 16\">\n        <path\n          fillRule=\"evenodd\"\n          d=\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"\n        />\n      </svg>\n    </button>\n  );\n}\n", "import React from 'react';\nimport cx from 'clsx';\n\nimport { TYPE, Default, isFn } from './../utils';\nimport { TypeOptions, ToastClassName, Theme } from '../types';\n\nexport interface ProgressBarProps {\n  /**\n   * The animation delay which determine when to close the toast\n   */\n  delay: number;\n\n  /**\n   * Whether or not the animation is running or paused\n   */\n  isRunning: boolean;\n\n  /**\n   * Func to close the current toast\n   */\n  closeToast: () => void;\n\n  /**\n   * Optional type : info, success ...\n   */\n  type: TypeOptions;\n\n  /**\n   * The theme that is currently used\n   */\n  theme: Theme;\n\n  /**\n   * Hide or not the progress bar\n   */\n  hide?: boolean;\n\n  /**\n   * Optionnal className\n   */\n  className?: ToastClassName;\n\n  /**\n   * Optionnal inline style\n   */\n  style?: React.CSSProperties;\n\n  /**\n   * Tell wether or not controlled progress bar is used\n   */\n  controlledProgress?: boolean;\n\n  /**\n   * Controlled progress value\n   */\n  progress?: number | string;\n\n  /**\n   * Support rtl content\n   */\n  rtl?: boolean;\n\n  /**\n   * Tell if the component is visible on screen or not\n   */\n  isIn?: boolean;\n}\n\nexport function ProgressBar({\n  delay,\n  isRunning,\n  closeToast,\n  type,\n  hide,\n  className,\n  style: userStyle,\n  controlledProgress,\n  progress,\n  rtl,\n  isIn,\n  theme\n}: ProgressBarProps) {\n  const style: React.CSSProperties = {\n    ...userStyle,\n    animationDuration: `${delay}ms`,\n    animationPlayState: isRunning ? 'running' : 'paused',\n    opacity: hide ? 0 : 1\n  };\n\n  if (controlledProgress) style.transform = `scaleX(${progress})`;\n  const defaultClassName = cx(\n    `${Default.CSS_NAMESPACE}__progress-bar`,\n    controlledProgress\n      ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n      : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n    `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n    `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n    {\n      [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n    }\n  );\n  const classNames = isFn(className)\n    ? className({\n        rtl,\n        type,\n        defaultClassName\n      })\n    : cx(defaultClassName, className);\n\n  // \uD83E\uDDD0 controlledProgress is derived from progress\n  // so if controlledProgress is set\n  // it means that this is also the case for progress\n  const animationEvent = {\n    [controlledProgress && progress! >= 1\n      ? 'onTransitionEnd'\n      : 'onAnimationEnd']:\n      controlledProgress && progress! < 1\n        ? null\n        : () => {\n            isIn && closeToast();\n          }\n  };\n\n  // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n  return (\n    <div\n      role=\"progressbar\"\n      aria-hidden={hide ? 'true' : 'false'}\n      aria-label=\"notification timer\"\n      className={classNames}\n      style={style}\n      {...animationEvent}\n    />\n  );\n}\n\nProgressBar.defaultProps = {\n  type: TYPE.DEFAULT,\n  hide: false\n};\n", "import React from 'react';\n\nimport { Theme, TypeOptions } from '../types';\nimport { Default } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n  theme: Theme;\n  type: TypeOptions;\n}\n\nexport type BuiltInIconProps = React.SVGProps<SVGSVGElement> & IconProps;\n\nconst Svg: React.FC<BuiltInIconProps> = ({ theme, type, ...rest }) => (\n  <svg\n    viewBox=\"0 0 24 24\"\n    width=\"100%\"\n    height=\"100%\"\n    fill={\n      theme === 'colored'\n        ? 'currentColor'\n        : `var(--toastify-icon-color-${type})`\n    }\n    {...rest}\n  />\n);\n\nfunction Warning(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\" />\n    </Svg>\n  );\n}\n\nfunction Info(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\" />\n    </Svg>\n  );\n}\n\nfunction Success(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\" />\n    </Svg>\n  );\n}\n\nfunction Error(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\" />\n    </Svg>\n  );\n}\n\nfunction Spinner() {\n  return <div className={`${Default.CSS_NAMESPACE}__spinner`} />;\n}\n\nexport const Icons = {\n  info: Info,\n  warning: Warning,\n  success: Success,\n  error: Error,\n  spinner: Spinner\n};\n", "import React from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { ToastProps } from '../types';\nimport { Default, isFn, isStr } from '../utils';\nimport { useToast } from '../hooks/useToast';\nimport { Icons } from './Icons';\n\nexport const Toast: React.FC<ToastProps> = props => {\n  const { isRunning, preventExitTransition, toastRef, eventHandlers } =\n    useToast(props);\n  const {\n    closeButton,\n    children,\n    autoClose,\n    onClick,\n    type,\n    hideProgressBar,\n    closeToast,\n    transition: Transition,\n    position,\n    className,\n    style,\n    bodyClassName,\n    bodyStyle,\n    progressClassName,\n    progressStyle,\n    updateId,\n    role,\n    progress,\n    rtl,\n    toastId,\n    deleteToast,\n    isIn,\n    isLoading,\n    icon,\n    theme\n  } = props;\n  const defaultClassName = cx(\n    `${Default.CSS_NAMESPACE}__toast`,\n    `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n    `${Default.CSS_NAMESPACE}__toast--${type}`,\n    {\n      [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n    }\n  );\n  const cssClasses = isFn(className)\n    ? className({\n        rtl,\n        position,\n        type,\n        defaultClassName\n      })\n    : cx(defaultClassName, className);\n  const isProgressControlled = !!progress;\n\n  function renderCloseButton(closeButton: any) {\n    if (!closeButton) return;\n\n    const props = { closeToast, type, theme };\n\n    if (isFn(closeButton)) return closeButton(props);\n\n    if (React.isValidElement(closeButton))\n      return React.cloneElement(closeButton, props);\n  }\n\n  const maybeIcon = Icons[type as keyof typeof Icons];\n  const iconProps = { theme, type };\n  let Icon: React.ReactNode = maybeIcon && maybeIcon(iconProps);\n\n  if (icon === false) {\n    Icon = void 0;\n  } else if (isFn(icon)) {\n    Icon = icon(iconProps);\n  } else if (React.isValidElement(icon)) {\n    Icon = React.cloneElement(icon, iconProps);\n  } else if (isStr(icon)) {\n    Icon = icon;\n  } else if (isLoading) {\n    Icon = Icons.spinner();\n  }\n\n  return (\n    <Transition\n      isIn={isIn}\n      done={deleteToast}\n      position={position}\n      preventExitTransition={preventExitTransition}\n      nodeRef={toastRef}\n    >\n      <div\n        id={toastId as string}\n        onClick={onClick}\n        className={cssClasses}\n        {...eventHandlers}\n        style={style}\n        ref={toastRef}\n      >\n        <div\n          {...(isIn && { role: role })}\n          className={\n            isFn(bodyClassName)\n              ? bodyClassName({ type })\n              : cx(`${Default.CSS_NAMESPACE}__toast-body`, bodyClassName)\n          }\n          style={bodyStyle}\n        >\n          {Icon && (\n            <div\n              className={cx(`${Default.CSS_NAMESPACE}__toast-icon`, {\n                [`${Default.CSS_NAMESPACE}--animate-icon ${Default.CSS_NAMESPACE}__zoom-enter`]:\n                  !isLoading\n              })}\n            >\n              {Icon}\n            </div>\n          )}\n          <div>{children}</div>\n        </div>\n        {renderCloseButton(closeButton)}\n        {(autoClose || isProgressControlled) && (\n          <ProgressBar\n            {...(updateId && !isProgressControlled\n              ? { key: `pb-${updateId}` }\n              : {})}\n            rtl={rtl}\n            theme={theme}\n            delay={autoClose as number}\n            isRunning={isRunning}\n            isIn={isIn}\n            closeToast={closeToast}\n            hide={hideProgressBar}\n            type={type}\n            style={progressStyle}\n            className={progressClassName}\n            controlledProgress={isProgressControlled}\n            progress={progress}\n          />\n        )}\n      </div>\n    </Transition>\n  );\n};\n", "import { Default, cssTransition } from '../utils';\n\nconst Bounce = cssTransition({\n  enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-enter`,\n  exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-exit`,\n  appendPosition: true\n});\n\nconst Slide = cssTransition({\n  enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-enter`,\n  exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-exit`,\n  appendPosition: true\n});\n\nconst Zoom = cssTransition({\n  enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-enter`,\n  exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-exit`\n});\n\nconst Flip = cssTransition({\n  enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-enter`,\n  exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-exit`\n});\n\nexport { Bounce, Slide, Zoom, Flip };\n", "// https://github.com/yannickcr/eslint-plugin-react/issues/3140\n/* eslint react/prop-types: \"off\" */\nimport React, { forwardRef, StyleHTMLAttributes, useEffect } from 'react';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport { POSITION, Direction, Default, parseClassName, isFn } from '../utils';\nimport { useToastContainer } from '../hooks/useToastContainer';\nimport { ToastContainerProps, ToastPosition } from '../types';\n\nexport const ToastContainer = forwardRef<HTMLDivElement, ToastContainerProps>(\n  (props, ref) => {\n    const { getToastToRender, containerRef, isToastActive } =\n      useToastContainer(props);\n    const { className, style, rtl, containerId } = props;\n\n    function getClassName(position: ToastPosition) {\n      const defaultClassName = cx(\n        `${Default.CSS_NAMESPACE}__toast-container`,\n        `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n        { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n      );\n      return isFn(className)\n        ? className({\n            position,\n            rtl,\n            defaultClassName\n          })\n        : cx(defaultClassName, parseClassName(className));\n    }\n\n    useEffect(() => {\n      if (ref) {\n        (ref as React.MutableRefObject<HTMLDivElement>).current =\n          containerRef.current!;\n      }\n    }, []);\n\n    return (\n      <div\n        ref={containerRef}\n        className={Default.CSS_NAMESPACE as string}\n        id={containerId as string}\n      >\n        {getToastToRender((position, toastList) => {\n          const containerStyle: React.CSSProperties = !toastList.length\n            ? { ...style, pointerEvents: 'none' }\n            : { ...style };\n\n          return (\n            <div\n              className={getClassName(position)}\n              style={containerStyle}\n              key={`container-${position}`}\n            >\n              {toastList.map(({ content, props: toastProps }, i) => {\n                return (\n                  <Toast\n                    {...toastProps}\n                    isIn={isToastActive(toastProps.toastId)}\n                    style={\n                      {\n                        '--nth': i + 1,\n                        '--len': toastList.length\n                      } as StyleHTMLAttributes<HTMLDivElement>\n                    }\n                    key={`toast-${toastProps.key}`}\n                    closeButton={\n                      toastProps.closeButton === true\n                        ? CloseButton\n                        : toastProps.closeButton\n                    }\n                  >\n                    {content}\n                  </Toast>\n                );\n              })}\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n);\n\nToastContainer.displayName = 'ToastContainer';\n\nToastContainer.defaultProps = {\n  position: POSITION.TOP_RIGHT as ToastPosition,\n  transition: Bounce,\n  rtl: false,\n  autoClose: 5000,\n  hideProgressBar: false,\n  closeButton: CloseButton,\n  pauseOnHover: true,\n  pauseOnFocusLoss: true,\n  closeOnClick: true,\n  newestOnTop: false,\n  draggable: true,\n  draggablePercent: Default.DRAGGABLE_PERCENT as number,\n  draggableDirection: Direction.X,\n  role: 'alert',\n  theme: 'light'\n};\n", "import { POSITION, TYPE, isStr, isNum, isFn } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n  ToastContent,\n  ToastOptions,\n  ToastProps,\n  Id,\n  UpdateOptions,\n  ClearWaitingQueueParams,\n  NotValidatedToastProps,\n  TypeOptions\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\ninterface EnqueuedToast {\n  content: ToastContent;\n  options: NotValidatedToastProps;\n}\n\nlet containers = new Map<ContainerInstance | Id, ContainerInstance>();\nlet latestInstance: ContainerInstance | Id;\nlet queue: EnqueuedToast[] = [];\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n  const container = containers.get(containerId || latestInstance);\n  if (!container) return null;\n\n  return container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n  return Math.random().toString(36).substring(2, 9);\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n  if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n    return options.toastId;\n  }\n\n  return generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast(\n  content: ToastContent,\n  options: NotValidatedToastProps\n): Id {\n  if (containers.size > 0) {\n    eventManager.emit(Event.Show, content, options);\n  } else {\n    queue.push({ content, options });\n  }\n\n  return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n  return {\n    ...options,\n    type: (options && options.type) || type,\n    toastId: getToastId(options)\n  } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n  return (content: ToastContent, options?: ToastOptions) =>\n    dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast(content: ToastContent, options?: ToastOptions) {\n  return dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n}\n\ntoast.loading = (content: ToastContent, options?: ToastOptions) =>\n  dispatchToast(\n    content,\n    mergeOptions(TYPE.DEFAULT, {\n      isLoading: true,\n      autoClose: false,\n      closeOnClick: false,\n      closeButton: false,\n      draggable: false,\n      ...options\n    })\n  );\n\nexport interface ToastPromiseParams<T = unknown> {\n  pending?: string | UpdateOptions<void>;\n  success?: string | UpdateOptions<T>;\n  error?: string | UpdateOptions<any>;\n}\n\nfunction handlePromise<T = unknown>(\n  promise: Promise<T> | (() => Promise<T>),\n  { pending, error, success }: ToastPromiseParams<T>,\n  options?: ToastOptions\n) {\n  let id: Id;\n\n  if (pending) {\n    id = isStr(pending)\n      ? toast.loading(pending, options)\n      : toast.loading(pending.render, {\n          ...options,\n          ...(pending as ToastOptions)\n        });\n  }\n\n  const resetParams = {\n    isLoading: null,\n    autoClose: null,\n    closeOnClick: null,\n    closeButton: null,\n    draggable: null,\n    delay: 100\n  };\n\n  const resolver = (\n    type: TypeOptions,\n    input: string | UpdateOptions<T> | undefined,\n    result: T\n  ) => {\n    // Remove the toast if the input has not been provided. This prevents the toast from hanging\n    // in the pending state if a success/error toast has not been provided.\n    if (input == null) {\n      toast.dismiss(id);\n      return;\n    }\n\n    const baseParams = {\n      type,\n      ...resetParams,\n      ...options,\n      data: result\n    };\n    const params = isStr(input) ? { render: input } : input;\n\n    // if the id is set we know that it's an update\n    if (id) {\n      toast.update(id, {\n        ...baseParams,\n        ...params\n      });\n    } else {\n      // using toast.promise without loading\n      toast(params.render, {\n        ...baseParams,\n        ...params\n      } as ToastOptions);\n    }\n\n    return result;\n  };\n\n  const p = isFn(promise) ? promise() : promise;\n\n  //call the resolvers only when needed\n  p.then(result => resolver('success', success, result)).catch(err =>\n    resolver('error', error, err)\n  );\n\n  return p;\n}\n\ntoast.promise = handlePromise;\ntoast.success = createToastByType(TYPE.SUCCESS);\ntoast.info = createToastByType(TYPE.INFO);\ntoast.error = createToastByType(TYPE.ERROR);\ntoast.warning = createToastByType(TYPE.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n  dispatchToast(\n    content,\n    mergeOptions(TYPE.DEFAULT, {\n      theme: 'dark',\n      ...options\n    })\n  );\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) => eventManager.emit(Event.Clear, id);\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n  eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n  let isToastActive = false;\n\n  containers.forEach(container => {\n    if (container.isToastActive && container.isToastActive(id)) {\n      isToastActive = true;\n    }\n  });\n\n  return isToastActive;\n};\n\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n  // if you call toast and toast.update directly nothing will be displayed\n  // this is why I defered the update\n  setTimeout(() => {\n    const toast = getToast(toastId, options as ToastOptions);\n    if (toast) {\n      const { props: oldOptions, content: oldContent } = toast;\n\n      const nextOptions = {\n        ...oldOptions,\n        ...options,\n        toastId: options.toastId || toastId,\n        updateId: generateToastId()\n      } as ToastProps & UpdateOptions;\n\n      if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n      const content = nextOptions.render || oldContent;\n      delete nextOptions.render;\n\n      dispatchToast(content, nextOptions);\n    }\n  }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n  toast.update(id, {\n    progress: 1\n  });\n};\n\n/**\n * Subscribe to change when a toast is added, removed and updated\n *\n * Usage:\n * ```\n * const unsubscribe = toast.onChange((payload) => {\n *   switch (payload.status) {\n *   case \"added\":\n *     // new toast added\n *     break;\n *   case \"updated\":\n *     // toast updated\n *     break;\n *   case \"removed\":\n *     // toast has been removed\n *     break;\n *   }\n * })\n * ```\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n  eventManager.on(Event.Change, callback);\n  return () => {\n    eventManager.off(Event.Change, callback);\n  };\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n  .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n    latestInstance = containerInstance.containerId || containerInstance;\n    containers.set(latestInstance, containerInstance);\n\n    queue.forEach(item => {\n      eventManager.emit(Event.Show, item.content, item.options);\n    });\n\n    queue = [];\n  })\n  .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n    containers.delete(containerInstance.containerId || containerInstance);\n\n    if (containers.size === 0) {\n      eventManager\n        .off(Event.Show)\n        .off(Event.Clear)\n        .off(Event.ClearWaitingQueue);\n    }\n  });\n\nexport { toast };\n", "import { css, Global, Theme, ThemeProvider as ETP } from \"@emotion/react\";\nimport _merge from \"lodash/merge.js\";\nimport { ReactNode } from \"react\";\nimport { PartialDeep } from \"type-fest\";\nimport { baseTheme } from \"./themes\";\nimport { Box } from \"./Box\";\n\nexport type ThemeProviderProps = {\n  children?: ReactNode;\n  theme?: PartialDeep<Theme>;\n  standalone?: boolean;\n};\n\nexport const ThemeProvider = ({\n  theme: defaultTheme,\n  children,\n  standalone = true,\n}: ThemeProviderProps) => {\n  const theme = _merge({} as Theme, baseTheme, defaultTheme);\n\n  return (\n    <ETP theme={theme}>\n      {standalone && (\n        <Global\n          styles={css`\n            html {\n              background-color: ${theme.colors.background};\n            }\n\n            body {\n              margin: 0;\n              padding: 0;\n              position: relative;\n            }\n\n            #patches-root {\n              min-height: 100vh;\n            }\n          `}\n        />\n      )}\n      <Box\n        id=\"patches-root\"\n        css={css`\n          display: flex;\n          flex-direction: column;\n          scroll-behavior: smooth;\n          line-height: ${theme.lineHeights.standard};\n          -webkit-text-size-adjust: 100%; /* 2 */\n          color: ${theme.colors.text};\n          letter-spacing: ${theme.letterSpacings.standard};\n          font-size: ${theme.fontSizes.standard};\n          font-family: ${theme.fonts[\"body\"]};\n\n          h1 {\n            font-size: ${theme.fontSizes.xxlarge};\n            margin: 0.67em 0;\n          }\n\n          h1,\n          h2,\n          h3,\n          h4,\n          h5,\n          h6 {\n            font-family: ${theme.fonts.heading};\n          }\n\n          hr {\n            box-sizing: content-box; /* 1 */\n            height: 0; /* 1 */\n            overflow: visible; /* 2 */\n          }\n\n          pre {\n            font-family: ${theme.fonts.monospace}; /* 1 */\n            font-size: 1em; /* 2 */\n          }\n\n          a {\n            background-color: transparent;\n          }\n\n          abbr[title] {\n            border-bottom: none; /* 1 */\n            text-decoration: underline; /* 2 */\n            text-decoration: underline dotted; /* 2 */\n          }\n\n          b,\n          strong {\n            font-weight: bolder;\n          }\n\n          code,\n          kbd,\n          samp {\n            font-family: ${theme.fonts.monospace}; /* 1 */\n            font-size: 1em; /* 2 */\n          }\n          small {\n            font-size: 80%;\n          }\n\n          sub,\n          sup {\n            font-size: 75%;\n            line-height: 0;\n            position: relative;\n            vertical-align: baseline;\n          }\n\n          sub {\n            bottom: -0.25em;\n          }\n\n          sup {\n            top: -0.5em;\n          }\n\n          img {\n            max-width: 100%;\n            border-style: none;\n          }\n\n          button,\n          input,\n          optgroup,\n          select,\n          textarea {\n            font-family: inherit; /* 1 */\n            font-size: 100%; /* 1 */\n            line-height: 1.15; /* 1 */\n            margin: 0; /* 2 */\n          }\n\n          button,\n          input {\n            /* 1 */\n            overflow: visible;\n          }\n\n          button,\n          select {\n            /* 1 */\n            text-transform: none;\n          }\n\n          button,\n          [type=\"button\"],\n          [type=\"reset\"],\n          [type=\"submit\"] {\n            -webkit-appearance: button;\n          }\n\n          button::-moz-focus-inner,\n          [type=\"button\"]::-moz-focus-inner,\n          [type=\"reset\"]::-moz-focus-inner,\n          [type=\"submit\"]::-moz-focus-inner {\n            border-style: none;\n            padding: 0;\n          }\n\n          button:-moz-focusring,\n          [type=\"button\"]:-moz-focusring,\n          [type=\"reset\"]:-moz-focusring,\n          [type=\"submit\"]:-moz-focusring {\n            outline: 1px dotted ButtonText;\n          }\n\n          fieldset {\n            padding: 0.35em 0.75em 0.625em;\n          }\n\n          legend {\n            box-sizing: border-box; /* 1 */\n            color: inherit; /* 2 */\n            display: table; /* 1 */\n            max-width: 100%; /* 1 */\n            padding: 0; /* 3 */\n            white-space: normal; /* 1 */\n          }\n\n          progress {\n            vertical-align: baseline;\n          }\n\n          textarea {\n            overflow: auto;\n          }\n\n          [type=\"checkbox\"],\n          [type=\"radio\"] {\n            box-sizing: border-box; /* 1 */\n            padding: 0; /* 2 */\n          }\n\n          [type=\"number\"]::-webkit-inner-spin-button,\n          [type=\"number\"]::-webkit-outer-spin-button {\n            height: auto;\n          }\n\n          [type=\"search\"] {\n            -webkit-appearance: textfield; /* 1 */\n            outline-offset: -2px; /* 2 */\n          }\n\n          [type=\"search\"]::-webkit-search-decoration {\n            -webkit-appearance: none;\n          }\n\n          ::-webkit-file-upload-button {\n            -webkit-appearance: button; /* 1 */\n            font: inherit; /* 2 */\n          }\n\n          details {\n            display: block;\n          }\n\n          summary {\n            display: list-item;\n          }\n\n          template {\n            display: none;\n          }\n\n          [hidden] {\n            display: none;\n          }\n        `}\n      >\n        {children}\n      </Box>\n    </ETP>\n  );\n};\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { useTheme } from \"./hooks/useTheme\";\n\nconst circuit = (\n  backgroundColor: string,\n  foregroundColor: string,\n  opacity: number\n) => css`\n  pointer-events: none;\n  background-color: ${backgroundColor};\n  background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='${foregroundColor.replace(\n    \"#\",\n    \"%23\"\n  )}' fill-opacity='${opacity}' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E\");\n`;\n\nexport type PatternProps = {\n  children?: ReactNode;\n  foregroundColor?: string;\n  backgroundColor?: string;\n  opacity?: number;\n} & Omit<BoxProps, \"backgroundColor\">;\n\nexport const Pattern = ({\n  children,\n  foregroundColor,\n  backgroundColor,\n  opacity = 0.7,\n  ...props\n}: PatternProps) => {\n  const [theme] = useTheme();\n\n  return (\n    <Box\n      css={circuit(\n        backgroundColor || theme.colors.primary[900],\n        foregroundColor || theme.colors.primary[400],\n        opacity\n      )}\n      {...props}\n    >\n      {children}\n    </Box>\n  );\n};\n", "import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport { Pattern, PatternProps } from \"./Pattern\";\n\nexport type PatternCenterProps = {\n  children?: ReactNode;\n  backgroundColor?: BoxProps[\"backgroundColor\"];\n  foregroundColor?: PatternProps[\"foregroundColor\"];\n};\n\nexport const PatternCenter = ({\n  children,\n  backgroundColor = \"primary.900\",\n  foregroundColor = \"white\",\n}: PatternCenterProps) => {\n  return (\n    <Box\n      minHeight=\"100vh\"\n      width=\"100vw\"\n      maxWidth=\"100%\"\n      position=\"relative\"\n      overflowY=\"auto\"\n      overflowX=\"hidden\"\n      backgroundColor={backgroundColor}\n      display=\"flex\"\n      flexDirection=\"column\"\n      justifyContent=\"center\"\n      alignItems=\"center\"\n    >\n      <Pattern\n        position=\"fixed\"\n        zIndex=\"0\"\n        backgroundColor=\"transparent\"\n        foregroundColor={foregroundColor}\n        opacity={0.05}\n        top=\"0\"\n        bottom=\"0\"\n        right=\"0\"\n        left=\"0\"\n      />\n\n      <Box zIndex=\"10\">{children}</Box>\n    </Box>\n  );\n};\n", "import { KeyboardEvent, useEffect, useRef } from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\nimport { Text } from \"./Text\";\n\ntype RadioProps = {\n  id?: string;\n  value: string | number;\n  checked?: boolean;\n  label?: string;\n  helperText?: string;\n  disabled?: boolean;\n  tabIndex?: number;\n  error?: boolean;\n  onSelect?: (value: string | number) => void;\n};\n\nconst Radio = ({\n  id,\n  value = \"\",\n  checked,\n  label,\n  helperText,\n  disabled = false,\n  tabIndex = 0,\n  error = false,\n  onSelect = () => {},\n}: RadioProps) => {\n  const ref = useRef<HTMLDivElement>(null);\n\n  function handleSelect() {\n    if (!disabled) {\n      onSelect(value);\n    }\n  }\n\n  useEffect(() => {\n    if (!disabled && ref.current && checked) {\n      ref.current.focus();\n    }\n  }, [checked]);\n\n  return (\n    <Box\n      ref={ref}\n      css={(theme) => [\n        css`\n          cursor: ${theme.cursor.pointer};\n          display: block;\n          position: relative;\n          padding: ${theme.space.standard};\n          padding-left: calc(${theme.space.standard} * 2 + 14px);\n          border-style: solid;\n          border-width: 1px;\n          border-color: transparent;\n          user-select: none;\n          outline: none;\n\n          /* This creates the visuals for the radio buttons */\n          ::before,\n          ::after {\n            display: block;\n            position: absolute;\n            border-radius: 50%;\n            content: \"\";\n          }\n\n          ::before {\n            top: calc(${theme.space.standard} + 3px);\n            left: ${theme.space.standard};\n            width: 14px;\n            height: 14px;\n            border: 1px solid ${theme.colors.primary[\"800\"]};\n          }\n\n          :focus {\n            box-shadow: ${theme.shadows.outline};\n          }\n        `,\n        checked &&\n          css`\n            background-color: ${theme.colors.primary[\"50\"]};\n\n            ::after {\n              top: calc(${theme.space.standard} + 6px);\n              left: calc(${theme.space.standard} + 3px);\n              border-width: 5px;\n              border-style: solid;\n              border-color: ${theme.colors.primary[\"800\"]};\n              content: \"\";\n            }\n          `,\n        disabled &&\n          css`\n            cursor: ${theme.cursor[\"not-allowed\"]};\n\n            ::after,\n            ::before {\n              border-color: ${theme.colors.neutral[\"600\"]};\n            }\n\n            :focus {\n              box-shadow: none;\n            }\n          `,\n        checked &&\n          disabled &&\n          css`\n            background-color: ${theme.colors.neutral[\"50\"]};\n            ::after {\n              border-color: ${theme.colors.neutral[\"800\"]};\n            }\n          `,\n        checked &&\n          error &&\n          css`\n            background-color: ${theme.colors.error[\"50\"]};\n          `,\n        error &&\n          css`\n            ::before,\n            ::after {\n              border-color: ${theme.colors.error[\"500\"]};\n            }\n          `,\n      ]}\n      id={id}\n      onClick={handleSelect}\n      role=\"radio\"\n      aria-disabled={disabled}\n      aria-checked={checked}\n      tabIndex={tabIndex}\n    >\n      <Text\n        fontWeight=\"medium\"\n        css={(theme) => [\n          checked &&\n            css`\n              color: ${theme.colors.primary[\"900\"]};\n            `,\n          disabled &&\n            css`\n              color: ${theme.colors.neutral[\"500\"]};\n            `,\n          error &&\n            css`\n              color: ${theme.colors.error[\"900\"]};\n            `,\n        ]}\n      >\n        {label}\n      </Text>\n      <Text\n        css={(theme) => [\n          css`\n            color: ${theme.colors.neutral[\"600\"]};\n          `,\n          checked &&\n            css`\n              color: ${theme.colors.primary[\"600\"]};\n            `,\n          disabled &&\n            css`\n              color: ${theme.colors.neutral[\"400\"]};\n            `,\n          error &&\n            css`\n              color: ${theme.colors.error[\"600\"]};\n            `,\n        ]}\n      >\n        {helperText}\n      </Text>\n    </Box>\n  );\n};\n\ntype RadioGroupOption = {\n  value: string | number;\n  id?: string;\n  label?: string;\n  helperText?: string;\n};\n\nexport type RadioGroupProps = {\n  options: Array<RadioGroupOption>;\n  disabled?: boolean;\n  value: string | number;\n  onChange?: (value: string | number) => void;\n  onBlur?: () => void;\n  variant?: \"outlined\" | \"normal\";\n  error?: boolean;\n  required?: boolean;\n};\n\nexport const RadioGroup = ({\n  options,\n  disabled = false,\n  value,\n  onChange = () => {},\n  onBlur = () => {},\n  variant = \"normal\",\n  error = false,\n  required = false,\n}: RadioGroupProps) => {\n  function handleSelect(value: string | number) {\n    if (!disabled) {\n      onChange(value);\n    }\n  }\n\n  function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n    const selectedIndex = options.findIndex((o) => o.value === value) || 0;\n    switch (e.key) {\n      case \"ArrowDown\":\n      case \"ArrowRight\":\n        let nextIndex = selectedIndex + 1;\n        if (nextIndex >= options.length) {\n          nextIndex = 0;\n        }\n\n        const nextOption = options[nextIndex];\n        handleSelect(nextOption.value);\n        break;\n      case \"ArrowUp\":\n      case \"ArrowLeft\":\n        let prevIndex = selectedIndex - 1;\n        if (prevIndex < 0) {\n          prevIndex = options.length - 1;\n        }\n        const prevOption = options[prevIndex];\n        handleSelect(prevOption.value);\n        break;\n    }\n  }\n\n  return (\n    <Box\n      role=\"radiogroup\"\n      onKeyDown={handleKeyDown}\n      onBlur={onBlur}\n      borderRadius=\"standard\"\n      aria-invalid={error}\n      aria-disabled={disabled}\n      aria-required={required}\n      borderStyle=\"solid\"\n      css={(theme) => [\n        css`\n          border-width: 0;\n          border-color: ${theme.colors.primary[\"100\"]};\n          > div {\n            border-bottom-color: ${theme.colors.primary[\"100\"]};\n            border-bottom-style: solid;\n            border-bottom-width: ${theme.borderWidths.standard};\n          }\n\n          div:last-of-type {\n            border: none;\n          }\n        `,\n        variant === \"outlined\" &&\n          css`\n            border-width: ${theme.borderWidths.standard};\n            div:first-of-type {\n              border-top-left-radius: ${theme.radii.standard};\n              border-top-right-radius: ${theme.radii.standard};\n            }\n\n            div:last-of-type {\n              border: none;\n              border-bottom-left-radius: ${theme.radii.standard};\n              border-bottom-right-radius: ${theme.radii.standard};\n            }\n          `,\n        disabled &&\n          css`\n            border-color: ${theme.colors.neutral[\"100\"]};\n            > div {\n              border-bottom-color: ${theme.colors.neutral[\"100\"]};\n            }\n          `,\n        error &&\n          css`\n            border-color: ${theme.colors.error[\"500\"]};\n            > div {\n              border-bottom-color: ${theme.colors.error[\"500\"]};\n            }\n          `,\n      ]}\n    >\n      {options.map((o, i) => (\n        <Radio\n          {...o}\n          key={o.value}\n          error={error}\n          tabIndex={i === 0 ? 0 : -1}\n          onSelect={handleSelect}\n          disabled={disabled}\n          checked={value === o.value}\n        />\n      ))}\n    </Box>\n  );\n};\n", "import {\n  ChangeEvent,\n  forwardRef,\n  ReactNode,\n  RefObject,\n  SelectHTMLAttributes,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\nimport { Box } from \"./Box\";\nimport { CheveronDown } from \"./icons/shade\";\nimport {\n  color,\n  compose,\n  cursor,\n  space,\n  typography,\n  background,\n  border,\n  shadow,\n  ColorProps,\n  CursorProps,\n  SpaceProps,\n  TypographyProps,\n  BackgroundProps,\n  BorderProps,\n  ShadowProps,\n  styled\n} from \"./system\";\n\nexport type SelectProps = {\n  id?: string;\n  children?: ReactNode;\n  value?: string;\n  error?: boolean;\n  ref?: RefObject<HTMLSelectElement>;\n  onChange?: (value: string) => void;\n  onBlur?: () => void;\n  disbaled?: boolean;\n  required?: boolean;\n};\n\ntype StyledSelectProps = SelectHTMLAttributes<HTMLSelectElement> &\n  ColorProps &\n  CursorProps &\n  SpaceProps &\n  TypographyProps &\n  BackgroundProps &\n  BorderProps &\n  ShadowProps;\n\nconst StyledSelect = styled.select<StyledSelectProps>(\n  compose(color, cursor, space, typography, background, border, shadow)\n);\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n  (\n    {\n      id,\n      children,\n      onChange = () => {},\n      onBlur = () => {},\n      disbaled = false,\n      value,\n      error = false,\n      required = false,\n      ...props\n    },\n    ref\n  ) => {\n    function handleSelect(e: ChangeEvent<HTMLSelectElement>) {\n      if (!disbaled) {\n        const newValue = e.currentTarget.value;\n        onChange(newValue);\n      }\n    }\n    return (\n      <Box width=\"100%\" position=\"relative\">\n        <StyledSelect\n          {...props}\n          id={id}\n          required={required}\n          borderRadius=\"small\"\n          padding=\"xsmall\"\n          borderColor=\"neutral.100\"\n          borderStyle=\"solid\"\n          onChange={handleSelect}\n          onBlur={onBlur}\n          value={value}\n          ref={ref}\n          disabled={disbaled}\n          borderWidth=\"standard\"\n          aria-invalid={error}\n          css={(theme) => [\n            css`\n              width: 100%;\n              appearance: none;\n              outline-color: transparent;\n              outline-width: 0;\n              background: white;\n\n              ::placeholder {\n                color: ${theme.colors.neutral[\"400\"]};\n              }\n              :focus {\n                outline-color: transparent;\n                outline-width: 0;\n                border-color: ${theme.colors.primary[\"800\"]};\n                box-shadow: ${theme.shadows.outline};\n                z-index: 1;\n              }\n            `,\n            disbaled &&\n              css`\n                cursor: ${theme.cursor[\"not-allowed\"]};\n                background-color: ${theme.colors.neutral[\"50\"]};\n              `,\n            error &&\n              css`\n                border-color: ${theme.colors.error[\"500\"]};\n              `,\n          ]}\n        >\n          {children}\n        </StyledSelect>\n        <Box\n          position=\"absolute\"\n          display=\"flex\"\n          justifyContent=\"center\"\n          alignItems=\"center\"\n          width=\"32px\"\n          right=\"8px\"\n          top=\"0\"\n          bottom=\"0\"\n          css={css`\n            pointer-events: none;\n          `}\n          tabIndex={-1}\n        >\n          <CheveronDown />\n        </Box>\n      </Box>\n    );\n  }\n);\n", "import { css } from \"@emotion/react\";\nimport { useLinkComponent } from \"./hooks\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\ntype SectionProps = {\n  label: string;\n  href: string;\n  active?: boolean;\n  links?: LinkProps[];\n};\n\ntype LinkProps = {\n  href: string;\n  label: string;\n  active?: boolean;\n};\n\nexport type SidenavProps = {\n  sections: SectionProps[];\n  position?: BoxProps[\"position\"];\n};\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n  ({ href, label, active }, ref) => {\n    const LinkComponent = useLinkComponent(ref);\n    return (\n      <li className={active ? \"current\" : undefined}>\n        <LinkComponent href={href}>{label}</LinkComponent>\n      </li>\n    );\n  }\n);\n\nconst Section = forwardRef<HTMLAnchorElement, SectionProps>((props, ref) => {\n  const { label, links, href, active } = props;\n  const LinkComponent = useLinkComponent(ref);\n  return (\n    <li className={active ? \"active\" : undefined}>\n      <LinkComponent href={href}>{label}</LinkComponent>\n      <ul>\n        {links?.map((l) => (\n          <Link key={l.label} {...l} />\n        ))}\n      </ul>\n    </li>\n  );\n});\n\nexport const Sidenav = ({ sections, position = \"initial\" }: SidenavProps) => {\n  return (\n    <Box\n      position={position}\n      css={(theme) => [\n        css`\n          top: 10px;\n          background-color: ${theme.colors.card};\n          border-radius: 6px;\n          overflow: hidden;\n          border: 1px solid ${theme.colors.neutral[\"100\"]};\n\n          ::selection,\n          ::marker {\n            background: ${theme.colors.primary[\"500\"]};\n            color: ${theme.colors.text};\n          }\n          & li {\n            border-top: 1px solid ${theme.colors.neutral[\"100\"]};\n            margin-top: -1px;\n            position: relative;\n            z-index: 1;\n          }\n\n          & .top a {\n            border-left: 2px solid transparent;\n            color: ${theme.colors.neutral[\"700\"]};\n            text-decoration: none;\n            display: block;\n            font-weight: 500;\n            padding: 8px 16px;\n            transition: background-color 0.05s ease;\n          }\n\n          & .top ul a {\n            font-size: 14px;\n            padding-left: 24px;\n          }\n\n          & a:hover {\n            background-color: rgba(14, 30, 37, 0.03);\n            color: ${theme.colors.text};\n            text-decoration: none;\n          }\n\n          & ul {\n            background: rgba(14, 30, 37, 0.02);\n            margin: 0;\n            padding: 0;\n            display: block;\n            list-style: none;\n          }\n\n          & .active > a {\n            border-left-color: ${theme.colors.primary[\"500\"]};\n            color: ${theme.colors.text};\n            font-weight: 700;\n          }\n          & .current > a {\n            color: ${theme.colors.text};\n          }\n        `,\n      ]}\n      as=\"nav\"\n      aria-label=\"page-menu\"\n    >\n      <ul className=\"top\">\n        {sections.map((s) => (\n          <Section key={s.label} {...s} />\n        ))}\n      </ul>\n    </Box>\n  );\n};\n", "import {\n  ChangeEvent,\n  forwardRef,\n  KeyboardEvent,\n  ReactNode,\n  RefObject,\n  useRef,\n} from \"react\";\nimport { css } from \"@emotion/react\";\nimport { Box } from \"./Box\";\n\nexport type SliderProps = {\n  id?: string;\n  value?: number;\n  onChange?: (n: number | null) => void;\n  onBlur?: () => void;\n  ref?: RefObject<HTMLInputElement>;\n  disabled?: boolean;\n  required?: boolean;\n  step?: number;\n  labelLeft?: ReactNode;\n  labelRight?: ReactNode;\n  showValue?: boolean;\n  min?: number;\n  max?: number;\n};\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n  (\n    {\n      id,\n      labelLeft = null,\n      labelRight = null,\n      value = 0,\n      step = 1,\n      min = 0,\n      max = 100,\n      disabled = false,\n      required = false,\n      showValue = true,\n      onBlur = () => {},\n      onChange = () => {},\n    },\n    ref\n  ) => {\n    const bubbleRef = useRef<HTMLOutputElement>(null);\n\n    function showBubble() {\n      if (bubbleRef.current) {\n        bubbleRef.current.style.visibility = \"visible\";\n        bubbleRef.current.style.opacity = \"1\";\n      }\n    }\n\n    function hideBubble() {\n      if (bubbleRef.current) {\n        bubbleRef.current.style.visibility = \"hidden\";\n        bubbleRef.current.style.opacity = \"0\";\n      }\n    }\n\n    function handleFocus() {\n      showBubble();\n    }\n\n    function handleBlur() {\n      onBlur();\n      hideBubble();\n    }\n\n    function handleKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n      let flag = true;\n      switch (e.key) {\n        case \"ArrowUp\":\n          increase();\n          break;\n        case \"ArrowDown\":\n          decrease();\n          break;\n        case \"Home\":\n          toMin();\n          break;\n        case \"End\":\n          toMax();\n          break;\n        default:\n          flag = false;\n      }\n\n      if (flag) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n    }\n\n    function handleInnerChange(v: number | null) {\n      if (!disabled) {\n        onChange(v);\n      }\n    }\n\n    function handleChange(e: ChangeEvent<HTMLInputElement>) {\n      const n = Number(e.target.value);\n      if (Number.isNaN(n)) {\n        handleInnerChange(null);\n      } else {\n        handleInnerChange(n);\n      }\n    }\n\n    function toMax() {\n      if (max) {\n        handleInnerChange(max);\n      }\n    }\n\n    function toMin() {\n      if (min) {\n        handleInnerChange(min);\n      }\n    }\n\n    function increase() {\n      const newValue = value + step;\n      if (!max || newValue <= max) {\n        handleInnerChange(newValue);\n      }\n    }\n\n    function decrease() {\n      const newValue = value - step;\n      if (!min || newValue >= min) {\n        handleInnerChange(newValue);\n      }\n    }\n\n    const thumbPosition = Number(((value - min) * 100) / (max - min));\n\n    return (\n      <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\">\n        <Box mr=\"xsmall\">{labelLeft ? labelLeft : min}</Box>\n        <Box position=\"relative\" display=\"flex\" flex={1} alignItems=\"center\">\n          <input\n            id={id}\n            ref={ref}\n            onFocus={handleFocus}\n            onBlur={handleBlur}\n            onPointerOver={handleFocus}\n            onPointerLeave={handleBlur}\n            onPointerDown={handleFocus}\n            onPointerUp={handleBlur}\n            required={required}\n            disabled={disabled}\n            css={(theme) => [\n              css`\n                width: 100%;\n                appearance: none;\n                cursor: pointer;\n                height: 8px;\n                outline: none;\n                border-radius: ${theme.radii.small};\n                background-color: ${theme.colors.neutral[\"200\"]};\n\n                ::-moz-range-thumb,\n                ::-webkit-slider-thumb {\n                  appearance: none;\n                  border: none;\n                  height: 20px;\n                  width: 20px;\n                  border-radius: 50%;\n                  background-color: ${theme.colors.primary[\"800\"]};\n                }\n              `,\n              disabled &&\n                css`\n                  cursor: not-allowed;\n                  ::-moz-range-thumb,\n                  ::-webkit-slider-thumb {\n                    background-color: ${theme.colors.neutral[\"200\"]};\n                  }\n                `,\n            ]}\n            type=\"range\"\n            min={min}\n            max={max}\n            step={step}\n            value={value}\n            onChange={handleChange}\n            onKeyDown={handleKeyDown}\n          />\n          {showValue && (\n            <output\n              ref={bubbleRef}\n              style={{\n                left: `calc(${thumbPosition}% + (${\n                  10 - thumbPosition * 0.18\n                }px))`,\n              }}\n              css={() => css`\n                position: absolute;\n                top: -36px;\n                margin-left: -17px;\n                z-index: 1;\n                font-size: 0.75rem;\n                visibility: hidden;\n                opacity: 0;\n                transform: scale(1) translateY(-10px);\n                pointer-events: none;\n                transition: visibility 0.33s linear, opacity 0.33s linear;\n              `}\n            >\n              <span\n                css={(theme) => [\n                  css`\n                    width: 32px;\n                    height: 32px;\n                    display: flex;\n                    transform: rotate(-45deg);\n                    align-items: center;\n                    border-radius: 50% 50% 50% 0;\n                    justify-content: center;\n                    background-color: ${theme.colors.primary[\"800\"]};\n                  `,\n                  disabled &&\n                    css`\n                      background-color: ${theme.colors.neutral[\"200\"]};\n                    `,\n                ]}\n              >\n                <span\n                  css={(theme) => css`\n                    color: ${theme.colors.primary[\"50\"]};\n                    transform: rotate(45deg);\n                  `}\n                >\n                  {value}\n                </span>\n              </span>\n            </output>\n          )}\n        </Box>\n        <Box ml=\"xsmall\">{labelRight ? labelRight : max}</Box>\n      </Box>\n    );\n  }\n);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode } from \"react\";\nimport {\n  Tab as RTab,\n  TabList as RTabList,\n  TabListProps as RTabListProps,\n  TabPanel as RTabPanel,\n  TabPanelProps as RTabPanelProps,\n  TabProps as RTabProps,\n  Tabs as RTabs,\n  TabsProps as RTabsProp,\n} from \"react-tabs\";\nimport { variant } from \"styled-system\";\nimport { Box, BoxProps } from \"./Box\";\nimport { styled } from \"./system\";\nimport { SystemColor, SystemColorNames } from \"./system/types\";\n\nexport type TabProps = {\n  children: ReactNode;\n} & Omit<RTabProps, \"ref\">;\n\nexport const Tab = ({ children, ...props }: TabProps) => {\n  props.selected;\n  props.disabled;\n  return (\n    <RTab\n      css={(theme) => [\n        css`\n          display: inline-block;\n          border-bottom: 4px solid transparent;\n          opacity: 0.7;\n          position: relative;\n          list-style: none;\n          padding: ${theme.space.xsmall} ${theme.space.small};\n          cursor: pointer;\n          user-select: none;\n\n          &:focus {\n            box-shadow: ${theme.shadows.outline};\n          }\n        `,\n        props.selected &&\n          css`\n            opacity: 1;\n            border-bottom-color: currentColor;\n          `,\n        props.disabled &&\n          css`\n            opacity: 0.5;\n            cursor: default;\n          `,\n      ]}\n      {...props}\n    >\n      {children}\n    </RTab>\n  );\n};\n\nTab.tabsRole = \"Tab\";\n\nexport type TabsProps = RTabsProp;\n\nexport const Tabs = RTabs;\n\nexport type TabListProps = Omit<RTabListProps, \"ref\"> & {\n  tone?: SystemColorNames;\n  inverted?: boolean;\n};\n\nexport const TabList = styled(RTabList)<TabListProps>(\n  (props) => css`\n    list-style: none;\n    margin-left: 0;\n    padding-left: 0;\n\n    margin: 0;\n    padding: 0;\n\n    display: block;\n    overflow-y: auto;\n    width: 100%;\n    white-space: nowrap;\n\n    box-shadow: ${props.theme.shadows.standard};\n  `,\n  variant<\n    {\n      color: SystemColor;\n      backgroundColor: SystemColor;\n    },\n    SystemColorNames,\n    string\n  >({\n    scale: \"tabs\",\n    prop: \"tone\",\n    variants: {\n      primary: {\n        backgroundColor: \"primary.800\",\n        color: \"primary.50\",\n      },\n      accent: {\n        backgroundColor: \"accent.800\",\n        color: \"accent.50\",\n      },\n      neutral: {\n        backgroundColor: \"neutral.800\",\n        color: \"neutral.50\",\n      },\n      success: {\n        backgroundColor: \"success.800\",\n        color: \"success.50\",\n      },\n      warning: {\n        backgroundColor: \"warning.800\",\n        color: \"warning.50\",\n      },\n      error: {\n        backgroundColor: \"error.800\",\n        color: \"error.50\",\n      },\n      info: {\n        backgroundColor: \"info.800\",\n        color: \"info.50\",\n      },\n    },\n  }),\n  (props) =>\n    props.inverted &&\n    variant<\n      {\n        color: SystemColor;\n        backgroundColor: SystemColor;\n      },\n      SystemColorNames,\n      string\n    >({\n      scale: \"tabs.inverted\",\n      prop: \"tone\",\n      variants: {\n        primary: {\n          color: \"primary.800\",\n          backgroundColor: \"primary.50\",\n        },\n        accent: {\n          color: \"accent.800\",\n          backgroundColor: \"accent.50\",\n        },\n        neutral: {\n          color: \"neutral.800\",\n          backgroundColor: \"neutral.50\",\n        },\n        success: {\n          color: \"success.800\",\n          backgroundColor: \"success.50\",\n        },\n        warning: {\n          color: \"warning.800\",\n          backgroundColor: \"warning.50\",\n        },\n        error: {\n          color: \"error.800\",\n          backgroundColor: \"error.50\",\n        },\n        info: {\n          color: \"info.800\",\n          backgroundColor: \"info.50\",\n        },\n      },\n    })\n);\n\nTabList.defaultProps = {\n  tone: \"primary\",\n};\n\n(TabList as any).tabsRole = \"TabList\";\n\nexport type TabPanelProps = {} & Omit<RTabPanelProps, \"ref\"> &\n  Pick<\n    BoxProps,\n    | \"padding\"\n    | \"paddingBottom\"\n    | \"paddingLeft\"\n    | \"paddingRight\"\n    | \"paddingTop\"\n    | \"paddingX\"\n    | \"paddingY\"\n    | \"p\"\n    | \"pb\"\n    | \"pl\"\n    | \"pr\"\n    | \"px\"\n    | \"pt\"\n    | \"py\"\n  >;\n\nexport const TabPanel = ({\n  children,\n  padding,\n  paddingBottom,\n  paddingLeft,\n  paddingRight,\n  paddingTop,\n  paddingX,\n  paddingY,\n  p = \"standard\",\n  pb,\n  pl,\n  pr,\n  pt,\n  px,\n  py,\n  ...props\n}: TabPanelProps) => {\n  return (\n    <RTabPanel\n      css={[\n        css`\n          display: none;\n        `,\n        props.selected &&\n          css`\n            display: block;\n          `,\n      ]}\n      {...props}\n    >\n      <Box\n        padding={padding}\n        paddingBottom={paddingBottom}\n        paddingLeft={paddingLeft}\n        paddingRight={paddingRight}\n        paddingTop={paddingTop}\n        paddingX={paddingX}\n        paddingY={paddingY}\n        p={p}\n        pb={pb}\n        pl={pl}\n        pr={pr}\n        pt={pt}\n        px={px}\n        py={py}\n      >\n        {children}\n      </Box>\n    </RTabPanel>\n  );\n};\n\nTabPanel.tabsRole = \"TabPanel\";\n", "import { forwardRef, Fragment } from \"react\";\nimport { CodeEditor, CodeEditorProps, CodeEditorRef } from \"./CodeEditor\";\n\nexport type TextEditorProps = CodeEditorProps;\nexport type TextEditorRef = CodeEditorRef;\n\nexport const TextEditor = forwardRef<TextEditorRef, TextEditorProps>(\n  (props: TextEditorProps, ref) => {\n    return (\n      <Fragment>\n        <CodeEditor\n          ref={ref}\n          fontFamily=\"body\"\n          wrapLines\n          lineNumbers={false}\n          {...props}\n        />\n      </Fragment>\n    );\n  }\n);\n", "import { ChangeEvent, forwardRef, InputHTMLAttributes, RefObject } from \"react\";\nimport { css } from \"@emotion/react\";\nimport {\n  color,\n  compose,\n  cursor,\n  space,\n  typography,\n  background,\n  border,\n  shadow,\n  ColorProps,\n  CursorProps,\n  SpaceProps,\n  TypographyProps,\n  BackgroundProps,\n  BorderProps,\n  ShadowProps,\n  styled\n} from \"./system\";\n\nexport type StyledTextareaProps = {\n  error?: boolean;\n  resize?: \"both\" | \"horizontal\" | \"vertical\" | \"none\";\n} & InputHTMLAttributes<HTMLInputElement> &\n  ColorProps &\n  CursorProps &\n  SpaceProps &\n  TypographyProps &\n  BackgroundProps &\n  BorderProps &\n  ShadowProps;\n\nexport const StyledTextarea = styled(\"textarea\")<StyledTextareaProps>(\n  ({ theme, resize, error }) => [\n    css`\n      border-radius: ${theme.radii.small};\n      padding: ${theme.space.xsmall} ${theme.space.xxsmall};\n      border-color: ${theme.colors.neutral[\"100\"]};\n      border-style: solid;\n      border-width: ${theme.borderWidths.standard};\n      box-sizing: border-box;\n      width: 100%;\n      resize: ${resize};\n      ::placeholder {\n        color: ${theme.colors.neutral[\"400\"]};\n      }\n      :focus {\n        outline-color: transparent;\n        outline-width: 0;\n        border-color: ${theme.colors.primary[\"800\"]};\n        box-shadow: ${theme.shadows.outline};\n        z-index: 1;\n      }\n      :disabled {\n        background-color: ${theme.colors.neutral[\"50\"]};\n      }\n    `,\n    error &&\n      css`\n        border-color: ${theme.colors.error[\"500\"]};\n      `,\n  ],\n  compose(color, cursor, space, typography, background, border, shadow)\n);\n\nexport type TextareaProps = {\n  id?: string;\n  value?: string;\n  onChange?: (v: string) => void;\n  onBlur?: () => void;\n  ref?: RefObject<HTMLTextAreaElement>;\n  disabled?: boolean;\n  required?: boolean;\n  error?: boolean;\n  resize?: \"both\" | \"horizontal\" | \"vertical\" | \"none\";\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n  (\n    {\n      id,\n      value,\n      onChange = () => {},\n      onBlur = () => {},\n      disabled,\n      required,\n      error,\n      resize = \"vertical\",\n    },\n    ref\n  ) => {\n    function handleChange(\n      e: ChangeEvent<HTMLTextAreaElement> & ChangeEvent<HTMLInputElement>\n    ) {\n      if (!disabled) {\n        const newValue = e.currentTarget.value;\n        onChange(newValue);\n      }\n    }\n    return (\n      <StyledTextarea\n        id={id}\n        ref={ref}\n        value={value}\n        onChange={handleChange}\n        onBlur={onBlur}\n        required={required}\n        disabled={disabled}\n        aria-invalid={error}\n        error={error}\n        resize={resize}\n      />\n    );\n  }\n);\n", "import { css } from \"@emotion/react\";\nimport { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Box } from \"./Box\";\n\nexport type TooltipProps = {\n  children: ReactNode;\n  tooltip: ReactNode;\n  width?: number;\n  position?: \"top\" | \"left\" | \"right\" | \"bottom\";\n};\n\nexport const Tooltip = ({\n  children,\n  tooltip,\n  position = \"top\",\n  width = 120,\n}: TooltipProps) => {\n  const tooltipRef = useRef<HTMLSpanElement>(null);\n  const [height, setHeight] = useState(0);\n  useEffect(() => {\n    if (tooltipRef.current) {\n      setHeight(tooltipRef.current.clientHeight);\n    }\n  }, []);\n\n  return (\n    <Box\n      css={css`\n        position: relative;\n        display: inline-block;\n\n        &:hover .tooltip {\n          opacity: 1;\n        }\n      `}\n    >\n      {children}\n      <Box\n        as=\"span\"\n        ref={tooltipRef as any}\n        className=\"tooltip\"\n        css={(theme) => [\n          css`\n            width: ${width}px;\n            background-color: black;\n            color: #fff;\n            text-align: center;\n            padding: ${theme.space.xsmall} ${theme.space.small};\n            border-radius: ${theme.radii.standard};\n            opacity: 0;\n            transition: opacity 0.3s;\n\n            /* Position the tooltip text - see examples below! */\n            position: absolute;\n            z-index: 1;\n          `,\n          position === \"bottom\" &&\n            css`\n              top: 150%;\n              left: 50%;\n              margin-left: -${width / 2}px;\n\n              &::after {\n                content: \" \";\n                position: absolute;\n                bottom: 100%; /* At the top of the tooltip */\n                left: 50%;\n                margin-left: -5px;\n                border-width: 5px;\n                border-style: solid;\n                border-color: transparent transparent black transparent;\n              }\n            `,\n          position === \"right\" &&\n            css`\n              top: -${height / 2 - 10}px;\n              left: 110%;\n\n              &::after {\n                content: \" \";\n                position: absolute;\n                top: 50%;\n                right: 100%; /* To the left of the tooltip */\n                margin-top: -5px;\n                border-width: 5px;\n                border-style: solid;\n                border-color: transparent black transparent transparent;\n              }\n            `,\n          position === \"left\" &&\n            css`\n              top: -${height / 2 - 10}px;\n              right: 110%;\n              &::after {\n                content: \" \";\n                position: absolute;\n                top: 50%;\n                left: 100%;\n                margin-top: -5px;\n                border-width: 5px;\n                border-style: solid;\n                border-color: transparent transparent transparent black;\n              }\n            `,\n          position === \"top\" &&\n            css`\n              bottom: 150%;\n              left: 50%;\n              margin-left: -${width / 2}px;\n              &::after {\n                content: \" \";\n                position: absolute;\n                top: 100%; /* At the bottom of the tooltip */\n                left: 50%;\n                margin-left: -5px;\n                border-width: 5px;\n                border-style: solid;\n                border-color: black transparent transparent transparent;\n              }\n            `,\n\n          height === 0 &&\n            css`\n              opacity: 0;\n            `,\n        ]}\n      >\n        {tooltip}\n      </Box>\n    </Box>\n  );\n};\n"],
  "mappings": "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F,CAAC,CACH,EAEa,GAAgB,GAC7B,GAAc,aAAe,CAC3B,KAAM,SACR,EChDA,GAAM,IAA2E,EAC/E,EACF,EACE,CAAC,CAAE,WACM,EACL,YAAa,QACb,YAAa,EAAM,OAAO,QAAQ,KAClC,gBAAiB,MACnB,GAEF,EAME,CACA,MAAO,iBACP,KAAM,OACN,SAAU,CACR,QAAS,CACP,MAAO,aACT,EACA,OAAQ,CACN,MAAO,YACT,EACA,QAAS,CACP,MAAO,aACT,EACA,QAAS,CACP,MAAO,aACT,EACA,QAAS,CACP,MAAO,aACT,EACA,MAAO,CACL,MAAO,WACT,EACA,KAAM,CACJ,MAAO,UACT,CACF,CACF,CAAC,CACH,EAEa,GAAoB,GACjC,GAAkB,aAAe,CAC/B,KAAM,SACR,EChDA,GAAM,IAA2E,EAC/E,EACF,EACE,CAAC,EACD,EAOE,CACA,MAAO,iBACP,KAAM,OACN,SAAU,CACR,QAAS,CACP,gBAAiB,cACjB,MAAO,YACT,EACA,OAAQ,CACN,gBAAiB,aACjB,MAAO,WACT,EACA,QAAS,CACP,gBAAiB,cACjB,MAAO,YACT,EACA,QAAS,CACP,gBAAiB,cACjB,MAAO,YACT,EACA,QAAS,CACP,gBAAiB,cACjB,MAAO,YACT,EACA,MAAO,CACL,gBAAiB,YACjB,MAAO,UACT,EACA,KAAM,CACJ,gBAAiB,WACjB,MAAO,SACT,CACF,CACF,CAAC,CACH,EAEa,GAAoB,GACjC,GAAkB,aAAe,CAC/B,KAAM,SACR,EClDA,GAAM,IAA+E,EACnF,EACF,EACE,CAAC,EACD,EAOE,CACA,MAAO,mBACP,KAAM,OACN,SAAU,CACR,QAAS,CACP,MAAO,cACP,gBAAiB,YACnB,EACA,OAAQ,CACN,MAAO,aACP,gBAAiB,WACnB,EACA,QAAS,CACP,MAAO,cACP,gBAAiB,YACnB,EACA,QAAS,CACP,MAAO,cACP,gBAAiB,YACnB,EACA,QAAS,CACP,MAAO,cACP,gBAAiB,YACnB,EACA,MAAO,CACL,MAAO,YACP,gBAAiB,UACnB,EACA,KAAM,CACJ,MAAO,WACP,gBAAiB,SACnB,CACF,CACF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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
  "names": []
}
