aidos-ui 5.0.3 → 5.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hash.ts","../src/isServer.ts","../src/jss.tsx","../src/BaseView.tsx","../src/Icon.tsx","../src/typography.ts","../src/Text.tsx","../src/Avatar.tsx","../src/Badge.tsx","../src/Interactable.tsx","../src/BaseButton.tsx","../src/BaseInput.tsx","../src/BaseLink.tsx","../src/FlexLayout.tsx","../src/Column.tsx","../src/BaseList.tsx","../src/BaseListAddOn.tsx","../src/Row.tsx","../src/TextPairing.tsx","../src/BaseListItem.tsx","../src/Box.tsx","../src/Button.tsx","../src/aria.ts","../src/useRefEffect.tsx","../src/useNavigation.tsx","../src/ButtonGroup.tsx","../src/Calendar.tsx","../src/Card.tsx","../src/StaticCheckbox.tsx","../src/Checkbox.tsx","../src/Circle.tsx","../src/IconButton.tsx","../src/Toggle.tsx","../src/DarkMode.tsx","../src/InputFrame.tsx","../src/NumericInputSegment.tsx","../src/Popover.tsx","../src/dateInputValue.ts","../src/DateInput.tsx","../src/DatetimeInput.tsx","../src/ListDivider.tsx","../src/Dialog.tsx","../src/Emitter.ts","../src/guid.ts","../src/IconLink.tsx","../src/Link.tsx","../src/List.tsx","../src/ListButtonItem.tsx","../src/ListHeaderItem.tsx","../src/ListItem.tsx","../src/ListLinkItem.tsx","../src/ListSpacer.tsx","../src/MenuIcon.tsx","../src/NavigationSplitView.tsx","../src/numberToBase.ts","../src/OnVisible.tsx","../src/ProgressBar.tsx","../src/ProgressCircle.tsx","../src/useCookie.tsx","../src/Providers.tsx","../src/RangeInput.tsx","../src/StackContext.tsx","../src/RootView.tsx","../src/Select.tsx","../src/stateMachineContextFactory.tsx","../src/Storage.tsx","../src/Stream.tsx","../src/Sublist.tsx","../src/SubmitIconInput.tsx","../src/TabBar.tsx","../src/Table.tsx","../src/Tabs.tsx","../src/TextArea.tsx","../src/TextInput.tsx","../src/TextInputWithState.tsx","../src/TimeInput.tsx","../src/Tooltip.tsx","../src/useKeyboard.tsx","../src/usePromise.tsx"],"names":["hash","styles","key","value","cssValue","React","BaseView","jsx","IconifyIcon","Avatar","useState","jsxs","sizes","BaseButton","BaseInput","Fragment","BaseLink","Link","FlexLayout","Column","BaseList","BaseListAddOn","Row","BaseListItem","Button","element","useCallback","elements","Calendar","IconButton","useContext","InputFrame","NumericInputSegment","useRef","useEffect","useMemo","useId","dateFormatter","DateInput","DatetimeInput","IconLink","ListButtonItem","ListItem","ListLinkItem","RangeInput","TextArea","TextInput","getSegments","parseSegments","TimeInput","error"],"mappings":"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","file":"index.js","sourcesContent":["export function hash(source: string, modulus?: number): number {\n let hash = 0;\n let i: number;\n let chr: number;\n\n if (source.length === 0) {\n return hash;\n }\n\n for (i = 0; i < source.length; i++) {\n chr = source.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n if (modulus) {\n return Math.abs(hash) % modulus;\n } else {\n return Math.abs(hash);\n }\n}\n","export function isServer() {\n return typeof window === \"undefined\" || window.document == null;\n}\n","import CSS from \"csstype\";\nimport React, { useState } from \"react\";\n\nimport { hash } from \"./hash\";\nimport { isServer } from \"./isServer\";\n\ntype StylesValueType = string | number | CSS.Properties<string | number>;\n\nexport type Styles = CSS.Properties<\n string | number | CSS.Properties<string | number>\n>;\n\nexport type JSS =\n Styles | null | false | undefined | { [key: string]: Styles } | Array<JSS>;\n\nconst aliases: {\n [alias: string]: (value: StylesValueType) => [string, StylesValueType][];\n} = {\n margin: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n if (matches) {\n return [\n [\"margin-top\", matches[1]],\n [\"margin-bottom\", matches[1]],\n [\"margin-left\", matches[2]],\n [\"margin-right\", matches[2]],\n ];\n } else {\n return [\n [\"margin-top\", value],\n [\"margin-bottom\", value],\n [\"margin-left\", value],\n [\"margin-right\", value],\n ];\n }\n },\n padding: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n\n if (matches) {\n return [\n [\"padding-top\", matches[1]],\n [\"padding-bottom\", matches[1]],\n [\"padding-left\", matches[2]],\n [\"padding-right\", matches[2]],\n ];\n } else {\n return [\n [\"padding-top\", value],\n [\"padding-bottom\", value],\n [\"padding-left\", value],\n [\"padding-right\", value],\n ];\n }\n },\n};\n\nconst rawHashMap = new Map<string, { selector: string; key: string }>();\n\nfunction createStyleNode(content: string) {\n if (isServer()) {\n serverStyles.push(content);\n } else {\n const style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(content));\n document.head.appendChild(style);\n }\n}\n\nconst pixelStyles = new Set([\n \"min-height\",\n \"height\",\n \"max-height\",\n \"min-width\",\n \"width\",\n \"max-width\",\n \"margin\",\n \"margin-top\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"padding\",\n \"padding-top\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\",\n \"border-radius\",\n \"font-size\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"outline-offset\",\n \"gap\",\n \"row-gap\",\n \"column-gap\",\n]);\n\nconst toPixelValue = (key: string, value): string => {\n const stringValue = value.toString();\n const unitlessNumber = /^-?(?:\\d+|\\d*\\.\\d+)$/.test(stringValue.trim());\n\n return pixelStyles.has(key) && unitlessNumber\n ? `${stringValue}px`\n : stringValue;\n};\n\nconst getCSS = (key: string, value): [string, string] => {\n const cssProp = key.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n const cssValue = toPixelValue(cssProp, value);\n return [cssProp, cssValue];\n};\n\nconst flattenJSS = (jss: JSS): Styles => {\n if (!jss) {\n return {};\n } else if (Array.isArray(jss)) {\n const result: Styles = {};\n for (const item of jss) {\n const styles = flattenJSS(item);\n for (const [key, value] of Object.entries(styles)) {\n const current = result[key];\n if (\n typeof current === \"object\" &&\n current != null &&\n typeof value === \"object\" &&\n value != null\n ) {\n result[key] = { ...current, ...value };\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n } else {\n return jss;\n }\n};\n\nexport const toClassnames = (jss: JSS, componentName?: string): string => {\n jss = flattenJSS(jss);\n\n const stylesStack = Object.entries(jss);\n const classNames: string[] = [];\n\n if (componentName) {\n classNames.push(componentName);\n }\n\n while (stylesStack.length) {\n const [key, value] = stylesStack.pop();\n\n if (aliases[key]) {\n stylesStack.push(...aliases[key](value));\n continue;\n }\n\n const inputKey =\n (key.startsWith(\"@media\") ? \"specific:\" : \"\") +\n key +\n JSON.stringify(value);\n const rawHash = hash(inputKey).toString(32);\n const cached = rawHashMap.get(rawHash);\n\n if (cached != null) {\n if (cached.key !== inputKey) {\n console.warn(\n `[jss] Hash collision detected: \"${inputKey}\" collides with \"${cached.key}\"`,\n );\n }\n classNames.push(cached.selector);\n continue;\n }\n\n const selector = `x${rawHash}`;\n rawHashMap.set(rawHash, { selector, key: inputKey });\n classNames.push(selector);\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n const [cssProp, cssValue] = getCSS(key, value);\n createStyleNode(`.${selector} { ${cssProp}: ${cssValue}; }`);\n } else if (typeof value === \"object\" && key.startsWith(\"@media\")) {\n const media = key;\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`${media} { .${selector}.${selector} { ${cssValue} } }`);\n } else if (typeof value === \"object\" && value != null) {\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`.${selector}${key} { ${cssValue} }`);\n }\n }\n\n return classNames.join(\" \");\n};\n\nconst serverStyles = [];\n\nexport function JSSProvider({\n themes,\n children,\n}: {\n themes: { dark: Theme; light: Theme };\n children: React.JSX.Element;\n}) {\n const [styles] = useState(() => getBaseStyles(themes));\n\n return (\n <>\n {styles.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n {children}\n </>\n );\n}\n\nexport function JSServerStyles() {\n const [styles] = useState(() => serverStyles);\n\n return (\n <>\n {styles.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n </>\n );\n}\n\nexport type Size =\n \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\" | \"xxlarge\" | \"xxxlarge\";\n\nexport type Spacing = \"none\" | Size;\n\nexport type Gap = Spacing;\n\nexport type Padding = Spacing | [Spacing, Spacing];\n\nexport type Margin = Spacing | [Spacing, Spacing];\n\nexport type Material = \"aurora\" | \"dawn\" | \"mist\" | \"twilight\";\n\nexport type Direction = \"horizontal\" | \"vertical\";\n\nexport type Position = \"start\" | \"end\";\n\nexport type Justify =\n \"none\" | \"center\" | \"flex-start\" | \"space-between\" | \"flex-end\" | \"stretch\";\n\nexport type Align = \"none\" | \"center\" | \"stretch\" | \"flex-start\" | \"flex-end\";\n\nexport type FlexDirection = \"row\" | \"column\";\n\nexport type Color =\n | \"none\"\n | \"light\"\n | \"dark\"\n | \"negative\"\n | \"warning\"\n | \"highlight\"\n | \"primary-background\"\n | \"secondary-background\"\n | \"divider\"\n | \"inherit\";\n\nexport type TextColor =\n | \"primary\"\n | \"secondary\"\n | \"highlight\"\n | \"negative\"\n | \"subtle\"\n | \"light\"\n | \"inverse\"\n | \"inherit\";\n\nexport function cssVar(string: keyof Theme): string {\n return `var(${string})`;\n}\n\nexport function getMaterial(material: Material): Styles {\n switch (material) {\n case \"aurora\":\n return {\n background: cssVar(\"--material-aurora\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n case \"dawn\":\n return {\n background: cssVar(\"--material-dawn\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n case \"mist\":\n return {\n background: cssVar(\"--material-mist\"),\n backdropFilter: \"blur(24px) saturate(90%)\",\n };\n case \"twilight\":\n return {\n background: cssVar(\"--material-twilight\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n }\n}\n\nconst sizes: { [size in Size]: string } = {\n xsmall: cssVar(\"--spacing-xs\"),\n small: cssVar(\"--spacing-s\"),\n medium: cssVar(\"--spacing-m\"),\n large: cssVar(\"--spacing-l\"),\n xlarge: cssVar(\"--spacing-xl\"),\n xxlarge: cssVar(\"--spacing-xxl\"),\n xxxlarge: cssVar(\"--spacing-xxxl\"),\n};\n\nexport function getSize(size: Size): string {\n return sizes[size];\n}\n\nexport function getSpacing(spacing: Spacing): string {\n if (spacing === \"none\") {\n return \"0px\";\n } else {\n return getSize(spacing);\n }\n}\n\nexport function getPadding(padding: Padding): JSS {\n if (Array.isArray(padding)) {\n const [vertical, horizontal] = padding;\n return {\n paddingTop: getSpacing(vertical),\n paddingBottom: getSpacing(vertical),\n paddingLeft: getSpacing(horizontal),\n paddingRight: getSpacing(horizontal),\n };\n } else {\n return {\n padding: getSpacing(padding),\n };\n }\n}\n\nexport function getMargin(margin: Margin): JSS {\n if (Array.isArray(margin)) {\n const [vertical, horizontal] = margin;\n return {\n marginTop: getSpacing(vertical),\n marginBottom: getSpacing(vertical),\n marginLeft: getSpacing(horizontal),\n marginRight: getSpacing(horizontal),\n };\n } else {\n return {\n margin: getSpacing(margin),\n };\n }\n}\n\nexport type Theme = {\n /* Background */\n [\"--overlay-background\"]: string;\n [\"--primary-background\"]: string;\n [\"--secondary-background\"]: string;\n [\"--divider\"]: string;\n [\"--strong-divider\"]: string;\n [\"--pressed-background\"]: string;\n [\"--hovered-background\"]: string;\n [\"--selected-background\"]: string;\n [\"--nav-bar\"]: string;\n [\"--material-aurora\"]: string;\n [\"--material-dawn\"]: string;\n [\"--material-mist\"]: string;\n [\"--material-twilight\"]: string;\n /* Effects */\n [\"--warning\"]: string;\n [\"--highlight\"]: string;\n [\"--outline\"]: string;\n [\"--light-highlight\"]: string;\n [\"--light-highlight-hovered\"]: string;\n [\"--light-highlight-pressed\"]: string;\n /* Text */\n [\"--primary-text\"]: string;\n [\"--secondary-text\"]: string;\n [\"--subtle-text\"]: string;\n [\"--highlight-text\"]: string;\n [\"--negative-text\"]: string;\n [\"--light-text\"]: string;\n [\"--inverse-text\"]: string;\n\n [\"--font-xsmall\"]: string;\n [\"--font-small\"]: string;\n [\"--font-medium\"]: string;\n [\"--font-large\"]: string;\n [\"--font-xlarge\"]: string;\n [\"--font-xxlarge\"]: string;\n [\"--font-xxxlarge\"]: string;\n\n /* Buttons */\n [\"--background-button-primary\"]: string;\n [\"--background-button-secondary\"]: string;\n [\"--background-button-negative\"]: string;\n [\"--background-button-inverse\"]: string;\n [\"--background-button-disabled\"]: string;\n /* Spacing */\n [\"--spacing-xs\"]: string;\n [\"--spacing-s\"]: string;\n [\"--spacing-m\"]: string;\n [\"--spacing-l\"]: string;\n [\"--spacing-xl\"]: string;\n [\"--spacing-xxl\"]: string;\n [\"--spacing-xxxl\"]: string;\n [\"--border-radius-s\"]: string;\n [\"--border-radius-m\"]: string;\n [\"--border-radius-l\"]: string;\n [\"--border-radius-xl\"]: string;\n [\"--nav-bar-height\"]: string;\n /* Shadows */\n [\"--shadow-sm\"]: string;\n [\"--shadow-md\"]: string;\n [\"--shadow-lg\"]: string;\n /* Transitions */\n [\"--transition-fast\"]: string;\n [\"--transition-normal\"]: string;\n};\n\nexport const lightTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(255, 255, 255)\",\n [\"--primary-background\"]: \"rgb(248, 248, 250)\",\n [\"--secondary-background\"]: \"rgb(242, 242, 245)\",\n [\"--divider\"]: \"rgb(218, 218, 222)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(226, 226, 230)\",\n [\"--hovered-background\"]: \"rgb(238, 238, 241)\",\n [\"--selected-background\"]: \"rgb(232, 232, 236)\",\n [\"--nav-bar\"]: \"rgb(244, 244, 246)\",\n [\"--material-aurora\"]:\n \"radial-gradient(120% 90% at 0% 10%, rgba(66, 184, 131, 0.04), transparent 58%), radial-gradient(110% 100% at 100% 90%, rgba(70, 132, 255, 0.055), transparent 62%), linear-gradient(145deg, rgba(248, 249, 252, 0.96), rgba(236, 240, 245, 0.92))\",\n [\"--material-dawn\"]:\n \"radial-gradient(110% 90% at 10% 100%, rgba(255, 162, 105, 0.13), transparent 60%), radial-gradient(100% 85% at 90% 0%, rgba(120, 166, 255, 0.09), transparent 60%), linear-gradient(145deg, rgba(252, 248, 246, 0.96), rgba(244, 238, 242, 0.92))\",\n [\"--material-mist\"]:\n \"radial-gradient(120% 100% at 50% 0%, rgba(255, 255, 255, 0.55), transparent 65%), linear-gradient(145deg, rgba(247, 248, 250, 0.82), rgba(235, 237, 241, 0.78))\",\n [\"--material-twilight\"]:\n \"radial-gradient(115% 95% at 0% 10%, rgba(103, 91, 214, 0.1), transparent 60%), radial-gradient(110% 90% at 100% 100%, rgba(196, 105, 151, 0.07), transparent 62%), linear-gradient(145deg, rgba(243, 242, 249, 0.97), rgba(229, 231, 241, 0.93))\",\n /* Effects */\n [\"--warning\"]: \"rgb(255, 204, 0)\",\n [\"--highlight\"]: \"rgb(0, 122, 255)\",\n [\"--outline\"]: \"rgb(103, 176, 255)\",\n [\"--light-highlight\"]: \"rgb(220, 232, 245)\",\n [\"--light-highlight-hovered\"]: \"rgb(209, 226, 244)\",\n [\"--light-highlight-pressed\"]: \"rgb(197, 218, 240)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(0, 0, 0)\",\n [\"--secondary-text\"]: \"rgb(100, 100, 100)\",\n [\"--subtle-text\"]: \"rgb(180, 180, 180)\",\n [\"--highlight-text\"]: \"rgb(0, 122, 255)\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--inverse-text\"]: \"rgb(255, 255, 255)\",\n [\"--font-xsmall\"]: \"10px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"28px\",\n [\"--font-xxxlarge\"]: \"36px\",\n /* Buttons */\n [\"--background-button-primary\"]: \"rgb(0, 122, 255)\",\n [\"--background-button-secondary\"]: \"rgb(218, 218, 223)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-inverse\"]: \"rgb(0, 0, 0)\",\n [\"--background-button-disabled\"]: \"rgb(218, 218, 223)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"4px\",\n [\"--border-radius-m\"]: \"8px\",\n [\"--border-radius-l\"]: \"12px\",\n [\"--border-radius-xl\"]: \"16px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows */\n [\"--shadow-sm\"]:\n \"0 1px 2px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1)\",\n [\"--shadow-md\"]:\n \"0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05)\",\n [\"--shadow-lg\"]:\n \"0 10px 25px rgba(0, 0, 0, 0.15), 0 4px 10px rgba(0, 0, 0, 0.1)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const darkTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(35, 36, 37)\",\n [\"--primary-background\"]: \"rgb(42, 43, 46)\",\n [\"--secondary-background\"]: \"rgb(65, 66, 67)\",\n [\"--divider\"]: \"rgb(70, 72, 73)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(90, 92, 93)\",\n [\"--hovered-background\"]: \"rgb(50, 53, 54)\",\n [\"--selected-background\"]: \"rgb(65, 68, 69)\",\n [\"--nav-bar\"]: \"rgb(34, 35, 36)\",\n [\"--material-aurora\"]:\n \"radial-gradient(120% 90% at 0% 10%, rgba(45, 160, 112, 0.065), transparent 58%), radial-gradient(110% 100% at 100% 90%, rgba(66, 126, 245, 0.08), transparent 62%), linear-gradient(145deg, rgba(39, 41, 43, 0.96), rgba(27, 30, 33, 0.94))\",\n [\"--material-dawn\"]:\n \"radial-gradient(110% 90% at 10% 100%, rgba(255, 139, 92, 0.095), transparent 60%), radial-gradient(100% 85% at 90% 0%, rgba(104, 145, 235, 0.08), transparent 60%), linear-gradient(145deg, rgba(43, 38, 39, 0.96), rgba(30, 30, 36, 0.94))\",\n [\"--material-mist\"]:\n \"radial-gradient(120% 100% at 50% 0%, rgba(255, 255, 255, 0.025), transparent 65%), linear-gradient(145deg, rgba(48, 50, 53, 0.82), rgba(30, 32, 35, 0.8))\",\n [\"--material-twilight\"]:\n \"radial-gradient(115% 95% at 0% 10%, rgba(103, 91, 214, 0.13), transparent 60%), radial-gradient(110% 90% at 100% 100%, rgba(196, 105, 151, 0.065), transparent 62%), linear-gradient(145deg, rgba(35, 34, 47, 0.97), rgba(24, 27, 38, 0.94))\",\n /* Effects */\n [\"--warning\"]: \"rgb(255, 204, 0)\",\n [\"--highlight\"]: \"rgb(50, 140, 220)\",\n [\"--outline\"]: \"rgb(91, 170, 255)\",\n [\"--light-highlight\"]: \"rgba(49, 57, 63)\",\n [\"--light-highlight-hovered\"]: \"rgb(54, 68, 80)\",\n [\"--light-highlight-pressed\"]: \"rgb(60, 78, 96)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(255, 255, 255)\",\n [\"--secondary-text\"]: \"rgb(200, 200, 200)\",\n [\"--subtle-text\"]: \"rgb(140, 140, 140)\",\n [\"--highlight-text\"]: \"#4ca7f8\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--inverse-text\"]: \"rgb(0, 0, 0)\",\n [\"--font-xsmall\"]: \"10px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"28px\",\n [\"--font-xxxlarge\"]: \"36px\",\n /* Buttons */\n [\"--background-button-primary\"]: \"rgb(50, 140, 220)\",\n [\"--background-button-secondary\"]: \"rgb(82, 83, 86)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-inverse\"]: \"rgb(255, 255, 255)\",\n [\"--background-button-disabled\"]: \"rgb(70, 72, 73)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"4px\",\n [\"--border-radius-m\"]: \"8px\",\n [\"--border-radius-l\"]: \"12px\",\n [\"--border-radius-xl\"]: \"16px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows - stronger for dark mode to be visible */\n [\"--shadow-sm\"]: \"0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.3)\",\n [\"--shadow-md\"]:\n \"0 4px 6px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.2)\",\n [\"--shadow-lg\"]:\n \"0 10px 25px rgba(0, 0, 0, 0.35), 0 4px 10px rgba(0, 0, 0, 0.25)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const baseStyles = `\n* {\n box-sizing: border-box;\n border: none;\n touch-action: manipulation;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n*:focus {\n outline-color: ${cssVar(\"--highlight\")};\n}\n\nbutton,\ninput,\ntextarea,\nselect {\n font: inherit;\n}\n\nhtml {\n margin: 0;\n min-height: 100%;\n width: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n background-color: ${cssVar(\"--primary-background\")};\n}\n\nbody {\n margin: 0;\n min-height: 100%;\n width: 100%;\n overflow: visible;\n background-color: ${cssVar(\"--primary-background\")};\n}\n\n@keyframes dialogFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes popoverFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n`;\n\nconst backgroundStyles = {\n highlight: {\n backgroundColor: cssVar(\"--highlight\"),\n },\n light: {\n backgroundColor: cssVar(\"--light-text\"),\n },\n dark: {\n backgroundColor: cssVar(\"--primary-text\"),\n },\n warning: {\n backgroundColor: cssVar(\"--warning\"),\n },\n \"primary-background\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n negative: {\n backgroundColor: cssVar(\"--negative-text\"),\n },\n \"secondary-background\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n },\n divider: {\n backgroundColor: cssVar(\"--divider\"),\n },\n inherit: {\n backgroundColor: \"inherit\",\n },\n};\n\nconst colorValues: { [color in Color]: string } = {\n none: \"transparent\",\n highlight: cssVar(\"--highlight\"),\n light: cssVar(\"--light-text\"),\n dark: cssVar(\"--primary-text\"),\n warning: cssVar(\"--warning\"),\n \"primary-background\": cssVar(\"--primary-background\"),\n negative: cssVar(\"--negative-text\"),\n \"secondary-background\": cssVar(\"--secondary-background\"),\n divider: cssVar(\"--divider\"),\n inherit: \"currentColor\",\n};\n\nexport const getColorValue = (color: Color): string => colorValues[color];\n\nexport const getBackground = (color: Color): JSS => {\n return backgroundStyles[color];\n};\n\nexport const MOBILE = 750;\nexport const TABLET = 1000;\nexport const LAPTOP = 1200;\n\nexport const MOBILE_MEDIA = `@media (min-width: 0px) and (max-width: ${MOBILE}px)`;\nexport const TABLET_MEDIA = `@media (min-width: ${MOBILE}px) and (max-width: ${TABLET}px)`;\nexport const LAPTOP_MEDIA = `@media (min-width: ${TABLET}px) and (max-width: ${LAPTOP}px)`;\nexport const DESKTOP_MEDIA = `@media (min-width: ${LAPTOP}px)`;\n\nexport function mobile(jss: JSS): { [key: string]: JSS } {\n return {\n [MOBILE_MEDIA]: jss,\n };\n}\n\nexport function tablet(jss: JSS): { [key: string]: JSS } {\n return {\n [TABLET_MEDIA]: jss,\n };\n}\n\nexport function laptop(jss: JSS): { [key: string]: JSS } {\n return {\n [LAPTOP_MEDIA]: jss,\n };\n}\n\nexport function desktop(jss: JSS): { [key: string]: JSS } {\n return {\n [DESKTOP_MEDIA]: jss,\n };\n}\n\nconst textColorStyles = {\n primary: {\n color: cssVar(\"--primary-text\"),\n },\n secondary: {\n color: cssVar(\"--secondary-text\"),\n },\n highlight: {\n color: cssVar(\"--highlight-text\"),\n },\n negative: {\n color: cssVar(\"--negative-text\"),\n },\n subtle: {\n color: cssVar(\"--subtle-text\"),\n },\n light: {\n color: cssVar(\"--light-text\"),\n },\n inverse: {\n color: cssVar(\"--inverse-text\"),\n },\n inherit: {\n color: \"inherit\",\n },\n};\n\nexport const getTextColor = (color: TextColor) => {\n return textColorStyles[color];\n};\n\nexport function getBaseStyles(themes: { light: Theme; dark: Theme }): string[] {\n const css: string[] = [];\n\n css.push(baseStyles);\n\n css.push(`body {\n color-scheme: light;\n ${Object.entries(themes.light)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n css.push(`body.dark-mode {\n color-scheme: dark;\n ${Object.entries(themes.dark)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n return css;\n}\n","import React from \"react\";\nimport { JSS, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n relative: {\n position: \"relative\",\n },\n grow: {\n flexGrow: 1,\n },\n shrink: {\n flexShrink: 1,\n },\n};\n\nexport interface BaseViewProps extends React.HTMLAttributes<HTMLElement> {\n jss?: JSS;\n ref?: React.Ref<HTMLDivElement>;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n relative?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n}\n\nexport const BaseView = React.forwardRef(function BaseView(\n { jss, children, tag, grow, shrink, relative, ...otherProps }: BaseViewProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const Tag: React.ElementType = tag ?? \"div\";\n\n return React.createElement(\n Tag,\n {\n ...otherProps,\n ref,\n className: toClassnames([\n jss,\n grow && styles.grow,\n shrink && styles.shrink,\n relative && styles.relative,\n ]),\n },\n children,\n );\n});\n","import React from \"react\";\nimport { Icon as IconifyIcon } from \"@iconify/react\";\nimport { BaseView } from \"./BaseView\";\nimport { IconType } from \"./IconType\";\nimport { Size, TextColor, getTextColor } from \"./jss\";\n\nconst styles = {\n root: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \" svg\": {\n height: \"inherit\",\n width: \"inherit\",\n },\n },\n xsmall: {\n height: 8,\n width: 8,\n },\n small: {\n height: 12,\n width: 12,\n },\n medium: {\n height: 18,\n width: 18,\n },\n large: {\n height: 24,\n width: 24,\n },\n xlarge: {\n height: 32,\n width: 32,\n },\n xxlarge: {\n height: 48,\n width: 48,\n },\n xxxlarge: {\n height: 64,\n width: 64,\n },\n};\n\nexport function Icon({\n icon,\n size,\n color,\n ariaLabel,\n}: {\n ariaLabel?: string;\n icon: IconType;\n size: Size;\n color: TextColor;\n}) {\n return (\n <BaseView\n aria-label={ariaLabel}\n jss={[\n styles.root,\n size === \"xsmall\" && styles.xsmall,\n size === \"small\" && styles.small,\n size === \"medium\" && styles.medium,\n size === \"large\" && styles.large,\n size === \"xlarge\" && styles.xlarge,\n size === \"xxlarge\" && styles.xxlarge,\n size === \"xxxlarge\" && styles.xxxlarge,\n getTextColor(color),\n ]}\n >\n <IconifyIcon icon={`lucide:${icon}`} width=\"100%\" height=\"100%\" />\n </BaseView>\n );\n}\n","import { Size, Styles, cssVar } from \"./jss\";\n\nconst fontSize: Record<Size, string> = {\n xsmall: cssVar(\"--font-xsmall\"),\n small: cssVar(\"--font-small\"),\n medium: cssVar(\"--font-medium\"),\n large: cssVar(\"--font-large\"),\n xlarge: cssVar(\"--font-xlarge\"),\n xxlarge: cssVar(\"--font-xxlarge\"),\n xxxlarge: cssVar(\"--font-xxxlarge\"),\n};\n\n// Leading is part of each text size rather than an ambient browser default.\n// Unitless values keep custom theme font sizes proportional.\nconst lineHeight: Record<Size, number> = {\n xsmall: 14 / 10,\n small: 16 / 12,\n medium: 20 / 14,\n large: 24 / 18,\n xlarge: 28 / 22,\n xxlarge: 34 / 28,\n xxxlarge: 42 / 36,\n};\n\nexport function getTypography(size: Size): Styles {\n return {\n fontSize: fontSize[size],\n lineHeight: lineHeight[size],\n };\n}\n","import React, { ReactNode } from \"react\";\nimport {\n JSS,\n Size,\n TextColor,\n getTextColor,\n toClassnames,\n} from \"./jss\";\nimport { getTypography } from \"./typography\";\n\nexport interface TextProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"children\" | \"className\" | \"color\"\n> {\n children: ReactNode;\n color?: TextColor;\n size?: Size;\n bold?: boolean;\n ellipsis?: boolean | \"default\";\n align?: \"center\" | \"none\";\n type?: TextType;\n grow?: boolean;\n jss?: JSS;\n htmlFor?: string;\n className?: never;\n}\n\nexport type TextType =\n | \"label\"\n | \"span\"\n | \"p\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"li\";\n\nexport function Text({\n children,\n color = \"primary\",\n size = \"medium\",\n align = \"none\",\n bold = false,\n ellipsis = \"default\",\n grow,\n type: Type = \"span\",\n jss,\n htmlFor,\n ...elementProps\n}: TextProps) {\n if (ellipsis === \"default\") {\n ellipsis = Type === \"span\" || Type === \"label\";\n }\n\n const isHeading =\n Type === \"h1\" || Type === \"h2\" || Type === \"h3\" || Type === \"h4\";\n\n const className = toClassnames([\n getTextColor(color),\n { ...getTypography(size), padding: 0, margin: 0 },\n isHeading && { fontWeight: \"inherit\" },\n bold && { fontWeight: 600 },\n align === \"center\" && { textAlign: \"center\" },\n ellipsis && {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n grow && { flexGrow: 1 },\n jss,\n ]);\n\n return (\n <Type {...elementProps} className={className} htmlFor={htmlFor}>\n {children}\n </Type>\n );\n}\n\nexport function Label({ size = \"medium\", type = \"label\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Span({ size = \"medium\", type = \"span\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function P({ size = \"medium\", type = \"p\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H1({ size = \"xxlarge\", type = \"h1\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H2({ size = \"xlarge\", type = \"h2\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H3({ size = \"large\", type = \"h3\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H4({ size = \"medium\", type = \"h4\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Li({ size = \"medium\", type = \"li\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n","import React, { ReactNode, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { Span } from \"./Text\";\nimport { hash } from \"./hash\";\nimport { JSS, Size, cssVar } from \"./jss\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps {\n name: string;\n src?: string;\n size?: AvatarSize;\n badge?: ReactNode;\n jss?: JSS;\n}\n\nconst dimensions: Record<AvatarSize, number> = {\n small: 24,\n medium: 34,\n large: 48,\n};\n\nconst textSizes: Record<AvatarSize, Size> = {\n small: \"small\",\n medium: \"medium\",\n large: \"large\",\n};\n\nfunction normalizeName(name: string): string {\n return name.normalize(\"NFKC\").trim();\n}\n\nfunction getInitial(name: string): string | null {\n const normalized = normalizeName(name);\n if (normalized === \"\") return null;\n\n const meaningfulCharacter = normalized.match(/[\\p{L}\\p{N}]/u)?.[0];\n const character = meaningfulCharacter ?? Array.from(normalized)[0];\n return Array.from(character.toLocaleUpperCase())[0] ?? null;\n}\n\nfunction getGradient(name: string): string {\n const seed = hash(normalizeName(name).toLocaleLowerCase());\n const firstHue = seed % 360;\n const secondHue = (firstHue + 35 + (seed % 55)) % 360;\n\n return `radial-gradient(circle at 24% 18%, hsl(${secondHue} 68% 58%), transparent 54%), linear-gradient(145deg, hsl(${firstHue} 62% 48%), hsl(${secondHue} 58% 38%))`;\n}\n\nexport const Avatar = React.forwardRef(function Avatar(\n { name, src, size = \"medium\", badge, jss }: AvatarProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const [failedSrc, setFailedSrc] = useState<string>();\n const dimension = dimensions[size];\n const initial = getInitial(name);\n const showImage = src != null && src !== \"\" && failedSrc !== src;\n\n return (\n <BaseView\n ref={ref}\n tag=\"span\"\n role=\"img\"\n aria-label={name || \"User\"}\n jss={[\n {\n position: \"relative\",\n display: \"inline-flex\",\n width: dimension,\n height: dimension,\n flex: `0 0 ${dimension}px`,\n verticalAlign: \"middle\",\n },\n jss,\n ]}\n >\n <BaseView\n tag=\"span\"\n jss={{\n position: \"relative\",\n display: \"flex\",\n width: \"100%\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: \"50%\",\n background: getGradient(name),\n color: cssVar(\"--light-text\"),\n userSelect: \"none\",\n }}\n >\n {initial == null ? (\n <Icon icon=\"user\" size={textSizes[size]} color=\"light\" />\n ) : (\n <Span\n size={textSizes[size]}\n color=\"light\"\n bold\n aria-hidden=\"true\"\n jss={{ lineHeight: 1, textShadow: \"0 1px 2px rgba(0, 0, 0, 0.2)\" }}\n >\n {initial}\n </Span>\n )}\n {showImage && (\n <img\n key={src}\n ref={(image) => {\n if (image?.complete && image.naturalWidth === 0) {\n setFailedSrc(src);\n }\n }}\n src={src}\n alt=\"\"\n draggable={false}\n onError={() => setFailedSrc(src)}\n style={{\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n )}\n </BaseView>\n {badge != null && (\n <BaseView\n tag=\"span\"\n aria-hidden=\"true\"\n jss={{\n position: \"absolute\",\n right: 0,\n bottom: 0,\n display: \"flex\",\n borderRadius: \"50%\",\n boxShadow: `0 0 0 2px ${cssVar(\"--overlay-background\")}`,\n pointerEvents: \"none\",\n }}\n >\n {badge}\n </BaseView>\n )}\n </BaseView>\n );\n});\n\nAvatar.displayName = \"Avatar\";\n","import React from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Color, JSS, Size, getBackground } from \"./jss\";\n\nconst sizes: { [size in Size]: number } = {\n xsmall: 4,\n small: 6,\n medium: 12,\n large: 18,\n xlarge: 24,\n xxlarge: 32,\n xxxlarge: 40,\n};\n\nexport function Badge({\n size = \"medium\",\n color = \"highlight\",\n jss,\n}: {\n size?: Size;\n color?: Color;\n jss?: JSS;\n}) {\n return (\n <BaseView\n jss={[\n {\n width: sizes[size],\n height: sizes[size],\n borderRadius: sizes[size] / 2,\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","import { JSS, Padding, TextColor, cssVar, getPadding } from \"./jss\";\n\nexport type InteractableColor =\n \"primary\" | \"secondary\" | \"negative\" | \"inverse\";\n\nconst styles = {\n root: {\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n transition: \"filter 120ms ease, box-shadow 120ms ease\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n color: cssVar(\"--secondary-text\"),\n backgroundColor: cssVar(\"--background-button-secondary\"),\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: 2,\n },\n },\n primary: {\n backgroundColor: cssVar(\"--background-button-primary\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n secondary: {\n backgroundColor: cssVar(\"--background-button-secondary\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n negative: {\n backgroundColor: cssVar(\"--background-button-negative\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n inverse: {\n backgroundColor: cssVar(\"--background-button-inverse\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n disabled: {\n cursor: \"default\",\n },\n bare: {\n backgroundColor: \"inherit\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n backgroundColor: \"inherit\",\n },\n \"[aria-disabled=true]:hover\": {\n backgroundColor: \"inherit\",\n },\n },\n opacityHover: {\n \":hover\": {\n opacity: 1,\n filter: \"brightness(0.96)\",\n },\n \"[aria-disabled=true]:hover\": {\n opacity: 1,\n filter: \"none\",\n },\n },\n colorHover: {},\n};\n\nexport function getInteractableJSS({\n color,\n bare,\n disabled,\n animateInteraction,\n padding,\n border,\n}: {\n color: InteractableColor;\n bare: boolean;\n disabled: boolean;\n animateInteraction: boolean;\n padding: Padding;\n border: boolean;\n}): Array<JSS> {\n return [\n styles.root,\n color === \"primary\" && styles.primary,\n color === \"secondary\" && styles.secondary,\n color === \"negative\" && styles.negative,\n color === \"inverse\" && styles.inverse,\n border && {\n border: `1px solid ${getCSSColor(color, disabled, bare)}`,\n },\n bare && styles.bare,\n disabled && styles.disabled,\n !bare && !disabled && { boxShadow: cssVar(\"--shadow-sm\") },\n styles.opacityHover,\n animateInteraction &&\n !disabled && {\n position: \"relative\",\n \":active\": {\n opacity: 1,\n top: 1,\n },\n \"[aria-disabled=true]:active\": {\n top: 0,\n opacity: 1,\n },\n },\n getPadding(padding),\n ];\n}\n\nexport const getGlyphColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined,\n): TextColor => {\n if (disabled) {\n return \"subtle\";\n }\n\n switch (color) {\n case \"primary\":\n return bare ? \"highlight\" : \"light\";\n case \"secondary\":\n return bare ? \"primary\" : \"secondary\";\n case \"negative\":\n return bare ? \"negative\" : \"light\";\n case \"inverse\":\n return bare ? \"primary\" : \"inverse\";\n }\n};\n\nexport const getCSSColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined,\n): string => {\n if (disabled) {\n return cssVar(\"--subtle-text\");\n }\n\n switch (color) {\n case \"primary\":\n return bare ? cssVar(\"--highlight\") : cssVar(\"--light-text\");\n case \"secondary\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--secondary-text\");\n case \"negative\":\n return bare ? cssVar(\"--negative-text\") : cssVar(\"--light-text\");\n case \"inverse\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--inverse-text\");\n }\n};\n\nexport const getInteractableListItemJSS = ({\n selected,\n}: {\n selected: boolean | undefined;\n}) => {\n return [\n {\n overflow: \"hidden\",\n flexGrow: 1,\n borderRadius: cssVar(\"--border-radius-m\"),\n textDecoration: \"none\",\n \":focus-visible\": {\n outlineOffset: -2,\n },\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n \"[aria-disabled=true]:active:hover\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n },\n selected && {\n backgroundColor: cssVar(\"--light-highlight\"),\n \":hover\": {\n backgroundColor: cssVar(\"--light-highlight-hovered\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--light-highlight-pressed\"),\n },\n },\n ];\n};\n","import React from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n onClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n jss?: JSS;\n color: InteractableColor;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n type?: \"submit\" | \"reset\" | \"button\";\n}\n\nexport const BaseButton = React.forwardRef(function BaseButton(\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n border = false,\n disabled,\n animateInteraction = true,\n padding,\n type = \"button\",\n ...otherProps\n }: BaseButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <button\n type={type}\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n ref={ref}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n\n onClick?.(event);\n }}\n className={toClassnames([\n ...getInteractableJSS({\n color,\n bare,\n border,\n disabled,\n animateInteraction,\n padding,\n }),\n jss,\n ])}\n >\n {children}\n </button>\n );\n});\n","import React, { ReactNode, useId } from \"react\";\nimport { JSS, Size, TextColor, toClassnames } from \"./jss\";\nimport { Label } from \"./Text\";\n\nexport interface BaseInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n jss?: JSS;\n className?: undefined;\n size?: undefined;\n children?: undefined;\n label?: ReactNode;\n labelSize?: Size;\n labelColor?: TextColor;\n labelBold?: boolean;\n labelPosition?: \"start\" | \"end\";\n}\n\nexport const BaseInput = React.forwardRef(function BaseInput(\n {\n jss,\n label,\n labelPosition = \"end\",\n labelSize,\n labelColor,\n labelBold,\n id: propId,\n ...otherProps\n }: BaseInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const hookid = useId();\n const id = propId ?? hookid;\n const labelElement = (\n <Label\n size={labelSize}\n bold={labelBold}\n color={labelColor}\n jss={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n htmlFor={id}\n >\n {label}\n </Label>\n );\n\n return (\n <>\n {label && labelPosition === \"start\" && labelElement}\n <input id={id} ref={ref} className={toClassnames(jss)} {...otherProps} />\n {label && labelPosition === \"end\" && labelElement}\n </>\n );\n});\n","import React, { useContext } from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n onClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n target?: string;\n jss?: JSS;\n color: InteractableColor;\n href: string;\n disabled?: boolean;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n}\n\n// This only exists to make NextJS happy, it should not be used in any other case\nexport const BaseLinkComponentOverrideContext = React.createContext((props) => (\n <a {...props} />\n));\n\nexport const BaseLink = React.forwardRef(function BaseLink(\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n disabled,\n animateInteraction = true,\n padding,\n href,\n border,\n role = \"link\",\n ...otherProps\n }: BaseLinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n const Link = useContext(BaseLinkComponentOverrideContext);\n\n return (\n <Link\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n href={href}\n role={role}\n ref={ref}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n\n onClick?.(event);\n }}\n className={toClassnames([\n ...getInteractableJSS({\n color,\n border,\n bare,\n disabled,\n animateInteraction,\n padding,\n }),\n disabled && { pointerEvents: \"none\" },\n jss,\n ])}\n >\n {children}\n </Link>\n );\n});\n","import React from \"react\";\n\nimport { BaseView, BaseViewProps } from \"./BaseView\";\nimport {\n Justify,\n Gap,\n Align,\n Padding,\n FlexDirection,\n getPadding,\n getSpacing,\n} from \"./jss\";\n\nexport interface FlexLayoutProps extends BaseViewProps {\n justify?: Justify;\n gap?: Gap;\n align?: Align;\n padding?: Padding;\n direction?: FlexDirection;\n}\n\nexport const FlexLayout = React.forwardRef(function FlexLayout(\n {\n jss,\n gap = \"none\",\n justify = \"none\",\n align = \"none\",\n padding = \"none\",\n direction = \"column\",\n ...otherProps\n }: FlexLayoutProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"flex\",\n flexDirection: direction,\n gap: getSpacing(gap),\n justifyContent: justify,\n alignItems: align,\n },\n getPadding(padding),\n jss,\n ]}\n {...otherProps}\n />\n );\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface ColumnProps extends FlexLayoutProps {\n direction?: \"column\";\n}\n\nexport const Column = React.forwardRef(function Column(\n props: ColumnProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return <FlexLayout ref={ref} direction=\"column\" {...props} />;\n});\n","import React from \"react\";\nimport { Column, ColumnProps } from \"./Column\";\n\nexport interface BaseListProps extends ColumnProps {\n tag?: undefined;\n}\n\nexport const BaseList = React.forwardRef(function BaseList(\n { jss, ...otherProps }: BaseListProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return (\n <Column\n {...otherProps}\n tag=\"ul\"\n jss={[\n {\n listStyle: \"none\",\n margin: 0,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n },\n jss,\n ]}\n ref={ref}\n />\n );\n});\n","import React from \"react\";\nimport { BaseView, BaseViewProps } from \"./BaseView\";\n\nexport interface BaseListAddOnProps extends BaseViewProps {}\n\nexport const BaseListAddOn = React.forwardRef(function BaseListAddOn(\n props: BaseListAddOnProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return <BaseView {...props} ref={ref} />;\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface RowProps extends FlexLayoutProps {\n direction?: \"row\";\n}\n\nexport const Row = React.forwardRef(function Row(\n props: RowProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return <FlexLayout ref={ref} direction=\"row\" {...props} />;\n});\n","import React, { ReactNode } from \"react\";\n\nimport { Text } from \"./Text\";\nimport { Row } from \"./Row\";\nimport { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport {\n TextColor,\n Size,\n Position,\n Gap,\n Padding,\n Align,\n cssVar,\n JSS,\n} from \"./jss\";\n\nexport interface TextPairingProps {\n headline: ReactNode;\n body?: ReactNode;\n headlineColor?: TextColor;\n headlineSize?: Size;\n headlineAddOn?: ReactNode;\n bodyColor?: TextColor;\n bodySize?: Size;\n bodyEllipsis?: boolean;\n addOn?: ReactNode;\n addOnPosition?: Position;\n gap?: Gap;\n padding?: Padding;\n align?: Align;\n grow?: boolean;\n shrink?: boolean;\n headlineBold?: boolean;\n jss?: JSS;\n}\n\nexport function TextPairing({\n headline,\n body,\n headlineColor = \"primary\",\n headlineSize = \"medium\",\n headlineAddOn,\n bodyColor = \"secondary\",\n bodySize = \"medium\",\n bodyEllipsis = true,\n addOn,\n addOnPosition = \"start\",\n gap = \"small\",\n align = \"stretch\",\n grow,\n shrink,\n headlineBold,\n padding,\n jss,\n}: TextPairingProps) {\n const textElement = (\n <Column\n grow={grow}\n shrink={shrink}\n padding={addOn ? undefined : padding}\n align={align}\n jss={[\n {\n overflow: \"hidden\",\n },\n jss,\n ]}\n >\n <Row\n align=\"center\"\n jss={{\n textAlign: \"start\",\n }}\n >\n <Text bold={headlineBold} color={headlineColor} size={headlineSize}>\n {headline}\n </Text>\n {headlineAddOn && <BaseView>{headlineAddOn}</BaseView>}\n </Row>\n {body && (\n <Row\n align=\"center\"\n jss={{\n marginTop: cssVar(\"--spacing-xs\"),\n textAlign: \"start\",\n }}\n >\n <Text ellipsis={bodyEllipsis} color={bodyColor} size={bodySize}>\n {body}\n </Text>\n </Row>\n )}\n </Column>\n );\n\n if (addOn) {\n return (\n <Row\n grow={grow}\n shrink={shrink}\n gap={gap}\n align=\"center\"\n padding={padding}\n jss={{\n overflow: \"hidden\",\n }}\n >\n {addOnPosition === \"start\" && addOn}\n {textElement}\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n }\n\n return textElement;\n}\n","import React, { ReactNode } from \"react\";\n\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Size, Position, Spacing, TextColor } from \"./jss\";\nimport { TextPairing } from \"./TextPairing\";\nimport { BaseView } from \"./BaseView\";\n\nexport interface BaseListItemProps\n extends Omit<RowProps, \"children\" | \"jss\" | \"role\"> {\n children: (elements: { content: React.JSX.Element }) => ReactNode;\n jss?: JSS;\n headline: string;\n headlineSize?: Size;\n headlineColor?: TextColor;\n headlineAddOn?: ReactNode;\n headlineBold?: boolean;\n body?: string;\n bodySize?: Size;\n bodyColor?: TextColor;\n addOn?: ReactNode;\n addOnPosition?: Position;\n outerAddOn?: ReactNode;\n disabled?: boolean;\n role?: undefined;\n gap?: Spacing;\n selected?: boolean;\n}\n\nexport const BaseListItem = React.forwardRef(function BaseListItem(\n {\n children,\n jss,\n headline,\n headlineSize = \"medium\",\n headlineColor = \"primary\",\n headlineAddOn,\n body,\n bodySize = \"small\",\n bodyColor = \"secondary\",\n addOn,\n addOnPosition,\n outerAddOn,\n disabled = false,\n padding = \"medium\",\n gap = \"medium\",\n selected,\n headlineBold,\n ...otherProps\n }: BaseListItemProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const content = (\n <TextPairing\n headlineBold={headlineBold}\n padding={padding}\n gap={gap}\n addOn={addOn}\n addOnPosition={addOnPosition}\n headline={headline}\n headlineSize={headlineSize}\n headlineColor={\n disabled ? \"subtle\" : selected ? \"highlight\" : headlineColor\n }\n headlineAddOn={headlineAddOn}\n body={body}\n bodySize={bodySize}\n bodyColor={disabled ? \"subtle\" : bodyColor}\n grow={true}\n shrink={false}\n />\n );\n\n return (\n <Row {...otherProps} ref={ref} relative tag=\"li\" role=\"row\" jss={jss}>\n <Row\n grow\n role=\"gridcell\"\n jss={{\n overflow: \"hidden\",\n }}\n >\n {children({ content })}\n </Row>\n {outerAddOn && <BaseView role=\"gridcell\">{outerAddOn}</BaseView>}\n </Row>\n );\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface BoxProps extends FlexLayoutProps {}\n\nexport function Box({\n padding = \"medium\",\n align = \"center\",\n justify = \"center\",\n ...otherProps\n}: BoxProps) {\n return (\n <FlexLayout\n padding={padding}\n align={align}\n justify={justify}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor } from \"./Interactable\";\nimport { Align, Gap, Justify, cssVar } from \"./jss\";\n\nexport interface ButtonProps extends Omit<\n BaseButtonProps,\n \"border\" | \"padding\"\n> {\n children: string;\n color: InteractableColor;\n icon?: IconType;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n}\n\nexport const Button = React.forwardRef(function Button(\n {\n children,\n color,\n bare,\n disabled,\n icon,\n iconPosition = \"left\",\n align = \"center\",\n gap = \"medium\",\n justify = \"center\",\n jss,\n ...otherProps\n }: ButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseButton\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding=\"none\"\n jss={[\n {\n height: 34,\n padding: \"0 14px\",\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n },\n jss,\n ]}\n >\n <Row grow={true} align={align} gap={gap} justify={justify}>\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n jss={{\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n }}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseButton>\n );\n});\n","type Focusable = HTMLElement;\n\nexport function queryFocusables(root: HTMLElement): Focusable[] {\n const focusables: Focusable[] = Array.from(\n root.querySelectorAll(\n \"button,input,textarea,a,[tabindex='0'],[tabindex='-1']\"\n )\n );\n\n return focusables.filter((element: Focusable) => !element[\"disabled\"]);\n}\n\nexport function queryGrid(root: HTMLElement): HTMLElement[][] {\n const rows: HTMLLIElement[] = Array.from(\n root.querySelectorAll('li[role=\"row\"]')\n );\n\n const rowsWithColumns = rows\n .map((row) => Array.from(queryFocusables(row)))\n .filter((row) => row.length > 0);\n\n return rowsWithColumns;\n}\n\nexport const normalizeGrid = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n for (const row of rows) {\n for (const column of row) {\n column.tabIndex = -1;\n }\n }\n\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.tabIndex = 0;\n};\n\nexport const focusGridElement = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n normalizeGrid(rows, rowIndex, columnIndex);\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.focus();\n column.scrollIntoView(false);\n};\n\nexport const normalizeElements = (\n focusables: HTMLElement[],\n index: number\n): void => {\n for (const element of focusables) {\n element.tabIndex = -1;\n }\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.tabIndex = 0;\n};\n\nexport const focusElement = (\n focusables: HTMLElement[],\n index: number\n): void => {\n normalizeElements(focusables, index);\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.focus();\n // element.scrollIntoView(false);\n};\n","import { useCallback, useRef } from \"react\";\n\nexport function useRefEffect<T>(\n callback: (root: T) => (() => void) | void,\n): (root: T) => void {\n const unsubscribeRef = useRef<(() => void) | void>(null);\n\n return useCallback(\n (root: T | null) => {\n if (root === null) {\n const unsubscribe = unsubscribeRef.current;\n if (unsubscribe) {\n unsubscribe();\n }\n unsubscribeRef.current = null;\n } else {\n unsubscribeRef.current = callback(root);\n }\n },\n [callback],\n );\n}\n","import { useCallback } from \"react\";\n\nimport { queryFocusables, focusElement, normalizeElements } from \"./aria\";\nimport { useRefEffect } from \"./useRefEffect\";\n\nexport function useNavigation({\n autofocus = false,\n rowLength = 1,\n enabled = true,\n initialIndex = 0,\n} = {}) {\n return useRefEffect(\n useCallback(\n (root: HTMLElement) => {\n if (!enabled) {\n return;\n }\n\n let index = Math.max(\n 0,\n Math.min(initialIndex, queryFocusables(root).length - 1),\n );\n\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n if (elements.length !== 0 && autofocus) {\n focusElement(elements, index);\n } else {\n normalizeElements(elements, index);\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n let newIndex: number = -1;\n\n if (e.code === \"ArrowUp\") {\n if (index - rowLength < 0) {\n newIndex =\n elements.length - (elements.length % rowLength) + index;\n } else {\n newIndex = index - rowLength;\n }\n } else if (e.code === \"ArrowLeft\") {\n if (index <= 0) {\n newIndex = elements.length - 1;\n } else {\n newIndex = index - 1;\n }\n } else if (e.code === \"ArrowRight\") {\n if (index >= elements.length - 1) {\n newIndex = 0;\n } else {\n newIndex = index + 1;\n }\n } else if (e.code === \"ArrowDown\") {\n if (index + rowLength > elements.length - 1) {\n newIndex = (index + rowLength) % rowLength;\n } else {\n newIndex = index + rowLength;\n }\n }\n\n if (newIndex !== -1 && index !== newIndex) {\n index = newIndex;\n focusElement(elements, index);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n root.addEventListener(\"keydown\", onKeyDown);\n\n const observer = new MutationObserver((mutationList) => {\n if (mutationList.filter((m) => m.type === \"childList\").length > 0) {\n const elements = queryFocusables(root);\n if (elements.length > 0) {\n normalizeElements(elements, index);\n }\n }\n });\n observer.observe(root, { childList: true });\n\n return () => {\n root.removeEventListener(\"keydown\", onKeyDown);\n observer.disconnect();\n };\n },\n [autofocus, enabled, initialIndex, rowLength],\n ),\n );\n}\n","import { Button } from \"./Button\";\nimport { IconType } from \"./IconType\";\nimport { JSS, cssVar } from \"./jss\";\nimport { Row } from \"./Row\";\nimport { useNavigation } from \"./useNavigation\";\n\nexport type ButtonGroupValue = string | number;\n\nexport type ButtonGroupOption<Value extends ButtonGroupValue> = {\n value: Value;\n label: string;\n icon?: IconType;\n};\n\nexport interface ButtonGroupProps<Value extends ButtonGroupValue> {\n label: string;\n options: ReadonlyArray<ButtonGroupOption<Value>>;\n value: Value;\n onValueChange: (value: NoInfer<Value>) => void;\n disabled?: boolean;\n jss?: JSS;\n}\n\nexport function ButtonGroup<Value extends ButtonGroupValue>({\n label,\n options,\n value,\n onValueChange,\n disabled = false,\n jss,\n}: ButtonGroupProps<Value>) {\n const selectedIndex = options.findIndex((option) => option.value === value);\n const rootRef = useNavigation({ initialIndex: selectedIndex });\n\n return (\n <Row\n ref={rootRef}\n role=\"radiogroup\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n jss={[\n {\n width: \"fit-content\",\n maxWidth: \"100%\",\n },\n jss,\n ]}\n >\n {options.map((option, index) => {\n const selected = option.value === value;\n const first = index === 0;\n const last = index === options.length - 1;\n\n return (\n <Button\n key={option.value}\n role=\"radio\"\n aria-checked={selected}\n color={selected ? \"primary\" : \"secondary\"}\n bare={!selected}\n disabled={disabled}\n animateInteraction={false}\n icon={option.icon}\n jss={[\n {\n borderTopLeftRadius: first ? cssVar(\"--border-radius-m\") : 0,\n borderBottomLeftRadius: first ? cssVar(\"--border-radius-m\") : 0,\n borderTopRightRadius: last ? cssVar(\"--border-radius-m\") : 0,\n borderBottomRightRadius: last ? cssVar(\"--border-radius-m\") : 0,\n boxShadow: \"none\",\n transition: `background-color ${cssVar(\"--transition-fast\")}, box-shadow ${cssVar(\"--transition-fast\")}`,\n },\n !selected && {\n backgroundColor: cssVar(\"--hovered-background\"),\n \":hover\": {\n backgroundColor: cssVar(\"--selected-background\"),\n },\n },\n ]}\n onFocus={() => {\n if (!disabled && !selected) {\n onValueChange(option.value);\n }\n }}\n onClick={() => {\n if (!selected) {\n onValueChange(option.value);\n }\n }}\n >\n {option.label}\n </Button>\n );\n })}\n </Row>\n );\n}\n","import React, { cloneElement, useMemo } from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { JSS } from \"./jss\";\n\nconst dateFormatter = Intl.DateTimeFormat(\"en-GB\", {\n weekday: \"short\",\n});\n\nconst MON = dateFormatter.format(new Date(2000, 1, 7));\nconst TUE = dateFormatter.format(new Date(2000, 1, 8));\nconst WED = dateFormatter.format(new Date(2000, 1, 9));\nconst THU = dateFormatter.format(new Date(2000, 1, 10));\nconst FRI = dateFormatter.format(new Date(2000, 1, 11));\nconst SAT = dateFormatter.format(new Date(2000, 1, 12));\nconst SUN = dateFormatter.format(new Date(2000, 1, 13));\n\nexport const Calendar = React.forwardRef(function Calendar(\n {\n date,\n cell,\n header,\n jss,\n }: {\n date: Date;\n header: (props: { weekday: string }) => React.JSX.Element;\n jss?: JSS;\n cell: (props: {\n today?: boolean;\n date: Date;\n outOfMonth: boolean;\n top: boolean;\n left: boolean;\n right: boolean;\n bottom: boolean;\n }) => React.JSX.Element;\n },\n ref?: React.Ref<HTMLElement>,\n) {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n const firstDayOfTheMonth = new Date(year, month, 1).getDay();\n const offset = firstDayOfTheMonth === 0 ? 6 : firstDayOfTheMonth - 1;\n const headers = useMemo(() => {\n return (\n <>\n {header({ weekday: MON })}\n {header({ weekday: TUE })}\n {header({ weekday: WED })}\n {header({ weekday: THU })}\n {header({ weekday: FRI })}\n {header({ weekday: SAT })}\n {header({ weekday: SUN })}\n </>\n );\n }, [header]);\n\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr 1fr 1fr 1fr 1fr 1fr\",\n gridTemplateRows: \"1fr\",\n },\n jss,\n ]}\n >\n {headers}\n {Array.from(Array(offset).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1 - offset,\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n today: false,\n top: true,\n left: index % 7 === 0,\n outOfMonth: true,\n right: false,\n bottom: false,\n }),\n { key: dayDate.toISOString() },\n );\n })}\n\n {Array.from(Array(daysInMonth).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1,\n 12, // If we do not add this the ISO string would be from the day before at midnight\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n top: index + offset < 7,\n left: (index + offset) % 7 === 0,\n right: (index + offset) % 7 === 7 - 1 || index === daysInMonth - 1,\n bottom: index > daysInMonth - 7 - 1,\n outOfMonth: false,\n today:\n dayDate.getDate() == new Date().getDate() &&\n dayDate.getMonth() == new Date().getMonth() &&\n dayDate.getFullYear() == new Date().getFullYear(),\n }),\n { key: dayDate.toISOString() },\n );\n })}\n </BaseView>\n );\n});\n","import { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\nimport { JSS, Material, cssVar, getMaterial } from \"./jss\";\n\nexport type CardVariant = \"default\" | \"tonal\" | \"floating\";\n\nexport interface CardProps extends FlexLayoutProps {\n variant?: CardVariant;\n material?: Material;\n}\n\nconst variantStyles: { [variant in CardVariant]: JSS } = {\n default: {\n backgroundColor: cssVar(\"--overlay-background\"),\n boxShadow: cssVar(\"--shadow-sm\"),\n },\n tonal: {\n backgroundColor: cssVar(\"--secondary-background\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n },\n floating: {\n backgroundColor: cssVar(\"--overlay-background\"),\n borderRadius: cssVar(\"--border-radius-xl\"),\n boxShadow: cssVar(\"--shadow-lg\"),\n },\n};\n\nexport function Card({\n children,\n jss,\n padding = \"large\",\n gap = \"large\",\n variant = \"default\",\n material,\n ...otherProps\n}: CardProps) {\n return (\n <FlexLayout\n {...otherProps}\n padding={padding}\n gap={gap}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-l\"),\n },\n variantStyles[variant],\n material && getMaterial(material),\n jss,\n ]}\n >\n {children}\n </FlexLayout>\n );\n}\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { JSS, Size, cssVar } from \"./jss\";\nimport { IconType } from \"./IconType\";\n\ntype StaticCheckboxProps = {\n checked: boolean;\n size: Size;\n icon?: IconType;\n};\n\nconst styles: { [key: string]: JSS } = {\n border: {\n position: \"absolute\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n border: \"1px solid var(--divider)\",\n borderRadius: \"50%\",\n },\n borderChecked: {\n border: \"none\",\n backgroundColor: \"var(--highlight)\",\n },\n icon: {\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n },\n};\n\nexport const sizes = {\n xsmall: 20,\n small: 24,\n medium: 32,\n large: 40,\n xlarge: 48,\n xxlarge: 56,\n xxxlarge: 64,\n};\n\nexport function StaticCheckbox({\n checked,\n size,\n icon = \"check\",\n}: StaticCheckboxProps) {\n return (\n <BaseView\n jss={{\n position: \"relative\",\n backgroundColor: cssVar(\"--primary-background\"),\n overflow: \"hidden\",\n padding: cssVar(\"--spacing-xs\"),\n borderRadius: sizes[size] / 2,\n height: sizes[size],\n width: sizes[size],\n }}\n >\n <BaseView jss={[styles.border, checked && styles.borderChecked]} />\n {checked && (\n <BaseView jss={styles.icon}>\n <Icon size={size} color=\"light\" icon={icon} />\n </BaseView>\n )}\n </BaseView>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Size, toClassnames } from \"./jss\";\nimport { StaticCheckbox, sizes } from \"./StaticCheckbox\";\n\ninterface CheckboxProps\n extends Omit<\n BaseInputProps,\n \"checked\" | \"onClick\" | \"value\" | \"onChange\" | \"size\"\n > {\n checked: boolean;\n onClick: () => void;\n size: Size;\n value?: undefined;\n onChange?: undefined;\n}\n\nexport function Checkbox({\n checked,\n onClick,\n size,\n ...inputProps\n}: CheckboxProps) {\n return (\n <label\n className={toClassnames({\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: sizes[size],\n width: sizes[size],\n \":has(:focus-visible)\": {\n outline: \"2px solid var(--outline)\",\n borderRadius: \"50%\",\n },\n \":has(:active)\": {\n transform: \"scale(0.92)\",\n },\n })}\n >\n <StaticCheckbox checked={checked} size={size} />\n <BaseInput\n {...inputProps}\n type=\"checkbox\"\n role=\"checkbox\"\n aria-checked={checked}\n tabIndex={0}\n checked={checked}\n onChange={onClick}\n jss={{\n position: \"absolute\",\n opacity: 0,\n cursor: \"pointer\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n height: \"100%\",\n }}\n />\n </label>\n );\n}\n","import React from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\ninterface CircleProps extends BoxProps {}\n\nexport function Circle({\n jss,\n padding = \"medium\",\n ...otherProps\n}: CircleProps) {\n return (\n <Box\n padding={padding}\n jss={[\n {\n borderRadius: \"50%\",\n overflow: \"hidden\",\n },\n jss,\n ]}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { Span } from \"./Text\";\n\nexport interface IconButtonProps extends Omit<\n BaseButtonProps,\n \"border\" | \"padding\"\n> {\n icon: IconType;\n label?: string;\n}\n\nexport const IconButton = React.forwardRef(function IconButton(\n { icon, color, bare, disabled, jss, label, ...buttonProps }: IconButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseButton\n {...buttonProps}\n aria-label={buttonProps[\"aria-label\"] ?? label}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 34,\n width: 34,\n borderRadius: 17,\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size=\"medium\"\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n {label && (\n <Span size=\"medium\" color={getGlyphColor(color, disabled, bare)}>\n {label}\n </Span>\n )}\n </BaseButton>\n );\n});\n","import { IconButton, IconButtonProps } from \"./IconButton\";\nimport { IconType } from \"./IconType\";\n\nexport interface ToggleProps extends Omit<\n IconButtonProps,\n \"aria-label\" | \"bare\" | \"color\" | \"icon\" | \"label\" | \"onClick\" | \"value\"\n> {\n label: string;\n value: boolean;\n onValueChange: (value: boolean) => void;\n onIcon: IconType;\n offIcon: IconType;\n bare?: boolean;\n}\n\nexport function Toggle({\n label,\n value,\n onValueChange,\n onIcon,\n offIcon,\n bare = false,\n ...buttonProps\n}: ToggleProps) {\n return (\n <IconButton\n {...buttonProps}\n aria-label={label}\n aria-pressed={value}\n bare={bare}\n color={bare ? \"secondary\" : value ? \"primary\" : \"secondary\"}\n icon={value ? onIcon : offIcon}\n onClick={() => onValueChange(!value)}\n />\n );\n}\n","import React, {\n ReactNode,\n useContext,\n useEffect,\n useSyncExternalStore,\n} from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { isServer } from \"./isServer\";\nimport { Toggle } from \"./Toggle\";\n\ntype State = {\n enabled: boolean;\n toggle: () => void;\n};\n\nexport const DarkModeContext = React.createContext<State>({\n enabled: false,\n toggle: () => {},\n});\n\nconst subscribeToNothing = () => () => {};\n\nif (!isServer()) {\n const darkMode = document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(\"dark-mode=\"))\n .map((s) => s.split(\"=\")[1])\n .map((s) => s)\n .pop();\n\n if (darkMode === \"true\") {\n document.body.classList.add(\"dark-mode\");\n }\n}\n\nexport function DarkModeProvider({\n children,\n enabled,\n toggle,\n}: {\n children: ReactNode;\n enabled: boolean;\n toggle: () => void;\n}) {\n useEffect(() => {\n const statusBarMeta = document.head.querySelector<HTMLMetaElement>(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n const themeColorMeta = document.head.querySelector<HTMLMetaElement>(\n 'meta[name=\"theme-color\"]',\n );\n\n if (enabled) {\n document.body.classList.add(\"dark-mode\");\n if (statusBarMeta != null) {\n statusBarMeta.content = \"black-translucent\";\n }\n if (themeColorMeta != null) {\n themeColorMeta.content = \"rgb(42, 43, 46)\";\n }\n } else {\n document.body.classList.remove(\"dark-mode\");\n if (statusBarMeta != null) {\n statusBarMeta.content = \"default\";\n }\n if (themeColorMeta != null) {\n themeColorMeta.content = \"rgb(248, 248, 250)\";\n }\n }\n }, [enabled]);\n\n return (\n <DarkModeContext.Provider value={{ enabled, toggle }}>\n {children}\n </DarkModeContext.Provider>\n );\n}\n\nexport function DarkModeToggle() {\n const darkMode = useContext(DarkModeContext);\n const isClient = useSyncExternalStore(\n subscribeToNothing,\n () => true,\n () => false,\n );\n\n if (!isClient) {\n return <BaseView jss={{ width: 34, height: 34 }} />;\n }\n\n return (\n <Toggle\n label=\"Toggle dark mode\"\n value={darkMode.enabled}\n onValueChange={darkMode.toggle}\n onIcon=\"sun\"\n offIcon=\"moon\"\n bare\n />\n );\n}\n","import React from \"react\";\n\nimport { Row, RowProps } from \"./Row\";\nimport { cssVar } from \"./jss\";\n\nexport interface InputFrameProps extends RowProps {\n children: React.ReactNode;\n}\n\nexport const InputFrame = React.forwardRef(function InputFrame(\n { children, jss, ...rowProps }: InputFrameProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <Row\n {...rowProps}\n ref={ref}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n overflow: \"hidden\",\n border: `1px solid ${cssVar(\"--divider\")}`,\n backgroundColor: cssVar(\"--overlay-background\"),\n transition: `border-color ${cssVar(\"--transition-fast\")}, background-color ${cssVar(\"--transition-fast\")}`,\n \":hover\": {\n borderColor: cssVar(\"--strong-divider\"),\n },\n \":has(:focus-visible)\": {\n borderColor: cssVar(\"--outline\"),\n outline: `2px solid ${cssVar(\"--outline\")}`,\n outlineOffset: 1,\n },\n \":has(:disabled)\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n borderColor: cssVar(\"--divider\"),\n },\n \":has([aria-invalid=true])\": {\n borderColor: cssVar(\"--negative-text\"),\n },\n \":has([aria-invalid=true]:focus-visible)\": {\n outline: `2px solid ${cssVar(\"--negative-text\")}`,\n outlineColor: cssVar(\"--negative-text\"),\n },\n },\n jss,\n ]}\n >\n {children}\n </Row>\n );\n});\n","import React from \"react\";\n\nimport { BaseInput } from \"./BaseInput\";\nimport { cssVar } from \"./jss\";\n\nexport interface NumericInputSegmentProps {\n value: string;\n label: string;\n placeholder: string;\n length: number;\n width: string;\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n autoFocus?: boolean;\n invalid?: boolean;\n onValueChange: (value: string) => void;\n onComplete?: () => void;\n onPrevious?: () => void;\n onNext?: () => void;\n}\n\nexport const NumericInputSegment = React.forwardRef(\n function NumericInputSegment(\n {\n value,\n label,\n placeholder,\n length,\n width,\n id,\n disabled,\n readOnly,\n required,\n autoFocus,\n invalid,\n onValueChange,\n onComplete,\n onPrevious,\n onNext,\n }: NumericInputSegmentProps,\n ref?: React.Ref<HTMLInputElement>,\n ) {\n return (\n <BaseInput\n id={id}\n ref={ref}\n value={value}\n placeholder={placeholder}\n inputMode=\"numeric\"\n autoComplete=\"off\"\n maxLength={length}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n aria-label={label}\n aria-invalid={invalid || undefined}\n onFocus={(event) => event.currentTarget.select()}\n onMouseUp={(event) => {\n event.preventDefault();\n event.currentTarget.select();\n }}\n onKeyDown={(event) => {\n if (\n event.key === \"ArrowRight\" &&\n event.currentTarget.selectionStart === value.length\n ) {\n onNext?.();\n } else if (\n event.key === \"ArrowLeft\" &&\n event.currentTarget.selectionStart === 0\n ) {\n onPrevious?.();\n } else if (event.key === \"Backspace\" && value === \"\") {\n onPrevious?.();\n }\n }}\n onChange={(event) => {\n const nextValue = event.target.value\n .replace(/\\D/g, \"\")\n .slice(0, length);\n onValueChange(nextValue);\n if (nextValue.length === length) onComplete?.();\n }}\n jss={{\n width,\n minWidth: 0,\n padding: `${cssVar(\"--spacing-m\")} 0`,\n border: 0,\n outline: 0,\n background: \"transparent\",\n color: cssVar(\"--primary-text\"),\n fontSize: cssVar(\"--font-medium\"),\n lineHeight: 1.2,\n textAlign: \"center\",\n \"::placeholder\": { color: cssVar(\"--subtle-text\") },\n \":disabled\": { color: cssVar(\"--subtle-text\") },\n }}\n />\n );\n },\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { queryFocusables } from \"./aria\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Card } from \"./Card\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n popover: {\n padding: 0,\n zIndex: 1000,\n top: `calc(100% + ${cssVar(\"--spacing-xs\")})`,\n right: \"auto\",\n left: 0,\n margin: 0,\n border: 0,\n overflow: \"visible\",\n background: \"transparent\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n card: {\n minWidth: 220,\n maxWidth: \"calc(100vw - 32px)\",\n overflow: \"hidden\",\n },\n};\n\nexport function Popover({\n children,\n close,\n}: {\n children: React.ReactNode;\n close: () => void;\n}) {\n const activeElementRef = useRef<HTMLElement | null>(null);\n\n const focusTrapRoot = useRefEffect(\n useCallback(\n (root: HTMLElement) => {\n activeElementRef.current =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n const selectedElement = root.querySelector<HTMLElement>(\n '[aria-selected=\"true\"]',\n );\n const autofocusElement = root.querySelector<HTMLElement>(\n '[data-autofocus=\"true\"]',\n );\n const [firstElement] = queryFocusables(root);\n const element = selectedElement ?? autofocusElement ?? firstElement;\n if (element) {\n element.focus();\n } else {\n root.focus();\n }\n\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n close();\n } else if (e.key === \"Tab\") {\n const focusables = queryFocusables(root).filter(\n (element) => element.tabIndex !== -1,\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n const focusedIndex = focusables.findIndex(\n (x) => x === document.activeElement,\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n } else if (e.shiftKey && focusedIndex === 0) {\n focusables[focusables.length - 1].focus();\n e.stopPropagation();\n e.preventDefault();\n } else if (!e.shiftKey && focusedIndex === focusables.length - 1) {\n // Cycle back to the first element\n focusables[0].focus();\n e.stopPropagation();\n e.preventDefault();\n } else {\n // Just do the usual thing\n }\n }\n };\n\n const click = () => {\n close();\n };\n\n // This is needed so that the trigger click is not captured immediatly, which would close the popover as it opens\n const timeout = window.setTimeout(() => {\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n }, 0);\n\n return () => {\n window.clearTimeout(timeout);\n activeElementRef.current?.focus();\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n },\n [close],\n ),\n );\n\n return (\n <Card variant=\"floating\" padding=\"small\" gap=\"none\" jss={styles.card}>\n <BaseView ref={focusTrapRoot} jss={{ width: \"100%\" }}>\n {children}\n </BaseView>\n </Card>\n );\n}\n\ninterface PopoverTriggerProps<Input> {\n PopoverComponent: (props: { close: () => void } & Input) => React.JSX.Element;\n ariaLabel?: string;\n jss?: JSS;\n jssDialog?: JSS;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n children: (props: {\n toggle: (input: Input) => void;\n expanded: boolean;\n }) => React.JSX.Element;\n}\n\nexport function PopoverTrigger<Input>({\n PopoverComponent,\n ariaLabel,\n jss,\n jssDialog,\n grow,\n shrink,\n tag,\n children,\n}: PopoverTriggerProps<Input>) {\n const [popover, setPopover] = useState<React.JSX.Element>(null);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n\n useEffect(() => {\n if (popover == null) {\n dialogRef.current?.close();\n } else {\n dialogRef.current?.show();\n }\n }, [popover]);\n\n const toggle = (input: Input) => {\n if (popover == null) {\n setPopover(\n <PopoverComponent\n {...input}\n close={() => {\n setPopover(null);\n }}\n />,\n );\n } else {\n setPopover(null);\n }\n };\n\n return (\n <BaseView\n grow={grow}\n shrink={shrink}\n tag={tag}\n relative={true}\n jss={[jss, { position: \"relative\", display: \"inline-block\" }]}\n >\n {children({ toggle, expanded: popover != null })}\n <dialog\n aria-label={ariaLabel}\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n }}\n className={toClassnames([styles.popover, jssDialog])}\n onClose={() => {\n setPopover(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {popover}\n </dialog>\n </BaseView>\n );\n}\n","const pad = (value: number) => value.toString().padStart(2, \"0\");\n\nexport function formatDateInputValue(date: Date): string {\n return `${date.getFullYear().toString().padStart(4, \"0\")}-${pad(\n date.getMonth() + 1\n )}-${pad(date.getDate())}`;\n}\n\nexport function parseDateInputValue(value: string): Date {\n const [year, month, day] = value.split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n}\n\nexport function formatDatetimeInputValue(date: Date): string {\n return `${formatDateInputValue(date)}T${pad(date.getHours())}:${pad(\n date.getMinutes()\n )}`;\n}\n\nexport function parseDatetimeInputValue(value: string): Date {\n const [date, time] = value.split(\"T\");\n const [year, month, day] = date.split(\"-\").map(Number);\n const [hour, minute] = time.split(\":\").map(Number);\n return new Date(year, month - 1, day, hour, minute);\n}\n\nexport function formatTimeInputValue(date: Date): string {\n return `${pad(date.getHours())}:${pad(date.getMinutes())}`;\n}\n","import React, { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Button } from \"./Button\";\nimport { Column } from \"./Column\";\nimport { IconButton } from \"./IconButton\";\nimport { InputFrame } from \"./InputFrame\";\nimport { NumericInputSegment } from \"./NumericInputSegment\";\nimport { Popover, PopoverTrigger } from \"./Popover\";\nimport { Row } from \"./Row\";\nimport { Label, Span } from \"./Text\";\nimport { JSS, cssVar } from \"./jss\";\nimport { formatDateInputValue } from \"./dateInputValue\";\n\ntype DatePart = \"day\" | \"month\" | \"year\";\ntype DateSegments = Record<DatePart, string>;\n\nexport interface DateInputProps {\n date: Date | null;\n onDateChange: (date: Date | null) => void;\n label?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n name?: string;\n locale?: string;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n jss?: JSS;\n}\n\nconst partLength: Record<DatePart, number> = {\n day: 2,\n month: 2,\n year: 4,\n};\n\nconst partPlaceholder: Record<DatePart, string> = {\n day: \"DD\",\n month: \"MM\",\n year: \"YYYY\",\n};\n\nconst emptySegments = (): DateSegments => ({ day: \"\", month: \"\", year: \"\" });\n\nfunction getSegments(date: Date | null): DateSegments {\n if (date == null) return emptySegments();\n\n return {\n day: String(date.getDate()).padStart(2, \"0\"),\n month: String(date.getMonth() + 1).padStart(2, \"0\"),\n year: String(date.getFullYear()).padStart(4, \"0\"),\n };\n}\n\nfunction localDate(year: number, month: number, day: number): Date {\n const date = new Date(0, month - 1, day, 12);\n date.setFullYear(year);\n return date;\n}\n\nfunction startOfDay(date: Date): number {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n ).getTime();\n}\n\nfunction isWithinRange(date: Date, min?: Date, max?: Date): boolean {\n const value = startOfDay(date);\n return (\n (min == null || value >= startOfDay(min)) &&\n (max == null || value <= startOfDay(max))\n );\n}\n\nfunction parseSegments(\n segments: DateSegments,\n min?: Date,\n max?: Date,\n): Date | null {\n if (\n Object.entries(segments).some(\n ([part, value]) => value.length !== partLength[part as DatePart],\n )\n ) {\n return null;\n }\n\n const year = Number(segments.year);\n const month = Number(segments.month);\n const day = Number(segments.day);\n const date = localDate(year, month, day);\n\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day ||\n !isWithinRange(date, min, max)\n ) {\n return null;\n }\n\n return date;\n}\n\nfunction dateKey(date: Date): string {\n return formatDateInputValue(date);\n}\n\nfunction addDays(date: Date, days: number): Date {\n return localDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate() + days,\n );\n}\n\nfunction addMonths(date: Date, months: number): Date {\n return localDate(date.getFullYear(), date.getMonth() + 1 + months, 1);\n}\n\nfunction shiftMonths(date: Date, months: number): Date {\n const month = addMonths(date, months);\n const lastDay = new Date(\n month.getFullYear(),\n month.getMonth() + 1,\n 0,\n ).getDate();\n return localDate(\n month.getFullYear(),\n month.getMonth() + 1,\n Math.min(date.getDate(), lastDay),\n );\n}\n\nfunction firstDayOfWeek(locale?: string): number {\n try {\n const localeInfo = new Intl.Locale(locale);\n const weekInfo =\n // Modern engines expose getWeekInfo(); older ones used weekInfo.\n (\n localeInfo as Intl.Locale & { getWeekInfo?: () => { firstDay: number } }\n ).getWeekInfo?.() ??\n (localeInfo as Intl.Locale & { weekInfo?: { firstDay: number } })\n .weekInfo;\n return (weekInfo?.firstDay ?? 1) % 7;\n } catch {\n return 1;\n }\n}\n\nfunction DateCalendar({\n date,\n locale,\n min,\n max,\n onSelect,\n}: {\n date: Date | null;\n locale?: string;\n min?: Date;\n max?: Date;\n onSelect: (date: Date) => void;\n}) {\n const today = useMemo(() => new Date(), []);\n const [visibleMonth, setVisibleMonth] = useState(() =>\n localDate((date ?? today).getFullYear(), (date ?? today).getMonth() + 1, 1),\n );\n const gridRef = useRef<HTMLElement | null>(null);\n const pendingFocus = useRef<string | null>(null);\n const headingId = useId();\n const weekStart = firstDayOfWeek(locale);\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale],\n );\n const fullWeekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"long\" }),\n [locale],\n );\n const dateFormatter = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [locale],\n );\n const monthFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { year: \"numeric\", month: \"long\" }),\n [locale],\n );\n\n const firstOfMonth = localDate(\n visibleMonth.getFullYear(),\n visibleMonth.getMonth() + 1,\n 1,\n );\n const offset = (firstOfMonth.getDay() - weekStart + 7) % 7;\n const firstGridDate = addDays(firstOfMonth, -offset);\n const days = Array.from({ length: 42 }, (_, index) =>\n addDays(firstGridDate, index),\n );\n const weekdays = Array.from({ length: 7 }, (_, index) =>\n weekdayFormatter.format(\n addDays(new Date(2024, 0, 7, 12), weekStart + index),\n ),\n );\n\n useEffect(() => {\n if (pendingFocus.current == null) return;\n const key = pendingFocus.current;\n pendingFocus.current = null;\n requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-calendar-date=\"${key}\"]`)\n ?.focus();\n });\n }, [visibleMonth]);\n\n const focusDate = (nextDate: Date) => {\n if (!isWithinRange(nextDate, min, max)) return;\n\n const key = dateKey(nextDate);\n const inVisibleMonth =\n nextDate.getFullYear() === visibleMonth.getFullYear() &&\n nextDate.getMonth() === visibleMonth.getMonth();\n\n if (inVisibleMonth) {\n const element = gridRef.current?.querySelector<HTMLElement>(\n `[data-calendar-date=\"${key}\"]`,\n );\n if (element) {\n element.focus();\n return;\n }\n }\n\n pendingFocus.current = key;\n setVisibleMonth(\n localDate(nextDate.getFullYear(), nextDate.getMonth() + 1, 1),\n );\n };\n\n const changeMonth = (amount: number) => {\n const nextMonth = addMonths(visibleMonth, amount);\n const preferredDay = date?.getDate() ?? today.getDate();\n const lastDay = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth() + 1,\n 0,\n ).getDate();\n const nextFocus = localDate(\n nextMonth.getFullYear(),\n nextMonth.getMonth() + 1,\n Math.min(preferredDay, lastDay),\n );\n pendingFocus.current = dateKey(nextFocus);\n setVisibleMonth(nextMonth);\n };\n\n const onGridKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n const target = (event.target as HTMLElement).dataset.calendarDate;\n if (target == null) return;\n\n const [year, month, day] = target.split(\"-\").map(Number);\n const focusedDate = localDate(year, month, day);\n let nextDate: Date | null = null;\n\n switch (event.key) {\n case \"ArrowLeft\":\n nextDate = addDays(focusedDate, -1);\n break;\n case \"ArrowRight\":\n nextDate = addDays(focusedDate, 1);\n break;\n case \"ArrowUp\":\n nextDate = addDays(focusedDate, -7);\n break;\n case \"ArrowDown\":\n nextDate = addDays(focusedDate, 7);\n break;\n case \"Home\":\n nextDate = addDays(\n focusedDate,\n -((focusedDate.getDay() - weekStart + 7) % 7),\n );\n break;\n case \"End\":\n nextDate = addDays(\n focusedDate,\n 6 - ((focusedDate.getDay() - weekStart + 7) % 7),\n );\n break;\n case \"PageUp\":\n nextDate = shiftMonths(focusedDate, event.shiftKey ? -12 : -1);\n break;\n case \"PageDown\":\n nextDate = shiftMonths(focusedDate, event.shiftKey ? 12 : 1);\n break;\n }\n\n if (nextDate != null) {\n event.preventDefault();\n event.stopPropagation();\n focusDate(nextDate);\n }\n };\n\n return (\n <Column gap=\"small\" jss={{ width: 280 }}>\n <Row align=\"center\" justify=\"space-between\">\n <IconButton\n bare\n color=\"secondary\"\n icon=\"chevron-left\"\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n />\n <BaseView id={headingId} aria-live=\"polite\">\n <Span bold>{monthFormatter.format(visibleMonth)}</Span>\n </BaseView>\n <IconButton\n bare\n color=\"secondary\"\n icon=\"chevron-right\"\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n />\n </Row>\n <BaseView\n ref={gridRef}\n role=\"grid\"\n aria-labelledby={headingId}\n onKeyDown={onGridKeyDown}\n >\n <Row role=\"row\">\n {weekdays.map((weekday, index) => (\n <BaseView\n key={`${weekday}-${index}`}\n role=\"columnheader\"\n aria-label={fullWeekdayFormatter.format(\n addDays(new Date(2024, 0, 7, 12), weekStart + index),\n )}\n jss={{ width: 40, textAlign: \"center\" }}\n >\n <Span size=\"small\" color=\"secondary\">\n {weekday}\n </Span>\n </BaseView>\n ))}\n </Row>\n {Array.from({ length: 6 }, (_, week) => (\n <Row role=\"row\" key={week}>\n {days.slice(week * 7, week * 7 + 7).map((day) => {\n const selected = date != null && dateKey(day) === dateKey(date);\n const current = dateKey(day) === dateKey(today);\n const outsideMonth = day.getMonth() !== visibleMonth.getMonth();\n const unavailable = !isWithinRange(day, min, max);\n\n return (\n <Button\n key={dateKey(day)}\n role=\"gridcell\"\n data-calendar-date={dateKey(day)}\n data-autofocus={selected || (date == null && current)}\n aria-label={dateFormatter.format(day)}\n aria-selected={selected}\n tabIndex={selected || (date == null && current) ? 0 : -1}\n disabled={unavailable}\n bare={!selected}\n color={selected ? \"primary\" : \"secondary\"}\n jss={{\n width: 40,\n height: 36,\n padding: 0,\n borderRadius: cssVar(\"--border-radius-m\"),\n opacity: outsideMonth ? 0.45 : 1,\n outline:\n current && !selected\n ? `1px solid ${cssVar(\"--outline\")}`\n : \"none\",\n outlineOffset: -3,\n }}\n onClick={() => onSelect(day)}\n >\n {String(day.getDate())}\n </Button>\n );\n })}\n </Row>\n ))}\n </BaseView>\n </Column>\n );\n}\n\nexport const DateInput = React.forwardRef(function DateInput(\n {\n date,\n onDateChange,\n label,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n id: providedId,\n name,\n locale = \"en-GB\",\n min,\n max,\n disabled = false,\n required = false,\n readOnly = false,\n autoFocus = false,\n jss,\n }: DateInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const labelId = `${id}-label`;\n const dateTimestamp = date?.getTime() ?? null;\n const [segments, setSegments] = useState(() => getSegments(date));\n const [draftInvalid, setDraftInvalid] = useState(false);\n const [syncedDateTimestamp, setSyncedDateTimestamp] = useState(dateTimestamp);\n const inputRefs = useRef<Partial<Record<DatePart, HTMLInputElement>>>({});\n const parts = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n })\n .formatToParts(new Date(2000, 10, 22))\n .filter((part) =>\n [\"day\", \"month\", \"year\", \"literal\"].includes(part.type),\n ),\n [locale],\n );\n const orderedParts = parts.filter(\n (part): part is Intl.DateTimeFormatPart & { type: DatePart } =>\n part.type === \"day\" || part.type === \"month\" || part.type === \"year\",\n );\n\n if (dateTimestamp !== syncedDateTimestamp) {\n setSyncedDateTimestamp(dateTimestamp);\n setSegments(getSegments(date));\n setDraftInvalid(false);\n }\n\n const updateSegment = (part: DatePart, rawValue: string) => {\n const value = rawValue.replace(/\\D/g, \"\").slice(0, partLength[part]);\n const next = { ...segments, [part]: value };\n setSegments(next);\n const complete = Object.entries(next).every(\n ([key, segment]) => segment.length === partLength[key as DatePart],\n );\n\n if (Object.values(next).every((segment) => segment === \"\")) {\n setDraftInvalid(false);\n onDateChange(null);\n return;\n }\n\n const parsed = parseSegments(next, min, max);\n setDraftInvalid(complete && parsed == null);\n if (parsed != null) onDateChange(parsed);\n };\n\n const field = (\n <PopoverTrigger<object>\n ariaLabel=\"Choose date\"\n grow\n jss={[{ width: \"100%\" }, jss]}\n jssDialog={{ left: \"auto\", right: 0 }}\n PopoverComponent={({ close }) => (\n <Popover close={close}>\n <DateCalendar\n date={date}\n locale={locale}\n min={min}\n max={max}\n onSelect={(nextDate) => {\n setSegments(getSegments(nextDate));\n setDraftInvalid(false);\n onDateChange(nextDate);\n close();\n }}\n />\n </Popover>\n )}\n >\n {({ toggle, expanded }) => (\n <InputFrame\n align=\"center\"\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : (ariaLabel ?? \"Date\")}\n aria-describedby={ariaDescribedBy}\n >\n <Row align=\"center\" padding={[\"none\", \"medium\"]} grow>\n {parts.map((part, index) => {\n if (part.type === \"literal\") {\n return (\n <Span key={`${part.type}-${index}`} color=\"secondary\">\n {part.value.trim() || \"/\"}\n </Span>\n );\n }\n\n if (\n part.type !== \"day\" &&\n part.type !== \"month\" &&\n part.type !== \"year\"\n ) {\n return null;\n }\n\n const datePart = part.type;\n const firstPart = orderedParts[0]?.type === datePart;\n const partIndex = orderedParts.findIndex(\n (item) => item.type === datePart,\n );\n return (\n <NumericInputSegment\n key={datePart}\n id={firstPart ? id : `${id}-${datePart}`}\n ref={(element) => {\n inputRefs.current[datePart] = element;\n if (firstPart) {\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n }\n }}\n value={segments[datePart]}\n label={datePart}\n placeholder={partPlaceholder[datePart]}\n length={partLength[datePart]}\n width={datePart === \"year\" ? \"6ch\" : \"4ch\"}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus && firstPart}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(datePart, value)}\n onComplete={() =>\n inputRefs.current[\n orderedParts[partIndex + 1]?.type\n ]?.focus()\n }\n onPrevious={() =>\n inputRefs.current[\n orderedParts[partIndex - 1]?.type\n ]?.focus()\n }\n onNext={() =>\n inputRefs.current[\n orderedParts[partIndex + 1]?.type\n ]?.focus()\n }\n />\n );\n })}\n </Row>\n <IconButton\n bare\n color=\"secondary\"\n icon=\"calendar-days\"\n disabled={disabled || readOnly}\n aria-label={\n date == null\n ? \"Choose date\"\n : `Change date, ${date.toLocaleDateString(locale)}`\n }\n aria-haspopup=\"dialog\"\n aria-expanded={expanded}\n onClick={() => toggle({})}\n />\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={date == null ? \"\" : formatDateInputValue(date)}\n />\n )}\n </InputFrame>\n )}\n </PopoverTrigger>\n );\n\n if (label == null) return field;\n\n return (\n <Column gap=\"small\">\n <Label id={labelId} htmlFor={id}>\n {label}\n </Label>\n {field}\n </Column>\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\nimport {\n formatDatetimeInputValue,\n parseDatetimeInputValue,\n} from \"./dateInputValue\";\n\nexport interface DatetimeInputProps extends BaseInputProps {\n onDateChange: (date: Date) => void;\n date: Date;\n icon?: IconType;\n addOn?: ReactNode;\n onChange?: undefined;\n jss?: JSS;\n}\n\nconst styles = {\n root: {\n backgroundColor: \"var(--primary-background)\",\n },\n input: {\n padding: \"var(--spacing-m)\",\n flexGrow: 1,\n backgroundColor: \"var(--primary-background)\",\n color: \"var(--primary-text)\",\n outline: \"none\",\n border: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n \"::placeholder\": {\n color: \"var(--subtle-text);\",\n },\n \":disabled\": {\n color: \"var(--subtle-text);\",\n },\n },\n};\n\nexport const DatetimeInput = React.forwardRef(function DatetimeInput(\n { date, onDateChange, jss, icon, addOn, ...inputProps }: DatetimeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <Row jss={styles.root}>\n {icon && (\n <Box padding=\"medium\">\n <Icon size=\"medium\" color=\"secondary\" icon={icon} />\n </Box>\n )}\n <BaseInput\n {...inputProps}\n type=\"datetime-local\"\n ref={ref}\n value={formatDatetimeInputValue(date)}\n onChange={(e) => {\n if (e.target.value) {\n onDateChange(parseDatetimeInputValue(e.target.value));\n }\n }}\n jss={[styles.input, jss]}\n />\n {addOn}\n </Row>\n );\n});\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n width: \"100%\",\n borderBottom: \"1px solid var(--divider)\",\n },\n};\n\nexport function ListDivider() {\n return <BaseView jss={styles.root} />;\n}\n","import React, { useCallback, useContext, useMemo, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Text } from \"./Text\";\nimport { ListDivider } from \"./ListDivider\";\nimport { Column } from \"./Column\";\nimport { Row } from \"./Row\";\nimport { IconButton } from \"./IconButton\";\nimport { toClassnames } from \"./jss\";\n\nconst styles = {\n dialog: {\n border: \"1px solid var(--divider)\",\n borderRadius: \"var(--border-radius-l)\",\n padding: 0,\n boxShadow: \"var(--shadow-lg)\",\n animation: \"dialogFadeIn 0.2s ease-out\",\n \"::backdrop\": {\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n animation: \"backdropFadeIn 0.2s ease-out\",\n },\n },\n root: {\n display: \"grid\",\n width: \"calc(100vw - 48px)\",\n gridTemplateAreas: `\n \"header\"\n \"content\"\n `,\n \"@media (min-width: 750px)\": {\n maxWidth: 750,\n },\n backgroundColor: \"var(--secondary-background)\",\n },\n header: {\n gridArea: \"header\",\n },\n content: {\n gridArea: \"content\",\n },\n};\n\nexport const Dialog = ({\n label,\n children,\n close,\n}: {\n label: string;\n children: React.JSX.Element;\n close: () => void;\n}) => {\n return (\n <BaseView jss={styles.root}>\n <Column jss={styles.header}>\n <Row padding=\"medium\" justify=\"space-between\" align=\"center\">\n <Text size=\"medium\" color=\"secondary\">\n {label}\n </Text>\n <IconButton\n autoFocus={true}\n bare={true}\n icon=\"x\"\n onClick={close}\n color=\"secondary\"\n />\n </Row>\n <ListDivider />\n </Column>\n <BaseView jss={styles.content}>{children}</BaseView>\n </BaseView>\n );\n};\n\ntype DialogElement = React.JSX.Element | null;\n\nconst DialogContext = React.createContext<{\n setDialog: React.Dispatch<React.SetStateAction<DialogElement>>;\n}>({\n setDialog: () => {},\n});\n\nexport function DialogProvider({ children }: { children: React.ReactNode }) {\n const [dialog, setDialog] = useState<DialogElement>(null);\n const value = useMemo(() => ({ setDialog }), []);\n\n return (\n <DialogContext.Provider value={value}>\n {dialog}\n {children}\n </DialogContext.Provider>\n );\n}\n\nexport function useDialog<Input>(\n DialogComponent: (props: { close: () => void } & Input) => React.JSX.Element,\n options: { closeOnOutsideClick: boolean },\n) {\n const { setDialog } = useContext(DialogContext);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n const activeElementRef = useRef<HTMLElement | null>(null);\n\n const close = useCallback(() => {\n dialogRef.current?.close();\n activeElementRef.current?.focus();\n dialogRef.current = null;\n activeElementRef.current = null;\n setDialog(null);\n }, [setDialog]);\n\n const open = (input: Input) => {\n activeElementRef.current =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n setDialog(\n <dialog\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n ref?.showModal();\n }}\n className={toClassnames(styles.dialog)}\n onClose={() => {\n close();\n }}\n onClick={(e) => {\n if (dialogRef.current == null) {\n return;\n }\n\n const dialogDimensions = dialogRef.current.getBoundingClientRect();\n\n if (options.closeOnOutsideClick === false) {\n return;\n }\n\n if (\n e.clientX < dialogDimensions.left ||\n e.clientX > dialogDimensions.right ||\n e.clientY > dialogDimensions.bottom ||\n e.clientY < dialogDimensions.top\n ) {\n dialogRef.current.close();\n }\n }}\n >\n <DialogComponent {...input} close={close} />\n </dialog>,\n );\n };\n\n return {\n open,\n close,\n };\n}\n","export type Callback<Value> = (value: Value) => void;\n\nexport type Subscribe<Value> = (callback: Callback<Value>) => () => void;\n\nexport function createEmitter<Value>() {\n const subscriptions = new Set<Callback<Value>>();\n\n const subscribe: Subscribe<Value> = (callback: Callback<Value>) => {\n subscriptions.add(callback);\n\n return () => {\n subscriptions.delete(callback);\n };\n };\n\n const emit = (value: Value) => {\n subscriptions.forEach((subscription) => {\n subscription(value);\n });\n };\n\n return {\n subscribe,\n emit,\n };\n}\n","export function guid(): string {\n return \"ID-xxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import React from \"react\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\n\nexport interface IconLinkProps extends Omit<\n BaseLinkProps,\n \"border\" | \"padding\"\n> {\n icon: IconType;\n}\n\nexport const IconLink = React.forwardRef(function IconLink(\n { icon, color, bare, disabled, jss, ...otherProps }: IconLinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 34,\n width: 34,\n borderRadius: 17,\n textDecoration: \"none\",\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size=\"medium\"\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n </BaseLink>\n );\n});\n","import React, { ReactNode } from \"react\";\n\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor, getCSSColor } from \"./Interactable\";\nimport { Align, Gap, Justify, cssVar } from \"./jss\";\n\nexport interface LinkProps extends Omit<BaseLinkProps, \"border\" | \"padding\"> {\n children?: ReactNode;\n color: InteractableColor;\n icon?: IconType;\n underline?: boolean;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n inline?: boolean;\n}\n\nexport const Link = React.forwardRef(function Link(\n {\n children,\n color,\n bare,\n disabled,\n icon,\n underline,\n iconPosition = \"left\",\n align = \"center\",\n gap = \"medium\",\n justify = \"center\",\n jss,\n inline = true,\n ...otherProps\n }: LinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding=\"none\"\n jss={[\n {\n height: 34,\n padding: \"0 14px\",\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n display: inline ? \"inline-flex\" : \"flex\",\n textDecoration: \"none\",\n },\n underline && {\n textDecorationLine: \"underline\",\n textDecorationThickness: \"2px\",\n textUnderlineOffset: \"2px\",\n textDecorationColor: getCSSColor(color, disabled, bare),\n },\n jss,\n ]}\n >\n <Row\n jss={{\n display: inline ? \"inline-flex\" : \"flex\",\n }}\n grow={true}\n align={align}\n gap={gap}\n justify={justify}\n >\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n jss={{\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n }}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseLink>\n );\n});\n","import React from \"react\";\nimport { BaseList, BaseListProps } from \"./BaseList\";\nimport { useNavigation } from \"./useNavigation\";\n\ninterface ListProps extends BaseListProps {\n ariaLabel: string;\n autofocus?: boolean;\n role?: undefined;\n navigation?: boolean;\n}\n\nexport function List({\n ariaLabel,\n jss,\n autofocus = false,\n navigation = true,\n ...otherProps\n}: ListProps) {\n const rootRef = useNavigation({ autofocus, enabled: navigation });\n\n return (\n <BaseList\n role=\"grid\"\n aria-label={ariaLabel}\n ref={rootRef}\n jss={[{ overflow: \"hidden\" }, jss]}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseButton } from \"./BaseButton\";\n\ninterface ListButtonItemProps\n extends Omit<BaseListItemProps, \"children\" | \"onClick\"> {\n color?: InteractableColor;\n onClick: () => void;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n children?: void;\n}\n\nexport const ListButtonItem = React.forwardRef(function ListButtonItem(\n {\n onClick,\n color = \"secondary\",\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n ...otherProps\n }: ListButtonItemProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseListItem\n disabled={disabled}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n aria-selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseButton\n padding={padding}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color=\"secondary\"\n ref={ref}\n jss={getInteractableListItemJSS({ selected })}\n onClick={onClick}\n >\n {content}\n </BaseButton>\n )}\n </BaseListItem>\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseListItem } from \"./BaseListItem\";\nimport { Position } from \"./jss\";\n\nexport function ListHeaderItem({\n highlight,\n headline,\n body,\n addOn,\n addOnPosition,\n}: {\n highlight?: boolean;\n headline: string;\n body?: string;\n addOn?: ReactNode;\n addOnPosition?: Position;\n}) {\n return (\n <BaseListItem\n headline={headline}\n headlineColor={highlight ? \"highlight\" : \"primary\"}\n headlineBold={true}\n body={body}\n addOn={addOn}\n addOnPosition={addOnPosition}\n >\n {({ content }) => content}\n </BaseListItem>\n );\n}\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\n\ninterface ListItemProps extends Omit<BaseListItemProps, \"children\"> {\n headline: string;\n body?: string;\n children?: void;\n}\n\nexport const ListItem = React.forwardRef(function ListItem(\n props: ListItemProps,\n ref?: React.Ref<HTMLLIElement>,\n) {\n return (\n <BaseListItem {...props} jss={props.jss} ref={ref}>\n {({ content }) => content}\n </BaseListItem>\n );\n});\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseLink } from \"./BaseLink\";\n\ninterface ListLinkItemProps\n extends Omit<BaseListItemProps, \"children\" | \"onClick\"> {\n color?: InteractableColor;\n children?: void;\n onClick?: () => void;\n href: string;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n target?: string;\n}\n\nexport const ListLinkItem = React.forwardRef(function ListLinkItem(\n {\n onClick,\n href,\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n color = \"secondary\",\n target,\n ...otherProps\n }: ListLinkItemProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseListItem\n disabled={disabled}\n aria-selected={selected}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseLink\n target={target}\n padding={padding}\n aria-current={selected ? \"page\" : undefined}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color={color}\n href={href}\n ref={ref}\n jss={getInteractableListItemJSS({ selected })}\n onClick={onClick}\n >\n {content}\n </BaseLink>\n )}\n </BaseListItem>\n );\n});\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n height: \"var(--spacing-xl)\",\n backgroundColor: \"var(--secondary-background)\",\n width: \"100%\",\n },\n};\n\nexport function ListSpacer() {\n return <BaseView jss={styles.root} />;\n}\n","import { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport { Color, JSS, getBackground } from \"./jss\";\n\nexport function MenuIcon({ open, color }: { open: boolean; color: Color }) {\n return (\n <Column gap=\"small\">\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? 8 : 0,\n }}\n />\n <Bar\n color={color}\n jss={{\n opacity: open ? 0 : 1,\n }}\n />\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(-135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? -8 : 0,\n }}\n />\n </Column>\n );\n}\n\nfunction Bar({ jss, color }: { jss: JSS; color: Color }) {\n return (\n <BaseView\n jss={[\n {\n position: \"relative\",\n width: 24,\n height: 4,\n borderRadius: \"1px\",\n transition: \"all 200ms ease-out\",\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","import React, { ReactNode } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport {\n JSS,\n cssVar,\n desktop,\n getMaterial,\n laptop,\n mobile,\n tablet,\n} from \"./jss\";\n\nexport interface NavigationSplitViewProps {\n navigation: ReactNode;\n children: ReactNode;\n compactHeader?: ReactNode;\n compactNavigation?: ReactNode;\n navigationVisibleInCompact?: boolean;\n navigationWidth?: string;\n navigationInset?: string;\n jss?: JSS;\n}\n\nconst compactLayout = (hasCompactNavigation: boolean): JSS => ({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n paddingBottom: hasCompactNavigation ? cssVar(\"--nav-bar-height\") : 0,\n});\n\nconst expandedLayout = (navigationInset: string): JSS => ({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: navigationInset,\n padding: navigationInset,\n});\n\nexport function NavigationSplitView({\n navigation,\n children,\n compactHeader,\n compactNavigation,\n navigationVisibleInCompact = false,\n navigationWidth = \"320px\",\n navigationInset = \"12px\",\n jss,\n}: NavigationSplitViewProps) {\n return (\n <BaseView\n jss={[\n {\n position: \"relative\",\n width: \"100%\",\n height: \"auto\",\n minWidth: 0,\n minHeight: \"100dvh\",\n overflow: \"visible\",\n },\n mobile(compactLayout(compactNavigation != null)),\n tablet(compactLayout(compactNavigation != null)),\n laptop(expandedLayout(navigationInset)),\n desktop(expandedLayout(navigationInset)),\n jss,\n ]}\n >\n <BaseView\n jss={[\n {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n zIndex: 1,\n },\n mobile({\n display: navigationVisibleInCompact ? \"block\" : \"none\",\n width: \"100%\",\n flex: \"1 1 auto\",\n order: 1,\n }),\n tablet({\n display: navigationVisibleInCompact ? \"block\" : \"none\",\n width: \"100%\",\n flex: \"1 1 auto\",\n order: 1,\n }),\n laptop({\n display: \"block\",\n width: navigationWidth,\n flex: `0 0 ${navigationWidth}`,\n order: 0,\n position: \"sticky\",\n top: navigationInset,\n height: `calc(100dvh - ${navigationInset} - ${navigationInset})`,\n overflow: \"visible\",\n }),\n desktop({\n display: \"block\",\n width: navigationWidth,\n flex: `0 0 ${navigationWidth}`,\n order: 0,\n position: \"sticky\",\n top: navigationInset,\n height: `calc(100dvh - ${navigationInset} - ${navigationInset})`,\n overflow: \"visible\",\n }),\n ]}\n >\n {navigation}\n </BaseView>\n\n <BaseView\n jss={[\n {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n mobile({\n display: navigationVisibleInCompact ? \"none\" : \"block\",\n width: \"100%\",\n order: 1,\n }),\n tablet({\n display: navigationVisibleInCompact ? \"none\" : \"block\",\n width: \"100%\",\n order: 1,\n }),\n laptop({ display: \"block\", flex: \"1 1 0\", order: 0 }),\n desktop({ display: \"block\", flex: \"1 1 0\", order: 0 }),\n ]}\n >\n {children}\n </BaseView>\n\n <BaseView\n jss={[\n mobile({\n display: \"block\",\n position: \"sticky\",\n top: 0,\n width: \"100%\",\n order: 0,\n zIndex: 2,\n ...getMaterial(\"aurora\"),\n }),\n tablet({\n display: \"block\",\n position: \"sticky\",\n top: 0,\n width: \"100%\",\n order: 0,\n zIndex: 2,\n ...getMaterial(\"aurora\"),\n }),\n laptop({ display: \"none\", position: \"static\" }),\n desktop({ display: \"none\", position: \"static\" }),\n ]}\n >\n {compactHeader}\n </BaseView>\n\n <BaseView\n jss={[\n mobile({\n display: \"block\",\n position: \"fixed\",\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 2,\n }),\n tablet({\n display: \"block\",\n position: \"fixed\",\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 2,\n }),\n laptop({ display: \"none\", position: \"static\" }),\n desktop({ display: \"none\", position: \"static\" }),\n ]}\n >\n {compactNavigation}\n </BaseView>\n </BaseView>\n );\n}\n","const LETTERS_26 = [\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n];\n\nexport function numberToBase(\n number: number,\n base: Array<string> = LETTERS_26,\n): string {\n if (number <= -1) {\n return \"\";\n }\n\n const result = [];\n\n // To make numbers 1 indexed\n number += 1;\n\n while (number >= base.length) {\n const index = number % base.length;\n number = Math.floor(number / base.length) - 1;\n result.push(base[index]);\n }\n\n result.push(base[number]);\n\n return result.reverse().join(\"\");\n}\n","import React, { useRef, useCallback, ReactElement } from \"react\";\n\nexport function OnVisible({\n children,\n onVisible,\n}: {\n children: (refCallback: React.RefCallback<HTMLElement>) => ReactElement;\n onVisible: () => void;\n}) {\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n const refCallback = useCallback((element) => {\n if (element == null) {\n return;\n }\n\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n onVisible();\n }\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n }\n );\n\n intersectionObserverRef.current = intersectionObserver;\n intersectionObserver.observe(element);\n\n return () => {\n intersectionObserver.unobserve(element);\n intersectionObserverRef.current = null;\n };\n }, [onVisible]);\n\n return children(refCallback);\n}\n","import React from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Color, JSS, cssVar, getBackground } from \"./jss\";\n\nexport type ProgressBarSize = \"small\" | \"medium\";\n\nexport interface ProgressBarProps {\n progress: number;\n color?: Color;\n size?: ProgressBarSize;\n jss?: JSS;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n width: \"100%\",\n position: \"relative\",\n backgroundColor: cssVar(\"--secondary-background\"),\n borderRadius: 999,\n overflow: \"hidden\",\n },\n fill: {\n borderRadius: \"inherit\",\n position: \"absolute\",\n transformOrigin: \"center left\",\n transition: `transform ${cssVar(\"--transition-normal\")}`,\n inset: 0,\n \":dir(rtl)\": {\n transformOrigin: \"center right\",\n },\n \"@media (prefers-reduced-motion: reduce)\": {\n transition: \"none\",\n },\n },\n};\n\nconst sizes: { [size in ProgressBarSize]: number } = {\n small: 4,\n medium: 8,\n};\n\nexport function ProgressBar({\n color = \"highlight\",\n progress,\n size = \"medium\",\n jss,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: ProgressBarProps) {\n const value = Number.isFinite(progress)\n ? Math.min(1, Math.max(0, progress))\n : 0;\n\n return (\n <BaseView\n role=\"progressbar\"\n aria-label={ariaLabelledby ? undefined : (ariaLabel ?? \"Progress\")}\n aria-labelledby={ariaLabelledby}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(value * 100)}\n jss={[styles.root, { height: sizes[size] }, jss]}\n >\n <BaseView\n jss={[styles.fill, getBackground(color)]}\n style={{ transform: `scaleX(${value})` }}\n />\n </BaseView>\n );\n}\n","import React from \"react\";\n\nimport { Color, JSS, cssVar, getColorValue, toClassnames } from \"./jss\";\n\nexport type ProgressCircleSize = \"small\" | \"medium\";\n\nexport interface ProgressCircleProps {\n progress: number;\n color?: Color;\n size?: ProgressCircleSize;\n jss?: JSS;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n display: \"block\",\n },\n track: {\n fill: \"none\",\n stroke: cssVar(\"--secondary-background\"),\n },\n fill: {\n fill: \"none\",\n transform: \"rotate(-90deg)\",\n transformOrigin: \"50% 50%\",\n transition: `stroke-dashoffset ${cssVar(\"--transition-normal\")}`,\n \"@media (prefers-reduced-motion: reduce)\": {\n transition: \"none\",\n },\n },\n};\n\nconst sizes: {\n [size in ProgressCircleSize]: { diameter: number; stroke: number };\n} = {\n small: { diameter: 16, stroke: 2 },\n medium: { diameter: 32, stroke: 4 },\n};\n\nexport function ProgressCircle({\n progress,\n color = \"highlight\",\n size = \"medium\",\n jss,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: ProgressCircleProps) {\n const value = Number.isFinite(progress)\n ? Math.min(1, Math.max(0, progress))\n : 0;\n const { diameter, stroke } = sizes[size];\n const radius = (diameter - stroke) / 2;\n const center = diameter / 2;\n const circumference = radius * 2 * Math.PI;\n\n return (\n <svg\n role=\"progressbar\"\n aria-label={ariaLabelledby ? undefined : (ariaLabel ?? \"Progress\")}\n aria-labelledby={ariaLabelledby}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(value * 100)}\n className={toClassnames([styles.root, jss])}\n width={diameter}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n >\n <circle\n className={toClassnames(styles.track)}\n strokeWidth={stroke}\n r={radius}\n cx={center}\n cy={center}\n />\n <circle\n className={toClassnames(styles.fill)}\n stroke={getColorValue(color)}\n strokeWidth={stroke}\n strokeLinecap={value === 0 ? \"butt\" : \"round\"}\n strokeDasharray={circumference}\n strokeDashoffset={circumference * (1 - value)}\n r={radius}\n cx={center}\n cy={center}\n />\n </svg>\n );\n}\n","import { useState, useCallback, useEffect, useRef } from \"react\";\nimport { isServer } from \"./isServer\";\n\nexport function hasCookie(key: string): boolean {\n return (\n document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`)).length > 0\n );\n}\n\nexport function getCookie<T>(\n key: string,\n deserialize: (s: string) => T = JSON.parse\n): T {\n return document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`))\n .map((s) => s.split(\"=\")[1])\n .map((s) => deserialize(s))\n .reverse()\n .pop();\n}\n\nexport function useCookie<T, L>(\n key: string,\n {\n initialValue = null,\n loadingValue,\n serialize = JSON.stringify,\n deserialize = JSON.parse,\n maxAge = 60 * 60 * 24 * 365,\n }: {\n initialValue: T;\n loadingValue: L;\n serialize?: (t: T) => string;\n deserialize?: (s: string) => T;\n maxAge?: number;\n }\n): [T | L, (t: T | ((prevValue: T | L) => T)) => void] {\n const initializationRef = useRef(false);\n const [cookie, setCookie] = useState<T | L>(() => {\n if (!isServer()) {\n const hasPersistedCookie = hasCookie(key);\n if (hasPersistedCookie) {\n return getCookie(key, deserialize);\n } else {\n return loadingValue;\n }\n }\n\n return loadingValue;\n });\n\n useEffect(() => {\n if (initializationRef.current === true) {\n return;\n }\n\n const hasPersistedCookie = hasCookie(key);\n\n const nextCookie = hasPersistedCookie\n ? getCookie(key, deserialize)\n : initialValue;\n\n if (!hasPersistedCookie) {\n document.cookie = `${key}=${serialize(\n initialValue\n )}; max-age=${maxAge};path=/;`;\n }\n initializationRef.current = true;\n\n let cancelled = false;\n queueMicrotask(() => {\n if (!cancelled) {\n setCookie(nextCookie);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [deserialize, initialValue, key, maxAge, serialize]);\n\n return [\n cookie,\n useCallback((t: T | ((prevValue: T | L) => T)) => {\n if (typeof t === \"function\") {\n const callback = t as (prevValue: T | L) => T;\n setCookie((oldCookie) => {\n const newValue = callback(oldCookie);\n document.cookie = `${key}=${serialize(\n newValue\n )}; max-age=${maxAge};path=/;`;\n return newValue;\n });\n } else {\n setCookie(t);\n document.cookie = `${key}=${serialize(t)}; max-age=${maxAge};path=/;`;\n }\n }, [key, maxAge, serialize]),\n ];\n}\n","import React from \"react\";\nimport { DarkModeProvider } from \"./DarkMode\";\nimport { DialogProvider } from \"./Dialog\";\nimport { useCookie } from \"./useCookie\";\nimport { JSSProvider, Theme } from \"./jss\";\n\nexport function Providers({\n children,\n themes,\n}: {\n children: React.JSX.Element;\n themes: { light: Theme; dark: Theme };\n}) {\n const [darkModeEnabled, setDarkModeEnabled] = useCookie(\"dark-mode\", {\n initialValue: false,\n loadingValue: false,\n });\n const toggleDarkMode = React.useCallback(\n () => setDarkModeEnabled((x) => !x),\n [setDarkModeEnabled],\n );\n\n return (\n <JSSProvider themes={themes}>\n <DarkModeProvider enabled={darkModeEnabled} toggle={toggleDarkMode}>\n <DialogProvider>{children}</DialogProvider>\n </DarkModeProvider>\n </JSSProvider>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Row } from \"./Row\";\nimport { Gap, JSS, Padding, cssVar } from \"./jss\";\n\nexport interface RangeInputProps extends BaseInputProps {\n onValueChange: (value: number) => void;\n value: number;\n jssRoot?: JSS;\n onChange?: undefined;\n padding?: Padding;\n gap?: Gap;\n addOn?: React.JSX.Element;\n addOnPosition?: \"start\" | \"end\";\n}\n\nexport const RangeInput = React.forwardRef(function RangeInput(\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n gap = \"medium\",\n padding = \"none\",\n min = 0,\n max = 100,\n step = 1,\n label,\n addOn,\n addOnPosition = \"start\",\n ...inputProps\n }: RangeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <Row\n gap={gap}\n padding={padding}\n align=\"center\"\n jss={[\n {\n \":has(:focus-visible)\": {\n borderRadius: cssVar(\"--border-radius-m\"),\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n },\n jssRoot,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n <BaseInput\n {...inputProps}\n label={label}\n min={min}\n max={max}\n step={step}\n type=\"range\"\n ref={ref}\n value={value}\n onChange={(e) => {\n onValueChange(parseFloat(e.target.value));\n }}\n jss={[\n {\n backgroundColor: cssVar(\"--primary-background\"),\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n margin: 0,\n paddingTop: cssVar(\"--spacing-m\"),\n paddingBottom: cssVar(\"--spacing-m\"),\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n },\n },\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n});\n","import React, {\n useContext,\n useState,\n ReactNode,\n useMemo,\n useEffect,\n} from \"react\";\nimport { createEmitter, Subscribe } from \"./Emitter\";\n\ntype State = {\n subscribe: Subscribe<boolean>;\n};\n\nconst StackContext = React.createContext<State>({\n subscribe: () => {\n return () => {};\n },\n});\n\ntype Props = {\n children: ReactNode;\n isTopOfStack: boolean;\n};\n\nexport function StackContextProvider({ children, isTopOfStack }: Props) {\n const [emitter] = useState(() => createEmitter<boolean>());\n\n useEffect(() => {\n emitter.emit(isTopOfStack);\n }, [emitter, isTopOfStack]);\n\n const value = useMemo(\n () => ({ subscribe: emitter.subscribe }),\n [emitter],\n );\n\n return (\n <StackContext.Provider value={value}>{children}</StackContext.Provider>\n );\n}\n\nexport function useIsTopOfStack() {\n const [isTopOfStack, setIsTopOfStack] = useState<boolean>(true);\n const { subscribe } = useContext(StackContext);\n\n useEffect(() => {\n return subscribe(setIsTopOfStack);\n }, [subscribe]);\n\n return isTopOfStack;\n}\n","import React, { ReactNode, useRef, useCallback } from \"react\";\n\nimport { Column } from \"./Column\";\nimport { useIsTopOfStack } from \"./StackContext\";\nimport { queryFocusables } from \"./aria\";\nimport { cssVar } from \"./jss\";\n\nexport function RootView({\n children,\n focusOnlyOnFirstMount = true,\n}: {\n children: ReactNode;\n focusOnlyOnFirstMount?: boolean;\n}) {\n const isTopOfStack = useIsTopOfStack();\n const firstMountRef = useRef(true);\n const refCallback = useCallback(\n (element) => {\n if (!element) {\n return;\n }\n\n if (!isTopOfStack) {\n return;\n }\n\n if (focusOnlyOnFirstMount && !firstMountRef.current) {\n return;\n }\n\n const focusables = queryFocusables(element);\n const firstFocusable = focusables[0];\n firstMountRef.current = false;\n firstFocusable?.focus();\n },\n [isTopOfStack, focusOnlyOnFirstMount]\n );\n\n return (\n <Column\n ref={refCallback}\n jss={{\n marginBottom: 0,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n overflow: \"auto\",\n backgroundColor: cssVar(\"--secondary-background\"),\n minHeight: \"600px\",\n }}\n >\n {children}\n </Column>\n );\n}\n","import { Button } from \"./Button\";\nimport { Column } from \"./Column\";\nimport { getInteractableListItemJSS } from \"./Interactable\";\nimport { JSS } from \"./jss\";\nimport { Popover, PopoverTrigger } from \"./Popover\";\nimport { useNavigation } from \"./useNavigation\";\n\nexport type SelectValue = string | number;\n\nexport type SelectOption<Value extends SelectValue> = {\n value: Value;\n label: string;\n};\n\nexport interface SelectProps<Value extends SelectValue> {\n label: string;\n options: ReadonlyArray<SelectOption<Value>>;\n value: Value;\n onValueChange: (value: NoInfer<Value>) => void;\n disabled?: boolean;\n jss?: JSS;\n jssButton?: JSS;\n}\n\nexport function Select<Value extends SelectValue>({\n label,\n options,\n value,\n onValueChange,\n disabled = false,\n jss,\n jssButton,\n}: SelectProps<Value>) {\n const selectedOption = options.find((option) => option.value === value);\n const selectedIndex = options.findIndex((option) => option.value === value);\n const optionsRef = useNavigation({\n autofocus: true,\n initialIndex: selectedIndex,\n });\n\n return (\n <PopoverTrigger<object>\n ariaLabel={label}\n jss={[{ minWidth: 220 }, jss]}\n PopoverComponent={({ close }) => (\n <Popover close={close}>\n <Column\n ref={optionsRef}\n role=\"listbox\"\n aria-label={label}\n jss={{ width: \"100%\" }}\n >\n {options.map((option) => {\n const selected = option.value === value;\n\n return (\n <Button\n key={option.value}\n bare\n color=\"secondary\"\n role=\"option\"\n aria-selected={selected}\n icon={selected ? \"check\" : undefined}\n iconPosition=\"right\"\n justify={selected ? \"space-between\" : \"flex-start\"}\n jss={[\n getInteractableListItemJSS({ selected }),\n { width: \"100%\" },\n ]}\n onClick={() => {\n onValueChange(option.value);\n close();\n }}\n >\n {option.label}\n </Button>\n );\n })}\n </Column>\n </Popover>\n )}\n >\n {({ toggle, expanded }) => (\n <Button\n color=\"secondary\"\n disabled={disabled}\n aria-label={label}\n aria-haspopup=\"listbox\"\n aria-expanded={expanded}\n icon=\"chevron-down\"\n iconPosition=\"right\"\n justify=\"space-between\"\n jss={[{ width: \"100%\" }, jssButton]}\n onClick={() => toggle({})}\n >\n {selectedOption?.label ?? \"Select\"}\n </Button>\n )}\n </PopoverTrigger>\n );\n}\n","import React, {\n useContext,\n useCallback,\n ReactNode,\n useMemo,\n useRef,\n} from \"react\";\nimport { Subscribe, createEmitter, Callback } from \"./Emitter\";\n\nexport type Reducer<State, Context> = <Data>({\n state,\n context,\n data,\n}: {\n state: State;\n context: Context;\n data: Data;\n}) => { state: State; context: Context };\n\ntype StateMachineConfig<\n State extends PropertyKey,\n Transition extends PropertyKey,\n Context,\n> = {\n states: Record<\n State,\n { on: Partial<Record<Transition, Reducer<State, Context>>> }\n >;\n context: Context;\n state: State;\n};\n\ntype Send<Transition> = <Data>(transition: Transition, data: Data) => void;\n\ntype StateMachineContextType<State, Transition, Context> = {\n subscribe: Subscribe<{ state: State; context: Context }>;\n send: Send<Transition>;\n};\n\nexport function stateMachineContextFactory<\n State extends PropertyKey,\n Transition extends PropertyKey,\n Context,\n>(\n stateMachineConfig: StateMachineConfig<State, Transition, Context>\n) {\n const StateMachineContext = React.createContext<\n StateMachineContextType<State, Transition, Context>\n >({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n send: () => {\n throw new Error(\"Not implemented\");\n },\n });\n\n type StateMachineState = {\n state: State;\n context: Context;\n };\n\n function Provider({ children }: { children: ReactNode }) {\n const stateMachineRef = useRef<StateMachineState>({\n state: stateMachineConfig.state,\n context: stateMachineConfig.context,\n });\n\n const emitterRef = useRef(\n createEmitter<{ state: State; context: Context }>()\n );\n\n const subscribe = useCallback((callback: Callback<StateMachineState>) => {\n const unsbuscribe = emitterRef.current.subscribe(callback);\n callback(stateMachineRef.current);\n\n return unsbuscribe;\n }, []);\n\n const send = useCallback(\n <Data,>(transition: Transition, data: Data) => {\n const state = stateMachineRef.current.state;\n const transitions = stateMachineConfig.states[state].on;\n const reducer = transitions[transition];\n\n if (!reducer) {\n // No transition available in the current state, so no update needed\n return;\n }\n\n const newState = reducer({\n ...stateMachineRef.current,\n data,\n });\n\n stateMachineRef.current = newState;\n emitterRef.current.emit(newState);\n },\n []\n );\n\n const value = useMemo(() => ({ subscribe, send }), [subscribe, send]);\n\n return (\n <StateMachineContext.Provider value={value}>\n {children}\n </StateMachineContext.Provider>\n );\n }\n\n function useStateMachine() {\n return useContext(StateMachineContext);\n }\n\n return { Provider, useStateMachine };\n}\n","import React from \"react\";\nimport {\n useState,\n useCallback,\n useEffect,\n createContext,\n ReactNode,\n useRef,\n} from \"react\";\nimport { Callback, createEmitter } from \"./Emitter\";\n\nconst VERSION = 1;\n\ntype StoredBlob = {\n blob: Blob;\n key: number;\n};\n\nexport function createStorage<State>({\n initialState,\n name = \"aidos-storage\",\n}: {\n initialState: State;\n name?: string;\n}) {\n const StorageContext = createContext<{\n subscribe: <T>(selector: (state: State) => T) => () => void;\n mutate: (mutator: (state: State) => State) => void;\n persist: () => Promise<void>;\n }>({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n mutate: () => {\n throw new Error(\"Not implemented\");\n },\n persist: () => {\n throw new Error(\"Not implemented\");\n },\n });\n\n const state = { current: initialState };\n\n function Storage({ children }: { children: ReactNode }): React.JSX.Element {\n const emitterRef = useRef(createEmitter<State>());\n\n const subscribe = useCallback((callback: Callback<State>) => {\n return emitterRef.current.subscribe(callback);\n }, []);\n\n const mutate = useCallback((mutator: (state: State) => State) => {\n state.current = mutator(state.current);\n emitterRef.current.emit(state.current);\n }, []);\n\n const persist = useCallback(async () => {\n const s = JSON.stringify(state.current);\n const bytes = new TextEncoder().encode(s);\n const blob = new Blob([bytes], {\n type: \"application/json;charset=utf-8\",\n });\n return saveBlob(blob);\n }, []);\n\n useEffect(() => {\n getBlob().then((blob) => {\n if (blob == null) {\n return;\n }\n\n const fr = new FileReader();\n\n fr.onload = () => {\n const text = fr.result.toString();\n state.current = JSON.parse(text);\n emitterRef.current.emit(state.current);\n };\n\n fr.readAsText(blob);\n });\n }, []);\n\n return (\n <StorageContext.Provider\n value={{\n subscribe,\n mutate,\n persist,\n }}\n >\n {children}\n </StorageContext.Provider>\n );\n }\n\n function useStorage<T>(selector: (state: State) => T): T {\n const [localState, setLocalState] = useState(() => selector(state.current));\n const { subscribe } = React.useContext(StorageContext);\n\n useEffect(() => {\n return subscribe((newState) => {\n const newLocalState = selector(newState);\n setLocalState((prev) => (newLocalState != prev ? newLocalState : prev));\n });\n }, [selector, subscribe]);\n\n return localState;\n }\n\n function useMutation(): (mutator: (state: State) => State) => void {\n const { mutate } = React.useContext(StorageContext);\n return mutate;\n }\n\n function usePersist() {\n const { persist } = React.useContext(StorageContext);\n return persist;\n }\n\n const dbPromise: Promise<IDBDatabase> = new Promise((resolve, reject) => {\n const request = window.indexedDB.open(name, VERSION);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n const table = db.createObjectStore(\"blobs\", {\n keyPath: \"key\",\n });\n table.createIndex(\"key\", \"key\", { unique: true });\n };\n\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n\n const getBlob = async (): Promise<Blob | null> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"]);\n const objectStore = transaction.objectStore(\"blobs\");\n const get: IDBRequest<StoredBlob | undefined> = objectStore.get(1);\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n get.onsuccess = () => {\n const result = get.result;\n\n if (result && result.blob) {\n resolve(result.blob);\n } else {\n resolve(null);\n }\n db.close();\n };\n\n get.onerror = (event) => {\n reject(event);\n };\n });\n };\n\n const saveBlob = async (blob: Blob): Promise<void> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"], \"readwrite\");\n\n transaction.oncomplete = () => {\n db.close();\n resolve();\n };\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n const objectStore = transaction.objectStore(\"blobs\");\n objectStore.put({ blob, key: 1 });\n });\n };\n\n return {\n Storage,\n useStorage,\n useMutation,\n usePersist,\n };\n}\n","import { startTransition, useEffect, useRef, useState } from \"react\";\n\nexport function useStream<Frame>({\n render,\n bufferStart,\n bufferEnd,\n index,\n debounce = 100,\n}: {\n render: (index: number) => Frame;\n bufferStart: number;\n bufferEnd: number;\n index: number;\n debounce?: number;\n}) {\n const [initialFrame] = useState(() => render(index));\n const cache = useRef<Record<number, Frame>>({ [index]: initialFrame });\n const [frame, setFrame] = useState(initialFrame);\n const timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n const subscriptions: number[] = [];\n\n timeout.current = setTimeout(() => {\n for (let i = index - bufferStart; i < index + bufferEnd; i++) {\n subscriptions.push(\n requestIdleCallback(() => {\n if (!(i in cache.current)) {\n cache.current[i] = render(i);\n\n if (i === index) {\n setFrame(cache.current[index]);\n }\n }\n }),\n );\n }\n\n startTransition(() => {\n setFrame(cache.current[index]);\n });\n }, debounce);\n\n return () => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n subscriptions.forEach((handle) => {\n cancelIdleCallback(handle);\n });\n };\n }, [bufferEnd, bufferStart, debounce, index, render]);\n\n return {\n frame,\n };\n}\n","import React, { ReactNode } from \"react\";\nimport { ListButtonItem } from \"./ListButtonItem\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport function Sublist({\n children,\n label,\n labelBold,\n initialState = { collapsed: false },\n jss,\n secondaryAddOn,\n}: {\n children: React.ReactNode;\n label: string;\n labelBold?: boolean;\n initialState?: {\n collapsed: boolean;\n };\n jss?: JSS;\n secondaryAddOn?: ReactNode;\n}) {\n const [collapsed, setCollapsed] = React.useState(initialState.collapsed);\n return (\n <>\n <ListButtonItem\n headline={label}\n headlineBold={labelBold}\n onClick={() => setCollapsed((x) => !x)}\n jss={jss}\n addOn={\n <Row gap=\"medium\" align=\"center\">\n {secondaryAddOn}\n <Box\n padding=\"none\"\n jss={[\n {\n transition: \"transform 0.15s ease-in\",\n },\n !collapsed && {\n transform: \"rotateZ(90deg)\",\n },\n ]}\n >\n <Icon color=\"primary\" size=\"medium\" icon=\"chevron-right\" />\n </Box>\n </Row>\n }\n addOnPosition=\"end\"\n color=\"secondary\"\n />\n {collapsed ? null : children}\n </>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\n\ninterface SubmitIconInputProps extends BaseInputProps {\n icon: IconType;\n type?: \"submit\";\n}\n\nexport function SubmitIconInput({ icon, ...otherProps }: SubmitIconInputProps) {\n return (\n <BaseInput\n label={\n <Box\n jss={{\n cursor: \"pointer\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \":hover\": {\n backgroundColor: \"var(--secondary-background)\",\n opacity: 0.8,\n },\n \":active\": {\n transform: \"scale(0.92)\",\n },\n height: 32,\n width: 32,\n borderRadius: \"50%\",\n }}\n >\n <Icon icon={icon} size=\"medium\" color=\"primary\" />\n </Box>\n }\n {...otherProps}\n type=\"submit\"\n jss={{\n visibility: \"hidden\",\n }}\n value=\"\"\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseButton } from \"./BaseButton\";\nimport { BaseLink } from \"./BaseLink\";\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\nimport type { Tab } from \"./Tabs\";\nimport { Text } from \"./Text\";\nimport { JSS, Padding, Size, TextColor, cssVar, getMaterial } from \"./jss\";\n\nexport type TabBarVariant = \"default\" | \"floating\";\n\nexport interface TabBarProps extends Omit<FlexLayoutProps, \"children\" | \"tag\"> {\n tabs: Tab[];\n variant?: TabBarVariant;\n fixed?: boolean;\n iconSize?: Size;\n labelSize?: Size;\n tabPadding?: Padding;\n jssTab?: JSS | ((data: { selected: boolean }) => JSS);\n labelRenderer?: (label: string) => React.ReactNode;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {},\n default: {\n backgroundColor: cssVar(\"--nav-bar\"),\n },\n floating: [\n getMaterial(\"aurora\"),\n {\n borderRadius: cssVar(\"--border-radius-xl\"),\n boxShadow: cssVar(\"--shadow-md\"),\n overflow: \"hidden\",\n },\n ],\n horizontal: {\n width: \"100%\",\n },\n vertical: {\n width: \"max-content\",\n height: \"100%\",\n },\n horizontalBar: {\n width: \"100%\",\n minHeight: cssVar(\"--nav-bar-height\"),\n },\n verticalBar: {\n minWidth: cssVar(\"--nav-bar-height\"),\n height: \"100%\",\n },\n safeArea: {\n width: \"100%\",\n height: \"env(safe-area-inset-bottom)\",\n flexShrink: 0,\n },\n fixed: {\n position: \"fixed\",\n left: 0,\n bottom: 0,\n zIndex: 1,\n },\n fixedHorizontal: {\n right: 0,\n },\n fixedVertical: {\n top: 0,\n },\n item: {\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n textDecoration: \"none\",\n userSelect: \"none\",\n },\n horizontalItem: {\n flex: 1,\n minWidth: 0,\n },\n floatingItem: {\n \":focus-visible\": {\n outlineOffset: -2,\n },\n },\n floatingHorizontalItem: {\n minWidth: \"auto\",\n },\n verticalItem: {\n width: \"100%\",\n },\n};\n\nexport function TabBar({\n tabs,\n variant = \"default\",\n direction = \"row\",\n fixed = false,\n iconSize = \"large\",\n labelSize = \"small\",\n tabPadding = \"medium\",\n jssTab,\n labelRenderer,\n jss,\n align = \"stretch\",\n \"aria-label\": ariaLabel = \"Primary navigation\",\n ...otherProps\n}: TabBarProps) {\n const horizontal = direction === \"row\";\n\n return (\n <BaseView\n tag=\"nav\"\n aria-label={ariaLabel}\n jss={[\n styles.root,\n styles[variant],\n variant === \"default\" &&\n (horizontal ? styles.horizontal : styles.vertical),\n fixed && styles.fixed,\n fixed && (horizontal ? styles.fixedHorizontal : styles.fixedVertical),\n jss,\n ]}\n >\n <FlexLayout\n {...otherProps}\n direction={direction}\n align={align}\n jss={horizontal ? styles.horizontalBar : styles.verticalBar}\n >\n {tabs.map((tab) => {\n const { label, icon, href, onClick } = tab;\n const selected = tab.selected === true;\n const color: TextColor = selected ? \"highlight\" : \"secondary\";\n const tabJSS: JSS = [\n styles.item,\n horizontal ? styles.horizontalItem : styles.verticalItem,\n variant === \"floating\" && styles.floatingItem,\n variant === \"floating\" &&\n horizontal &&\n styles.floatingHorizontalItem,\n selected && {\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n typeof jssTab === \"function\" ? jssTab({ selected }) : jssTab,\n ];\n const content = (\n <FlexLayout\n direction={horizontal ? \"column\" : \"row\"}\n align=\"center\"\n justify=\"center\"\n gap=\"small\"\n >\n {icon && <Icon icon={icon} size={iconSize} color={color} />}\n <Text size={labelSize} color={color} ellipsis={true}>\n {labelRenderer ? labelRenderer(label) : label}\n </Text>\n </FlexLayout>\n );\n\n if (href != null) {\n return (\n <BaseLink\n key={label}\n href={href}\n onClick={onClick}\n aria-current={selected ? \"page\" : undefined}\n bare={true}\n color={selected ? \"primary\" : \"secondary\"}\n padding={tabPadding}\n jss={tabJSS}\n >\n {content}\n </BaseLink>\n );\n }\n\n return (\n <BaseButton\n key={label}\n onClick={() => onClick?.()}\n aria-current={selected ? \"page\" : undefined}\n bare={true}\n color={selected ? \"primary\" : \"secondary\"}\n padding={tabPadding}\n jss={tabJSS}\n >\n {content}\n </BaseButton>\n );\n })}\n </FlexLayout>\n {horizontal && <BaseView aria-hidden={true} jss={styles.safeArea} />}\n </BaseView>\n );\n}\n","import React from \"react\";\n\nimport { Card, type CardProps } from \"./Card\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nexport interface TableProps\n extends\n Omit<React.TableHTMLAttributes<HTMLTableElement>, \"className\">,\n Pick<CardProps, \"variant\" | \"material\" | \"padding\" | \"gap\"> {\n jss?: JSS;\n jssTable?: JSS;\n className?: undefined;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n overflowX: \"auto\",\n overflowY: \"hidden\",\n \" thead\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n },\n \" th\": {\n padding: \"10px 12px\",\n color: cssVar(\"--secondary-text\"),\n fontSize: 12,\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.4,\n textAlign: \"left\",\n },\n \" td\": {\n padding: \"11px 12px\",\n color: cssVar(\"--secondary-text\"),\n lineHeight: 1.45,\n },\n \" tbody tr\": {\n transition: `background-color ${cssVar(\"--transition-fast\")}`,\n },\n \" tbody tr:hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \" tbody tr:not(:last-child) td\": {\n borderBottom: `1px solid ${cssVar(\"--divider\")}`,\n },\n },\n table: {\n width: \"100%\",\n minWidth: 560,\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: 14,\n },\n};\n\nexport function Table({\n children,\n jss,\n jssTable,\n variant = \"default\",\n material,\n padding = \"none\",\n gap = \"none\",\n ...tableProps\n}: TableProps) {\n return (\n <Card\n variant={variant}\n material={material}\n padding={padding}\n gap={gap}\n jss={[styles.root, jss]}\n >\n <table {...tableProps} className={toClassnames([styles.table, jssTable])}>\n {children}\n </table>\n </Card>\n );\n}\n","import { BaseLink } from \"./BaseLink\";\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\nimport { useNavigation } from \"./useNavigation\";\nimport { Text } from \"./Text\";\nimport { ReactNode } from \"react\";\nimport { BaseButton } from \"./BaseButton\";\nimport { Icon } from \"./Icon\";\nimport type { IconType } from \"./IconType\";\n\nexport type TabsVariant = \"underline\" | \"segmented\";\n\nexport type Tab = {\n label: string;\n icon?: IconType;\n href?: string;\n onClick?: () => void;\n selected?: boolean;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n};\n\nexport interface TabsProps extends RowProps {\n [\"aria-controls\"]: string;\n tabs: Array<Tab>;\n variant?: TabsVariant;\n labelSize?: Size;\n iconSize?: Size;\n bare?: boolean;\n tabPadding?: Padding;\n jssTab?: JSS | ((data: { selected: boolean }) => JSS);\n labelRenderer?: (label: string) => ReactNode;\n}\n\nexport function Tabs({\n tabs,\n variant = \"underline\",\n gap = \"none\",\n padding = \"none\",\n tabPadding = \"medium\",\n labelSize = \"large\",\n iconSize = \"medium\",\n jss,\n jssTab,\n labelRenderer,\n [\"aria-controls\"]: ariaControls,\n ...otherProps\n}: TabsProps) {\n const root = useNavigation();\n\n return (\n <Row\n role=\"tablist\"\n jss={[\n variant === \"segmented\" && {\n backgroundColor: cssVar(\"--hovered-background\"),\n borderRadius: cssVar(\"--border-radius-l\"),\n maxWidth: \"100%\",\n padding: cssVar(\"--spacing-xs\"),\n width: \"fit-content\",\n },\n jss,\n ]}\n gap={gap}\n padding={padding}\n ref={root}\n {...otherProps}\n >\n {tabs.map(\n ({\n label,\n icon,\n href,\n onClick,\n selected,\n addOn,\n addOnPosition = \"start\",\n }) => {\n const BaseComponent = href != null ? BaseLink : BaseButton;\n\n return (\n <BaseComponent\n aria-controls={ariaControls}\n role=\"tab\"\n aria-selected={selected ? \"true\" : undefined}\n key={label}\n bare\n color={selected ? \"primary\" : \"secondary\"}\n href={href}\n onClick={onClick}\n animateInteraction={false}\n jss={[\n {\n alignItems: \"center\",\n gap: cssVar(\"--spacing-s\"),\n textDecoration: \"none\",\n },\n variant === \"underline\" && {\n borderBottom: selected\n ? `3px solid ${cssVar(\"--highlight\")}`\n : `3px solid transparent`,\n \":active span\": {\n transform: \"scale(0.97)\",\n },\n \":first-child\": {\n borderTopLeftRadius: cssVar(\"--border-radius-m\"),\n },\n \":last-child\": {\n borderTopRightRadius: cssVar(\"--border-radius-m\"),\n },\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n variant === \"segmented\" && {\n position: \"relative\",\n borderRadius: cssVar(\"--border-radius-m\"),\n backgroundColor: selected\n ? cssVar(\"--overlay-background\")\n : \"transparent\",\n boxShadow: selected ? cssVar(\"--shadow-sm\") : \"none\",\n transition: `background-color ${cssVar(\"--transition-fast\")}, box-shadow ${cssVar(\"--transition-fast\")}`,\n \":hover\": {\n backgroundColor: selected\n ? cssVar(\"--overlay-background\")\n : cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n top: 1,\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n getPadding(tabPadding),\n typeof jssTab === \"function\" ? jssTab({ selected }) : jssTab,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n {icon && (\n <Icon\n icon={icon}\n size={iconSize}\n color={selected ? \"primary\" : \"secondary\"}\n />\n )}\n <Text size={labelSize} color={selected ? \"primary\" : \"secondary\"}>\n {labelRenderer ? labelRenderer(label) : label}\n </Text>\n {addOnPosition === \"end\" && addOn}\n </BaseComponent>\n );\n },\n )}\n </Row>\n );\n}\n","import React from \"react\";\nimport { JSS, Padding, cssVar, getPadding, toClassnames } from \"./jss\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n jss?: JSS;\n onValueChange?: (value: string) => void;\n value?: string;\n className?: undefined;\n size?: undefined;\n padding?: Padding;\n onChange?: undefined;\n}\n\nexport const TextArea = React.forwardRef(function TextArea(\n {\n jss,\n onValueChange,\n value,\n padding = \"medium\",\n ...otherProps\n }: TextAreaProps,\n ref?: React.Ref<HTMLTextAreaElement>,\n) {\n return (\n <textarea\n {...otherProps}\n ref={ref}\n className={toClassnames([\n {\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n backgroundColor: cssVar(\"--overlay-background\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":focus-visible\": {\n outline: `2px solid ${cssVar(\"--highlight\")}`,\n outlineOffset: -2,\n },\n },\n getPadding(padding),\n jss,\n ])}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n />\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Column } from \"./Column\";\nimport { InputFrame } from \"./InputFrame\";\nimport { Gap, JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\nimport { getTypography } from \"./typography\";\n\nexport interface TextInputProps extends Omit<BaseInputProps, \"size\"> {\n onValueChange?: (value: string) => void;\n jssRoot?: JSS;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n gap?: Gap;\n onChange?: undefined;\n padding?: Padding;\n size?: Size;\n}\n\nexport const TextInput = React.forwardRef(function TextInput(\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n addOn,\n gap = \"none\",\n addOnPosition = \"start\",\n padding = \"medium\",\n size = \"medium\",\n ...inputProps\n }: TextInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <InputFrame gap={gap} jss={jssRoot}>\n {addOnPosition === \"start\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingRight: 0 }]}\n >\n {addOn}\n </Column>\n )}\n <BaseInput\n {...inputProps}\n ref={ref}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n jss={[\n {\n minWidth: 0,\n flexGrow: 1,\n backgroundColor: \"transparent\",\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n border: \"none\",\n ...getTypography(size),\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n cursor: \"not-allowed\",\n },\n \"[aria-invalid=true]\": {\n color: cssVar(\"--negative-text\"),\n },\n },\n getPadding(padding),\n addOn && addOnPosition === \"start\" ? { paddingLeft: 0 } : null,\n addOn && addOnPosition === \"end\" ? { paddingRight: 0 } : null,\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingLeft: 0 }]}\n >\n {addOn}\n </Column>\n )}\n </InputFrame>\n );\n});\n","import React, { useCallback } from \"react\";\n\nimport { TextInput } from \"./TextInput\";\nimport { BaseInputProps } from \"./BaseInput\";\nimport { useState } from \"react\";\n\nfunction getInitialValue(valueRef: React.MutableRefObject<string>) {\n return valueRef.current;\n}\n\nexport interface TextInputWithStateProps extends BaseInputProps {\n onValueChange?: (value: string) => void;\n valueRef: React.MutableRefObject<string>;\n onChange?: undefined;\n}\n\nexport function TextInputWithState({\n valueRef,\n onValueChange: externalOnChange,\n ...otherProps\n}: TextInputWithStateProps) {\n const [value, setValue] = useState(() => getInitialValue(valueRef));\n\n const onValueChange = useCallback(\n (value) => {\n valueRef.current = value;\n setValue(value);\n externalOnChange?.(value);\n },\n [externalOnChange, valueRef],\n );\n\n return (\n <TextInput {...otherProps} value={value} onValueChange={onValueChange} />\n );\n}\n","import React, { useId, useRef, useState } from \"react\";\n\nimport { Column } from \"./Column\";\nimport { Icon } from \"./Icon\";\nimport { InputFrame } from \"./InputFrame\";\nimport { NumericInputSegment } from \"./NumericInputSegment\";\nimport { Row } from \"./Row\";\nimport { Label, Span } from \"./Text\";\nimport { JSS } from \"./jss\";\nimport { formatTimeInputValue } from \"./dateInputValue\";\n\ntype TimePart = \"hour\" | \"minute\";\ntype TimeSegments = Record<TimePart, string>;\n\nexport const timeFormatter = Intl.DateTimeFormat(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hourCycle: \"h23\",\n});\n\nexport interface TimeInputProps {\n time: Date | null;\n onTimeChange: (time: Date | null) => void;\n label?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n jss?: JSS;\n}\n\nfunction getSegments(time: Date | null): TimeSegments {\n if (time == null) return { hour: \"\", minute: \"\" };\n return {\n hour: String(time.getHours()).padStart(2, \"0\"),\n minute: String(time.getMinutes()).padStart(2, \"0\"),\n };\n}\n\nfunction parseSegments(segments: TimeSegments, base: Date | null): Date | null {\n if (segments.hour.length !== 2 || segments.minute.length !== 2) return null;\n\n const hour = Number(segments.hour);\n const minute = Number(segments.minute);\n if (hour > 23 || minute > 59) return null;\n\n const date = base ?? new Date();\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hour,\n minute,\n );\n}\n\nexport const TimeInput = React.forwardRef(function TimeInput(\n {\n time,\n onTimeChange,\n label,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n id: providedId,\n name,\n disabled = false,\n required = false,\n readOnly = false,\n autoFocus = false,\n jss,\n }: TimeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const labelId = `${id}-label`;\n const timeTimestamp = time?.getTime() ?? null;\n const [segments, setSegments] = useState(() => getSegments(time));\n const [draftInvalid, setDraftInvalid] = useState(false);\n const [syncedTimeTimestamp, setSyncedTimeTimestamp] = useState(timeTimestamp);\n const inputRefs = useRef<Partial<Record<TimePart, HTMLInputElement>>>({});\n\n if (timeTimestamp !== syncedTimeTimestamp) {\n setSyncedTimeTimestamp(timeTimestamp);\n setSegments(getSegments(time));\n setDraftInvalid(false);\n }\n\n const updateSegment = (part: TimePart, value: string) => {\n const next = { ...segments, [part]: value };\n setSegments(next);\n\n if (next.hour === \"\" && next.minute === \"\") {\n setDraftInvalid(false);\n onTimeChange(null);\n return;\n }\n\n const complete = next.hour.length === 2 && next.minute.length === 2;\n const parsed = parseSegments(next, time);\n setDraftInvalid(complete && parsed == null);\n if (parsed != null) onTimeChange(parsed);\n };\n\n const field = (\n <InputFrame\n align=\"center\"\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : (ariaLabel ?? \"Time\")}\n aria-describedby={ariaDescribedBy}\n jss={jss}\n >\n <Row align=\"center\" padding={[\"none\", \"medium\"]} grow>\n <NumericInputSegment\n id={id}\n ref={(element) => {\n inputRefs.current.hour = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n }}\n value={segments.hour}\n label=\"hour\"\n placeholder=\"HH\"\n length={2}\n width=\"4ch\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(\"hour\", value)}\n onComplete={() => inputRefs.current.minute?.focus()}\n onNext={() => inputRefs.current.minute?.focus()}\n />\n <Span color=\"secondary\">:</Span>\n <NumericInputSegment\n id={`${id}-minute`}\n ref={(element) => {\n inputRefs.current.minute = element;\n }}\n value={segments.minute}\n label=\"minute\"\n placeholder=\"MM\"\n length={2}\n width=\"4ch\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(\"minute\", value)}\n onPrevious={() => inputRefs.current.hour?.focus()}\n />\n </Row>\n <Column justify=\"center\" padding={[\"none\", \"medium\"]}>\n <Icon icon=\"clock\" color=\"secondary\" size=\"medium\" />\n </Column>\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={time == null ? \"\" : formatTimeInputValue(time)}\n />\n )}\n </InputFrame>\n );\n\n if (label == null) return field;\n\n return (\n <Column gap=\"small\">\n <Label id={labelId} htmlFor={id}>\n {label}\n </Label>\n {field}\n </Column>\n );\n});\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { Text } from \"./Text\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n tooltip: {\n top: \"auto\",\n right: \"auto\",\n bottom: `calc(100% + ${cssVar(\"--spacing-s\")})`,\n left: \"50%\",\n margin: 0,\n translate: \"-50% 0\",\n transformOrigin: \"bottom center\",\n backgroundColor: cssVar(\"--primary-background\"),\n padding: `${cssVar(\"--spacing-s\")} ${cssVar(\"--spacing-m\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n boxShadow: cssVar(\"--shadow-md\"),\n overflow: \"hidden\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n};\n\ninterface TooltipProps {\n content: string;\n jss?: JSS;\n className?: undefined;\n tag?: keyof HTMLElementTagNameMap;\n children: React.JSX.Element;\n}\n\nexport function Tooltip({ content, jss, tag, children }: TooltipProps) {\n const [tooltip, setTooltip] = useState<React.JSX.Element>(null);\n const dialogRef = useRef(null);\n const focusTrapRoot = useRefEffect(\n useCallback((root: HTMLDialogElement) => {\n dialogRef.current = root;\n\n const keydown = (e) => {\n if (e.key === \"Escape\") {\n dialogRef.current?.close();\n } else if (e.key === \"Tab\") {\n dialogRef.current?.close();\n }\n };\n\n const click = () => {\n dialogRef.current?.close();\n };\n\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n\n const activeElement = document.activeElement;\n root.show();\n if (activeElement instanceof HTMLElement) {\n activeElement.focus();\n }\n\n return () => {\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n }, []),\n );\n\n const toggle = () => {\n if (tooltip == null) {\n setTooltip(\n <dialog\n role=\"tooltip\"\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n focusTrapRoot(ref);\n }}\n className={toClassnames(styles.tooltip)}\n onClose={() => {\n setTooltip(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Text size=\"medium\" color=\"secondary\">\n {content}\n </Text>\n </dialog>,\n );\n } else {\n setTooltip(null);\n }\n };\n\n return (\n <BaseView\n tag={tag}\n relative={true}\n jss={[{ display: \"inline-block\" }, jss]}\n onMouseEnter={() => {\n if (tooltip == null) {\n toggle();\n }\n }}\n onMouseLeave={() => {\n if (tooltip != null) {\n toggle();\n }\n }}\n >\n {children}\n {tooltip}\n </BaseView>\n );\n}\n","import { useCallback } from \"react\";\nimport { useRefEffect } from \"./useRefEffect\";\n\nexport type KeyboardShortcut<T> = {\n key: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n action: (root: T) => void;\n onlyWhenFocused?: boolean;\n};\n\nexport function useKeyboard<T extends HTMLElement>(\n shortcuts: Array<KeyboardShortcut<T>>,\n) {\n return useRefEffect<T>(\n useCallback(\n (root: T) => {\n const onKeyDown = (e: KeyboardEvent) => {\n for (const {\n metaKey,\n key,\n action,\n ctrlKey,\n onlyWhenFocused,\n } of shortcuts) {\n if (metaKey && e.metaKey !== true) {\n continue;\n } else if (ctrlKey && e.ctrlKey !== true) {\n continue;\n } else if (onlyWhenFocused && document.activeElement !== root) {\n continue;\n }\n\n if (e.key.toLowerCase() === key.toLowerCase()) {\n action(root);\n }\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n },\n [shortcuts],\n ),\n );\n}\n","import { useState, useEffect, useRef } from \"react\";\n\nexport function usePromise<T>(\n promiseFactory: () => Promise<T>,\n inputs: ReadonlyArray<unknown>,\n initialValue: T\n): [T | null, unknown] {\n const [value, setValue] = useState(initialValue);\n const [error, setError] = useState<unknown>(null);\n const previousInputs = useRef<ReadonlyArray<unknown> | null>(null);\n\n useEffect(() => {\n if (\n previousInputs.current != null &&\n previousInputs.current.length === inputs.length &&\n previousInputs.current.every((input, index) => input === inputs[index])\n ) {\n return;\n }\n\n previousInputs.current = inputs;\n let cancelled = false;\n promiseFactory()\n .then((value) => {\n if (!cancelled) setValue(value);\n })\n .catch((error: unknown) => {\n if (!cancelled) setError(error);\n });\n\n return () => {\n cancelled = true;\n };\n });\n\n return [value, error];\n}\n"]}
1
+ {"version":3,"sources":["../src/hash.ts","../src/isServer.ts","../src/jss.tsx","../src/BaseView.tsx","../src/Icon.tsx","../src/typography.ts","../src/Text.tsx","../src/Avatar.tsx","../src/FlexLayout.tsx","../src/Row.tsx","../src/AvatarStack.tsx","../src/Badge.tsx","../src/Interactable.tsx","../src/BaseButton.tsx","../src/BaseInput.tsx","../src/BaseLink.tsx","../src/Column.tsx","../src/BaseList.tsx","../src/BaseListAddOn.tsx","../src/TextPairing.tsx","../src/BaseListItem.tsx","../src/Box.tsx","../src/Button.tsx","../src/aria.ts","../src/useRefEffect.tsx","../src/useNavigation.tsx","../src/ButtonGroup.tsx","../src/Calendar.tsx","../src/Card.tsx","../src/StaticCheckbox.tsx","../src/Checkbox.tsx","../src/Circle.tsx","../src/IconButton.tsx","../src/Toggle.tsx","../src/DarkMode.tsx","../src/InputFrame.tsx","../src/NumericInputSegment.tsx","../src/Popover.tsx","../src/dateInputValue.ts","../src/DateInput.tsx","../src/DatetimeInput.tsx","../src/ListDivider.tsx","../src/Dialog.tsx","../src/Emitter.ts","../src/guid.ts","../src/IconLink.tsx","../src/Link.tsx","../src/List.tsx","../src/ListButtonItem.tsx","../src/ListHeaderItem.tsx","../src/ListItem.tsx","../src/ListLinkItem.tsx","../src/ListSpacer.tsx","../src/MenuIcon.tsx","../src/NavigationSplitView.tsx","../src/numberToBase.ts","../src/OnVisible.tsx","../src/ProgressBar.tsx","../src/ProgressCircle.tsx","../src/useCookie.tsx","../src/Providers.tsx","../src/RangeInput.tsx","../src/StackContext.tsx","../src/RootView.tsx","../src/Select.tsx","../src/stateMachineContextFactory.tsx","../src/Storage.tsx","../src/Stream.tsx","../src/Sublist.tsx","../src/SubmitIconInput.tsx","../src/TabBar.tsx","../src/Table.tsx","../src/Tabs.tsx","../src/TextArea.tsx","../src/TextInput.tsx","../src/TextInputWithState.tsx","../src/TimeInput.tsx","../src/Toolbar.tsx","../src/Tooltip.tsx","../src/useKeyboard.tsx","../src/usePromise.tsx"],"names":["hash","styles","key","value","cssValue","React","BaseView","jsx","IconifyIcon","Avatar","useState","jsxs","FlexLayout","Row","AvatarStack","sizes","BaseButton","BaseInput","Fragment","BaseLink","Link","Column","BaseList","BaseListAddOn","BaseListItem","Button","element","useCallback","elements","Calendar","IconButton","useContext","InputFrame","NumericInputSegment","useRef","useEffect","useMemo","useId","dateFormatter","DateInput","DatetimeInput","IconLink","ListButtonItem","ListItem","ListLinkItem","RangeInput","TextArea","TextInput","getSegments","parseSegments","TimeInput","Toolbar","error"],"mappings":"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","file":"index.js","sourcesContent":["export function hash(source: string, modulus?: number): number {\n let hash = 0;\n let i: number;\n let chr: number;\n\n if (source.length === 0) {\n return hash;\n }\n\n for (i = 0; i < source.length; i++) {\n chr = source.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n if (modulus) {\n return Math.abs(hash) % modulus;\n } else {\n return Math.abs(hash);\n }\n}\n","export function isServer() {\n return typeof window === \"undefined\" || window.document == null;\n}\n","import CSS from \"csstype\";\nimport React, { useState } from \"react\";\n\nimport { hash } from \"./hash\";\nimport { isServer } from \"./isServer\";\n\ntype StylesValueType = string | number | CSS.Properties<string | number>;\n\nexport type Styles = CSS.Properties<\n string | number | CSS.Properties<string | number>\n>;\n\nexport type JSS =\n Styles | null | false | undefined | { [key: string]: Styles } | Array<JSS>;\n\nconst aliases: {\n [alias: string]: (value: StylesValueType) => [string, StylesValueType][];\n} = {\n margin: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n if (matches) {\n return [\n [\"margin-top\", matches[1]],\n [\"margin-bottom\", matches[1]],\n [\"margin-left\", matches[2]],\n [\"margin-right\", matches[2]],\n ];\n } else {\n return [\n [\"margin-top\", value],\n [\"margin-bottom\", value],\n [\"margin-left\", value],\n [\"margin-right\", value],\n ];\n }\n },\n padding: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n\n if (matches) {\n return [\n [\"padding-top\", matches[1]],\n [\"padding-bottom\", matches[1]],\n [\"padding-left\", matches[2]],\n [\"padding-right\", matches[2]],\n ];\n } else {\n return [\n [\"padding-top\", value],\n [\"padding-bottom\", value],\n [\"padding-left\", value],\n [\"padding-right\", value],\n ];\n }\n },\n};\n\nconst rawHashMap = new Map<string, { selector: string; key: string }>();\n\nfunction createStyleNode(content: string) {\n if (isServer()) {\n serverStyles.push(content);\n } else {\n const style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(content));\n document.head.appendChild(style);\n }\n}\n\nconst pixelStyles = new Set([\n \"min-height\",\n \"height\",\n \"max-height\",\n \"min-width\",\n \"width\",\n \"max-width\",\n \"margin\",\n \"margin-top\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"padding\",\n \"padding-top\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\",\n \"border-radius\",\n \"font-size\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"outline-offset\",\n \"gap\",\n \"row-gap\",\n \"column-gap\",\n]);\n\nconst toPixelValue = (key: string, value): string => {\n const stringValue = value.toString();\n const unitlessNumber = /^-?(?:\\d+|\\d*\\.\\d+)$/.test(stringValue.trim());\n\n return pixelStyles.has(key) && unitlessNumber\n ? `${stringValue}px`\n : stringValue;\n};\n\nconst getCSS = (key: string, value): [string, string] => {\n const cssProp = key.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n const cssValue = toPixelValue(cssProp, value);\n return [cssProp, cssValue];\n};\n\nconst flattenJSS = (jss: JSS): Styles => {\n if (!jss) {\n return {};\n } else if (Array.isArray(jss)) {\n const result: Styles = {};\n for (const item of jss) {\n const styles = flattenJSS(item);\n for (const [key, value] of Object.entries(styles)) {\n const current = result[key];\n if (\n typeof current === \"object\" &&\n current != null &&\n typeof value === \"object\" &&\n value != null\n ) {\n result[key] = { ...current, ...value };\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n } else {\n return jss;\n }\n};\n\nexport const toClassnames = (jss: JSS, componentName?: string): string => {\n jss = flattenJSS(jss);\n\n const stylesStack = Object.entries(jss);\n const classNames: string[] = [];\n\n if (componentName) {\n classNames.push(componentName);\n }\n\n while (stylesStack.length) {\n const [key, value] = stylesStack.pop();\n\n if (aliases[key]) {\n stylesStack.push(...aliases[key](value));\n continue;\n }\n\n const inputKey =\n (key.startsWith(\"@media\") ? \"specific:\" : \"\") +\n key +\n JSON.stringify(value);\n const rawHash = hash(inputKey).toString(32);\n const cached = rawHashMap.get(rawHash);\n\n if (cached != null) {\n if (cached.key !== inputKey) {\n console.warn(\n `[jss] Hash collision detected: \"${inputKey}\" collides with \"${cached.key}\"`,\n );\n }\n classNames.push(cached.selector);\n continue;\n }\n\n const selector = `x${rawHash}`;\n rawHashMap.set(rawHash, { selector, key: inputKey });\n classNames.push(selector);\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n const [cssProp, cssValue] = getCSS(key, value);\n createStyleNode(`.${selector} { ${cssProp}: ${cssValue}; }`);\n } else if (typeof value === \"object\" && key.startsWith(\"@media\")) {\n const media = key;\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`${media} { .${selector}.${selector} { ${cssValue} } }`);\n } else if (typeof value === \"object\" && value != null) {\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`.${selector}${key} { ${cssValue} }`);\n }\n }\n\n return classNames.join(\" \");\n};\n\nconst serverStyles = [];\n\nexport function JSSProvider({\n themes,\n children,\n}: {\n themes: { dark: Theme; light: Theme };\n children: React.JSX.Element;\n}) {\n const [styles] = useState(() => getBaseStyles(themes));\n\n return (\n <>\n {styles.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n {children}\n </>\n );\n}\n\nexport function JSServerStyles() {\n const [styles] = useState(() => serverStyles);\n\n return (\n <>\n {styles.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n </>\n );\n}\n\nexport type Size =\n \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\" | \"xxlarge\" | \"xxxlarge\";\n\nexport type Spacing = \"none\" | Size;\n\nexport type Gap = Spacing;\n\nexport type Padding = Spacing | [Spacing, Spacing];\n\nexport type Margin = Spacing | [Spacing, Spacing];\n\nexport type Material = \"aurora\" | \"dawn\" | \"mist\" | \"twilight\";\n\nexport type Surface = \"primary\" | \"secondary\" | \"overlay\";\n\nexport type Direction = \"horizontal\" | \"vertical\";\n\nexport type Position = \"start\" | \"end\";\n\nexport type Justify =\n \"none\" | \"center\" | \"flex-start\" | \"space-between\" | \"flex-end\" | \"stretch\";\n\nexport type Align = \"none\" | \"center\" | \"stretch\" | \"flex-start\" | \"flex-end\";\n\nexport type FlexDirection = \"row\" | \"column\";\n\nexport type Color =\n | \"none\"\n | \"light\"\n | \"dark\"\n | \"negative\"\n | \"warning\"\n | \"highlight\"\n | \"primary-background\"\n | \"secondary-background\"\n | \"divider\"\n | \"inherit\";\n\nexport type TextColor =\n | \"primary\"\n | \"secondary\"\n | \"highlight\"\n | \"warning\"\n | \"negative\"\n | \"subtle\"\n | \"light\"\n | \"inverse\"\n | \"inherit\";\n\nexport function cssVar(string: keyof Theme): string {\n return `var(${string})`;\n}\n\nexport function getMaterial(material: Material): Styles {\n switch (material) {\n case \"aurora\":\n return {\n background: cssVar(\"--material-aurora\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n case \"dawn\":\n return {\n background: cssVar(\"--material-dawn\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n case \"mist\":\n return {\n background: cssVar(\"--material-mist\"),\n backdropFilter: \"blur(24px) saturate(90%)\",\n };\n case \"twilight\":\n return {\n background: cssVar(\"--material-twilight\"),\n backdropFilter: \"blur(20px) saturate(115%)\",\n };\n }\n}\n\nexport function getSurface(surface: Surface): Styles {\n return {\n backgroundColor:\n surface === \"primary\"\n ? cssVar(\"--primary-background\")\n : surface === \"secondary\"\n ? cssVar(\"--secondary-background\")\n : cssVar(\"--overlay-background\"),\n };\n}\n\nconst sizes: { [size in Size]: string } = {\n xsmall: cssVar(\"--spacing-xs\"),\n small: cssVar(\"--spacing-s\"),\n medium: cssVar(\"--spacing-m\"),\n large: cssVar(\"--spacing-l\"),\n xlarge: cssVar(\"--spacing-xl\"),\n xxlarge: cssVar(\"--spacing-xxl\"),\n xxxlarge: cssVar(\"--spacing-xxxl\"),\n};\n\nexport function getSize(size: Size): string {\n return sizes[size];\n}\n\nexport function getSpacing(spacing: Spacing): string {\n if (spacing === \"none\") {\n return \"0px\";\n } else {\n return getSize(spacing);\n }\n}\n\nexport function getPadding(padding: Padding): JSS {\n if (Array.isArray(padding)) {\n const [vertical, horizontal] = padding;\n return {\n paddingTop: getSpacing(vertical),\n paddingBottom: getSpacing(vertical),\n paddingLeft: getSpacing(horizontal),\n paddingRight: getSpacing(horizontal),\n };\n } else {\n return {\n padding: getSpacing(padding),\n };\n }\n}\n\nexport function getMargin(margin: Margin): JSS {\n if (Array.isArray(margin)) {\n const [vertical, horizontal] = margin;\n return {\n marginTop: getSpacing(vertical),\n marginBottom: getSpacing(vertical),\n marginLeft: getSpacing(horizontal),\n marginRight: getSpacing(horizontal),\n };\n } else {\n return {\n margin: getSpacing(margin),\n };\n }\n}\n\nexport type Theme = {\n /* Background */\n [\"--overlay-background\"]: string;\n [\"--primary-background\"]: string;\n [\"--secondary-background\"]: string;\n [\"--divider\"]: string;\n [\"--strong-divider\"]: string;\n [\"--pressed-background\"]: string;\n [\"--hovered-background\"]: string;\n [\"--selected-background\"]: string;\n [\"--nav-bar\"]: string;\n [\"--material-aurora\"]: string;\n [\"--material-dawn\"]: string;\n [\"--material-mist\"]: string;\n [\"--material-twilight\"]: string;\n /* Effects */\n [\"--warning\"]: string;\n [\"--highlight\"]: string;\n [\"--outline\"]: string;\n [\"--light-highlight\"]: string;\n [\"--light-highlight-hovered\"]: string;\n [\"--light-highlight-pressed\"]: string;\n /* Text */\n [\"--primary-text\"]: string;\n [\"--secondary-text\"]: string;\n [\"--subtle-text\"]: string;\n [\"--highlight-text\"]: string;\n [\"--negative-text\"]: string;\n [\"--light-text\"]: string;\n [\"--inverse-text\"]: string;\n\n [\"--font-xsmall\"]: string;\n [\"--font-small\"]: string;\n [\"--font-medium\"]: string;\n [\"--font-large\"]: string;\n [\"--font-xlarge\"]: string;\n [\"--font-xxlarge\"]: string;\n [\"--font-xxxlarge\"]: string;\n\n /* Buttons */\n [\"--background-button-primary\"]: string;\n [\"--background-button-secondary\"]: string;\n [\"--background-button-negative\"]: string;\n [\"--background-button-inverse\"]: string;\n [\"--background-button-disabled\"]: string;\n /* Spacing */\n [\"--spacing-xs\"]: string;\n [\"--spacing-s\"]: string;\n [\"--spacing-m\"]: string;\n [\"--spacing-l\"]: string;\n [\"--spacing-xl\"]: string;\n [\"--spacing-xxl\"]: string;\n [\"--spacing-xxxl\"]: string;\n [\"--border-radius-s\"]: string;\n [\"--border-radius-m\"]: string;\n [\"--border-radius-l\"]: string;\n [\"--border-radius-xl\"]: string;\n [\"--nav-bar-height\"]: string;\n /* Shadows */\n [\"--shadow-sm\"]: string;\n [\"--shadow-md\"]: string;\n [\"--shadow-lg\"]: string;\n /* Transitions */\n [\"--transition-fast\"]: string;\n [\"--transition-normal\"]: string;\n};\n\nexport const lightTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(255, 255, 255)\",\n [\"--primary-background\"]: \"rgb(247, 248, 251)\",\n [\"--secondary-background\"]: \"rgb(240, 242, 246)\",\n [\"--divider\"]: \"rgb(216, 219, 226)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(224, 227, 234)\",\n [\"--hovered-background\"]: \"rgb(235, 238, 244)\",\n [\"--selected-background\"]: \"rgb(228, 232, 240)\",\n [\"--nav-bar\"]: \"rgb(242, 244, 248)\",\n [\"--material-aurora\"]:\n \"radial-gradient(120% 90% at 0% 10%, rgba(66, 184, 131, 0.04), transparent 58%), radial-gradient(110% 100% at 100% 90%, rgba(70, 132, 255, 0.055), transparent 62%), linear-gradient(145deg, rgba(248, 249, 252, 0.96), rgba(236, 240, 245, 0.92))\",\n [\"--material-dawn\"]:\n \"radial-gradient(110% 90% at 10% 100%, rgba(255, 162, 105, 0.13), transparent 60%), radial-gradient(100% 85% at 90% 0%, rgba(120, 166, 255, 0.09), transparent 60%), linear-gradient(145deg, rgba(252, 248, 246, 0.96), rgba(244, 238, 242, 0.92))\",\n [\"--material-mist\"]:\n \"radial-gradient(120% 100% at 50% 0%, rgba(255, 255, 255, 0.55), transparent 65%), linear-gradient(145deg, rgba(247, 248, 250, 0.82), rgba(235, 237, 241, 0.78))\",\n [\"--material-twilight\"]:\n \"radial-gradient(115% 95% at 0% 10%, rgba(103, 91, 214, 0.1), transparent 60%), radial-gradient(110% 90% at 100% 100%, rgba(196, 105, 151, 0.07), transparent 62%), linear-gradient(145deg, rgba(243, 242, 249, 0.97), rgba(229, 231, 241, 0.93))\",\n /* Effects */\n [\"--warning\"]: \"rgb(166, 107, 0)\",\n [\"--highlight\"]: \"rgb(0, 122, 255)\",\n [\"--outline\"]: \"rgb(103, 176, 255)\",\n [\"--light-highlight\"]: \"rgb(220, 232, 245)\",\n [\"--light-highlight-hovered\"]: \"rgb(209, 226, 244)\",\n [\"--light-highlight-pressed\"]: \"rgb(197, 218, 240)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(0, 0, 0)\",\n [\"--secondary-text\"]: \"rgb(100, 100, 100)\",\n [\"--subtle-text\"]: \"rgb(180, 180, 180)\",\n [\"--highlight-text\"]: \"rgb(0, 122, 255)\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--inverse-text\"]: \"rgb(255, 255, 255)\",\n [\"--font-xsmall\"]: \"10px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"28px\",\n [\"--font-xxxlarge\"]: \"36px\",\n /* Buttons */\n [\"--background-button-primary\"]: \"rgb(0, 122, 255)\",\n [\"--background-button-secondary\"]: \"rgb(218, 218, 223)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-inverse\"]: \"rgb(0, 0, 0)\",\n [\"--background-button-disabled\"]: \"rgb(218, 218, 223)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"4px\",\n [\"--border-radius-m\"]: \"8px\",\n [\"--border-radius-l\"]: \"12px\",\n [\"--border-radius-xl\"]: \"16px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows */\n [\"--shadow-sm\"]:\n \"0 1px 2px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1)\",\n [\"--shadow-md\"]:\n \"0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05)\",\n [\"--shadow-lg\"]:\n \"0 10px 25px rgba(0, 0, 0, 0.15), 0 4px 10px rgba(0, 0, 0, 0.1)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const darkTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(42, 45, 52)\",\n [\"--primary-background\"]: \"rgb(34, 36, 42)\",\n [\"--secondary-background\"]: \"rgb(47, 50, 58)\",\n [\"--divider\"]: \"rgb(61, 65, 75)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(70, 75, 86)\",\n [\"--hovered-background\"]: \"rgb(48, 52, 61)\",\n [\"--selected-background\"]: \"rgb(56, 61, 72)\",\n [\"--nav-bar\"]: \"rgb(29, 31, 37)\",\n [\"--material-aurora\"]:\n \"radial-gradient(120% 90% at 0% 10%, rgba(45, 160, 112, 0.065), transparent 58%), radial-gradient(110% 100% at 100% 90%, rgba(66, 126, 245, 0.08), transparent 62%), linear-gradient(145deg, rgba(39, 41, 43, 0.96), rgba(27, 30, 33, 0.94))\",\n [\"--material-dawn\"]:\n \"radial-gradient(110% 90% at 10% 100%, rgba(255, 139, 92, 0.095), transparent 60%), radial-gradient(100% 85% at 90% 0%, rgba(104, 145, 235, 0.08), transparent 60%), linear-gradient(145deg, rgba(43, 38, 39, 0.96), rgba(30, 30, 36, 0.94))\",\n [\"--material-mist\"]:\n \"radial-gradient(120% 100% at 50% 0%, rgba(255, 255, 255, 0.025), transparent 65%), linear-gradient(145deg, rgba(48, 50, 53, 0.82), rgba(30, 32, 35, 0.8))\",\n [\"--material-twilight\"]:\n \"radial-gradient(115% 95% at 0% 10%, rgba(103, 91, 214, 0.13), transparent 60%), radial-gradient(110% 90% at 100% 100%, rgba(196, 105, 151, 0.065), transparent 62%), linear-gradient(145deg, rgba(35, 34, 47, 0.97), rgba(24, 27, 38, 0.94))\",\n /* Effects */\n [\"--warning\"]: \"rgb(255, 204, 0)\",\n [\"--highlight\"]: \"rgb(50, 140, 220)\",\n [\"--outline\"]: \"rgb(91, 170, 255)\",\n [\"--light-highlight\"]: \"rgba(49, 57, 63)\",\n [\"--light-highlight-hovered\"]: \"rgb(54, 68, 80)\",\n [\"--light-highlight-pressed\"]: \"rgb(60, 78, 96)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(255, 255, 255)\",\n [\"--secondary-text\"]: \"rgb(200, 200, 200)\",\n [\"--subtle-text\"]: \"rgb(140, 140, 140)\",\n [\"--highlight-text\"]: \"#4ca7f8\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--inverse-text\"]: \"rgb(0, 0, 0)\",\n [\"--font-xsmall\"]: \"10px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"28px\",\n [\"--font-xxxlarge\"]: \"36px\",\n /* Buttons */\n [\"--background-button-primary\"]: \"rgb(50, 140, 220)\",\n [\"--background-button-secondary\"]: \"rgb(82, 83, 86)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-inverse\"]: \"rgb(255, 255, 255)\",\n [\"--background-button-disabled\"]: \"rgb(70, 72, 73)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"4px\",\n [\"--border-radius-m\"]: \"8px\",\n [\"--border-radius-l\"]: \"12px\",\n [\"--border-radius-xl\"]: \"16px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows - stronger for dark mode to be visible */\n [\"--shadow-sm\"]: \"0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.3)\",\n [\"--shadow-md\"]:\n \"0 4px 6px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.2)\",\n [\"--shadow-lg\"]:\n \"0 10px 25px rgba(0, 0, 0, 0.35), 0 4px 10px rgba(0, 0, 0, 0.25)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const baseStyles = `\n* {\n box-sizing: border-box;\n border: none;\n touch-action: manipulation;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n*:focus {\n outline-color: ${cssVar(\"--highlight\")};\n}\n\nbutton,\ninput,\ntextarea,\nselect {\n font: inherit;\n}\n\nhtml {\n margin: 0;\n min-height: 100%;\n width: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n background-color: ${cssVar(\"--primary-background\")};\n}\n\nbody {\n margin: 0;\n min-height: 100%;\n width: 100%;\n overflow: visible;\n background-color: ${cssVar(\"--primary-background\")};\n}\n\n@keyframes dialogFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes popoverFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n`;\n\nconst backgroundStyles = {\n highlight: {\n backgroundColor: cssVar(\"--highlight\"),\n },\n light: {\n backgroundColor: cssVar(\"--light-text\"),\n },\n dark: {\n backgroundColor: cssVar(\"--primary-text\"),\n },\n warning: {\n backgroundColor: cssVar(\"--warning\"),\n },\n \"primary-background\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n negative: {\n backgroundColor: cssVar(\"--negative-text\"),\n },\n \"secondary-background\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n },\n divider: {\n backgroundColor: cssVar(\"--divider\"),\n },\n inherit: {\n backgroundColor: \"inherit\",\n },\n};\n\nconst colorValues: { [color in Color]: string } = {\n none: \"transparent\",\n highlight: cssVar(\"--highlight\"),\n light: cssVar(\"--light-text\"),\n dark: cssVar(\"--primary-text\"),\n warning: cssVar(\"--warning\"),\n \"primary-background\": cssVar(\"--primary-background\"),\n negative: cssVar(\"--negative-text\"),\n \"secondary-background\": cssVar(\"--secondary-background\"),\n divider: cssVar(\"--divider\"),\n inherit: \"currentColor\",\n};\n\nexport const getColorValue = (color: Color): string => colorValues[color];\n\nexport const getBackground = (color: Color): JSS => {\n return backgroundStyles[color];\n};\n\nexport const MOBILE = 750;\nexport const TABLET = 1000;\nexport const LAPTOP = 1200;\n\nexport const MOBILE_MEDIA = `@media (min-width: 0px) and (max-width: ${MOBILE - 1}px)`;\nexport const TABLET_MEDIA = `@media (min-width: ${MOBILE}px) and (max-width: ${TABLET - 1}px)`;\nexport const LAPTOP_MEDIA = `@media (min-width: ${TABLET}px) and (max-width: ${LAPTOP - 1}px)`;\nexport const DESKTOP_MEDIA = `@media (min-width: ${LAPTOP}px)`;\n\nexport function mobile(jss: JSS): { [key: string]: JSS } {\n return {\n [MOBILE_MEDIA]: jss,\n };\n}\n\nexport function tablet(jss: JSS): { [key: string]: JSS } {\n return {\n [TABLET_MEDIA]: jss,\n };\n}\n\nexport function laptop(jss: JSS): { [key: string]: JSS } {\n return {\n [LAPTOP_MEDIA]: jss,\n };\n}\n\nexport function desktop(jss: JSS): { [key: string]: JSS } {\n return {\n [DESKTOP_MEDIA]: jss,\n };\n}\n\nconst textColorStyles = {\n primary: {\n color: cssVar(\"--primary-text\"),\n },\n secondary: {\n color: cssVar(\"--secondary-text\"),\n },\n highlight: {\n color: cssVar(\"--highlight-text\"),\n },\n warning: {\n color: cssVar(\"--warning\"),\n },\n negative: {\n color: cssVar(\"--negative-text\"),\n },\n subtle: {\n color: cssVar(\"--subtle-text\"),\n },\n light: {\n color: cssVar(\"--light-text\"),\n },\n inverse: {\n color: cssVar(\"--inverse-text\"),\n },\n inherit: {\n color: \"inherit\",\n },\n};\n\nexport const getTextColor = (color: TextColor) => {\n return textColorStyles[color];\n};\n\nexport function getBaseStyles(themes: { light: Theme; dark: Theme }): string[] {\n const css: string[] = [];\n\n css.push(baseStyles);\n\n css.push(`body {\n color-scheme: light;\n ${Object.entries(themes.light)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n css.push(`body.dark-mode {\n color-scheme: dark;\n ${Object.entries(themes.dark)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n return css;\n}\n","import React from \"react\";\nimport { JSS, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n relative: {\n position: \"relative\",\n },\n grow: {\n flexGrow: 1,\n },\n shrink: {\n flexShrink: 1,\n },\n};\n\nexport interface BaseViewProps extends React.HTMLAttributes<HTMLElement> {\n jss?: JSS;\n ref?: React.Ref<HTMLDivElement>;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n relative?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n}\n\nexport const BaseView = React.forwardRef(function BaseView(\n { jss, children, tag, grow, shrink, relative, ...otherProps }: BaseViewProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const Tag: React.ElementType = tag ?? \"div\";\n\n return React.createElement(\n Tag,\n {\n ...otherProps,\n ref,\n className: toClassnames([\n jss,\n grow && styles.grow,\n shrink && styles.shrink,\n relative && styles.relative,\n ]),\n },\n children,\n );\n});\n","import React from \"react\";\nimport { Icon as IconifyIcon } from \"@iconify/react\";\nimport { BaseView } from \"./BaseView\";\nimport { IconType } from \"./IconType\";\nimport { JSS, Size, TextColor, getTextColor } from \"./jss\";\n\nconst styles = {\n root: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \" svg\": {\n height: \"inherit\",\n width: \"inherit\",\n },\n },\n xsmall: {\n height: 8,\n width: 8,\n },\n small: {\n height: 12,\n width: 12,\n },\n medium: {\n height: 18,\n width: 18,\n },\n large: {\n height: 24,\n width: 24,\n },\n xlarge: {\n height: 32,\n width: 32,\n },\n xxlarge: {\n height: 48,\n width: 48,\n },\n xxxlarge: {\n height: 64,\n width: 64,\n },\n};\n\nexport interface IconProps {\n ariaLabel?: string;\n icon: IconType;\n size: Size;\n color: TextColor;\n jss?: JSS;\n}\n\nexport function Icon({ icon, size, color, ariaLabel, jss }: IconProps) {\n return (\n <BaseView\n aria-label={ariaLabel}\n jss={[\n styles.root,\n size === \"xsmall\" && styles.xsmall,\n size === \"small\" && styles.small,\n size === \"medium\" && styles.medium,\n size === \"large\" && styles.large,\n size === \"xlarge\" && styles.xlarge,\n size === \"xxlarge\" && styles.xxlarge,\n size === \"xxxlarge\" && styles.xxxlarge,\n getTextColor(color),\n jss,\n ]}\n >\n <IconifyIcon icon={`lucide:${icon}`} width=\"100%\" height=\"100%\" />\n </BaseView>\n );\n}\n","import { Size, Styles, cssVar } from \"./jss\";\n\nconst fontSize: Record<Size, string> = {\n xsmall: cssVar(\"--font-xsmall\"),\n small: cssVar(\"--font-small\"),\n medium: cssVar(\"--font-medium\"),\n large: cssVar(\"--font-large\"),\n xlarge: cssVar(\"--font-xlarge\"),\n xxlarge: cssVar(\"--font-xxlarge\"),\n xxxlarge: cssVar(\"--font-xxxlarge\"),\n};\n\n// Leading is part of each text size rather than an ambient browser default.\n// Unitless values keep custom theme font sizes proportional.\nconst lineHeight: Record<Size, number> = {\n xsmall: 14 / 10,\n small: 16 / 12,\n medium: 20 / 14,\n large: 24 / 18,\n xlarge: 28 / 22,\n xxlarge: 34 / 28,\n xxxlarge: 42 / 36,\n};\n\nexport function getTypography(size: Size): Styles {\n return {\n fontSize: fontSize[size],\n lineHeight: lineHeight[size],\n };\n}\n","import React, { ReactNode } from \"react\";\nimport {\n JSS,\n Size,\n TextColor,\n getTextColor,\n toClassnames,\n} from \"./jss\";\nimport { getTypography } from \"./typography\";\n\nexport interface TextProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"children\" | \"className\" | \"color\"\n> {\n children: ReactNode;\n color?: TextColor;\n size?: Size;\n bold?: boolean;\n ellipsis?: boolean | \"default\";\n align?: \"center\" | \"none\";\n type?: TextType;\n grow?: boolean;\n jss?: JSS;\n htmlFor?: string;\n className?: never;\n}\n\nexport type TextType =\n | \"label\"\n | \"span\"\n | \"p\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"li\";\n\nexport function Text({\n children,\n color = \"primary\",\n size = \"medium\",\n align = \"none\",\n bold = false,\n ellipsis = \"default\",\n grow,\n type: Type = \"span\",\n jss,\n htmlFor,\n ...elementProps\n}: TextProps) {\n if (ellipsis === \"default\") {\n ellipsis = Type === \"span\" || Type === \"label\";\n }\n\n const isHeading =\n Type === \"h1\" || Type === \"h2\" || Type === \"h3\" || Type === \"h4\";\n\n const className = toClassnames([\n getTextColor(color),\n { ...getTypography(size), padding: 0, margin: 0 },\n isHeading && { fontWeight: \"inherit\" },\n bold && { fontWeight: 600 },\n align === \"center\" && { textAlign: \"center\" },\n ellipsis && {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n grow && { flexGrow: 1 },\n jss,\n ]);\n\n return (\n <Type {...elementProps} className={className} htmlFor={htmlFor}>\n {children}\n </Type>\n );\n}\n\nexport function Label({ size = \"medium\", type = \"label\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Span({ size = \"medium\", type = \"span\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function P({ size = \"medium\", type = \"p\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H1({ size = \"xxlarge\", type = \"h1\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H2({ size = \"xlarge\", type = \"h2\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H3({ size = \"large\", type = \"h3\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H4({ size = \"medium\", type = \"h4\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Li({ size = \"medium\", type = \"li\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n","import React, { ReactNode, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { Span } from \"./Text\";\nimport { hash } from \"./hash\";\nimport { JSS, Size, cssVar } from \"./jss\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps {\n name: string;\n src?: string;\n size?: AvatarSize;\n badge?: ReactNode;\n jss?: JSS;\n}\n\nconst dimensions: Record<AvatarSize, number> = {\n small: 24,\n medium: 34,\n large: 48,\n};\n\nconst textSizes: Record<AvatarSize, Size> = {\n small: \"small\",\n medium: \"medium\",\n large: \"large\",\n};\n\nfunction normalizeName(name: string): string {\n return name.normalize(\"NFKC\").trim();\n}\n\nfunction getInitial(name: string): string | null {\n const normalized = normalizeName(name);\n if (normalized === \"\") return null;\n\n const meaningfulCharacter = normalized.match(/[\\p{L}\\p{N}]/u)?.[0];\n const character = meaningfulCharacter ?? Array.from(normalized)[0];\n return Array.from(character.toLocaleUpperCase())[0] ?? null;\n}\n\nconst avatarPalettes = [\n [\"#eed1cf\", \"#d6aaa9\"],\n [\"#efd5bd\", \"#d8ae8c\"],\n [\"#e6d9b9\", \"#c8b887\"],\n [\"#ceddc5\", \"#a8c09d\"],\n [\"#c6ded8\", \"#97bdb4\"],\n [\"#c9dbea\", \"#9ebbd2\"],\n [\"#d0d2ea\", \"#a7abd1\"],\n [\"#ddcde9\", \"#baa1cf\"],\n [\"#e6ccdc\", \"#c4a0b6\"],\n] as const;\n\nconst avatarTextColor = \"rgb(42, 45, 52)\";\n\nfunction getGradient(name: string): string {\n const seed = hash(normalizeName(name).toLocaleLowerCase());\n const palette = avatarPalettes[seed % avatarPalettes.length];\n\n return `radial-gradient(circle at 24% 18%, rgba(255, 255, 255, 0.45), transparent 52%), linear-gradient(145deg, ${palette[0]}, ${palette[1]})`;\n}\n\nexport const Avatar = React.forwardRef(function Avatar(\n { name, src, size = \"medium\", badge, jss }: AvatarProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const [failedSrc, setFailedSrc] = useState<string>();\n const dimension = dimensions[size];\n const initial = getInitial(name);\n const showImage = src != null && src !== \"\" && failedSrc !== src;\n\n return (\n <BaseView\n ref={ref}\n tag=\"span\"\n role=\"img\"\n aria-label={name || \"User\"}\n jss={[\n {\n position: \"relative\",\n display: \"inline-flex\",\n width: dimension,\n height: dimension,\n flex: `0 0 ${dimension}px`,\n verticalAlign: \"middle\",\n },\n jss,\n ]}\n >\n <BaseView\n tag=\"span\"\n jss={{\n position: \"relative\",\n display: \"flex\",\n width: \"100%\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: \"50%\",\n background: getGradient(name),\n color: avatarTextColor,\n userSelect: \"none\",\n }}\n >\n {initial == null ? (\n <Icon\n icon=\"user\"\n size={textSizes[size]}\n color=\"light\"\n jss={{ color: avatarTextColor }}\n />\n ) : (\n <Span\n size={textSizes[size]}\n color=\"light\"\n bold\n aria-hidden=\"true\"\n jss={{ color: avatarTextColor, lineHeight: 1 }}\n >\n {initial}\n </Span>\n )}\n {showImage && (\n <img\n key={src}\n ref={(image) => {\n if (image?.complete && image.naturalWidth === 0) {\n setFailedSrc(src);\n }\n }}\n src={src}\n alt=\"\"\n draggable={false}\n onError={() => setFailedSrc(src)}\n style={{\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n )}\n </BaseView>\n {badge != null && (\n <BaseView\n tag=\"span\"\n aria-hidden=\"true\"\n jss={{\n position: \"absolute\",\n right: \"14.65%\",\n bottom: \"14.65%\",\n display: \"flex\",\n borderRadius: \"50%\",\n boxShadow: `0 0 0 2px ${cssVar(\"--overlay-background\")}`,\n pointerEvents: \"none\",\n transform: \"translate(50%, 50%)\",\n }}\n >\n {badge}\n </BaseView>\n )}\n </BaseView>\n );\n});\n\nAvatar.displayName = \"Avatar\";\n","import React from \"react\";\n\nimport { BaseView, BaseViewProps } from \"./BaseView\";\nimport {\n Justify,\n Gap,\n Align,\n Padding,\n FlexDirection,\n Surface,\n getPadding,\n getSpacing,\n getSurface,\n} from \"./jss\";\n\nexport interface FlexLayoutProps extends BaseViewProps {\n justify?: Justify;\n gap?: Gap;\n align?: Align;\n padding?: Padding;\n direction?: FlexDirection;\n surface?: Surface;\n basis?: string | number;\n}\n\nexport const FlexLayout = React.forwardRef(function FlexLayout(\n {\n jss,\n gap = \"none\",\n justify = \"none\",\n align = \"none\",\n padding = \"none\",\n direction = \"column\",\n surface,\n basis,\n ...otherProps\n }: FlexLayoutProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"flex\",\n flexDirection: direction,\n gap: getSpacing(gap),\n justifyContent: justify,\n alignItems: align,\n minWidth: 0,\n ...(basis != null\n ? { flexBasis: typeof basis === \"number\" ? `${basis}px` : basis }\n : {}),\n },\n getPadding(padding),\n surface && getSurface(surface),\n jss,\n ]}\n {...otherProps}\n />\n );\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface RowProps extends FlexLayoutProps {\n direction?: \"row\";\n wrap?: boolean;\n}\n\nexport const Row = React.forwardRef(function Row(\n { wrap = false, jss, ...otherProps }: RowProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <FlexLayout\n ref={ref}\n direction=\"row\"\n jss={[wrap && { flexWrap: \"wrap\" }, jss]}\n {...otherProps}\n />\n );\n});\n","import React, { Children, ReactNode } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Row, RowProps } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport interface AvatarStackProps extends Omit<RowProps, \"children\" | \"gap\"> {\n children: ReactNode;\n overlap?: number;\n jss?: JSS;\n}\n\nexport const AvatarStack = React.forwardRef(function AvatarStack(\n { children, overlap = 8, jss, ...otherProps }: AvatarStackProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const items = Children.toArray(children);\n\n return (\n <Row\n {...otherProps}\n ref={ref}\n align=\"center\"\n gap=\"none\"\n jss={[\n {\n isolation: \"isolate\",\n width: \"fit-content\",\n },\n jss,\n ]}\n >\n {items.map((child, index) => (\n <BaseView\n key={index}\n tag=\"span\"\n jss={{\n position: \"relative\",\n zIndex: items.length - index,\n display: \"inline-flex\",\n marginLeft: index === 0 ? 0 : -overlap,\n }}\n >\n {child}\n </BaseView>\n ))}\n </Row>\n );\n});\n\nAvatarStack.displayName = \"AvatarStack\";\n","import React from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Color, JSS, Size, getBackground } from \"./jss\";\n\nconst sizes: { [size in Size]: number } = {\n xsmall: 4,\n small: 6,\n medium: 12,\n large: 18,\n xlarge: 24,\n xxlarge: 32,\n xxxlarge: 40,\n};\n\nexport function Badge({\n size = \"medium\",\n color = \"highlight\",\n jss,\n}: {\n size?: Size;\n color?: Color;\n jss?: JSS;\n}) {\n return (\n <BaseView\n jss={[\n {\n width: sizes[size],\n height: sizes[size],\n borderRadius: sizes[size] / 2,\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","import { JSS, Padding, TextColor, cssVar, getPadding } from \"./jss\";\n\nexport type InteractableColor =\n \"primary\" | \"secondary\" | \"negative\" | \"inverse\";\n\nconst styles = {\n root: {\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n transition: \"filter 120ms ease, box-shadow 120ms ease\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n color: cssVar(\"--secondary-text\"),\n backgroundColor: cssVar(\"--background-button-secondary\"),\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: 2,\n },\n },\n primary: {\n backgroundColor: cssVar(\"--background-button-primary\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n secondary: {\n backgroundColor: cssVar(\"--background-button-secondary\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n negative: {\n backgroundColor: cssVar(\"--background-button-negative\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n inverse: {\n backgroundColor: cssVar(\"--background-button-inverse\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n disabled: {\n cursor: \"default\",\n },\n bare: {\n backgroundColor: \"inherit\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n backgroundColor: \"inherit\",\n },\n \"[aria-disabled=true]:hover\": {\n backgroundColor: \"inherit\",\n },\n },\n opacityHover: {\n \":hover\": {\n opacity: 1,\n filter: \"brightness(0.96)\",\n },\n \"[aria-disabled=true]:hover\": {\n opacity: 1,\n filter: \"none\",\n },\n },\n colorHover: {},\n};\n\nexport function getInteractableJSS({\n color,\n bare,\n disabled,\n animateInteraction,\n padding,\n border,\n}: {\n color: InteractableColor;\n bare: boolean;\n disabled: boolean;\n animateInteraction: boolean;\n padding: Padding;\n border: boolean;\n}): Array<JSS> {\n return [\n styles.root,\n color === \"primary\" && styles.primary,\n color === \"secondary\" && styles.secondary,\n color === \"negative\" && styles.negative,\n color === \"inverse\" && styles.inverse,\n border && {\n border: `1px solid ${getCSSColor(color, disabled, bare)}`,\n },\n bare && styles.bare,\n disabled && styles.disabled,\n !bare && !disabled && { boxShadow: cssVar(\"--shadow-sm\") },\n styles.opacityHover,\n animateInteraction &&\n !disabled && {\n position: \"relative\",\n \":active\": {\n opacity: 1,\n top: 1,\n },\n \"[aria-disabled=true]:active\": {\n top: 0,\n opacity: 1,\n },\n },\n getPadding(padding),\n ];\n}\n\nexport const getGlyphColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined,\n): TextColor => {\n if (disabled) {\n return \"subtle\";\n }\n\n switch (color) {\n case \"primary\":\n return bare ? \"highlight\" : \"light\";\n case \"secondary\":\n return bare ? \"primary\" : \"secondary\";\n case \"negative\":\n return bare ? \"negative\" : \"light\";\n case \"inverse\":\n return bare ? \"primary\" : \"inverse\";\n }\n};\n\nexport const getCSSColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined,\n): string => {\n if (disabled) {\n return cssVar(\"--subtle-text\");\n }\n\n switch (color) {\n case \"primary\":\n return bare ? cssVar(\"--highlight\") : cssVar(\"--light-text\");\n case \"secondary\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--secondary-text\");\n case \"negative\":\n return bare ? cssVar(\"--negative-text\") : cssVar(\"--light-text\");\n case \"inverse\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--inverse-text\");\n }\n};\n\nexport const getInteractableListItemJSS = ({\n selected,\n}: {\n selected: boolean | undefined;\n}) => {\n return [\n {\n overflow: \"hidden\",\n flexGrow: 1,\n borderRadius: cssVar(\"--border-radius-m\"),\n textDecoration: \"none\",\n \":focus-visible\": {\n outlineOffset: -2,\n },\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n \"[aria-disabled=true]:active:hover\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n },\n selected && {\n backgroundColor: cssVar(\"--light-highlight\"),\n \":hover\": {\n backgroundColor: cssVar(\"--light-highlight-hovered\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--light-highlight-pressed\"),\n },\n },\n ];\n};\n","import React from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n onClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n jss?: JSS;\n color: InteractableColor;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n type?: \"submit\" | \"reset\" | \"button\";\n}\n\nexport const BaseButton = React.forwardRef(function BaseButton(\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n border = false,\n disabled,\n animateInteraction = true,\n padding,\n type = \"button\",\n ...otherProps\n }: BaseButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <button\n type={type}\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n ref={ref}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n\n onClick?.(event);\n }}\n className={toClassnames([\n ...getInteractableJSS({\n color,\n bare,\n border,\n disabled,\n animateInteraction,\n padding,\n }),\n jss,\n ])}\n >\n {children}\n </button>\n );\n});\n","import React, { ReactNode, useId } from \"react\";\nimport { JSS, Size, TextColor, toClassnames } from \"./jss\";\nimport { Label } from \"./Text\";\n\nexport interface BaseInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n jss?: JSS;\n className?: undefined;\n size?: undefined;\n children?: undefined;\n label?: ReactNode;\n labelSize?: Size;\n labelColor?: TextColor;\n labelBold?: boolean;\n labelPosition?: \"start\" | \"end\";\n}\n\nexport const BaseInput = React.forwardRef(function BaseInput(\n {\n jss,\n label,\n labelPosition = \"end\",\n labelSize,\n labelColor,\n labelBold,\n id: propId,\n ...otherProps\n }: BaseInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const hookid = useId();\n const id = propId ?? hookid;\n const labelElement = (\n <Label\n size={labelSize}\n bold={labelBold}\n color={labelColor}\n jss={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n htmlFor={id}\n >\n {label}\n </Label>\n );\n\n return (\n <>\n {label && labelPosition === \"start\" && labelElement}\n <input id={id} ref={ref} className={toClassnames(jss)} {...otherProps} />\n {label && labelPosition === \"end\" && labelElement}\n </>\n );\n});\n","import React, { useContext } from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n onClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n target?: string;\n jss?: JSS;\n color: InteractableColor;\n href: string;\n disabled?: boolean;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n}\n\n// This only exists to make NextJS happy, it should not be used in any other case\nexport const BaseLinkComponentOverrideContext = React.createContext((props) => (\n <a {...props} />\n));\n\nexport const BaseLink = React.forwardRef(function BaseLink(\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n disabled,\n animateInteraction = true,\n padding,\n href,\n border,\n role = \"link\",\n ...otherProps\n }: BaseLinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n const Link = useContext(BaseLinkComponentOverrideContext);\n\n return (\n <Link\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n href={href}\n role={role}\n ref={ref}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n\n onClick?.(event);\n }}\n className={toClassnames([\n ...getInteractableJSS({\n color,\n border,\n bare,\n disabled,\n animateInteraction,\n padding,\n }),\n disabled && { pointerEvents: \"none\" },\n jss,\n ])}\n >\n {children}\n </Link>\n );\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface ColumnProps extends FlexLayoutProps {\n direction?: \"column\";\n}\n\nexport const Column = React.forwardRef(function Column(\n props: ColumnProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return <FlexLayout ref={ref} direction=\"column\" {...props} />;\n});\n","import React from \"react\";\nimport { Column, ColumnProps } from \"./Column\";\n\nexport interface BaseListProps extends ColumnProps {\n tag?: undefined;\n}\n\nexport const BaseList = React.forwardRef(function BaseList(\n { jss, ...otherProps }: BaseListProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return (\n <Column\n {...otherProps}\n tag=\"ul\"\n jss={[\n {\n listStyle: \"none\",\n margin: 0,\n },\n jss,\n ]}\n ref={ref}\n />\n );\n});\n","import React from \"react\";\nimport { BaseView, BaseViewProps } from \"./BaseView\";\n\nexport interface BaseListAddOnProps extends BaseViewProps {}\n\nexport const BaseListAddOn = React.forwardRef(function BaseListAddOn(\n { jss, ...otherProps }: BaseListAddOnProps,\n ref?: React.Ref<HTMLDivElement>,\n) {\n return (\n <BaseView\n {...otherProps}\n jss={[\n {\n display: \"flex\",\n width: 34,\n height: 34,\n flex: \"0 0 34px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n jss,\n ]}\n ref={ref}\n />\n );\n});\n","import React, { ReactNode } from \"react\";\n\nimport { Text } from \"./Text\";\nimport { Row } from \"./Row\";\nimport { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport {\n TextColor,\n Size,\n Position,\n Gap,\n Padding,\n Align,\n cssVar,\n JSS,\n} from \"./jss\";\n\nexport interface TextPairingProps {\n headline: ReactNode;\n body?: ReactNode;\n headlineColor?: TextColor;\n headlineSize?: Size;\n headlineAddOn?: ReactNode;\n bodyColor?: TextColor;\n bodySize?: Size;\n bodyEllipsis?: boolean;\n addOn?: ReactNode;\n addOnPosition?: Position;\n gap?: Gap;\n padding?: Padding;\n align?: Align;\n grow?: boolean;\n shrink?: boolean;\n headlineBold?: boolean;\n jss?: JSS;\n}\n\nexport function TextPairing({\n headline,\n body,\n headlineColor = \"primary\",\n headlineSize = \"medium\",\n headlineAddOn,\n bodyColor = \"secondary\",\n bodySize = \"medium\",\n bodyEllipsis = false,\n addOn,\n addOnPosition = \"start\",\n gap = \"medium\",\n align = \"stretch\",\n grow,\n shrink,\n headlineBold,\n padding,\n jss,\n}: TextPairingProps) {\n const textElement = (\n <Column\n grow={grow}\n shrink={shrink}\n padding={addOn ? undefined : padding}\n align={align}\n jss={[\n {\n overflow: \"hidden\",\n },\n jss,\n ]}\n >\n <Row\n align=\"center\"\n gap=\"small\"\n jss={{\n textAlign: \"start\",\n minWidth: 0,\n }}\n >\n <Text bold={headlineBold} color={headlineColor} size={headlineSize}>\n {headline}\n </Text>\n {headlineAddOn && (\n <BaseView jss={{ flexShrink: 0 }}>{headlineAddOn}</BaseView>\n )}\n </Row>\n {body && (\n <Row\n align=\"center\"\n jss={{\n marginTop: cssVar(\"--spacing-xs\"),\n textAlign: \"start\",\n }}\n >\n <Text ellipsis={bodyEllipsis} color={bodyColor} size={bodySize}>\n {body}\n </Text>\n </Row>\n )}\n </Column>\n );\n\n if (addOn) {\n return (\n <Row\n grow={grow}\n shrink={shrink}\n gap={gap}\n align=\"center\"\n padding={padding}\n jss={{\n overflow: \"hidden\",\n }}\n >\n {addOnPosition === \"start\" && addOn}\n {textElement}\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n }\n\n return textElement;\n}\n","import React, { ReactNode } from \"react\";\n\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Size, Position, Spacing, TextColor } from \"./jss\";\nimport { TextPairing } from \"./TextPairing\";\nimport { BaseListAddOn } from \"./BaseListAddOn\";\n\nexport interface BaseListItemProps extends Omit<\n RowProps,\n \"children\" | \"jss\" | \"role\"\n> {\n children: (elements: { content: React.JSX.Element }) => ReactNode;\n jss?: JSS;\n headline: string;\n headlineSize?: Size;\n headlineColor?: TextColor;\n headlineAddOn?: ReactNode;\n headlineBold?: boolean;\n body?: string;\n bodySize?: Size;\n bodyColor?: TextColor;\n bodyEllipsis?: boolean;\n addOn?: ReactNode;\n addOnPosition?: Position;\n outerAddOn?: ReactNode;\n disabled?: boolean;\n role?: undefined;\n gap?: Spacing;\n selected?: boolean;\n}\n\nexport const BaseListItem = React.forwardRef(function BaseListItem(\n {\n children,\n jss,\n headline,\n headlineSize = \"medium\",\n headlineColor = \"primary\",\n headlineAddOn,\n body,\n bodySize = \"small\",\n bodyColor = \"secondary\",\n bodyEllipsis = true,\n addOn,\n addOnPosition,\n outerAddOn,\n disabled = false,\n padding = \"medium\",\n gap = \"medium\",\n selected,\n headlineBold,\n ...otherProps\n }: BaseListItemProps,\n ref?: React.Ref<HTMLElement>,\n) {\n const content = (\n <TextPairing\n headlineBold={headlineBold}\n padding={padding}\n gap={gap}\n addOn={addOn}\n addOnPosition={addOnPosition}\n headline={headline}\n headlineSize={headlineSize}\n headlineColor={\n disabled ? \"subtle\" : selected ? \"highlight\" : headlineColor\n }\n headlineAddOn={headlineAddOn}\n body={body}\n bodySize={bodySize}\n bodyColor={disabled ? \"subtle\" : bodyColor}\n bodyEllipsis={bodyEllipsis}\n grow={true}\n shrink={false}\n />\n );\n\n return (\n <Row {...otherProps} ref={ref} relative tag=\"li\" role=\"row\" jss={jss}>\n <Row\n grow\n role=\"gridcell\"\n jss={{\n overflow: \"hidden\",\n }}\n >\n {children({ content })}\n </Row>\n {outerAddOn && (\n <BaseListAddOn role=\"gridcell\">{outerAddOn}</BaseListAddOn>\n )}\n </Row>\n );\n});\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface BoxProps extends FlexLayoutProps {}\n\nexport function Box({\n padding = \"medium\",\n align = \"center\",\n justify = \"center\",\n ...otherProps\n}: BoxProps) {\n return (\n <FlexLayout\n padding={padding}\n align={align}\n justify={justify}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor } from \"./Interactable\";\nimport { Align, Gap, Justify, cssVar } from \"./jss\";\n\nexport interface ButtonProps extends Omit<\n BaseButtonProps,\n \"border\" | \"padding\"\n> {\n children: string;\n color: InteractableColor;\n icon?: IconType;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n}\n\nexport const Button = React.forwardRef(function Button(\n {\n children,\n color,\n bare,\n disabled,\n icon,\n iconPosition = \"left\",\n align = \"center\",\n gap = \"medium\",\n justify = \"center\",\n jss,\n ...otherProps\n }: ButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseButton\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding=\"none\"\n jss={[\n {\n height: 34,\n padding: \"0 14px\",\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n },\n jss,\n ]}\n >\n <Row grow={true} align={align} gap={gap} justify={justify}>\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n jss={{\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n }}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseButton>\n );\n});\n","type Focusable = HTMLElement;\n\nexport function queryFocusables(root: HTMLElement): Focusable[] {\n const focusables: Focusable[] = Array.from(\n root.querySelectorAll(\n \"button,input,textarea,a,[tabindex='0'],[tabindex='-1']\"\n )\n );\n\n return focusables.filter((element: Focusable) => !element[\"disabled\"]);\n}\n\nexport function queryGrid(root: HTMLElement): HTMLElement[][] {\n const rows: HTMLLIElement[] = Array.from(\n root.querySelectorAll('li[role=\"row\"]')\n );\n\n const rowsWithColumns = rows\n .map((row) => Array.from(queryFocusables(row)))\n .filter((row) => row.length > 0);\n\n return rowsWithColumns;\n}\n\nexport const normalizeGrid = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n for (const row of rows) {\n for (const column of row) {\n column.tabIndex = -1;\n }\n }\n\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.tabIndex = 0;\n};\n\nexport const focusGridElement = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n normalizeGrid(rows, rowIndex, columnIndex);\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.focus();\n column.scrollIntoView(false);\n};\n\nexport const normalizeElements = (\n focusables: HTMLElement[],\n index: number\n): void => {\n for (const element of focusables) {\n element.tabIndex = -1;\n }\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.tabIndex = 0;\n};\n\nexport const focusElement = (\n focusables: HTMLElement[],\n index: number\n): void => {\n normalizeElements(focusables, index);\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.focus();\n // element.scrollIntoView(false);\n};\n","import { useCallback, useRef } from \"react\";\n\nexport function useRefEffect<T>(\n callback: (root: T) => (() => void) | void,\n): (root: T) => void {\n const unsubscribeRef = useRef<(() => void) | void>(null);\n\n return useCallback(\n (root: T | null) => {\n if (root === null) {\n const unsubscribe = unsubscribeRef.current;\n if (unsubscribe) {\n unsubscribe();\n }\n unsubscribeRef.current = null;\n } else {\n unsubscribeRef.current = callback(root);\n }\n },\n [callback],\n );\n}\n","import { useCallback } from \"react\";\n\nimport { queryFocusables, focusElement, normalizeElements } from \"./aria\";\nimport { useRefEffect } from \"./useRefEffect\";\n\nexport function useNavigation({\n autofocus = false,\n rowLength = 1,\n enabled = true,\n initialIndex = 0,\n} = {}) {\n return useRefEffect(\n useCallback(\n (root: HTMLElement) => {\n if (!enabled) {\n return;\n }\n\n let index = Math.max(\n 0,\n Math.min(initialIndex, queryFocusables(root).length - 1),\n );\n\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n if (elements.length !== 0 && autofocus) {\n focusElement(elements, index);\n } else {\n normalizeElements(elements, index);\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n let newIndex: number = -1;\n\n if (e.code === \"ArrowUp\") {\n if (index - rowLength < 0) {\n newIndex =\n elements.length - (elements.length % rowLength) + index;\n } else {\n newIndex = index - rowLength;\n }\n } else if (e.code === \"ArrowLeft\") {\n if (index <= 0) {\n newIndex = elements.length - 1;\n } else {\n newIndex = index - 1;\n }\n } else if (e.code === \"ArrowRight\") {\n if (index >= elements.length - 1) {\n newIndex = 0;\n } else {\n newIndex = index + 1;\n }\n } else if (e.code === \"ArrowDown\") {\n if (index + rowLength > elements.length - 1) {\n newIndex = (index + rowLength) % rowLength;\n } else {\n newIndex = index + rowLength;\n }\n }\n\n if (newIndex !== -1 && index !== newIndex) {\n index = newIndex;\n focusElement(elements, index);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n root.addEventListener(\"keydown\", onKeyDown);\n\n const observer = new MutationObserver((mutationList) => {\n if (mutationList.filter((m) => m.type === \"childList\").length > 0) {\n const elements = queryFocusables(root);\n if (elements.length > 0) {\n normalizeElements(elements, index);\n }\n }\n });\n observer.observe(root, { childList: true });\n\n return () => {\n root.removeEventListener(\"keydown\", onKeyDown);\n observer.disconnect();\n };\n },\n [autofocus, enabled, initialIndex, rowLength],\n ),\n );\n}\n","import { Button } from \"./Button\";\nimport { IconType } from \"./IconType\";\nimport { JSS, cssVar } from \"./jss\";\nimport { Row } from \"./Row\";\nimport { useNavigation } from \"./useNavigation\";\n\nexport type ButtonGroupValue = string | number;\n\nexport type ButtonGroupOption<Value extends ButtonGroupValue> = {\n value: Value;\n label: string;\n icon?: IconType;\n};\n\nexport interface ButtonGroupProps<Value extends ButtonGroupValue> {\n label: string;\n options: ReadonlyArray<ButtonGroupOption<Value>>;\n value: Value;\n onValueChange: (value: NoInfer<Value>) => void;\n disabled?: boolean;\n jss?: JSS;\n}\n\nexport function ButtonGroup<Value extends ButtonGroupValue>({\n label,\n options,\n value,\n onValueChange,\n disabled = false,\n jss,\n}: ButtonGroupProps<Value>) {\n const selectedIndex = options.findIndex((option) => option.value === value);\n const rootRef = useNavigation({ initialIndex: selectedIndex });\n\n return (\n <Row\n ref={rootRef}\n role=\"radiogroup\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n jss={[\n {\n width: \"fit-content\",\n maxWidth: \"100%\",\n },\n jss,\n ]}\n >\n {options.map((option, index) => {\n const selected = option.value === value;\n const first = index === 0;\n const last = index === options.length - 1;\n\n return (\n <Button\n key={option.value}\n role=\"radio\"\n aria-checked={selected}\n color={selected ? \"primary\" : \"secondary\"}\n bare={!selected}\n disabled={disabled}\n animateInteraction={false}\n icon={option.icon}\n jss={[\n {\n borderTopLeftRadius: first ? cssVar(\"--border-radius-m\") : 0,\n borderBottomLeftRadius: first ? cssVar(\"--border-radius-m\") : 0,\n borderTopRightRadius: last ? cssVar(\"--border-radius-m\") : 0,\n borderBottomRightRadius: last ? cssVar(\"--border-radius-m\") : 0,\n boxShadow: \"none\",\n transition: `background-color ${cssVar(\"--transition-fast\")}, box-shadow ${cssVar(\"--transition-fast\")}`,\n },\n !selected && {\n backgroundColor: cssVar(\"--hovered-background\"),\n \":hover\": {\n backgroundColor: cssVar(\"--selected-background\"),\n },\n },\n ]}\n onFocus={() => {\n if (!disabled && !selected) {\n onValueChange(option.value);\n }\n }}\n onClick={() => {\n if (!selected) {\n onValueChange(option.value);\n }\n }}\n >\n {option.label}\n </Button>\n );\n })}\n </Row>\n );\n}\n","import React, { cloneElement, useMemo } from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { JSS } from \"./jss\";\n\nconst dateFormatter = Intl.DateTimeFormat(\"en-GB\", {\n weekday: \"short\",\n});\n\nconst MON = dateFormatter.format(new Date(2000, 1, 7));\nconst TUE = dateFormatter.format(new Date(2000, 1, 8));\nconst WED = dateFormatter.format(new Date(2000, 1, 9));\nconst THU = dateFormatter.format(new Date(2000, 1, 10));\nconst FRI = dateFormatter.format(new Date(2000, 1, 11));\nconst SAT = dateFormatter.format(new Date(2000, 1, 12));\nconst SUN = dateFormatter.format(new Date(2000, 1, 13));\n\nexport const Calendar = React.forwardRef(function Calendar(\n {\n date,\n cell,\n header,\n jss,\n }: {\n date: Date;\n header: (props: { weekday: string }) => React.JSX.Element;\n jss?: JSS;\n cell: (props: {\n today?: boolean;\n date: Date;\n outOfMonth: boolean;\n top: boolean;\n left: boolean;\n right: boolean;\n bottom: boolean;\n }) => React.JSX.Element;\n },\n ref?: React.Ref<HTMLElement>,\n) {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n const firstDayOfTheMonth = new Date(year, month, 1).getDay();\n const offset = firstDayOfTheMonth === 0 ? 6 : firstDayOfTheMonth - 1;\n const headers = useMemo(() => {\n return (\n <>\n {header({ weekday: MON })}\n {header({ weekday: TUE })}\n {header({ weekday: WED })}\n {header({ weekday: THU })}\n {header({ weekday: FRI })}\n {header({ weekday: SAT })}\n {header({ weekday: SUN })}\n </>\n );\n }, [header]);\n\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr 1fr 1fr 1fr 1fr 1fr\",\n gridTemplateRows: \"1fr\",\n },\n jss,\n ]}\n >\n {headers}\n {Array.from(Array(offset).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1 - offset,\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n today: false,\n top: true,\n left: index % 7 === 0,\n outOfMonth: true,\n right: false,\n bottom: false,\n }),\n { key: dayDate.toISOString() },\n );\n })}\n\n {Array.from(Array(daysInMonth).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1,\n 12, // If we do not add this the ISO string would be from the day before at midnight\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n top: index + offset < 7,\n left: (index + offset) % 7 === 0,\n right: (index + offset) % 7 === 7 - 1 || index === daysInMonth - 1,\n bottom: index > daysInMonth - 7 - 1,\n outOfMonth: false,\n today:\n dayDate.getDate() == new Date().getDate() &&\n dayDate.getMonth() == new Date().getMonth() &&\n dayDate.getFullYear() == new Date().getFullYear(),\n }),\n { key: dayDate.toISOString() },\n );\n })}\n </BaseView>\n );\n});\n","import { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\nimport { JSS, Material, cssVar, getMaterial } from \"./jss\";\n\nexport type CardVariant = \"default\" | \"tonal\" | \"floating\" | \"flat\";\n\nexport interface CardProps extends FlexLayoutProps {\n variant?: CardVariant;\n material?: Material;\n}\n\nconst variantStyles: { [variant in CardVariant]: JSS } = {\n default: {\n backgroundColor: cssVar(\"--overlay-background\"),\n boxShadow: cssVar(\"--shadow-sm\"),\n },\n tonal: {\n backgroundColor: cssVar(\"--secondary-background\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n },\n floating: {\n backgroundColor: cssVar(\"--overlay-background\"),\n borderRadius: cssVar(\"--border-radius-xl\"),\n boxShadow: cssVar(\"--shadow-lg\"),\n },\n flat: {\n backgroundColor: cssVar(\"--overlay-background\"),\n borderRadius: 0,\n boxShadow: \"none\",\n },\n};\n\nexport function Card({\n children,\n jss,\n padding = \"large\",\n gap = \"large\",\n variant = \"default\",\n material,\n ...otherProps\n}: CardProps) {\n return (\n <FlexLayout\n {...otherProps}\n padding={padding}\n gap={gap}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-l\"),\n },\n variantStyles[variant],\n material && getMaterial(material),\n jss,\n ]}\n >\n {children}\n </FlexLayout>\n );\n}\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { JSS, Size, cssVar } from \"./jss\";\nimport { IconType } from \"./IconType\";\n\ntype StaticCheckboxProps = {\n checked: boolean;\n size: Size;\n icon?: IconType;\n};\n\nconst styles: { [key: string]: JSS } = {\n border: {\n position: \"absolute\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n border: \"1px solid var(--divider)\",\n borderRadius: \"50%\",\n },\n borderChecked: {\n border: \"none\",\n backgroundColor: \"var(--highlight)\",\n },\n icon: {\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n },\n};\n\nexport const sizes = {\n xsmall: 20,\n small: 24,\n medium: 32,\n large: 40,\n xlarge: 48,\n xxlarge: 56,\n xxxlarge: 64,\n};\n\nexport function StaticCheckbox({\n checked,\n size,\n icon = \"check\",\n}: StaticCheckboxProps) {\n return (\n <BaseView\n jss={{\n position: \"relative\",\n backgroundColor: cssVar(\"--primary-background\"),\n overflow: \"hidden\",\n padding: cssVar(\"--spacing-xs\"),\n borderRadius: sizes[size] / 2,\n height: sizes[size],\n width: sizes[size],\n }}\n >\n <BaseView jss={[styles.border, checked && styles.borderChecked]} />\n {checked && (\n <BaseView jss={styles.icon}>\n <Icon size={size} color=\"light\" icon={icon} />\n </BaseView>\n )}\n </BaseView>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Size, toClassnames } from \"./jss\";\nimport { StaticCheckbox, sizes } from \"./StaticCheckbox\";\n\ninterface CheckboxProps\n extends Omit<\n BaseInputProps,\n \"checked\" | \"onClick\" | \"value\" | \"onChange\" | \"size\"\n > {\n checked: boolean;\n onClick: () => void;\n size: Size;\n value?: undefined;\n onChange?: undefined;\n}\n\nexport function Checkbox({\n checked,\n onClick,\n size,\n ...inputProps\n}: CheckboxProps) {\n return (\n <label\n className={toClassnames({\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: sizes[size],\n width: sizes[size],\n \":has(:focus-visible)\": {\n outline: \"2px solid var(--outline)\",\n borderRadius: \"50%\",\n },\n \":has(:active)\": {\n transform: \"scale(0.92)\",\n },\n })}\n >\n <StaticCheckbox checked={checked} size={size} />\n <BaseInput\n {...inputProps}\n type=\"checkbox\"\n role=\"checkbox\"\n aria-checked={checked}\n tabIndex={0}\n checked={checked}\n onChange={onClick}\n jss={{\n position: \"absolute\",\n opacity: 0,\n cursor: \"pointer\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n height: \"100%\",\n }}\n />\n </label>\n );\n}\n","import React from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\ninterface CircleProps extends BoxProps {}\n\nexport function Circle({\n jss,\n padding = \"medium\",\n ...otherProps\n}: CircleProps) {\n return (\n <Box\n padding={padding}\n jss={[\n {\n borderRadius: \"50%\",\n overflow: \"hidden\",\n },\n jss,\n ]}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { Span } from \"./Text\";\n\nexport interface IconButtonProps extends Omit<\n BaseButtonProps,\n \"border\" | \"padding\"\n> {\n icon: IconType;\n label?: string;\n}\n\nexport const IconButton = React.forwardRef(function IconButton(\n { icon, color, bare, disabled, jss, label, ...buttonProps }: IconButtonProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseButton\n {...buttonProps}\n aria-label={buttonProps[\"aria-label\"] ?? label}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 34,\n width: 34,\n borderRadius: 17,\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size=\"medium\"\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n {label && (\n <Span size=\"medium\" color={getGlyphColor(color, disabled, bare)}>\n {label}\n </Span>\n )}\n </BaseButton>\n );\n});\n","import { IconButton, IconButtonProps } from \"./IconButton\";\nimport { IconType } from \"./IconType\";\n\nexport interface ToggleProps extends Omit<\n IconButtonProps,\n \"aria-label\" | \"bare\" | \"color\" | \"icon\" | \"label\" | \"onClick\" | \"value\"\n> {\n label: string;\n value: boolean;\n onValueChange: (value: boolean) => void;\n onIcon: IconType;\n offIcon: IconType;\n bare?: boolean;\n}\n\nexport function Toggle({\n label,\n value,\n onValueChange,\n onIcon,\n offIcon,\n bare = false,\n ...buttonProps\n}: ToggleProps) {\n return (\n <IconButton\n {...buttonProps}\n aria-label={label}\n aria-pressed={value}\n bare={bare}\n color={bare ? \"secondary\" : value ? \"primary\" : \"secondary\"}\n icon={value ? onIcon : offIcon}\n onClick={() => onValueChange(!value)}\n />\n );\n}\n","import React, {\n ReactNode,\n useContext,\n useEffect,\n useSyncExternalStore,\n} from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { isServer } from \"./isServer\";\nimport { Toggle } from \"./Toggle\";\n\ntype State = {\n enabled: boolean;\n toggle: () => void;\n};\n\nexport const DarkModeContext = React.createContext<State>({\n enabled: false,\n toggle: () => {},\n});\n\nconst subscribeToNothing = () => () => {};\n\nif (!isServer()) {\n const darkMode = document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(\"dark-mode=\"))\n .map((s) => s.split(\"=\")[1])\n .map((s) => s)\n .pop();\n\n if (darkMode === \"true\") {\n document.body.classList.add(\"dark-mode\");\n }\n}\n\nexport function DarkModeProvider({\n children,\n enabled,\n toggle,\n}: {\n children: ReactNode;\n enabled: boolean;\n toggle: () => void;\n}) {\n useEffect(() => {\n const statusBarMeta = document.head.querySelector<HTMLMetaElement>(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n const themeColorMeta = document.head.querySelector<HTMLMetaElement>(\n 'meta[name=\"theme-color\"]',\n );\n\n if (enabled) {\n document.body.classList.add(\"dark-mode\");\n if (statusBarMeta != null) {\n statusBarMeta.content = \"black-translucent\";\n }\n if (themeColorMeta != null) {\n themeColorMeta.content = \"rgb(42, 43, 46)\";\n }\n } else {\n document.body.classList.remove(\"dark-mode\");\n if (statusBarMeta != null) {\n statusBarMeta.content = \"default\";\n }\n if (themeColorMeta != null) {\n themeColorMeta.content = \"rgb(248, 248, 250)\";\n }\n }\n }, [enabled]);\n\n return (\n <DarkModeContext.Provider value={{ enabled, toggle }}>\n {children}\n </DarkModeContext.Provider>\n );\n}\n\nexport function DarkModeToggle() {\n const darkMode = useContext(DarkModeContext);\n const isClient = useSyncExternalStore(\n subscribeToNothing,\n () => true,\n () => false,\n );\n\n if (!isClient) {\n return <BaseView jss={{ width: 34, height: 34 }} />;\n }\n\n return (\n <Toggle\n label=\"Toggle dark mode\"\n value={darkMode.enabled}\n onValueChange={darkMode.toggle}\n onIcon=\"sun\"\n offIcon=\"moon\"\n bare\n />\n );\n}\n","import React from \"react\";\n\nimport { Row, RowProps } from \"./Row\";\nimport { cssVar } from \"./jss\";\n\nexport interface InputFrameProps extends RowProps {\n children: React.ReactNode;\n}\n\nexport const InputFrame = React.forwardRef(function InputFrame(\n { children, jss, ...rowProps }: InputFrameProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <Row\n {...rowProps}\n ref={ref}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n overflow: \"hidden\",\n border: `1px solid ${cssVar(\"--divider\")}`,\n backgroundColor: cssVar(\"--overlay-background\"),\n transition: `border-color ${cssVar(\"--transition-fast\")}, background-color ${cssVar(\"--transition-fast\")}`,\n \":hover\": {\n borderColor: cssVar(\"--strong-divider\"),\n },\n \":has(:focus-visible)\": {\n borderColor: cssVar(\"--outline\"),\n outline: `2px solid ${cssVar(\"--outline\")}`,\n outlineOffset: 1,\n },\n \":has(:disabled)\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n borderColor: cssVar(\"--divider\"),\n },\n \":has([aria-invalid=true])\": {\n borderColor: cssVar(\"--negative-text\"),\n },\n \":has([aria-invalid=true]:focus-visible)\": {\n outline: `2px solid ${cssVar(\"--negative-text\")}`,\n outlineColor: cssVar(\"--negative-text\"),\n },\n },\n jss,\n ]}\n >\n {children}\n </Row>\n );\n});\n","import React from \"react\";\n\nimport { BaseInput } from \"./BaseInput\";\nimport { cssVar } from \"./jss\";\n\nexport interface NumericInputSegmentProps {\n value: string;\n label: string;\n placeholder: string;\n length: number;\n width: string;\n id?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n autoFocus?: boolean;\n invalid?: boolean;\n onValueChange: (value: string) => void;\n onComplete?: () => void;\n onPrevious?: () => void;\n onNext?: () => void;\n}\n\nexport const NumericInputSegment = React.forwardRef(\n function NumericInputSegment(\n {\n value,\n label,\n placeholder,\n length,\n width,\n id,\n disabled,\n readOnly,\n required,\n autoFocus,\n invalid,\n onValueChange,\n onComplete,\n onPrevious,\n onNext,\n }: NumericInputSegmentProps,\n ref?: React.Ref<HTMLInputElement>,\n ) {\n return (\n <BaseInput\n id={id}\n ref={ref}\n value={value}\n placeholder={placeholder}\n inputMode=\"numeric\"\n autoComplete=\"off\"\n maxLength={length}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n aria-label={label}\n aria-invalid={invalid || undefined}\n onFocus={(event) => event.currentTarget.select()}\n onMouseUp={(event) => {\n event.preventDefault();\n event.currentTarget.select();\n }}\n onKeyDown={(event) => {\n if (\n event.key === \"ArrowRight\" &&\n event.currentTarget.selectionStart === value.length\n ) {\n onNext?.();\n } else if (\n event.key === \"ArrowLeft\" &&\n event.currentTarget.selectionStart === 0\n ) {\n onPrevious?.();\n } else if (event.key === \"Backspace\" && value === \"\") {\n onPrevious?.();\n }\n }}\n onChange={(event) => {\n const nextValue = event.target.value\n .replace(/\\D/g, \"\")\n .slice(0, length);\n onValueChange(nextValue);\n if (nextValue.length === length) onComplete?.();\n }}\n jss={{\n width,\n minWidth: 0,\n padding: `${cssVar(\"--spacing-m\")} 0`,\n border: 0,\n outline: 0,\n background: \"transparent\",\n color: cssVar(\"--primary-text\"),\n fontSize: cssVar(\"--font-medium\"),\n lineHeight: 1.2,\n textAlign: \"center\",\n \"::placeholder\": { color: cssVar(\"--subtle-text\") },\n \":disabled\": { color: cssVar(\"--subtle-text\") },\n }}\n />\n );\n },\n);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { queryFocusables } from \"./aria\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Card } from \"./Card\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n popover: {\n padding: 0,\n zIndex: 1000,\n top: `calc(100% + ${cssVar(\"--spacing-xs\")})`,\n right: \"auto\",\n left: 0,\n margin: 0,\n border: 0,\n overflow: \"visible\",\n background: \"transparent\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n card: {\n minWidth: 220,\n maxWidth: \"calc(100vw - 32px)\",\n overflow: \"hidden\",\n },\n};\n\nexport function Popover({\n children,\n close,\n}: {\n children: React.ReactNode;\n close: () => void;\n}) {\n const activeElementRef = useRef<HTMLElement | null>(null);\n\n const focusTrapRoot = useRefEffect(\n useCallback(\n (root: HTMLElement) => {\n activeElementRef.current =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n const selectedElement = root.querySelector<HTMLElement>(\n '[aria-selected=\"true\"]',\n );\n const autofocusElement = root.querySelector<HTMLElement>(\n '[data-autofocus=\"true\"]',\n );\n const [firstElement] = queryFocusables(root);\n const element = selectedElement ?? autofocusElement ?? firstElement;\n if (element) {\n element.focus();\n } else {\n root.focus();\n }\n\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n close();\n } else if (e.key === \"Tab\") {\n const focusables = queryFocusables(root).filter(\n (element) => element.tabIndex !== -1,\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n const focusedIndex = focusables.findIndex(\n (x) => x === document.activeElement,\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n } else if (e.shiftKey && focusedIndex === 0) {\n focusables[focusables.length - 1].focus();\n e.stopPropagation();\n e.preventDefault();\n } else if (!e.shiftKey && focusedIndex === focusables.length - 1) {\n // Cycle back to the first element\n focusables[0].focus();\n e.stopPropagation();\n e.preventDefault();\n } else {\n // Just do the usual thing\n }\n }\n };\n\n const click = () => {\n close();\n };\n\n // This is needed so that the trigger click is not captured immediatly, which would close the popover as it opens\n const timeout = window.setTimeout(() => {\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n }, 0);\n\n return () => {\n window.clearTimeout(timeout);\n activeElementRef.current?.focus();\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n },\n [close],\n ),\n );\n\n return (\n <Card variant=\"floating\" padding=\"small\" gap=\"none\" jss={styles.card}>\n <BaseView ref={focusTrapRoot} jss={{ width: \"100%\" }}>\n {children}\n </BaseView>\n </Card>\n );\n}\n\ninterface PopoverTriggerProps<Input> {\n PopoverComponent: (props: { close: () => void } & Input) => React.JSX.Element;\n ariaLabel?: string;\n jss?: JSS;\n jssDialog?: JSS;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n children: (props: {\n toggle: (input: Input) => void;\n expanded: boolean;\n }) => React.JSX.Element;\n}\n\nexport function PopoverTrigger<Input>({\n PopoverComponent,\n ariaLabel,\n jss,\n jssDialog,\n grow,\n shrink,\n tag,\n children,\n}: PopoverTriggerProps<Input>) {\n const [popover, setPopover] = useState<React.JSX.Element>(null);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n\n useEffect(() => {\n if (popover == null) {\n dialogRef.current?.close();\n } else {\n dialogRef.current?.show();\n }\n }, [popover]);\n\n const toggle = (input: Input) => {\n if (popover == null) {\n setPopover(\n <PopoverComponent\n {...input}\n close={() => {\n setPopover(null);\n }}\n />,\n );\n } else {\n setPopover(null);\n }\n };\n\n return (\n <BaseView\n grow={grow}\n shrink={shrink}\n tag={tag}\n relative={true}\n jss={[jss, { position: \"relative\", display: \"inline-block\" }]}\n >\n {children({ toggle, expanded: popover != null })}\n <dialog\n aria-label={ariaLabel}\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n }}\n className={toClassnames([styles.popover, jssDialog])}\n onClose={() => {\n setPopover(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {popover}\n </dialog>\n </BaseView>\n );\n}\n","const pad = (value: number) => value.toString().padStart(2, \"0\");\n\nexport function formatDateInputValue(date: Date): string {\n return `${date.getFullYear().toString().padStart(4, \"0\")}-${pad(\n date.getMonth() + 1\n )}-${pad(date.getDate())}`;\n}\n\nexport function parseDateInputValue(value: string): Date {\n const [year, month, day] = value.split(\"-\").map(Number);\n return new Date(year, month - 1, day);\n}\n\nexport function formatDatetimeInputValue(date: Date): string {\n return `${formatDateInputValue(date)}T${pad(date.getHours())}:${pad(\n date.getMinutes()\n )}`;\n}\n\nexport function parseDatetimeInputValue(value: string): Date {\n const [date, time] = value.split(\"T\");\n const [year, month, day] = date.split(\"-\").map(Number);\n const [hour, minute] = time.split(\":\").map(Number);\n return new Date(year, month - 1, day, hour, minute);\n}\n\nexport function formatTimeInputValue(date: Date): string {\n return `${pad(date.getHours())}:${pad(date.getMinutes())}`;\n}\n","import React, { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Button } from \"./Button\";\nimport { Column } from \"./Column\";\nimport { IconButton } from \"./IconButton\";\nimport { InputFrame } from \"./InputFrame\";\nimport { NumericInputSegment } from \"./NumericInputSegment\";\nimport { Popover, PopoverTrigger } from \"./Popover\";\nimport { Row } from \"./Row\";\nimport { Label, Span } from \"./Text\";\nimport { JSS, cssVar } from \"./jss\";\nimport { formatDateInputValue } from \"./dateInputValue\";\n\ntype DatePart = \"day\" | \"month\" | \"year\";\ntype DateSegments = Record<DatePart, string>;\n\nexport interface DateInputProps {\n date: Date | null;\n onDateChange: (date: Date | null) => void;\n label?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n name?: string;\n locale?: string;\n min?: Date;\n max?: Date;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n jss?: JSS;\n}\n\nconst partLength: Record<DatePart, number> = {\n day: 2,\n month: 2,\n year: 4,\n};\n\nconst partPlaceholder: Record<DatePart, string> = {\n day: \"DD\",\n month: \"MM\",\n year: \"YYYY\",\n};\n\nconst emptySegments = (): DateSegments => ({ day: \"\", month: \"\", year: \"\" });\n\nfunction getSegments(date: Date | null): DateSegments {\n if (date == null) return emptySegments();\n\n return {\n day: String(date.getDate()).padStart(2, \"0\"),\n month: String(date.getMonth() + 1).padStart(2, \"0\"),\n year: String(date.getFullYear()).padStart(4, \"0\"),\n };\n}\n\nfunction localDate(year: number, month: number, day: number): Date {\n const date = new Date(0, month - 1, day, 12);\n date.setFullYear(year);\n return date;\n}\n\nfunction startOfDay(date: Date): number {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n ).getTime();\n}\n\nfunction isWithinRange(date: Date, min?: Date, max?: Date): boolean {\n const value = startOfDay(date);\n return (\n (min == null || value >= startOfDay(min)) &&\n (max == null || value <= startOfDay(max))\n );\n}\n\nfunction parseSegments(\n segments: DateSegments,\n min?: Date,\n max?: Date,\n): Date | null {\n if (\n Object.entries(segments).some(\n ([part, value]) => value.length !== partLength[part as DatePart],\n )\n ) {\n return null;\n }\n\n const year = Number(segments.year);\n const month = Number(segments.month);\n const day = Number(segments.day);\n const date = localDate(year, month, day);\n\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day ||\n !isWithinRange(date, min, max)\n ) {\n return null;\n }\n\n return date;\n}\n\nfunction dateKey(date: Date): string {\n return formatDateInputValue(date);\n}\n\nfunction addDays(date: Date, days: number): Date {\n return localDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate() + days,\n );\n}\n\nfunction addMonths(date: Date, months: number): Date {\n return localDate(date.getFullYear(), date.getMonth() + 1 + months, 1);\n}\n\nfunction shiftMonths(date: Date, months: number): Date {\n const month = addMonths(date, months);\n const lastDay = new Date(\n month.getFullYear(),\n month.getMonth() + 1,\n 0,\n ).getDate();\n return localDate(\n month.getFullYear(),\n month.getMonth() + 1,\n Math.min(date.getDate(), lastDay),\n );\n}\n\nfunction firstDayOfWeek(locale?: string): number {\n try {\n const localeInfo = new Intl.Locale(locale);\n const weekInfo =\n // Modern engines expose getWeekInfo(); older ones used weekInfo.\n (\n localeInfo as Intl.Locale & { getWeekInfo?: () => { firstDay: number } }\n ).getWeekInfo?.() ??\n (localeInfo as Intl.Locale & { weekInfo?: { firstDay: number } })\n .weekInfo;\n return (weekInfo?.firstDay ?? 1) % 7;\n } catch {\n return 1;\n }\n}\n\nfunction DateCalendar({\n date,\n locale,\n min,\n max,\n onSelect,\n}: {\n date: Date | null;\n locale?: string;\n min?: Date;\n max?: Date;\n onSelect: (date: Date) => void;\n}) {\n const today = useMemo(() => new Date(), []);\n const [visibleMonth, setVisibleMonth] = useState(() =>\n localDate((date ?? today).getFullYear(), (date ?? today).getMonth() + 1, 1),\n );\n const gridRef = useRef<HTMLElement | null>(null);\n const pendingFocus = useRef<string | null>(null);\n const headingId = useId();\n const weekStart = firstDayOfWeek(locale);\n const weekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"short\" }),\n [locale],\n );\n const fullWeekdayFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { weekday: \"long\" }),\n [locale],\n );\n const dateFormatter = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n }),\n [locale],\n );\n const monthFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, { year: \"numeric\", month: \"long\" }),\n [locale],\n );\n\n const firstOfMonth = localDate(\n visibleMonth.getFullYear(),\n visibleMonth.getMonth() + 1,\n 1,\n );\n const offset = (firstOfMonth.getDay() - weekStart + 7) % 7;\n const firstGridDate = addDays(firstOfMonth, -offset);\n const days = Array.from({ length: 42 }, (_, index) =>\n addDays(firstGridDate, index),\n );\n const weekdays = Array.from({ length: 7 }, (_, index) =>\n weekdayFormatter.format(\n addDays(new Date(2024, 0, 7, 12), weekStart + index),\n ),\n );\n\n useEffect(() => {\n if (pendingFocus.current == null) return;\n const key = pendingFocus.current;\n pendingFocus.current = null;\n requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-calendar-date=\"${key}\"]`)\n ?.focus();\n });\n }, [visibleMonth]);\n\n const focusDate = (nextDate: Date) => {\n if (!isWithinRange(nextDate, min, max)) return;\n\n const key = dateKey(nextDate);\n const inVisibleMonth =\n nextDate.getFullYear() === visibleMonth.getFullYear() &&\n nextDate.getMonth() === visibleMonth.getMonth();\n\n if (inVisibleMonth) {\n const element = gridRef.current?.querySelector<HTMLElement>(\n `[data-calendar-date=\"${key}\"]`,\n );\n if (element) {\n element.focus();\n return;\n }\n }\n\n pendingFocus.current = key;\n setVisibleMonth(\n localDate(nextDate.getFullYear(), nextDate.getMonth() + 1, 1),\n );\n };\n\n const changeMonth = (amount: number) => {\n const nextMonth = addMonths(visibleMonth, amount);\n const preferredDay = date?.getDate() ?? today.getDate();\n const lastDay = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth() + 1,\n 0,\n ).getDate();\n const nextFocus = localDate(\n nextMonth.getFullYear(),\n nextMonth.getMonth() + 1,\n Math.min(preferredDay, lastDay),\n );\n pendingFocus.current = dateKey(nextFocus);\n setVisibleMonth(nextMonth);\n };\n\n const onGridKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n const target = (event.target as HTMLElement).dataset.calendarDate;\n if (target == null) return;\n\n const [year, month, day] = target.split(\"-\").map(Number);\n const focusedDate = localDate(year, month, day);\n let nextDate: Date | null = null;\n\n switch (event.key) {\n case \"ArrowLeft\":\n nextDate = addDays(focusedDate, -1);\n break;\n case \"ArrowRight\":\n nextDate = addDays(focusedDate, 1);\n break;\n case \"ArrowUp\":\n nextDate = addDays(focusedDate, -7);\n break;\n case \"ArrowDown\":\n nextDate = addDays(focusedDate, 7);\n break;\n case \"Home\":\n nextDate = addDays(\n focusedDate,\n -((focusedDate.getDay() - weekStart + 7) % 7),\n );\n break;\n case \"End\":\n nextDate = addDays(\n focusedDate,\n 6 - ((focusedDate.getDay() - weekStart + 7) % 7),\n );\n break;\n case \"PageUp\":\n nextDate = shiftMonths(focusedDate, event.shiftKey ? -12 : -1);\n break;\n case \"PageDown\":\n nextDate = shiftMonths(focusedDate, event.shiftKey ? 12 : 1);\n break;\n }\n\n if (nextDate != null) {\n event.preventDefault();\n event.stopPropagation();\n focusDate(nextDate);\n }\n };\n\n return (\n <Column gap=\"small\" jss={{ width: 280 }}>\n <Row align=\"center\" justify=\"space-between\">\n <IconButton\n bare\n color=\"secondary\"\n icon=\"chevron-left\"\n aria-label=\"Previous month\"\n onClick={() => changeMonth(-1)}\n />\n <BaseView id={headingId} aria-live=\"polite\">\n <Span bold>{monthFormatter.format(visibleMonth)}</Span>\n </BaseView>\n <IconButton\n bare\n color=\"secondary\"\n icon=\"chevron-right\"\n aria-label=\"Next month\"\n onClick={() => changeMonth(1)}\n />\n </Row>\n <BaseView\n ref={gridRef}\n role=\"grid\"\n aria-labelledby={headingId}\n onKeyDown={onGridKeyDown}\n >\n <Row role=\"row\">\n {weekdays.map((weekday, index) => (\n <BaseView\n key={`${weekday}-${index}`}\n role=\"columnheader\"\n aria-label={fullWeekdayFormatter.format(\n addDays(new Date(2024, 0, 7, 12), weekStart + index),\n )}\n jss={{ width: 40, textAlign: \"center\" }}\n >\n <Span size=\"small\" color=\"secondary\">\n {weekday}\n </Span>\n </BaseView>\n ))}\n </Row>\n {Array.from({ length: 6 }, (_, week) => (\n <Row role=\"row\" key={week}>\n {days.slice(week * 7, week * 7 + 7).map((day) => {\n const selected = date != null && dateKey(day) === dateKey(date);\n const current = dateKey(day) === dateKey(today);\n const outsideMonth = day.getMonth() !== visibleMonth.getMonth();\n const unavailable = !isWithinRange(day, min, max);\n\n return (\n <Button\n key={dateKey(day)}\n role=\"gridcell\"\n data-calendar-date={dateKey(day)}\n data-autofocus={selected || (date == null && current)}\n aria-label={dateFormatter.format(day)}\n aria-selected={selected}\n tabIndex={selected || (date == null && current) ? 0 : -1}\n disabled={unavailable}\n bare={!selected}\n color={selected ? \"primary\" : \"secondary\"}\n jss={{\n width: 40,\n height: 36,\n padding: 0,\n borderRadius: cssVar(\"--border-radius-m\"),\n opacity: outsideMonth ? 0.45 : 1,\n outline:\n current && !selected\n ? `1px solid ${cssVar(\"--outline\")}`\n : \"none\",\n outlineOffset: -3,\n }}\n onClick={() => onSelect(day)}\n >\n {String(day.getDate())}\n </Button>\n );\n })}\n </Row>\n ))}\n </BaseView>\n </Column>\n );\n}\n\nexport const DateInput = React.forwardRef(function DateInput(\n {\n date,\n onDateChange,\n label,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n id: providedId,\n name,\n locale = \"en-GB\",\n min,\n max,\n disabled = false,\n required = false,\n readOnly = false,\n autoFocus = false,\n jss,\n }: DateInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const labelId = `${id}-label`;\n const dateTimestamp = date?.getTime() ?? null;\n const [segments, setSegments] = useState(() => getSegments(date));\n const [draftInvalid, setDraftInvalid] = useState(false);\n const [syncedDateTimestamp, setSyncedDateTimestamp] = useState(dateTimestamp);\n const inputRefs = useRef<Partial<Record<DatePart, HTMLInputElement>>>({});\n const parts = useMemo(\n () =>\n new Intl.DateTimeFormat(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n })\n .formatToParts(new Date(2000, 10, 22))\n .filter((part) =>\n [\"day\", \"month\", \"year\", \"literal\"].includes(part.type),\n ),\n [locale],\n );\n const orderedParts = parts.filter(\n (part): part is Intl.DateTimeFormatPart & { type: DatePart } =>\n part.type === \"day\" || part.type === \"month\" || part.type === \"year\",\n );\n\n if (dateTimestamp !== syncedDateTimestamp) {\n setSyncedDateTimestamp(dateTimestamp);\n setSegments(getSegments(date));\n setDraftInvalid(false);\n }\n\n const updateSegment = (part: DatePart, rawValue: string) => {\n const value = rawValue.replace(/\\D/g, \"\").slice(0, partLength[part]);\n const next = { ...segments, [part]: value };\n setSegments(next);\n const complete = Object.entries(next).every(\n ([key, segment]) => segment.length === partLength[key as DatePart],\n );\n\n if (Object.values(next).every((segment) => segment === \"\")) {\n setDraftInvalid(false);\n onDateChange(null);\n return;\n }\n\n const parsed = parseSegments(next, min, max);\n setDraftInvalid(complete && parsed == null);\n if (parsed != null) onDateChange(parsed);\n };\n\n const field = (\n <PopoverTrigger<object>\n ariaLabel=\"Choose date\"\n grow\n jss={[{ width: \"100%\" }, jss]}\n jssDialog={{ left: \"auto\", right: 0 }}\n PopoverComponent={({ close }) => (\n <Popover close={close}>\n <DateCalendar\n date={date}\n locale={locale}\n min={min}\n max={max}\n onSelect={(nextDate) => {\n setSegments(getSegments(nextDate));\n setDraftInvalid(false);\n onDateChange(nextDate);\n close();\n }}\n />\n </Popover>\n )}\n >\n {({ toggle, expanded }) => (\n <InputFrame\n align=\"center\"\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : (ariaLabel ?? \"Date\")}\n aria-describedby={ariaDescribedBy}\n >\n <Row align=\"center\" padding={[\"none\", \"medium\"]} grow>\n {parts.map((part, index) => {\n if (part.type === \"literal\") {\n return (\n <Span key={`${part.type}-${index}`} color=\"secondary\">\n {part.value.trim() || \"/\"}\n </Span>\n );\n }\n\n if (\n part.type !== \"day\" &&\n part.type !== \"month\" &&\n part.type !== \"year\"\n ) {\n return null;\n }\n\n const datePart = part.type;\n const firstPart = orderedParts[0]?.type === datePart;\n const partIndex = orderedParts.findIndex(\n (item) => item.type === datePart,\n );\n return (\n <NumericInputSegment\n key={datePart}\n id={firstPart ? id : `${id}-${datePart}`}\n ref={(element) => {\n inputRefs.current[datePart] = element;\n if (firstPart) {\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n }\n }}\n value={segments[datePart]}\n label={datePart}\n placeholder={partPlaceholder[datePart]}\n length={partLength[datePart]}\n width={datePart === \"year\" ? \"6ch\" : \"4ch\"}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus && firstPart}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(datePart, value)}\n onComplete={() =>\n inputRefs.current[\n orderedParts[partIndex + 1]?.type\n ]?.focus()\n }\n onPrevious={() =>\n inputRefs.current[\n orderedParts[partIndex - 1]?.type\n ]?.focus()\n }\n onNext={() =>\n inputRefs.current[\n orderedParts[partIndex + 1]?.type\n ]?.focus()\n }\n />\n );\n })}\n </Row>\n <IconButton\n bare\n color=\"secondary\"\n icon=\"calendar-days\"\n disabled={disabled || readOnly}\n aria-label={\n date == null\n ? \"Choose date\"\n : `Change date, ${date.toLocaleDateString(locale)}`\n }\n aria-haspopup=\"dialog\"\n aria-expanded={expanded}\n onClick={() => toggle({})}\n />\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={date == null ? \"\" : formatDateInputValue(date)}\n />\n )}\n </InputFrame>\n )}\n </PopoverTrigger>\n );\n\n if (label == null) return field;\n\n return (\n <Column gap=\"small\">\n <Label id={labelId} htmlFor={id}>\n {label}\n </Label>\n {field}\n </Column>\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\nimport {\n formatDatetimeInputValue,\n parseDatetimeInputValue,\n} from \"./dateInputValue\";\n\nexport interface DatetimeInputProps extends BaseInputProps {\n onDateChange: (date: Date) => void;\n date: Date;\n icon?: IconType;\n addOn?: ReactNode;\n onChange?: undefined;\n jss?: JSS;\n}\n\nconst styles = {\n root: {\n backgroundColor: \"var(--primary-background)\",\n },\n input: {\n padding: \"var(--spacing-m)\",\n flexGrow: 1,\n backgroundColor: \"var(--primary-background)\",\n color: \"var(--primary-text)\",\n outline: \"none\",\n border: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n \"::placeholder\": {\n color: \"var(--subtle-text);\",\n },\n \":disabled\": {\n color: \"var(--subtle-text);\",\n },\n },\n};\n\nexport const DatetimeInput = React.forwardRef(function DatetimeInput(\n { date, onDateChange, jss, icon, addOn, ...inputProps }: DatetimeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <Row jss={styles.root}>\n {icon && (\n <Box padding=\"medium\">\n <Icon size=\"medium\" color=\"secondary\" icon={icon} />\n </Box>\n )}\n <BaseInput\n {...inputProps}\n type=\"datetime-local\"\n ref={ref}\n value={formatDatetimeInputValue(date)}\n onChange={(e) => {\n if (e.target.value) {\n onDateChange(parseDatetimeInputValue(e.target.value));\n }\n }}\n jss={[styles.input, jss]}\n />\n {addOn}\n </Row>\n );\n});\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n width: \"100%\",\n borderBottom: \"1px solid var(--divider)\",\n },\n};\n\nexport function ListDivider() {\n return <BaseView jss={styles.root} />;\n}\n","import React, { useCallback, useContext, useMemo, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Text } from \"./Text\";\nimport { ListDivider } from \"./ListDivider\";\nimport { Column } from \"./Column\";\nimport { Row } from \"./Row\";\nimport { IconButton } from \"./IconButton\";\nimport { toClassnames } from \"./jss\";\n\nconst styles = {\n dialog: {\n border: \"1px solid var(--divider)\",\n borderRadius: \"var(--border-radius-l)\",\n padding: 0,\n boxShadow: \"var(--shadow-lg)\",\n animation: \"dialogFadeIn 0.2s ease-out\",\n \"::backdrop\": {\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n animation: \"backdropFadeIn 0.2s ease-out\",\n },\n },\n root: {\n display: \"grid\",\n width: \"calc(100vw - 48px)\",\n gridTemplateAreas: `\n \"header\"\n \"content\"\n `,\n \"@media (min-width: 750px)\": {\n maxWidth: 750,\n },\n backgroundColor: \"var(--secondary-background)\",\n },\n header: {\n gridArea: \"header\",\n },\n content: {\n gridArea: \"content\",\n },\n};\n\nexport const Dialog = ({\n label,\n children,\n close,\n}: {\n label: string;\n children: React.JSX.Element;\n close: () => void;\n}) => {\n return (\n <BaseView jss={styles.root}>\n <Column jss={styles.header}>\n <Row padding=\"medium\" justify=\"space-between\" align=\"center\">\n <Text size=\"medium\" color=\"secondary\">\n {label}\n </Text>\n <IconButton\n autoFocus={true}\n bare={true}\n icon=\"x\"\n onClick={close}\n color=\"secondary\"\n />\n </Row>\n <ListDivider />\n </Column>\n <BaseView jss={styles.content}>{children}</BaseView>\n </BaseView>\n );\n};\n\ntype DialogElement = React.JSX.Element | null;\n\nconst DialogContext = React.createContext<{\n setDialog: React.Dispatch<React.SetStateAction<DialogElement>>;\n}>({\n setDialog: () => {},\n});\n\nexport function DialogProvider({ children }: { children: React.ReactNode }) {\n const [dialog, setDialog] = useState<DialogElement>(null);\n const value = useMemo(() => ({ setDialog }), []);\n\n return (\n <DialogContext.Provider value={value}>\n {dialog}\n {children}\n </DialogContext.Provider>\n );\n}\n\nexport function useDialog<Input>(\n DialogComponent: (props: { close: () => void } & Input) => React.JSX.Element,\n options: { closeOnOutsideClick: boolean },\n) {\n const { setDialog } = useContext(DialogContext);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n const activeElementRef = useRef<HTMLElement | null>(null);\n\n const close = useCallback(() => {\n dialogRef.current?.close();\n activeElementRef.current?.focus();\n dialogRef.current = null;\n activeElementRef.current = null;\n setDialog(null);\n }, [setDialog]);\n\n const open = (input: Input) => {\n activeElementRef.current =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n setDialog(\n <dialog\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n ref?.showModal();\n }}\n className={toClassnames(styles.dialog)}\n onClose={() => {\n close();\n }}\n onClick={(e) => {\n if (dialogRef.current == null) {\n return;\n }\n\n const dialogDimensions = dialogRef.current.getBoundingClientRect();\n\n if (options.closeOnOutsideClick === false) {\n return;\n }\n\n if (\n e.clientX < dialogDimensions.left ||\n e.clientX > dialogDimensions.right ||\n e.clientY > dialogDimensions.bottom ||\n e.clientY < dialogDimensions.top\n ) {\n dialogRef.current.close();\n }\n }}\n >\n <DialogComponent {...input} close={close} />\n </dialog>,\n );\n };\n\n return {\n open,\n close,\n };\n}\n","export type Callback<Value> = (value: Value) => void;\n\nexport type Subscribe<Value> = (callback: Callback<Value>) => () => void;\n\nexport function createEmitter<Value>() {\n const subscriptions = new Set<Callback<Value>>();\n\n const subscribe: Subscribe<Value> = (callback: Callback<Value>) => {\n subscriptions.add(callback);\n\n return () => {\n subscriptions.delete(callback);\n };\n };\n\n const emit = (value: Value) => {\n subscriptions.forEach((subscription) => {\n subscription(value);\n });\n };\n\n return {\n subscribe,\n emit,\n };\n}\n","export function guid(): string {\n return \"ID-xxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import React from \"react\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\n\nexport interface IconLinkProps extends Omit<\n BaseLinkProps,\n \"border\" | \"padding\"\n> {\n icon: IconType;\n}\n\nexport const IconLink = React.forwardRef(function IconLink(\n { icon, color, bare, disabled, jss, ...otherProps }: IconLinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 34,\n width: 34,\n borderRadius: 17,\n textDecoration: \"none\",\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size=\"medium\"\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n </BaseLink>\n );\n});\n","import React, { ReactNode } from \"react\";\n\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor, getCSSColor } from \"./Interactable\";\nimport { Align, Gap, Justify, cssVar } from \"./jss\";\n\nexport interface LinkProps extends Omit<BaseLinkProps, \"border\" | \"padding\"> {\n children?: ReactNode;\n color: InteractableColor;\n icon?: IconType;\n underline?: boolean;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n inline?: boolean;\n}\n\nexport const Link = React.forwardRef(function Link(\n {\n children,\n color,\n bare,\n disabled,\n icon,\n underline,\n iconPosition = \"left\",\n align = \"center\",\n gap = \"medium\",\n justify = \"center\",\n jss,\n inline = true,\n ...otherProps\n }: LinkProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding=\"none\"\n jss={[\n {\n height: 34,\n padding: \"0 14px\",\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n display: inline ? \"inline-flex\" : \"flex\",\n textDecoration: \"none\",\n },\n underline && {\n textDecorationLine: \"underline\",\n textDecorationThickness: \"2px\",\n textUnderlineOffset: \"2px\",\n textDecorationColor: getCSSColor(color, disabled, bare),\n },\n jss,\n ]}\n >\n <Row\n jss={{\n display: inline ? \"inline-flex\" : \"flex\",\n }}\n grow={true}\n align={align}\n gap={gap}\n justify={justify}\n >\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n jss={{\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n }}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size=\"medium\"\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseLink>\n );\n});\n","import React from \"react\";\nimport { BaseList, BaseListProps } from \"./BaseList\";\nimport { useNavigation } from \"./useNavigation\";\n\nexport interface ListProps extends BaseListProps {\n ariaLabel: string;\n autofocus?: boolean;\n role?: undefined;\n navigation?: boolean;\n}\n\nexport function List({\n ariaLabel,\n jss,\n gap = \"small\",\n autofocus = false,\n navigation = true,\n ...otherProps\n}: ListProps) {\n const rootRef = useNavigation({ autofocus, enabled: navigation });\n\n return (\n <BaseList\n role=\"grid\"\n aria-label={ariaLabel}\n ref={rootRef}\n jss={[{ overflow: \"hidden\" }, jss]}\n gap={gap}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseButton } from \"./BaseButton\";\n\nexport interface ListButtonItemProps extends Omit<\n BaseListItemProps,\n \"children\" | \"onClick\"\n> {\n color?: InteractableColor;\n onClick: () => void;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n children?: void;\n}\n\nexport const ListButtonItem = React.forwardRef(function ListButtonItem(\n {\n onClick,\n color = \"secondary\",\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n ...otherProps\n }: ListButtonItemProps,\n ref?: React.Ref<HTMLButtonElement>,\n) {\n return (\n <BaseListItem\n disabled={disabled}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n aria-selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseButton\n padding={padding}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color=\"secondary\"\n ref={ref}\n jss={getInteractableListItemJSS({ selected })}\n onClick={onClick}\n >\n {content}\n </BaseButton>\n )}\n </BaseListItem>\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseListItem } from \"./BaseListItem\";\nimport { Position } from \"./jss\";\n\nexport function ListHeaderItem({\n highlight,\n headline,\n body,\n addOn,\n addOnPosition,\n}: {\n highlight?: boolean;\n headline: string;\n body?: string;\n addOn?: ReactNode;\n addOnPosition?: Position;\n}) {\n return (\n <BaseListItem\n headline={headline}\n headlineColor={highlight ? \"highlight\" : \"primary\"}\n headlineBold={true}\n body={body}\n addOn={addOn}\n addOnPosition={addOnPosition}\n >\n {({ content }) => content}\n </BaseListItem>\n );\n}\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\n\nexport interface ListItemProps extends Omit<BaseListItemProps, \"children\"> {\n headline: string;\n body?: string;\n children?: void;\n}\n\nexport const ListItem = React.forwardRef(function ListItem(\n {\n bodyEllipsis = false,\n bodySize = \"medium\",\n padding = \"none\",\n ...props\n }: ListItemProps,\n ref?: React.Ref<HTMLLIElement>,\n) {\n return (\n <BaseListItem\n {...props}\n bodyEllipsis={bodyEllipsis}\n bodySize={bodySize}\n padding={padding}\n jss={props.jss}\n ref={ref}\n >\n {({ content }) => content}\n </BaseListItem>\n );\n});\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseLink } from \"./BaseLink\";\n\nexport interface ListLinkItemProps extends Omit<\n BaseListItemProps,\n \"children\" | \"onClick\"\n> {\n color?: InteractableColor;\n children?: void;\n onClick?: () => void;\n href: string;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n target?: string;\n}\n\nexport const ListLinkItem = React.forwardRef(function ListLinkItem(\n {\n onClick,\n href,\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n color = \"secondary\",\n target,\n ...otherProps\n }: ListLinkItemProps,\n ref?: React.Ref<HTMLAnchorElement>,\n) {\n return (\n <BaseListItem\n disabled={disabled}\n aria-selected={selected}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseLink\n target={target}\n padding={padding}\n aria-current={selected ? \"page\" : undefined}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color={color}\n href={href}\n ref={ref}\n jss={getInteractableListItemJSS({ selected })}\n onClick={onClick}\n >\n {content}\n </BaseLink>\n )}\n </BaseListItem>\n );\n});\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n height: \"var(--spacing-xl)\",\n backgroundColor: \"var(--secondary-background)\",\n width: \"100%\",\n },\n};\n\nexport function ListSpacer() {\n return <BaseView jss={styles.root} />;\n}\n","import { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport { Color, JSS, getBackground } from \"./jss\";\n\nexport function MenuIcon({ open, color }: { open: boolean; color: Color }) {\n return (\n <Column gap=\"small\">\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? 8 : 0,\n }}\n />\n <Bar\n color={color}\n jss={{\n opacity: open ? 0 : 1,\n }}\n />\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(-135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? -8 : 0,\n }}\n />\n </Column>\n );\n}\n\nfunction Bar({ jss, color }: { jss: JSS; color: Color }) {\n return (\n <BaseView\n jss={[\n {\n position: \"relative\",\n width: 24,\n height: 4,\n borderRadius: \"1px\",\n transition: \"all 200ms ease-out\",\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","import React, { ReactNode } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport {\n JSS,\n cssVar,\n desktop,\n getMaterial,\n laptop,\n mobile,\n tablet,\n} from \"./jss\";\n\nexport interface NavigationSplitViewProps {\n navigation: ReactNode;\n children: ReactNode;\n compactHeader?: ReactNode;\n compactNavigation?: ReactNode;\n navigationVisibleInCompact?: boolean;\n navigationWidth?: string;\n navigationInset?: string;\n jss?: JSS;\n}\n\nconst compactLayout = (hasCompactNavigation: boolean): JSS => ({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n paddingBottom: hasCompactNavigation ? cssVar(\"--nav-bar-height\") : 0,\n});\n\nconst expandedLayout = (navigationInset: string): JSS => ({\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: navigationInset,\n padding: navigationInset,\n});\n\nexport function NavigationSplitView({\n navigation,\n children,\n compactHeader,\n compactNavigation,\n navigationVisibleInCompact = false,\n navigationWidth = \"320px\",\n navigationInset = \"12px\",\n jss,\n}: NavigationSplitViewProps) {\n return (\n <BaseView\n jss={[\n {\n position: \"relative\",\n width: \"100%\",\n height: \"auto\",\n minWidth: 0,\n minHeight: \"100dvh\",\n overflow: \"visible\",\n },\n mobile(compactLayout(compactNavigation != null)),\n tablet(compactLayout(compactNavigation != null)),\n laptop(expandedLayout(navigationInset)),\n desktop(expandedLayout(navigationInset)),\n jss,\n ]}\n >\n <BaseView\n jss={[\n {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n zIndex: 1,\n },\n mobile({\n display: navigationVisibleInCompact ? \"block\" : \"none\",\n width: \"100%\",\n flex: \"1 1 auto\",\n order: 1,\n }),\n tablet({\n display: navigationVisibleInCompact ? \"block\" : \"none\",\n width: \"100%\",\n flex: \"1 1 auto\",\n order: 1,\n }),\n laptop({\n display: \"block\",\n width: navigationWidth,\n flex: `0 0 ${navigationWidth}`,\n order: 0,\n position: \"sticky\",\n top: navigationInset,\n height: `calc(100dvh - ${navigationInset} - ${navigationInset})`,\n overflow: \"visible\",\n }),\n desktop({\n display: \"block\",\n width: navigationWidth,\n flex: `0 0 ${navigationWidth}`,\n order: 0,\n position: \"sticky\",\n top: navigationInset,\n height: `calc(100dvh - ${navigationInset} - ${navigationInset})`,\n overflow: \"visible\",\n }),\n ]}\n >\n {navigation}\n </BaseView>\n\n <BaseView\n jss={[\n {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n mobile({\n display: navigationVisibleInCompact ? \"none\" : \"block\",\n width: \"100%\",\n order: 1,\n }),\n tablet({\n display: navigationVisibleInCompact ? \"none\" : \"block\",\n width: \"100%\",\n order: 1,\n }),\n laptop({ display: \"block\", flex: \"1 1 0\", order: 0 }),\n desktop({ display: \"block\", flex: \"1 1 0\", order: 0 }),\n ]}\n >\n {children}\n </BaseView>\n\n <BaseView\n jss={[\n mobile({\n display: \"block\",\n position: \"sticky\",\n top: 0,\n width: \"100%\",\n order: 0,\n zIndex: 2,\n ...getMaterial(\"aurora\"),\n }),\n tablet({\n display: \"block\",\n position: \"sticky\",\n top: 0,\n width: \"100%\",\n order: 0,\n zIndex: 2,\n ...getMaterial(\"aurora\"),\n }),\n laptop({ display: \"none\", position: \"static\" }),\n desktop({ display: \"none\", position: \"static\" }),\n ]}\n >\n {compactHeader}\n </BaseView>\n\n <BaseView\n jss={[\n mobile({\n display: \"block\",\n position: \"fixed\",\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 2,\n }),\n tablet({\n display: \"block\",\n position: \"fixed\",\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 2,\n }),\n laptop({ display: \"none\", position: \"static\" }),\n desktop({ display: \"none\", position: \"static\" }),\n ]}\n >\n {compactNavigation}\n </BaseView>\n </BaseView>\n );\n}\n","const LETTERS_26 = [\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n];\n\nexport function numberToBase(\n number: number,\n base: Array<string> = LETTERS_26,\n): string {\n if (number <= -1) {\n return \"\";\n }\n\n const result = [];\n\n // To make numbers 1 indexed\n number += 1;\n\n while (number >= base.length) {\n const index = number % base.length;\n number = Math.floor(number / base.length) - 1;\n result.push(base[index]);\n }\n\n result.push(base[number]);\n\n return result.reverse().join(\"\");\n}\n","import React, { useRef, useCallback, ReactElement } from \"react\";\n\nexport function OnVisible({\n children,\n onVisible,\n}: {\n children: (refCallback: React.RefCallback<HTMLElement>) => ReactElement;\n onVisible: () => void;\n}) {\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n const refCallback = useCallback((element) => {\n if (element == null) {\n return;\n }\n\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n onVisible();\n }\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n }\n );\n\n intersectionObserverRef.current = intersectionObserver;\n intersectionObserver.observe(element);\n\n return () => {\n intersectionObserver.unobserve(element);\n intersectionObserverRef.current = null;\n };\n }, [onVisible]);\n\n return children(refCallback);\n}\n","import React from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Color, JSS, cssVar, getBackground } from \"./jss\";\n\nexport type ProgressBarSize = \"small\" | \"medium\";\n\nexport interface ProgressBarProps {\n progress: number;\n color?: Color;\n size?: ProgressBarSize;\n jss?: JSS;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n width: \"100%\",\n position: \"relative\",\n backgroundColor: cssVar(\"--secondary-background\"),\n borderRadius: 999,\n overflow: \"hidden\",\n },\n fill: {\n borderRadius: \"inherit\",\n position: \"absolute\",\n transformOrigin: \"center left\",\n transition: `transform ${cssVar(\"--transition-normal\")}`,\n inset: 0,\n \":dir(rtl)\": {\n transformOrigin: \"center right\",\n },\n \"@media (prefers-reduced-motion: reduce)\": {\n transition: \"none\",\n },\n },\n};\n\nconst sizes: { [size in ProgressBarSize]: number } = {\n small: 4,\n medium: 8,\n};\n\nexport function ProgressBar({\n color = \"highlight\",\n progress,\n size = \"medium\",\n jss,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: ProgressBarProps) {\n const value = Number.isFinite(progress)\n ? Math.min(1, Math.max(0, progress))\n : 0;\n\n return (\n <BaseView\n role=\"progressbar\"\n aria-label={ariaLabelledby ? undefined : (ariaLabel ?? \"Progress\")}\n aria-labelledby={ariaLabelledby}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(value * 100)}\n jss={[styles.root, { height: sizes[size] }, jss]}\n >\n <BaseView\n jss={[styles.fill, getBackground(color)]}\n style={{ transform: `scaleX(${value})` }}\n />\n </BaseView>\n );\n}\n","import React from \"react\";\n\nimport { Color, JSS, cssVar, getColorValue, toClassnames } from \"./jss\";\n\nexport type ProgressCircleSize = \"small\" | \"medium\";\n\nexport interface ProgressCircleProps {\n progress: number;\n color?: Color;\n size?: ProgressCircleSize;\n jss?: JSS;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n display: \"block\",\n },\n track: {\n fill: \"none\",\n stroke: cssVar(\"--secondary-background\"),\n },\n fill: {\n fill: \"none\",\n transform: \"rotate(-90deg)\",\n transformOrigin: \"50% 50%\",\n transition: `stroke-dashoffset ${cssVar(\"--transition-normal\")}`,\n \"@media (prefers-reduced-motion: reduce)\": {\n transition: \"none\",\n },\n },\n};\n\nconst sizes: {\n [size in ProgressCircleSize]: { diameter: number; stroke: number };\n} = {\n small: { diameter: 16, stroke: 2 },\n medium: { diameter: 32, stroke: 4 },\n};\n\nexport function ProgressCircle({\n progress,\n color = \"highlight\",\n size = \"medium\",\n jss,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n}: ProgressCircleProps) {\n const value = Number.isFinite(progress)\n ? Math.min(1, Math.max(0, progress))\n : 0;\n const { diameter, stroke } = sizes[size];\n const radius = (diameter - stroke) / 2;\n const center = diameter / 2;\n const circumference = radius * 2 * Math.PI;\n\n return (\n <svg\n role=\"progressbar\"\n aria-label={ariaLabelledby ? undefined : (ariaLabel ?? \"Progress\")}\n aria-labelledby={ariaLabelledby}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(value * 100)}\n className={toClassnames([styles.root, jss])}\n width={diameter}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n >\n <circle\n className={toClassnames(styles.track)}\n strokeWidth={stroke}\n r={radius}\n cx={center}\n cy={center}\n />\n <circle\n className={toClassnames(styles.fill)}\n stroke={getColorValue(color)}\n strokeWidth={stroke}\n strokeLinecap={value === 0 ? \"butt\" : \"round\"}\n strokeDasharray={circumference}\n strokeDashoffset={circumference * (1 - value)}\n r={radius}\n cx={center}\n cy={center}\n />\n </svg>\n );\n}\n","import { useState, useCallback, useEffect, useRef } from \"react\";\nimport { isServer } from \"./isServer\";\n\nexport function hasCookie(key: string): boolean {\n return (\n document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`)).length > 0\n );\n}\n\nexport function getCookie<T>(\n key: string,\n deserialize: (s: string) => T = JSON.parse\n): T {\n return document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`))\n .map((s) => s.split(\"=\")[1])\n .map((s) => deserialize(s))\n .reverse()\n .pop();\n}\n\nexport function useCookie<T, L>(\n key: string,\n {\n initialValue = null,\n loadingValue,\n serialize = JSON.stringify,\n deserialize = JSON.parse,\n maxAge = 60 * 60 * 24 * 365,\n }: {\n initialValue: T;\n loadingValue: L;\n serialize?: (t: T) => string;\n deserialize?: (s: string) => T;\n maxAge?: number;\n }\n): [T | L, (t: T | ((prevValue: T | L) => T)) => void] {\n const initializationRef = useRef(false);\n const [cookie, setCookie] = useState<T | L>(() => {\n if (!isServer()) {\n const hasPersistedCookie = hasCookie(key);\n if (hasPersistedCookie) {\n return getCookie(key, deserialize);\n } else {\n return loadingValue;\n }\n }\n\n return loadingValue;\n });\n\n useEffect(() => {\n if (initializationRef.current === true) {\n return;\n }\n\n const hasPersistedCookie = hasCookie(key);\n\n const nextCookie = hasPersistedCookie\n ? getCookie(key, deserialize)\n : initialValue;\n\n if (!hasPersistedCookie) {\n document.cookie = `${key}=${serialize(\n initialValue\n )}; max-age=${maxAge};path=/;`;\n }\n initializationRef.current = true;\n\n let cancelled = false;\n queueMicrotask(() => {\n if (!cancelled) {\n setCookie(nextCookie);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [deserialize, initialValue, key, maxAge, serialize]);\n\n return [\n cookie,\n useCallback((t: T | ((prevValue: T | L) => T)) => {\n if (typeof t === \"function\") {\n const callback = t as (prevValue: T | L) => T;\n setCookie((oldCookie) => {\n const newValue = callback(oldCookie);\n document.cookie = `${key}=${serialize(\n newValue\n )}; max-age=${maxAge};path=/;`;\n return newValue;\n });\n } else {\n setCookie(t);\n document.cookie = `${key}=${serialize(t)}; max-age=${maxAge};path=/;`;\n }\n }, [key, maxAge, serialize]),\n ];\n}\n","import React from \"react\";\nimport { DarkModeProvider } from \"./DarkMode\";\nimport { DialogProvider } from \"./Dialog\";\nimport { useCookie } from \"./useCookie\";\nimport { JSSProvider, Theme } from \"./jss\";\n\nexport function Providers({\n children,\n themes,\n}: {\n children: React.JSX.Element;\n themes: { light: Theme; dark: Theme };\n}) {\n const [darkModeEnabled, setDarkModeEnabled] = useCookie(\"dark-mode\", {\n initialValue: false,\n loadingValue: false,\n });\n const toggleDarkMode = React.useCallback(\n () => setDarkModeEnabled((x) => !x),\n [setDarkModeEnabled],\n );\n\n return (\n <JSSProvider themes={themes}>\n <DarkModeProvider enabled={darkModeEnabled} toggle={toggleDarkMode}>\n <DialogProvider>{children}</DialogProvider>\n </DarkModeProvider>\n </JSSProvider>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Row } from \"./Row\";\nimport { Gap, JSS, Padding, cssVar } from \"./jss\";\n\nexport interface RangeInputProps extends BaseInputProps {\n onValueChange: (value: number) => void;\n value: number;\n jssRoot?: JSS;\n onChange?: undefined;\n padding?: Padding;\n gap?: Gap;\n addOn?: React.JSX.Element;\n addOnPosition?: \"start\" | \"end\";\n}\n\nexport const RangeInput = React.forwardRef(function RangeInput(\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n gap = \"medium\",\n padding = \"none\",\n min = 0,\n max = 100,\n step = 1,\n label,\n addOn,\n addOnPosition = \"start\",\n ...inputProps\n }: RangeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <Row\n gap={gap}\n padding={padding}\n align=\"center\"\n jss={[\n {\n \":has(:focus-visible)\": {\n borderRadius: cssVar(\"--border-radius-m\"),\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n },\n jssRoot,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n <BaseInput\n {...inputProps}\n label={label}\n min={min}\n max={max}\n step={step}\n type=\"range\"\n ref={ref}\n value={value}\n onChange={(e) => {\n onValueChange(parseFloat(e.target.value));\n }}\n jss={[\n {\n backgroundColor: cssVar(\"--primary-background\"),\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n margin: 0,\n paddingTop: cssVar(\"--spacing-m\"),\n paddingBottom: cssVar(\"--spacing-m\"),\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n },\n },\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n});\n","import React, {\n useContext,\n useState,\n ReactNode,\n useMemo,\n useEffect,\n} from \"react\";\nimport { createEmitter, Subscribe } from \"./Emitter\";\n\ntype State = {\n subscribe: Subscribe<boolean>;\n};\n\nconst StackContext = React.createContext<State>({\n subscribe: () => {\n return () => {};\n },\n});\n\ntype Props = {\n children: ReactNode;\n isTopOfStack: boolean;\n};\n\nexport function StackContextProvider({ children, isTopOfStack }: Props) {\n const [emitter] = useState(() => createEmitter<boolean>());\n\n useEffect(() => {\n emitter.emit(isTopOfStack);\n }, [emitter, isTopOfStack]);\n\n const value = useMemo(\n () => ({ subscribe: emitter.subscribe }),\n [emitter],\n );\n\n return (\n <StackContext.Provider value={value}>{children}</StackContext.Provider>\n );\n}\n\nexport function useIsTopOfStack() {\n const [isTopOfStack, setIsTopOfStack] = useState<boolean>(true);\n const { subscribe } = useContext(StackContext);\n\n useEffect(() => {\n return subscribe(setIsTopOfStack);\n }, [subscribe]);\n\n return isTopOfStack;\n}\n","import React, { ReactNode, useRef, useCallback } from \"react\";\n\nimport { Column } from \"./Column\";\nimport { useIsTopOfStack } from \"./StackContext\";\nimport { queryFocusables } from \"./aria\";\nimport { cssVar } from \"./jss\";\n\nexport function RootView({\n children,\n focusOnlyOnFirstMount = true,\n}: {\n children: ReactNode;\n focusOnlyOnFirstMount?: boolean;\n}) {\n const isTopOfStack = useIsTopOfStack();\n const firstMountRef = useRef(true);\n const refCallback = useCallback(\n (element) => {\n if (!element) {\n return;\n }\n\n if (!isTopOfStack) {\n return;\n }\n\n if (focusOnlyOnFirstMount && !firstMountRef.current) {\n return;\n }\n\n const focusables = queryFocusables(element);\n const firstFocusable = focusables[0];\n firstMountRef.current = false;\n firstFocusable?.focus();\n },\n [isTopOfStack, focusOnlyOnFirstMount]\n );\n\n return (\n <Column\n ref={refCallback}\n jss={{\n marginBottom: 0,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n overflow: \"auto\",\n backgroundColor: cssVar(\"--primary-background\"),\n minHeight: \"600px\",\n }}\n >\n {children}\n </Column>\n );\n}\n","import { Button } from \"./Button\";\nimport { Column } from \"./Column\";\nimport { getInteractableListItemJSS } from \"./Interactable\";\nimport { JSS } from \"./jss\";\nimport { Popover, PopoverTrigger } from \"./Popover\";\nimport { useNavigation } from \"./useNavigation\";\n\nexport type SelectValue = string | number;\n\nexport type SelectOption<Value extends SelectValue> = {\n value: Value;\n label: string;\n};\n\nexport interface SelectProps<Value extends SelectValue> {\n label: string;\n options: ReadonlyArray<SelectOption<Value>>;\n value: Value;\n onValueChange: (value: NoInfer<Value>) => void;\n disabled?: boolean;\n jss?: JSS;\n jssButton?: JSS;\n}\n\nexport function Select<Value extends SelectValue>({\n label,\n options,\n value,\n onValueChange,\n disabled = false,\n jss,\n jssButton,\n}: SelectProps<Value>) {\n const selectedOption = options.find((option) => option.value === value);\n const selectedIndex = options.findIndex((option) => option.value === value);\n const optionsRef = useNavigation({\n autofocus: true,\n initialIndex: selectedIndex,\n });\n\n return (\n <PopoverTrigger<object>\n ariaLabel={label}\n jss={[{ minWidth: 220 }, jss]}\n PopoverComponent={({ close }) => (\n <Popover close={close}>\n <Column\n ref={optionsRef}\n role=\"listbox\"\n aria-label={label}\n jss={{ width: \"100%\" }}\n >\n {options.map((option) => {\n const selected = option.value === value;\n\n return (\n <Button\n key={option.value}\n bare\n color=\"secondary\"\n role=\"option\"\n aria-selected={selected}\n icon={selected ? \"check\" : undefined}\n iconPosition=\"right\"\n justify={selected ? \"space-between\" : \"flex-start\"}\n jss={[\n getInteractableListItemJSS({ selected }),\n { width: \"100%\" },\n ]}\n onClick={() => {\n onValueChange(option.value);\n close();\n }}\n >\n {option.label}\n </Button>\n );\n })}\n </Column>\n </Popover>\n )}\n >\n {({ toggle, expanded }) => (\n <Button\n color=\"secondary\"\n disabled={disabled}\n aria-label={label}\n aria-haspopup=\"listbox\"\n aria-expanded={expanded}\n icon=\"chevron-down\"\n iconPosition=\"right\"\n justify=\"space-between\"\n jss={[{ width: \"100%\" }, jssButton]}\n onClick={() => toggle({})}\n >\n {selectedOption?.label ?? \"Select\"}\n </Button>\n )}\n </PopoverTrigger>\n );\n}\n","import React, {\n useContext,\n useCallback,\n ReactNode,\n useMemo,\n useRef,\n} from \"react\";\nimport { Subscribe, createEmitter, Callback } from \"./Emitter\";\n\nexport type Reducer<State, Context> = <Data>({\n state,\n context,\n data,\n}: {\n state: State;\n context: Context;\n data: Data;\n}) => { state: State; context: Context };\n\ntype StateMachineConfig<\n State extends PropertyKey,\n Transition extends PropertyKey,\n Context,\n> = {\n states: Record<\n State,\n { on: Partial<Record<Transition, Reducer<State, Context>>> }\n >;\n context: Context;\n state: State;\n};\n\ntype Send<Transition> = <Data>(transition: Transition, data: Data) => void;\n\ntype StateMachineContextType<State, Transition, Context> = {\n subscribe: Subscribe<{ state: State; context: Context }>;\n send: Send<Transition>;\n};\n\nexport function stateMachineContextFactory<\n State extends PropertyKey,\n Transition extends PropertyKey,\n Context,\n>(\n stateMachineConfig: StateMachineConfig<State, Transition, Context>\n) {\n const StateMachineContext = React.createContext<\n StateMachineContextType<State, Transition, Context>\n >({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n send: () => {\n throw new Error(\"Not implemented\");\n },\n });\n\n type StateMachineState = {\n state: State;\n context: Context;\n };\n\n function Provider({ children }: { children: ReactNode }) {\n const stateMachineRef = useRef<StateMachineState>({\n state: stateMachineConfig.state,\n context: stateMachineConfig.context,\n });\n\n const emitterRef = useRef(\n createEmitter<{ state: State; context: Context }>()\n );\n\n const subscribe = useCallback((callback: Callback<StateMachineState>) => {\n const unsbuscribe = emitterRef.current.subscribe(callback);\n callback(stateMachineRef.current);\n\n return unsbuscribe;\n }, []);\n\n const send = useCallback(\n <Data,>(transition: Transition, data: Data) => {\n const state = stateMachineRef.current.state;\n const transitions = stateMachineConfig.states[state].on;\n const reducer = transitions[transition];\n\n if (!reducer) {\n // No transition available in the current state, so no update needed\n return;\n }\n\n const newState = reducer({\n ...stateMachineRef.current,\n data,\n });\n\n stateMachineRef.current = newState;\n emitterRef.current.emit(newState);\n },\n []\n );\n\n const value = useMemo(() => ({ subscribe, send }), [subscribe, send]);\n\n return (\n <StateMachineContext.Provider value={value}>\n {children}\n </StateMachineContext.Provider>\n );\n }\n\n function useStateMachine() {\n return useContext(StateMachineContext);\n }\n\n return { Provider, useStateMachine };\n}\n","import React from \"react\";\nimport {\n useState,\n useCallback,\n useEffect,\n createContext,\n ReactNode,\n useRef,\n} from \"react\";\nimport { Callback, createEmitter } from \"./Emitter\";\n\nconst VERSION = 1;\n\ntype StoredBlob = {\n blob: Blob;\n key: number;\n};\n\nexport function createStorage<State>({\n initialState,\n name = \"aidos-storage\",\n}: {\n initialState: State;\n name?: string;\n}) {\n const StorageContext = createContext<{\n subscribe: <T>(selector: (state: State) => T) => () => void;\n mutate: (mutator: (state: State) => State) => void;\n persist: () => Promise<void>;\n }>({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n mutate: () => {\n throw new Error(\"Not implemented\");\n },\n persist: () => {\n throw new Error(\"Not implemented\");\n },\n });\n\n const state = { current: initialState };\n\n function Storage({ children }: { children: ReactNode }): React.JSX.Element {\n const emitterRef = useRef(createEmitter<State>());\n\n const subscribe = useCallback((callback: Callback<State>) => {\n return emitterRef.current.subscribe(callback);\n }, []);\n\n const mutate = useCallback((mutator: (state: State) => State) => {\n state.current = mutator(state.current);\n emitterRef.current.emit(state.current);\n }, []);\n\n const persist = useCallback(async () => {\n const s = JSON.stringify(state.current);\n const bytes = new TextEncoder().encode(s);\n const blob = new Blob([bytes], {\n type: \"application/json;charset=utf-8\",\n });\n return saveBlob(blob);\n }, []);\n\n useEffect(() => {\n getBlob().then((blob) => {\n if (blob == null) {\n return;\n }\n\n const fr = new FileReader();\n\n fr.onload = () => {\n const text = fr.result.toString();\n state.current = JSON.parse(text);\n emitterRef.current.emit(state.current);\n };\n\n fr.readAsText(blob);\n });\n }, []);\n\n return (\n <StorageContext.Provider\n value={{\n subscribe,\n mutate,\n persist,\n }}\n >\n {children}\n </StorageContext.Provider>\n );\n }\n\n function useStorage<T>(selector: (state: State) => T): T {\n const [localState, setLocalState] = useState(() => selector(state.current));\n const { subscribe } = React.useContext(StorageContext);\n\n useEffect(() => {\n return subscribe((newState) => {\n const newLocalState = selector(newState);\n setLocalState((prev) => (newLocalState != prev ? newLocalState : prev));\n });\n }, [selector, subscribe]);\n\n return localState;\n }\n\n function useMutation(): (mutator: (state: State) => State) => void {\n const { mutate } = React.useContext(StorageContext);\n return mutate;\n }\n\n function usePersist() {\n const { persist } = React.useContext(StorageContext);\n return persist;\n }\n\n const dbPromise: Promise<IDBDatabase> = new Promise((resolve, reject) => {\n const request = window.indexedDB.open(name, VERSION);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n const table = db.createObjectStore(\"blobs\", {\n keyPath: \"key\",\n });\n table.createIndex(\"key\", \"key\", { unique: true });\n };\n\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n\n const getBlob = async (): Promise<Blob | null> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"]);\n const objectStore = transaction.objectStore(\"blobs\");\n const get: IDBRequest<StoredBlob | undefined> = objectStore.get(1);\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n get.onsuccess = () => {\n const result = get.result;\n\n if (result && result.blob) {\n resolve(result.blob);\n } else {\n resolve(null);\n }\n db.close();\n };\n\n get.onerror = (event) => {\n reject(event);\n };\n });\n };\n\n const saveBlob = async (blob: Blob): Promise<void> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"], \"readwrite\");\n\n transaction.oncomplete = () => {\n db.close();\n resolve();\n };\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n const objectStore = transaction.objectStore(\"blobs\");\n objectStore.put({ blob, key: 1 });\n });\n };\n\n return {\n Storage,\n useStorage,\n useMutation,\n usePersist,\n };\n}\n","import { startTransition, useEffect, useRef, useState } from \"react\";\n\nexport function useStream<Frame>({\n render,\n bufferStart,\n bufferEnd,\n index,\n debounce = 100,\n}: {\n render: (index: number) => Frame;\n bufferStart: number;\n bufferEnd: number;\n index: number;\n debounce?: number;\n}) {\n const [initialFrame] = useState(() => render(index));\n const cache = useRef<Record<number, Frame>>({ [index]: initialFrame });\n const [frame, setFrame] = useState(initialFrame);\n const timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n const subscriptions: number[] = [];\n\n timeout.current = setTimeout(() => {\n for (let i = index - bufferStart; i < index + bufferEnd; i++) {\n subscriptions.push(\n requestIdleCallback(() => {\n if (!(i in cache.current)) {\n cache.current[i] = render(i);\n\n if (i === index) {\n setFrame(cache.current[index]);\n }\n }\n }),\n );\n }\n\n startTransition(() => {\n setFrame(cache.current[index]);\n });\n }, debounce);\n\n return () => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n subscriptions.forEach((handle) => {\n cancelIdleCallback(handle);\n });\n };\n }, [bufferEnd, bufferStart, debounce, index, render]);\n\n return {\n frame,\n };\n}\n","import React, { ReactNode } from \"react\";\nimport { ListButtonItem } from \"./ListButtonItem\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport function Sublist({\n children,\n label,\n labelBold,\n initialState = { collapsed: false },\n jss,\n secondaryAddOn,\n}: {\n children: React.ReactNode;\n label: string;\n labelBold?: boolean;\n initialState?: {\n collapsed: boolean;\n };\n jss?: JSS;\n secondaryAddOn?: ReactNode;\n}) {\n const [collapsed, setCollapsed] = React.useState(initialState.collapsed);\n return (\n <>\n <ListButtonItem\n headline={label}\n headlineBold={labelBold}\n onClick={() => setCollapsed((x) => !x)}\n jss={jss}\n addOn={\n <Row gap=\"medium\" align=\"center\">\n {secondaryAddOn}\n <Box\n padding=\"none\"\n jss={[\n {\n transition: \"transform 0.15s ease-in\",\n },\n !collapsed && {\n transform: \"rotateZ(90deg)\",\n },\n ]}\n >\n <Icon color=\"primary\" size=\"medium\" icon=\"chevron-right\" />\n </Box>\n </Row>\n }\n addOnPosition=\"end\"\n color=\"secondary\"\n />\n {collapsed ? null : children}\n </>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\n\ninterface SubmitIconInputProps extends BaseInputProps {\n icon: IconType;\n type?: \"submit\";\n}\n\nexport function SubmitIconInput({ icon, ...otherProps }: SubmitIconInputProps) {\n return (\n <BaseInput\n label={\n <Box\n jss={{\n cursor: \"pointer\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \":hover\": {\n backgroundColor: \"var(--secondary-background)\",\n opacity: 0.8,\n },\n \":active\": {\n transform: \"scale(0.92)\",\n },\n height: 32,\n width: 32,\n borderRadius: \"50%\",\n }}\n >\n <Icon icon={icon} size=\"medium\" color=\"primary\" />\n </Box>\n }\n {...otherProps}\n type=\"submit\"\n jss={{\n visibility: \"hidden\",\n }}\n value=\"\"\n />\n );\n}\n","import React from \"react\";\n\nimport { BaseButton } from \"./BaseButton\";\nimport { BaseLink } from \"./BaseLink\";\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\nimport type { Tab } from \"./Tabs\";\nimport { Text } from \"./Text\";\nimport { useNavigation } from \"./useNavigation\";\nimport { JSS, Padding, Size, TextColor, cssVar, getMaterial } from \"./jss\";\n\nexport type TabBarVariant = \"default\" | \"floating\";\n\nexport interface TabBarProps extends Omit<FlexLayoutProps, \"children\" | \"tag\"> {\n tabs: Tab[];\n variant?: TabBarVariant;\n fixed?: boolean;\n iconSize?: Size;\n labelSize?: Size;\n tabPadding?: Padding;\n jssTab?: JSS | ((data: { selected: boolean }) => JSS);\n labelRenderer?: (label: string) => React.ReactNode;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {},\n default: {\n backgroundColor: cssVar(\"--nav-bar\"),\n },\n floating: [\n getMaterial(\"aurora\"),\n {\n borderRadius: cssVar(\"--border-radius-xl\"),\n boxShadow: cssVar(\"--shadow-md\"),\n },\n ],\n horizontal: {\n width: \"100%\",\n },\n vertical: {\n width: \"max-content\",\n height: \"100%\",\n },\n horizontalBar: {\n width: \"100%\",\n minHeight: cssVar(\"--nav-bar-height\"),\n },\n verticalBar: {\n minWidth: cssVar(\"--nav-bar-height\"),\n height: \"100%\",\n },\n safeArea: {\n width: \"100%\",\n height: \"env(safe-area-inset-bottom)\",\n flexShrink: 0,\n },\n fixed: {\n position: \"fixed\",\n left: 0,\n bottom: 0,\n zIndex: 1,\n },\n fixedHorizontal: {\n right: 0,\n },\n fixedVertical: {\n top: 0,\n },\n item: {\n borderRadius: cssVar(\"--border-radius-l\"),\n justifyContent: \"center\",\n textDecoration: \"none\",\n userSelect: \"none\",\n \":focus-visible\": {\n outlineOffset: -2,\n },\n },\n horizontalItem: {\n flex: 1,\n minWidth: 0,\n },\n defaultItem: {\n borderRadius: 0,\n },\n floatingHorizontalItem: {\n minWidth: \"auto\",\n },\n verticalItem: {\n width: \"100%\",\n },\n};\n\nexport function TabBar({\n tabs,\n variant = \"default\",\n direction = \"row\",\n fixed = false,\n iconSize = \"large\",\n labelSize = \"small\",\n tabPadding = \"medium\",\n jssTab,\n labelRenderer,\n jss,\n align = \"stretch\",\n \"aria-label\": ariaLabel = \"Primary navigation\",\n ...otherProps\n}: TabBarProps) {\n const horizontal = direction === \"row\";\n const selectedIndex = tabs.findIndex((tab) => tab.selected === true);\n const root = useNavigation({\n initialIndex: selectedIndex === -1 ? 0 : selectedIndex,\n });\n\n return (\n <BaseView\n tag=\"nav\"\n aria-label={ariaLabel}\n jss={[\n styles.root,\n styles[variant],\n variant === \"default\" &&\n (horizontal ? styles.horizontal : styles.vertical),\n fixed && styles.fixed,\n fixed && (horizontal ? styles.fixedHorizontal : styles.fixedVertical),\n jss,\n ]}\n >\n <FlexLayout\n ref={root}\n {...otherProps}\n direction={direction}\n align={align}\n jss={horizontal ? styles.horizontalBar : styles.verticalBar}\n >\n {tabs.map((tab) => {\n const { label, icon, href, onClick } = tab;\n const selected = tab.selected === true;\n const color: TextColor = selected ? \"highlight\" : \"secondary\";\n const tabJSS: JSS = [\n styles.item,\n horizontal ? styles.horizontalItem : styles.verticalItem,\n variant === \"default\" && styles.defaultItem,\n variant === \"floating\" &&\n horizontal &&\n styles.floatingHorizontalItem,\n selected && {\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n typeof jssTab === \"function\" ? jssTab({ selected }) : jssTab,\n ];\n const content = (\n <FlexLayout\n direction={horizontal ? \"column\" : \"row\"}\n align=\"center\"\n justify=\"center\"\n gap=\"small\"\n >\n {icon && <Icon icon={icon} size={iconSize} color={color} />}\n <Text size={labelSize} color={color} ellipsis={true}>\n {labelRenderer ? labelRenderer(label) : label}\n </Text>\n </FlexLayout>\n );\n\n if (href != null) {\n return (\n <BaseLink\n key={label}\n href={href}\n onClick={onClick}\n aria-current={selected ? \"page\" : undefined}\n bare={true}\n color={selected ? \"primary\" : \"secondary\"}\n padding={tabPadding}\n jss={tabJSS}\n >\n {content}\n </BaseLink>\n );\n }\n\n return (\n <BaseButton\n key={label}\n onClick={() => onClick?.()}\n aria-current={selected ? \"page\" : undefined}\n bare={true}\n color={selected ? \"primary\" : \"secondary\"}\n padding={tabPadding}\n jss={tabJSS}\n >\n {content}\n </BaseButton>\n );\n })}\n </FlexLayout>\n {horizontal && <BaseView aria-hidden={true} jss={styles.safeArea} />}\n </BaseView>\n );\n}\n","import React from \"react\";\n\nimport { Card, type CardProps } from \"./Card\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nexport interface TableProps\n extends\n Omit<React.TableHTMLAttributes<HTMLTableElement>, \"className\">,\n Pick<CardProps, \"variant\" | \"material\" | \"padding\" | \"gap\"> {\n jss?: JSS;\n jssTable?: JSS;\n className?: undefined;\n}\n\nconst styles: { [key: string]: JSS } = {\n root: {\n overflowX: \"auto\",\n overflowY: \"hidden\",\n \" thead\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n },\n \" th\": {\n padding: \"10px 12px\",\n color: cssVar(\"--secondary-text\"),\n fontSize: 12,\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.4,\n textAlign: \"left\",\n },\n \" td\": {\n padding: \"11px 12px\",\n color: cssVar(\"--secondary-text\"),\n lineHeight: 1.45,\n },\n \" tbody tr\": {\n transition: `background-color ${cssVar(\"--transition-fast\")}`,\n },\n \" tbody tr:hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \" tbody tr:not(:last-child) td\": {\n borderBottom: `1px solid ${cssVar(\"--divider\")}`,\n },\n },\n table: {\n width: \"100%\",\n minWidth: 560,\n borderCollapse: \"separate\",\n borderSpacing: 0,\n fontSize: 14,\n },\n};\n\nexport function Table({\n children,\n jss,\n jssTable,\n variant = \"default\",\n material,\n padding = \"none\",\n gap = \"none\",\n ...tableProps\n}: TableProps) {\n return (\n <Card\n variant={variant}\n material={material}\n padding={padding}\n gap={gap}\n jss={[styles.root, jss]}\n >\n <table {...tableProps} className={toClassnames([styles.table, jssTable])}>\n {children}\n </table>\n </Card>\n );\n}\n","import { BaseLink } from \"./BaseLink\";\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\nimport { useNavigation } from \"./useNavigation\";\nimport { Text } from \"./Text\";\nimport { ReactNode } from \"react\";\nimport { BaseButton } from \"./BaseButton\";\nimport { Icon } from \"./Icon\";\nimport type { IconType } from \"./IconType\";\n\nexport type TabsVariant = \"underline\" | \"segmented\";\n\nexport type Tab = {\n label: string;\n icon?: IconType;\n href?: string;\n onClick?: () => void;\n selected?: boolean;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n};\n\nexport interface TabsProps extends RowProps {\n [\"aria-controls\"]: string;\n tabs: Array<Tab>;\n variant?: TabsVariant;\n labelSize?: Size;\n iconSize?: Size;\n bare?: boolean;\n tabPadding?: Padding;\n jssTab?: JSS | ((data: { selected: boolean }) => JSS);\n labelRenderer?: (label: string) => ReactNode;\n}\n\nexport function Tabs({\n tabs,\n variant = \"underline\",\n gap = \"none\",\n padding = \"none\",\n tabPadding = \"medium\",\n labelSize = \"large\",\n iconSize = \"medium\",\n jss,\n jssTab,\n labelRenderer,\n [\"aria-controls\"]: ariaControls,\n ...otherProps\n}: TabsProps) {\n const root = useNavigation();\n\n return (\n <Row\n role=\"tablist\"\n jss={[\n variant === \"segmented\" && {\n isolation: \"isolate\",\n backgroundColor: cssVar(\"--hovered-background\"),\n borderRadius: cssVar(\"--border-radius-l\"),\n maxWidth: \"100%\",\n padding: cssVar(\"--spacing-xs\"),\n width: \"fit-content\",\n },\n jss,\n ]}\n gap={gap}\n padding={padding}\n ref={root}\n {...otherProps}\n >\n {tabs.map(\n ({\n label,\n icon,\n href,\n onClick,\n selected,\n addOn,\n addOnPosition = \"start\",\n }) => {\n const BaseComponent = href != null ? BaseLink : BaseButton;\n\n return (\n <BaseComponent\n aria-controls={ariaControls}\n role=\"tab\"\n aria-selected={selected ? \"true\" : undefined}\n key={label}\n bare\n color={selected ? \"primary\" : \"secondary\"}\n href={href}\n onClick={onClick}\n animateInteraction={false}\n jss={[\n {\n alignItems: \"center\",\n gap: cssVar(\"--spacing-s\"),\n textDecoration: \"none\",\n },\n variant === \"underline\" && {\n borderBottom: selected\n ? `3px solid ${cssVar(\"--highlight\")}`\n : `3px solid transparent`,\n \":active span\": {\n transform: \"scale(0.97)\",\n },\n \":first-child\": {\n borderTopLeftRadius: cssVar(\"--border-radius-m\"),\n },\n \":last-child\": {\n borderTopRightRadius: cssVar(\"--border-radius-m\"),\n },\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n variant === \"segmented\" && {\n position: \"relative\",\n zIndex: selected ? 1 : 0,\n borderRadius: cssVar(\"--border-radius-m\"),\n backgroundColor: selected\n ? cssVar(\"--overlay-background\")\n : \"transparent\",\n boxShadow: selected\n ? `0 0 0 1px ${cssVar(\"--divider\")}, 0 0 4px color-mix(in srgb, ${cssVar(\"--primary-text\")} 10%, transparent)`\n : \"none\",\n transition: `background-color ${cssVar(\"--transition-fast\")}, box-shadow ${cssVar(\"--transition-fast\")}`,\n \":hover\": {\n backgroundColor: selected\n ? cssVar(\"--overlay-background\")\n : cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n top: 1,\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n getPadding(tabPadding),\n typeof jssTab === \"function\" ? jssTab({ selected }) : jssTab,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n {icon && (\n <Icon\n icon={icon}\n size={iconSize}\n color={selected ? \"primary\" : \"secondary\"}\n />\n )}\n <Text size={labelSize} color={selected ? \"primary\" : \"secondary\"}>\n {labelRenderer ? labelRenderer(label) : label}\n </Text>\n {addOnPosition === \"end\" && addOn}\n </BaseComponent>\n );\n },\n )}\n </Row>\n );\n}\n","import React from \"react\";\nimport { JSS, Padding, cssVar, getPadding, toClassnames } from \"./jss\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n jss?: JSS;\n onValueChange?: (value: string) => void;\n value?: string;\n className?: undefined;\n size?: undefined;\n padding?: Padding;\n onChange?: undefined;\n}\n\nexport const TextArea = React.forwardRef(function TextArea(\n {\n jss,\n onValueChange,\n value,\n padding = \"medium\",\n ...otherProps\n }: TextAreaProps,\n ref?: React.Ref<HTMLTextAreaElement>,\n) {\n return (\n <textarea\n {...otherProps}\n ref={ref}\n className={toClassnames([\n {\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n backgroundColor: cssVar(\"--overlay-background\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":focus-visible\": {\n outline: `2px solid ${cssVar(\"--highlight\")}`,\n outlineOffset: -2,\n },\n },\n getPadding(padding),\n jss,\n ])}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n />\n );\n});\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Column } from \"./Column\";\nimport { InputFrame } from \"./InputFrame\";\nimport { Gap, JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\nimport { getTypography } from \"./typography\";\n\nexport interface TextInputProps extends Omit<BaseInputProps, \"size\"> {\n onValueChange?: (value: string) => void;\n jssRoot?: JSS;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n gap?: Gap;\n onChange?: undefined;\n padding?: Padding;\n size?: Size;\n}\n\nexport const TextInput = React.forwardRef(function TextInput(\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n addOn,\n gap = \"none\",\n addOnPosition = \"start\",\n padding = \"medium\",\n size = \"medium\",\n ...inputProps\n }: TextInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n return (\n <InputFrame gap={gap} jss={jssRoot}>\n {addOnPosition === \"start\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingRight: 0 }]}\n >\n {addOn}\n </Column>\n )}\n <BaseInput\n {...inputProps}\n ref={ref}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n jss={[\n {\n minWidth: 0,\n flexGrow: 1,\n backgroundColor: \"transparent\",\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n border: \"none\",\n ...getTypography(size),\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n cursor: \"not-allowed\",\n },\n \"[aria-invalid=true]\": {\n color: cssVar(\"--negative-text\"),\n },\n },\n getPadding(padding),\n addOn && addOnPosition === \"start\" ? { paddingLeft: 0 } : null,\n addOn && addOnPosition === \"end\" ? { paddingRight: 0 } : null,\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingLeft: 0 }]}\n >\n {addOn}\n </Column>\n )}\n </InputFrame>\n );\n});\n","import React, { useCallback } from \"react\";\n\nimport { TextInput } from \"./TextInput\";\nimport { BaseInputProps } from \"./BaseInput\";\nimport { useState } from \"react\";\n\nfunction getInitialValue(valueRef: React.MutableRefObject<string>) {\n return valueRef.current;\n}\n\nexport interface TextInputWithStateProps extends BaseInputProps {\n onValueChange?: (value: string) => void;\n valueRef: React.MutableRefObject<string>;\n onChange?: undefined;\n}\n\nexport function TextInputWithState({\n valueRef,\n onValueChange: externalOnChange,\n ...otherProps\n}: TextInputWithStateProps) {\n const [value, setValue] = useState(() => getInitialValue(valueRef));\n\n const onValueChange = useCallback(\n (value) => {\n valueRef.current = value;\n setValue(value);\n externalOnChange?.(value);\n },\n [externalOnChange, valueRef],\n );\n\n return (\n <TextInput {...otherProps} value={value} onValueChange={onValueChange} />\n );\n}\n","import React, { useId, useRef, useState } from \"react\";\n\nimport { Column } from \"./Column\";\nimport { Icon } from \"./Icon\";\nimport { InputFrame } from \"./InputFrame\";\nimport { NumericInputSegment } from \"./NumericInputSegment\";\nimport { Row } from \"./Row\";\nimport { Label, Span } from \"./Text\";\nimport { JSS } from \"./jss\";\nimport { formatTimeInputValue } from \"./dateInputValue\";\n\ntype TimePart = \"hour\" | \"minute\";\ntype TimeSegments = Record<TimePart, string>;\n\nexport const timeFormatter = Intl.DateTimeFormat(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hourCycle: \"h23\",\n});\n\nexport interface TimeInputProps {\n time: Date | null;\n onTimeChange: (time: Date | null) => void;\n label?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: boolean;\n id?: string;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n jss?: JSS;\n}\n\nfunction getSegments(time: Date | null): TimeSegments {\n if (time == null) return { hour: \"\", minute: \"\" };\n return {\n hour: String(time.getHours()).padStart(2, \"0\"),\n minute: String(time.getMinutes()).padStart(2, \"0\"),\n };\n}\n\nfunction parseSegments(segments: TimeSegments, base: Date | null): Date | null {\n if (segments.hour.length !== 2 || segments.minute.length !== 2) return null;\n\n const hour = Number(segments.hour);\n const minute = Number(segments.minute);\n if (hour > 23 || minute > 59) return null;\n\n const date = base ?? new Date();\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hour,\n minute,\n );\n}\n\nexport const TimeInput = React.forwardRef(function TimeInput(\n {\n time,\n onTimeChange,\n label,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n id: providedId,\n name,\n disabled = false,\n required = false,\n readOnly = false,\n autoFocus = false,\n jss,\n }: TimeInputProps,\n ref?: React.Ref<HTMLInputElement>,\n) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const labelId = `${id}-label`;\n const timeTimestamp = time?.getTime() ?? null;\n const [segments, setSegments] = useState(() => getSegments(time));\n const [draftInvalid, setDraftInvalid] = useState(false);\n const [syncedTimeTimestamp, setSyncedTimeTimestamp] = useState(timeTimestamp);\n const inputRefs = useRef<Partial<Record<TimePart, HTMLInputElement>>>({});\n\n if (timeTimestamp !== syncedTimeTimestamp) {\n setSyncedTimeTimestamp(timeTimestamp);\n setSegments(getSegments(time));\n setDraftInvalid(false);\n }\n\n const updateSegment = (part: TimePart, value: string) => {\n const next = { ...segments, [part]: value };\n setSegments(next);\n\n if (next.hour === \"\" && next.minute === \"\") {\n setDraftInvalid(false);\n onTimeChange(null);\n return;\n }\n\n const complete = next.hour.length === 2 && next.minute.length === 2;\n const parsed = parseSegments(next, time);\n setDraftInvalid(complete && parsed == null);\n if (parsed != null) onTimeChange(parsed);\n };\n\n const field = (\n <InputFrame\n align=\"center\"\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : (ariaLabel ?? \"Time\")}\n aria-describedby={ariaDescribedBy}\n jss={jss}\n >\n <Row align=\"center\" padding={[\"none\", \"medium\"]} grow>\n <NumericInputSegment\n id={id}\n ref={(element) => {\n inputRefs.current.hour = element;\n if (typeof ref === \"function\") ref(element);\n else if (ref) ref.current = element;\n }}\n value={segments.hour}\n label=\"hour\"\n placeholder=\"HH\"\n length={2}\n width=\"4ch\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(\"hour\", value)}\n onComplete={() => inputRefs.current.minute?.focus()}\n onNext={() => inputRefs.current.minute?.focus()}\n />\n <Span color=\"secondary\">:</Span>\n <NumericInputSegment\n id={`${id}-minute`}\n ref={(element) => {\n inputRefs.current.minute = element;\n }}\n value={segments.minute}\n label=\"minute\"\n placeholder=\"MM\"\n length={2}\n width=\"4ch\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n invalid={ariaInvalid || draftInvalid}\n onValueChange={(value) => updateSegment(\"minute\", value)}\n onPrevious={() => inputRefs.current.hour?.focus()}\n />\n </Row>\n <Column justify=\"center\" padding={[\"none\", \"medium\"]}>\n <Icon icon=\"clock\" color=\"secondary\" size=\"medium\" />\n </Column>\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={time == null ? \"\" : formatTimeInputValue(time)}\n />\n )}\n </InputFrame>\n );\n\n if (label == null) return field;\n\n return (\n <Column gap=\"small\">\n <Label id={labelId} htmlFor={id}>\n {label}\n </Label>\n {field}\n </Column>\n );\n});\n","import React, { ReactNode } from \"react\";\n\nimport { Row, RowProps } from \"./Row\";\nimport { TextPairing } from \"./TextPairing\";\nimport { Gap, Size, TextColor } from \"./jss\";\n\nexport interface ToolbarProps extends Omit<RowProps, \"children\"> {\n headline: ReactNode;\n body?: ReactNode;\n leading?: ReactNode;\n actions?: ReactNode;\n actionsGap?: Gap;\n headlineColor?: TextColor;\n headlineSize?: Size;\n headlineBold?: boolean;\n bodyColor?: TextColor;\n bodySize?: Size;\n bodyEllipsis?: boolean;\n}\n\nexport const Toolbar = React.forwardRef(function Toolbar(\n {\n headline,\n body,\n leading,\n actions,\n actionsGap = \"medium\",\n headlineColor,\n headlineSize = \"xlarge\",\n headlineBold = true,\n bodyColor,\n bodySize,\n bodyEllipsis = false,\n gap = \"large\",\n align = \"center\",\n justify = \"space-between\",\n ...otherProps\n }: ToolbarProps,\n ref?: React.Ref<HTMLElement>,\n) {\n return (\n <Row ref={ref} gap={gap} align={align} justify={justify} {...otherProps}>\n <TextPairing\n headline={headline}\n body={body}\n addOn={leading}\n headlineColor={headlineColor}\n headlineSize={headlineSize}\n headlineBold={headlineBold}\n bodyColor={bodyColor}\n bodySize={bodySize}\n bodyEllipsis={bodyEllipsis}\n grow\n shrink\n />\n {actions != null && (\n <Row align=\"center\" gap={actionsGap} jss={{ flexShrink: 0 }}>\n {actions}\n </Row>\n )}\n </Row>\n );\n});\n\nToolbar.displayName = \"Toolbar\";\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { Text } from \"./Text\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n tooltip: {\n top: \"auto\",\n right: \"auto\",\n bottom: `calc(100% + ${cssVar(\"--spacing-s\")})`,\n left: \"50%\",\n margin: 0,\n translate: \"-50% 0\",\n transformOrigin: \"bottom center\",\n backgroundColor: cssVar(\"--primary-background\"),\n padding: `${cssVar(\"--spacing-s\")} ${cssVar(\"--spacing-m\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n boxShadow: cssVar(\"--shadow-md\"),\n overflow: \"hidden\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n};\n\ninterface TooltipProps {\n content: string;\n jss?: JSS;\n className?: undefined;\n tag?: keyof HTMLElementTagNameMap;\n children: React.JSX.Element;\n}\n\nexport function Tooltip({ content, jss, tag, children }: TooltipProps) {\n const [tooltip, setTooltip] = useState<React.JSX.Element>(null);\n const dialogRef = useRef(null);\n const focusTrapRoot = useRefEffect(\n useCallback((root: HTMLDialogElement) => {\n dialogRef.current = root;\n\n const keydown = (e) => {\n if (e.key === \"Escape\") {\n dialogRef.current?.close();\n } else if (e.key === \"Tab\") {\n dialogRef.current?.close();\n }\n };\n\n const click = () => {\n dialogRef.current?.close();\n };\n\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n\n const activeElement = document.activeElement;\n root.show();\n if (activeElement instanceof HTMLElement) {\n activeElement.focus();\n }\n\n return () => {\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n }, []),\n );\n\n const toggle = () => {\n if (tooltip == null) {\n setTooltip(\n <dialog\n role=\"tooltip\"\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n focusTrapRoot(ref);\n }}\n className={toClassnames(styles.tooltip)}\n onClose={() => {\n setTooltip(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Text size=\"medium\" color=\"secondary\">\n {content}\n </Text>\n </dialog>,\n );\n } else {\n setTooltip(null);\n }\n };\n\n return (\n <BaseView\n tag={tag}\n relative={true}\n jss={[{ display: \"inline-block\" }, jss]}\n onMouseEnter={() => {\n if (tooltip == null) {\n toggle();\n }\n }}\n onMouseLeave={() => {\n if (tooltip != null) {\n toggle();\n }\n }}\n >\n {children}\n {tooltip}\n </BaseView>\n );\n}\n","import { useCallback } from \"react\";\nimport { useRefEffect } from \"./useRefEffect\";\n\nexport type KeyboardShortcut<T> = {\n key: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n action: (root: T) => void;\n onlyWhenFocused?: boolean;\n};\n\nexport function useKeyboard<T extends HTMLElement>(\n shortcuts: Array<KeyboardShortcut<T>>,\n) {\n return useRefEffect<T>(\n useCallback(\n (root: T) => {\n const onKeyDown = (e: KeyboardEvent) => {\n for (const {\n metaKey,\n key,\n action,\n ctrlKey,\n onlyWhenFocused,\n } of shortcuts) {\n if (metaKey && e.metaKey !== true) {\n continue;\n } else if (ctrlKey && e.ctrlKey !== true) {\n continue;\n } else if (onlyWhenFocused && document.activeElement !== root) {\n continue;\n }\n\n if (e.key.toLowerCase() === key.toLowerCase()) {\n action(root);\n }\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n },\n [shortcuts],\n ),\n );\n}\n","import { useState, useEffect, useRef } from \"react\";\n\nexport function usePromise<T>(\n promiseFactory: () => Promise<T>,\n inputs: ReadonlyArray<unknown>,\n initialValue: T\n): [T | null, unknown] {\n const [value, setValue] = useState(initialValue);\n const [error, setError] = useState<unknown>(null);\n const previousInputs = useRef<ReadonlyArray<unknown> | null>(null);\n\n useEffect(() => {\n if (\n previousInputs.current != null &&\n previousInputs.current.length === inputs.length &&\n previousInputs.current.every((input, index) => input === inputs[index])\n ) {\n return;\n }\n\n previousInputs.current = inputs;\n let cancelled = false;\n promiseFactory()\n .then((value) => {\n if (!cancelled) setValue(value);\n })\n .catch((error: unknown) => {\n if (!cancelled) setError(error);\n });\n\n return () => {\n cancelled = true;\n };\n });\n\n return [value, error];\n}\n"]}