@duro-app/ui 0.9.2 → 0.10.0

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,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/hooks/useControllableValue.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../../tokens/dist/index.js","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width={size}\n height={size}\n >\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return <html.span style={[styles.base, sizeMap[size], styles[variant]]}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n style={[\n styles.base,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n check: {\n width: 12,\n height: 12,\n color: colors.accentContrast,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.error,\n },\n})\n","import {type ReactNode, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({invalid = false, children}: RootProps) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n }),\n [id, invalid],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n return (\n <html.label for={ctx?.controlId} style={styles.label}>\n {children}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n if (!ctx?.invalid && !children) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {children}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n onChange,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n // react-strict-dom omits web-only `pattern` from its types, but the\n // underlying DOM element supports it. Type-assert to pass it through.\n const extraProps = pattern !== undefined ? {pattern} : undefined\n\n return (\n <html.input\n id={ctx?.controlId}\n type={type}\n name={name}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={onChange}\n style={[styles.base, styles[variant], groupCtx?.inGroup && styles.inGroup]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {scrolling, scrollHeight, scrollWidth, clientHeight, clientWidth} = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n return (\n <html.div\n style={[\n styles.scrollbar,\n orientation === 'vertical' ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n zIndex: 50,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Root\n root: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Header group\n header: {\n backgroundColor: colors.bgCard,\n },\n\n // Row\n row: {\n display: 'grid',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowLastChild: {\n borderBottomWidth: 0,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n\n // Header cell\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n },\n\n // Body cell\n cell: {\n color: colors.text,\n display: 'flex',\n alignItems: 'center',\n },\n\n // Size: sm\n cellSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows)\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders)\n borderedCell: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // Dynamic styles — simple identifier params only (StyleX constraint)\n gridColumns: (columns: number) => ({\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }),\n})\n","import {type ReactNode, createContext, useContext, Children} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n columns: number\n isHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext (to distinguish header vs body rowgroup) ---\n\nconst HeaderContext = createContext(false)\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n columns: number\n}\n\nfunction Root({children, variant = 'default', size = 'md', columns}: RootProps) {\n return (\n <TableContext.Provider value={{variant, size, columns, isHeader: false}}>\n <html.div role=\"table\" style={styles.root}>\n {children}\n </html.div>\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children)\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\">\n {childArray.map((child, index) => {\n if (variant === 'striped') {\n return (\n <RowIndexContext.Provider key={index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n }\n return child\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// Row index context for striped variant\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n\nfunction Row({children}: {children: ReactNode}) {\n const {variant, columns} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children)\n const isLastRow = false // handled by CSS or parent\n\n return (\n <html.div\n role=\"row\"\n style={[\n styles.row,\n styles.gridColumns(columns),\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n ]}\n >\n {variant === 'bordered'\n ? childArray.map((child, index) => (\n <CellIndexContext.Provider key={index} value={{index, total: childArray.length}}>\n {child}\n </CellIndexContext.Provider>\n ))\n : children}\n </html.div>\n )\n}\n\n// Cell index context for bordered variant\nconst CellIndexContext = createContext<{index: number; total: number}>({\n index: 0,\n total: 0,\n})\n\n// --- HeaderCell ---\n\nfunction HeaderCell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Cell ---\n\nfunction Cell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const Table = {\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n onChange,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={name}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={onChange}\n style={[styles.base, styles[variant]]}\n />\n )\n}\n","const e = {\n bg: \"var(--bg-xqkwqtp)\",\n bgCard: \"var(--bgCard-xj2l5r)\",\n bgCardHover: \"var(--bgCardHover-xlxk7vw)\",\n text: \"var(--text-xlpbogt)\",\n textMuted: \"var(--textMuted-x651nu9)\",\n accent: \"var(--accent-xw7wp3v)\",\n accentHover: \"var(--accentHover-x18fqoz)\",\n accentContrast: \"var(--accentContrast-x3gzxyp)\",\n border: \"var(--border-x1drj1pb)\",\n error: \"var(--error-x13gdhh0)\",\n errorHover: \"var(--errorHover-x7eyu03)\",\n errorBg: \"var(--errorBg-xrl8836)\",\n errorBorder: \"var(--errorBorder-x1a6pjl)\",\n errorText: \"var(--errorText-xf51nwe)\",\n errorContrast: \"var(--errorContrast-x1lvjkah)\",\n success: \"var(--success-x197pe5n)\",\n successBg: \"var(--successBg-xzjukav)\",\n successBorder: \"var(--successBorder-x1my3ygc)\",\n successText: \"var(--successText-x46dg9e)\",\n warning: \"var(--warning-x1gq0pyw)\",\n warningBg: \"var(--warningBg-xtnxqss)\",\n warningBorder: \"var(--warningBorder-x1ev2mr5)\",\n warningText: \"var(--warningText-x1lgjghx)\",\n info: \"var(--info-x97ho0r)\",\n infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, t = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n ms: \"var(--ms-x13y09zs)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n xxxl: \"var(--xxxl-xroalp5)\",\n __varGroupHash__: \"x6uc9q\"\n}, n = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, i = {\n stackXs: \"var(--stackXs-x1qfrfo2)\",\n stackSm: \"var(--stackSm-x2rk1ut)\",\n stackMd: \"var(--stackMd-xhblkt4)\",\n stackLg: \"var(--stackLg-xeue779)\",\n stackXl: \"var(--stackXl-x7sbbgu)\",\n inlineXs: \"var(--inlineXs-xq4tp4f)\",\n inlineSm: \"var(--inlineSm-x2o8bbf)\",\n inlineMd: \"var(--inlineMd-x1oalkxi)\",\n inlineLg: \"var(--inlineLg-xz69o43)\",\n containerSm: \"var(--containerSm-x3nosus)\",\n containerMd: \"var(--containerMd-x170dvin)\",\n containerLg: \"var(--containerLg-x1n6aasq)\",\n __varGroupHash__: \"x16nfoyr\"\n}, r = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\n fontFamilyMono: \"var(--fontFamilyMono-x1bzqfky)\",\n fontSizeXs: \"var(--fontSizeXs-x1w5m325)\",\n fontSizeSm: \"var(--fontSizeSm-x1bjjs4u)\",\n fontSizeMd: \"var(--fontSizeMd-xq8d99q)\",\n fontSizeLg: \"var(--fontSizeLg-x18ngplw)\",\n fontSizeXl: \"var(--fontSizeXl-x1b1mqsu)\",\n fontSizeHeading: \"var(--fontSizeHeading-x1stydh2)\",\n fontWeightNormal: \"var(--fontWeightNormal-x1y1cayu)\",\n fontWeightMedium: \"var(--fontWeightMedium-xaw13ft)\",\n fontWeightSemibold: \"var(--fontWeightSemibold-xg6c7xe)\",\n fontWeightBold: \"var(--fontWeightBold-x1pjkvwg)\",\n lineHeight: \"var(--lineHeight-x1gubzd5)\",\n __varGroupHash__: \"xs62swl\"\n}, a = {\n fontSize1: \"var(--fontSize1-xx27tux)\",\n fontSize2: \"var(--fontSize2-x5hag8h)\",\n fontSize3: \"var(--fontSize3-x1mf6j39)\",\n fontSize4: \"var(--fontSize4-xh0hch2)\",\n fontSize5: \"var(--fontSize5-xcllv62)\",\n fontSize6: \"var(--fontSize6-xo5veds)\",\n fontSize7: \"var(--fontSize7-x1j85tz8)\",\n fontSize8: \"var(--fontSize8-x17zhits)\",\n fontSize9: \"var(--fontSize9-xveysf7)\",\n lineHeight1: \"var(--lineHeight1-x17o1wol)\",\n lineHeight2: \"var(--lineHeight2-xinpx5n)\",\n lineHeight3: \"var(--lineHeight3-x1163vpm)\",\n lineHeight4: \"var(--lineHeight4-x1y0jdbp)\",\n lineHeight5: \"var(--lineHeight5-xjln4cz)\",\n lineHeight6: \"var(--lineHeight6-x1h1b5wo)\",\n lineHeight7: \"var(--lineHeight7-xx3gx0p)\",\n lineHeight8: \"var(--lineHeight8-xk1f09j)\",\n lineHeight9: \"var(--lineHeight9-xshcxhh)\",\n displaySm: \"var(--displaySm-x5inqzv)\",\n displayMd: \"var(--displayMd-x1oektom)\",\n displayLg: \"var(--displayLg-x6qsr1u)\",\n letterSpacingTight: \"var(--letterSpacingTight-xmavxfk)\",\n letterSpacingNormal: \"var(--letterSpacingNormal-x1ih41v1)\",\n letterSpacingWide: \"var(--letterSpacingWide-xt8z9rj)\",\n __varGroupHash__: \"x4cj49w\"\n}, o = {\n bodySm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:6\"\n },\n bodyMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xfzcsg9\",\n \"lineHeight-kLWn49\": \"lineHeight-x80sjjd\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:13\"\n },\n bodyLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1kws70c\",\n \"lineHeight-kLWn49\": \"lineHeight-x1487en2\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:20\"\n },\n caption: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x19zw8p8\",\n \"lineHeight-kLWn49\": \"lineHeight-xsnwo96\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x121swot\",\n $$css: \"tokens/type-presets.css.ts:29\"\n },\n label: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-x120ksxs\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:36\"\n },\n code: {\n \"fontFamily-kMv6JI\": \"fontFamily-x1kygxdj\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:43\"\n },\n overline: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x19zw8p8\",\n \"lineHeight-kLWn49\": \"lineHeight-xsnwo96\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x121swot\",\n \"textTransform-kP9fke\": \"textTransform-xtvhhri\",\n $$css: \"tokens/type-presets.css.ts:50\"\n },\n headingSm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xtv95mj\",\n \"lineHeight-kLWn49\": \"lineHeight-xyb71hx\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:60\"\n },\n headingMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1qndi8g\",\n \"lineHeight-kLWn49\": \"lineHeight-x17ovj3u\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:67\"\n },\n headingLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xo0rcgw\",\n \"lineHeight-kLWn49\": \"lineHeight-x18micsl\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:74\"\n },\n headingXl: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x6ugw34\",\n \"lineHeight-kLWn49\": \"lineHeight-x1f79cfb\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:81\"\n },\n displaySm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1lwaixd\",\n \"lineHeight-kLWn49\": \"lineHeight-x1u7k74\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:90\"\n },\n displayMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xrqn33v\",\n \"lineHeight-kLWn49\": \"lineHeight-x1uo3zyz\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:97\"\n },\n displayLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1s08cw3\",\n \"lineHeight-kLWn49\": \"lineHeight-x1159mfc\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:104\"\n }\n}, s = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, x = {\n xjvd03b: \"xrtwk39 xjvd03b\",\n $$css: !0\n}, l = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, g = {\n xjvd03b: \"xaveibd xjvd03b\",\n $$css: !0\n}, c = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n e as colors,\n c as highContrastShadows,\n g as highContrastTheme,\n i as layoutSpacing,\n l as lightShadows,\n x as lightTheme,\n n as radii,\n s as shadows,\n t as spacing,\n o as typePresets,\n a as typeScale,\n r as typography\n};\n//# sourceMappingURL=index.js.map\n","import type {ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {lightTheme, lightShadows, highContrastTheme, highContrastShadows} from '@duro-app/tokens'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n\n return <html.div style={themeStyles}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fit, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","heading","input","label","nav","p","span","textarea","defaultStyles","strokeIcons","jsxs","Fragment","jsx","clock","forbidden","shield","lock","key","filledIcons","Icon","name","size","filled","base","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","icon","kyUFMd","km5ZXQ","keoZOQ","k1xSpc","kGNEyG","kjj79g","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","defaultIcons","resolveIcon","variant","undefined","Alert","children","resolvedIcon","_rsdMerge","_rsdDefaultStyles","kMv6JI","k63SB2","khDVqt","sizeMd","kLKAdn","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","kOIVth","kkrTdU","k1ekBW","kIyJzY","kAMwcw","kybGjl","kMeerF","k3XXqK","kjBf7l","kInvED","sizeDefault","sizeSmall","primary","secondary","link","danger","fullWidth","kzqmXN","disabled","kSiTet","small","Button","type","onClick","elevated","kGVxlE","outlined","interactive","k3aq6I","sizeCompact","sizeFull","header","k1K539","compact","full","Card","root","rootDisabled","box","kZKoxP","kmuXW","boxUnchecked","boxChecked","kVAEAm","kVQacm","Checkbox","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","e","target","opacity","kXwgrk","k9WMMc","message","action","EmptyState","typePresets","bodySm","kb6lSQ","bodyMd","bodyLg","caption","code","overline","kP9fke","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","alignStart","alignCenter","alignEnd","defaultVariantMap","alignMap","start","center","end","Heading","level","color","align","resolvedVariant","h1","h2","h3","h4","h5","h6","FieldContext","createContext","useFieldContext","useContext","description","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","groupCtx","extraProps","trim","wrapper","addon","kfSwDN","addonStart","kWqL5O","kSWEuD","k26BEO","addonEnd","kZ1KPB","k4WBpm","kaZRDh","addonClickable","addonDisabled","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","backdrop","k87sOh","kbCHJM","kCIrl2","krVfgx","kY2c9j","popup","k7Eaqz","popupEnd","item","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","open","setOpen","highlightedId","setHighlightedId","menuId","rootRef","useRef","triggerRef","itemsRef","Map","orderRef","needsInitialHighlightRef","close","current","focus","toggle","prev","useEffect","order","length","registerItem","element","set","map","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","handleKeyDown","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","Item","ref","isHighlighted","el","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","content","kAzted","scrollbar","kFalU9","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","kUk6DE","viewportMaxHeight","maxHeight","kskxy","val","thumbVertical","height","thumbHorizontal","width","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","handleScroll","vp","clearTimeout","setTimeout","observer","ResizeObserver","observe","disconnect","passive","Viewport","Content","Scrollbar","orientation","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","Math","max","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","handlePointerDown","clientY","clientX","setPointerCapture","pointerId","handlePointerMove","delta","scrollRatio","scrollDelta","handlePointerUp","ScrollArea","itemSelected","hidden","SelectContext","useSelect","useControllableValue","controlledValue","internal","setInternal","setValue","v","useSelectRoot","onValueChange","initialLabels","labels","setLabels","listboxId","found","registerLabel","itemValue","Value","display","selectedValue","isSelected","text","textContent","ItemText","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","Set","toggleGroup","next","has","add","includes","push","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","isActive","SideNav","spinner","kLZC3w","kKVMdj","k44tkh","kyAemX","ko0y90","lg","srOnly","kMcinP","Spinner","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","gridColumns","columns","TableContext","useTable","HeaderContext","isHeader","Header","Body","childArray","Children","toArray","child","index","RowIndexContext","Row","rowIndex","isEvenRow","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","panel","panelVertical","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","List","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Panel","Tabs","kHenm0","Textarea","rows","bg","bgCard","bgCardHover","textMuted","accentHover","accentContrast","border","errorHover","errorBg","errorBorder","errorText","errorContrast","successBg","successBorder","successText","warningBg","warningBorder","warningText","infoBg","infoBorder","infoText","__varGroupHash__","themeMap","light","lightTheme","lightShadows","highContrastTheme","highContrastShadows","ThemeProvider","theme","overrides","themeStyles","weightNormal","weightMedium","weightSemibold","weightBold","truncate","kg5iWk","weightMap","normal","medium","semibold","bold","Text","weight","as","kfzvcC","top","bottom","left","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","alignStretch","gapXs","gapSm","gapMs","gapMd","gapLg","gapXl","gapXxl","gapXxxl","gapMap","xs","ms","xl","xxl","xxxl","stretch","Stack","gap","kwnvtZ","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","minWidth","columnsMap","Grid","minColumnWidth","columnStyle","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","entries","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.6_react-dom@19.2.4_react@19.2.4__react-native@0.84._1278be21509893d955b57d0db9435779/node_modules/react-strict-dom/dist/web/runtime.js","../src/components/Icon/Icon.tsx","../src/components/Alert/styles.css.ts","../src/components/Alert/Alert.tsx","../src/components/Badge/styles.css.ts","../src/components/Badge/Badge.tsx","../src/components/Button/styles.css.ts","../src/components/Button/Button.tsx","../src/components/Callout/styles.css.ts","../src/components/Callout/Callout.tsx","../src/components/Card/styles.css.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/styles.css.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/EmptyState/styles.css.ts","../src/components/EmptyState/EmptyState.tsx","../../tokens/src/tokens/type-presets.css.ts","../src/components/Heading/styles.css.ts","../src/components/Heading/Heading.tsx","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/InputGroup/InputGroupContext.ts","../src/components/Input/styles.css.ts","../src/components/Input/Input.tsx","../src/components/InputGroup/styles.css.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/LinkButton/styles.css.ts","../src/components/LinkButton/LinkButton.tsx","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Menu/Menu.tsx","../src/components/ScrollArea/styles.css.ts","../src/components/ScrollArea/ScrollAreaContext.ts","../src/components/ScrollArea/useScrollAreaRoot.ts","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Select/styles.css.ts","../src/components/Select/SelectContext.ts","../src/hooks/useControllableValue.ts","../src/components/Select/useSelectRoot.ts","../src/components/Select/Select.tsx","../src/components/SideNav/styles.css.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/SideNav.tsx","../src/components/Spinner/styles.css.ts","../src/components/Spinner/Spinner.tsx","../src/components/StatusIcon/styles.css.ts","../src/components/StatusIcon/StatusIcon.tsx","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx","../src/components/Tabs/styles.css.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/useTabsRoot.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/styles.css.ts","../src/components/Textarea/Textarea.tsx","../../tokens/dist/index.js","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Text/styles.css.ts","../src/components/Text/Text.tsx","../src/components/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Stack/styles.css.ts","../src/components/Stack/Stack.tsx","../src/components/Inline/styles.css.ts","../src/components/Inline/Inline.tsx","../src/components/Cluster/styles.css.ts","../src/components/Cluster/Cluster.tsx","../src/components/Grid/styles.css.ts","../src/components/Grid/Grid.tsx","../src/hooks/useContainerQuery.ts"],"sourcesContent":["/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport * as stylex from '@stylexjs/stylex';\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a = styles.inline;\nconst article = styles.block;\nconst aside = styles.block;\nconst b = styles.inline;\nconst bdi = styles.inline;\nconst bdo = styles.inline;\nconst blockquote = styles.block;\nconst br = null;\nconst button = [styles.inlineblock, styles.button];\nconst code = [styles.inline, styles.codePre];\nconst del = null;\nconst div = styles.block;\nconst em = styles.inline;\nconst fieldset = styles.block;\nconst footer = styles.block;\nconst form = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header = styles.block;\nconst hr = [styles.block, styles.hr];\nconst i = styles.inline;\nconst img = styles.img;\nconst input = [styles.inlineblock, styles.input];\nconst ins = null;\nconst kbd = null;\nconst label = styles.inline;\nconst li = styles.block;\nconst main = styles.block;\nconst mark = styles.inline;\nconst nav = styles.block;\nconst ol = [styles.list, styles.block];\nconst optgroup = null;\nconst option = null;\nconst p = styles.block;\nconst pre = [styles.block, styles.codePre];\nconst s = null;\nconst section = styles.block;\nconst select = styles.inlineblock;\nconst span = styles.inline;\nconst strong = [styles.inline, styles.strong];\nconst sub = styles.inline;\nconst sup = styles.inline;\nconst textarea = [styles.inlineblock, styles.textarea];\nconst u = null;\nconst ul = [styles.list, styles.block];\nconst defaultStyles = {\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n};\n\nexport { defaultStyles, merge };\n","import type {ReactNode} from 'react'\n\nexport type IconName =\n | 'x-circle'\n | 'check-circle'\n | 'check-done'\n | 'clock'\n | 'forbidden'\n | 'info-circle'\n | 'alert-triangle'\n | 'shield'\n | 'lock'\n | 'key'\n // Filled variants (solid shape with cutout symbol)\n | 'info-circle-filled'\n | 'alert-triangle-filled'\n | 'check-circle-filled'\n | 'x-circle-filled'\n | 'shield-filled'\n | 'lock-filled'\n\n/** Stroke-based icons (Feather/Lucide style) */\nconst strokeIcons: Partial<Record<IconName, ReactNode>> = {\n 'x-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </>\n ),\n 'check-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"16 10 11 15 8 12\" />\n </>\n ),\n 'check-done': (\n <>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </>\n ),\n clock: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </>\n ),\n forbidden: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </>\n ),\n 'info-circle': (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n 'alert-triangle': (\n <>\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n shield: <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />,\n lock: (\n <>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </>\n ),\n key: (\n <>\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.78 7.78 5.5 5.5 0 0 1 7.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\" />\n </>\n ),\n}\n\n/**\n * Filled icons — solid shape with evenodd cutout for the inner symbol.\n * The cutout reveals the background color, so they work on any theme.\n * Uses fill=\"currentColor\" only, no stroke.\n */\nconst filledIcons: Partial<Record<IconName, ReactNode>> = {\n // Filled circle with \"i\" cutout (dot + line)\n 'info-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-.75 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM11 11a1 1 0 1 1 2 0v5a1 1 0 1 1-2 0v-5z\"\n />\n ),\n // Filled triangle with \"!\" cutout\n 'alert-triangle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM11 10a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3zm.25 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0z\"\n />\n ),\n // Filled circle with checkmark cutout\n 'check-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm4.707 8.707a1 1 0 0 0-1.414-1.414L11 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0l5-5z\"\n />\n ),\n // Filled circle with X cutout\n 'x-circle-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293z\"\n />\n ),\n // Filled shield with checkmark cutout\n 'shield-filled': (\n <path\n fillRule=\"evenodd\"\n d=\"M12 1L3 5v7c0 6.5 8.5 10.5 9 10.73.5-.23 9-4.23 9-10.73V5l-9-4zm3.707 8.707a1 1 0 0 0-1.414-1.414L11 11.586l-1.293-1.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4z\"\n />\n ),\n // Filled lock body with stroke shackle\n 'lock-filled': (\n <>\n <path\n d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n </>\n ),\n}\n\ninterface IconProps {\n name: IconName\n size?: number\n}\n\nexport function Icon({name, size = 24}: IconProps) {\n const filled = filledIcons[name]\n if (filled) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width={size} height={size}>\n {filled}\n </svg>\n )\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width={size}\n height={size}\n >\n {strokeIcons[name]}\n </svg>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: spacing.sm,\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n },\n iconWrap: {\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 1,\n },\n content: {\n flex: 1,\n minWidth: 0,\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<AlertVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface AlertProps {\n variant?: AlertVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: AlertProps['icon'], variant: AlertVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={18} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={18} />\n return icon\n}\n\nexport function Alert({variant = 'info', icon, children}: AlertProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {resolvedIcon ? (\n <>\n <html.div style={styles.iconWrap}>{resolvedIcon}</html.div>\n <html.div style={styles.content}>{children}</html.div>\n </>\n ) : (\n children\n )}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightMedium,\n lineHeight: 1,\n borderRadius: radii.full,\n whiteSpace: 'nowrap',\n },\n sizeMd: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n sizeSm: {\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n fontSize: '0.625rem',\n },\n default: {\n backgroundColor: colors.bgCardHover,\n color: colors.textMuted,\n },\n success: {\n backgroundColor: colors.successBg,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n color: colors.warningText,\n },\n error: {\n backgroundColor: colors.errorBg,\n color: colors.errorText,\n },\n info: {\n backgroundColor: colors.infoBg,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md'\n\ninterface BadgeProps {\n variant?: BadgeVariant\n size?: BadgeSize\n children: ReactNode\n}\n\nconst sizeMap = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n} as const\n\nexport function Badge({variant = 'default', size = 'md', children}: BadgeProps) {\n return <html.span style={[styles.base, sizeMap[size], styles[variant]]}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, color, opacity',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textDecoration: 'none',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 2,\n },\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n ':active': colors.accentHover,\n },\n borderColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderColor: colors.border,\n color: colors.textMuted,\n },\n link: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n textDecoration: {\n default: 'none',\n ':hover': 'underline',\n },\n paddingLeft: 0,\n paddingRight: 0,\n },\n danger: {\n backgroundColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n ':active': colors.errorHover,\n },\n borderColor: {\n default: colors.error,\n ':hover': colors.errorHover,\n },\n color: colors.errorContrast,\n },\n fullWidth: {\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'link' | 'danger'\nexport type ButtonSize = 'default' | 'small'\n\ninterface ButtonProps {\n variant?: ButtonVariant\n size?: ButtonSize\n fullWidth?: boolean\n disabled?: boolean\n type?: 'button' | 'submit'\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function Button({\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n disabled = false,\n type = 'button',\n onClick,\n children,\n}: ButtonProps) {\n return (\n <html.button\n type={type}\n disabled={disabled}\n onClick={onClick}\n style={[\n styles.base,\n sizeMap[size],\n styles[variant],\n fullWidth && styles.fullWidth,\n disabled && styles.disabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n padding: spacing.md,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n overflow: 'hidden', // contain the float\n },\n icon: {\n float: 'left',\n marginRight: spacing.sm,\n marginBottom: spacing.xs,\n marginTop: 2,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n error: {\n backgroundColor: colors.errorBg,\n borderColor: colors.errorBorder,\n color: colors.errorText,\n },\n success: {\n backgroundColor: colors.successBg,\n borderColor: colors.successBorder,\n color: colors.successText,\n },\n warning: {\n backgroundColor: colors.warningBg,\n borderColor: colors.warningBorder,\n color: colors.warningText,\n },\n info: {\n backgroundColor: colors.infoBg,\n borderColor: colors.infoBorder,\n color: colors.infoText,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type CalloutVariant = 'error' | 'success' | 'warning' | 'info'\n\nconst defaultIcons: Record<CalloutVariant, IconName> = {\n info: 'info-circle-filled',\n warning: 'alert-triangle-filled',\n success: 'check-circle-filled',\n error: 'x-circle-filled',\n}\n\ninterface CalloutProps {\n variant?: CalloutVariant\n /** Built-in icon name, custom ReactNode, or false to hide. Defaults to variant icon. */\n icon?: IconName | ReactNode | false\n children: ReactNode\n}\n\nfunction resolveIcon(icon: CalloutProps['icon'], variant: CalloutVariant): ReactNode | null {\n if (icon === false) return null\n if (icon === undefined) return <Icon name={defaultIcons[variant]} size={36} />\n if (typeof icon === 'string') return <Icon name={icon as IconName} size={36} />\n return icon\n}\n\nexport function Callout({variant = 'info', icon, children}: CalloutProps) {\n const resolvedIcon = resolveIcon(icon, variant)\n\n return (\n <html.div role=\"note\" style={[styles.base, styles[variant]]}>\n {resolvedIcon && <html.span style={styles.icon}>{resolvedIcon}</html.span>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n base: {\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n },\n // Variants\n elevated: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n },\n outlined: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n filled: {\n borderRadius: radii.md,\n },\n interactive: {\n borderRadius: radii.md,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n backgroundColor: {\n default: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n transform: {\n default: 'translateY(0)',\n ':hover': 'translateY(-2px)',\n },\n },\n // Sizes (padding)\n sizeDefault: {\n padding: spacing.lg,\n },\n sizeCompact: {\n padding: spacing.md,\n },\n sizeFull: {\n padding: spacing.xl,\n },\n // Header\n header: {\n fontSize: typography.fontSizeLg,\n fontWeight: typography.fontWeightSemibold,\n marginBottom: spacing.md,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type CardVariant = 'elevated' | 'outlined' | 'filled' | 'interactive'\nexport type CardSize = 'default' | 'compact' | 'full'\n\ninterface CardProps {\n variant?: CardVariant\n size?: CardSize\n header?: string\n onClick?: () => void\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n compact: styles.sizeCompact,\n full: styles.sizeFull,\n} as const\n\nexport function Card({\n variant = 'outlined',\n size = 'default',\n header,\n onClick,\n children,\n}: CardProps) {\n return (\n <html.div onClick={onClick} style={[styles.base, styles[variant], sizeMap[size]]}>\n {header && <html.div style={styles.header}>{header}</html.div>}\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n cursor: 'pointer',\n fontSize: typography.fontSizeSm,\n color: colors.text,\n lineHeight: typography.lineHeight,\n },\n rootDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n box: {\n width: 18,\n height: 18,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n boxUnchecked: {\n backgroundColor: colors.bg,\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n },\n boxChecked: {\n backgroundColor: colors.accent,\n borderColor: colors.accent,\n },\n check: {\n width: 12,\n height: 12,\n color: colors.accentContrast,\n },\n input: {\n position: 'absolute',\n width: 1,\n height: 1,\n opacity: 0,\n overflow: 'hidden',\n },\n})\n","import {type ReactNode, useState, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface CheckboxProps {\n name?: string\n value?: string\n checked?: boolean\n defaultChecked?: boolean\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n children?: ReactNode\n}\n\nexport function Checkbox({\n name,\n value,\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n onChange,\n children,\n}: CheckboxProps) {\n const isControlled = controlledChecked !== undefined\n const [internalChecked, setInternalChecked] = useState(defaultChecked)\n const isChecked = isControlled ? controlledChecked : internalChecked\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked)\n }\n onChange?.(e)\n },\n [isControlled, onChange],\n )\n\n return (\n <html.label style={[styles.root, disabled && styles.rootDisabled]}>\n <html.input\n type=\"checkbox\"\n name={name}\n value={value}\n checked={isControlled ? controlledChecked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n onChange={handleChange}\n style={styles.input}\n />\n <html.span\n style={[styles.box, isChecked ? styles.boxChecked : styles.boxUnchecked]}\n aria-hidden\n >\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n style={{opacity: isChecked ? 1 : 0}}\n >\n <polyline\n points=\"2.5 6 5 8.5 9.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n paddingTop: spacing.xl,\n paddingBottom: spacing.xl,\n textAlign: 'center',\n },\n message: {\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n lineHeight: typography.lineHeight,\n },\n action: {\n marginTop: spacing.sm,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\ninterface EmptyStateProps {\n message: string\n icon?: ReactNode\n action?: ReactNode\n}\n\nexport function EmptyState({message, icon, action}: EmptyStateProps) {\n return (\n <html.div style={styles.root}>\n {icon}\n <html.p style={styles.message}>{message}</html.p>\n {action && <html.div style={styles.action}>{action}</html.div>}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type HeadingVariant =\n | 'displayLg'\n | 'displayMd'\n | 'displaySm'\n | 'headingXl'\n | 'headingLg'\n | 'headingMd'\n | 'headingSm'\n\ninterface HeadingProps {\n level: 1 | 2 | 3 | 4 | 5 | 6\n variant?: HeadingVariant\n color?: 'default' | 'muted' | 'accent'\n align?: 'start' | 'center' | 'end'\n children: ReactNode\n}\n\nconst defaultVariantMap: Record<number, HeadingVariant> = {\n 1: 'headingXl',\n 2: 'headingLg',\n 3: 'headingMd',\n 4: 'headingSm',\n 5: 'headingSm',\n 6: 'headingSm',\n}\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Heading({level, variant, color = 'default', align, children}: HeadingProps) {\n const resolvedVariant = variant ?? defaultVariantMap[level]\n const style = [typePresets[resolvedVariant], styles[color], align && alignMap[align]]\n\n if (level === 1) return <html.h1 style={style}>{children}</html.h1>\n if (level === 2) return <html.h2 style={style}>{children}</html.h2>\n if (level === 3) return <html.h3 style={style}>{children}</html.h3>\n if (level === 4) return <html.h4 style={style}>{children}</html.h4>\n if (level === 5) return <html.h5 style={style}>{children}</html.h5>\n return <html.h6 style={style}>{children}</html.h6>\n}\n","import {createContext, useContext} from 'react'\n\ninterface FieldContextValue {\n controlId: string\n descriptionId: string\n errorId: string\n invalid: boolean\n}\n\nexport const FieldContext = createContext<FieldContextValue | null>(null)\n\nexport function useFieldContext() {\n return useContext(FieldContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.xs,\n },\n label: {\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: colors.text,\n },\n description: {\n fontSize: typography.fontSizeXs,\n color: colors.textMuted,\n },\n error: {\n fontSize: typography.fontSizeXs,\n color: colors.error,\n },\n})\n","import {type ReactNode, useId, useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {FieldContext, useFieldContext} from './FieldContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n invalid?: boolean\n children: ReactNode\n}\n\nfunction Root({invalid = false, children}: RootProps) {\n const id = useId()\n const ctx = useMemo(\n () => ({\n controlId: `${id}-control`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n invalid,\n }),\n [id, invalid],\n )\n\n return (\n <FieldContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </FieldContext.Provider>\n )\n}\n\n// --- Label ---\ninterface LabelProps {\n children: ReactNode\n}\n\nfunction Label({children}: LabelProps) {\n const ctx = useFieldContext()\n return (\n <html.label for={ctx?.controlId} style={styles.label}>\n {children}\n </html.label>\n )\n}\n\n// --- Description ---\ninterface DescriptionProps {\n children: ReactNode\n}\n\nfunction Description({children}: DescriptionProps) {\n const ctx = useFieldContext()\n return (\n <html.span id={ctx?.descriptionId} style={styles.description}>\n {children}\n </html.span>\n )\n}\n\n// --- Error ---\ninterface ErrorProps {\n children?: ReactNode\n}\n\nfunction Error({children}: ErrorProps) {\n const ctx = useFieldContext()\n if (!ctx?.invalid && !children) return null\n\n return (\n <html.span id={ctx?.errorId} role=\"alert\" style={styles.error}>\n {children}\n </html.span>\n )\n}\n\nexport const Field = {\n Root,\n Label,\n Description,\n Error,\n}\n","import {createContext, useContext} from 'react'\n\ninterface InputGroupContextValue {\n inGroup: boolean\n}\n\nexport const InputGroupContext = createContext<InputGroupContextValue | null>(null)\n\nexport function useInputGroupContext() {\n return useContext(InputGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n inGroup: {\n borderWidth: 0,\n borderRadius: 0,\n outlineWidth: 0,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {useInputGroupContext} from '../InputGroup/InputGroupContext'\nimport {styles} from './styles.css'\n\ntype StrictInputProps = React.ComponentProps<typeof html.input>\nexport type InputType = NonNullable<StrictInputProps['type']>\n\nexport type InputVariant = 'default' | 'error'\n\ninterface InputProps {\n variant?: InputVariant\n type?: InputType\n name?: string\n placeholder?: string\n required?: boolean\n minLength?: number\n pattern?: string\n autoComplete?:\n | 'on'\n | 'off'\n | 'email'\n | 'username'\n | 'current-password'\n | 'new-password'\n | 'name'\n | 'tel'\n | 'url'\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function Input({\n variant = 'default',\n type = 'text',\n name,\n placeholder,\n required,\n minLength,\n pattern,\n autoComplete,\n value,\n defaultValue,\n disabled,\n onChange,\n}: InputProps) {\n const ctx = useFieldContext()\n const groupCtx = useInputGroupContext()\n\n // react-strict-dom omits web-only `pattern` from its types, but the\n // underlying DOM element supports it. Type-assert to pass it through.\n const extraProps = pattern !== undefined ? {pattern} : undefined\n\n return (\n <html.input\n id={ctx?.controlId}\n type={type}\n name={name}\n placeholder={placeholder}\n required={required}\n minLength={minLength}\n autoComplete={autoComplete}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={onChange}\n style={[styles.base, styles[variant], groupCtx?.inGroup && styles.inGroup]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n wrapper: {\n display: 'flex',\n alignItems: 'stretch',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':focus-within': colors.accent,\n },\n borderRadius: radii.sm,\n overflow: 'hidden',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n backgroundColor: colors.bgCardHover,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.textMuted,\n userSelect: 'none',\n borderWidth: 0,\n },\n addonStart: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n addonEnd: {\n borderLeftWidth: 1,\n borderLeftStyle: 'solid',\n borderLeftColor: colors.border,\n },\n addonClickable: {\n cursor: 'pointer',\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCard,\n ':active': colors.bg,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n addonDisabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n})\n","import type {ReactNode} from 'react'\nimport {useMemo} from 'react'\nimport {html} from 'react-strict-dom'\nimport {InputGroupContext} from './InputGroupContext'\nimport {styles} from './styles.css'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useMemo(() => ({inGroup: true}), [])\n\n return (\n <InputGroupContext.Provider value={ctx}>\n <html.div style={styles.wrapper}>{children}</html.div>\n </InputGroupContext.Provider>\n )\n}\n\n// --- Addon ---\ninterface AddonProps {\n position?: 'start' | 'end'\n onClick?: () => void\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Addon({position = 'end', onClick, disabled, children}: AddonProps) {\n const positionStyle = position === 'start' ? styles.addonStart : styles.addonEnd\n const style = [\n styles.addon,\n positionStyle,\n onClick && !disabled && styles.addonClickable,\n disabled && styles.addonDisabled,\n ]\n\n if (onClick) {\n return (\n <html.button type=\"button\" onClick={onClick} disabled={disabled} style={style}>\n {children}\n </html.button>\n )\n }\n\n return <html.span style={style}>{children}</html.span>\n}\n\nexport const InputGroup = {\n Root,\n Addon,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: spacing.sm,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n cursor: 'pointer',\n textDecoration: 'none',\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n sizeDefault: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n },\n sizeSmall: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n primary: {\n backgroundColor: {\n default: colors.accent,\n ':hover': colors.accentHover,\n },\n color: colors.accentContrast,\n },\n secondary: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n color: colors.textMuted,\n },\n fullWidth: {\n width: '100%',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type LinkButtonVariant = 'primary' | 'secondary'\nexport type LinkButtonSize = 'default' | 'small'\n\ninterface LinkButtonProps {\n href: string\n variant?: LinkButtonVariant\n size?: LinkButtonSize\n fullWidth?: boolean\n target?: '_blank' | '_self'\n rel?: string\n children: ReactNode\n}\n\nconst sizeMap = {\n default: styles.sizeDefault,\n small: styles.sizeSmall,\n} as const\n\nexport function LinkButton({\n href,\n variant = 'primary',\n size = 'default',\n fullWidth = false,\n target,\n rel,\n children,\n}: LinkButtonProps) {\n return (\n <html.a\n href={href}\n target={target}\n rel={rel}\n style={[styles.base, sizeMap[size], styles[variant], fullWidth && styles.fullWidth]}\n >\n {children}\n </html.a>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: '150ms',\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n overflow: 'hidden',\n },\n viewport: {\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'auto',\n // Hide native scrollbar\n scrollbarWidth: 'none',\n },\n content: {\n minWidth: '100%',\n minHeight: '100%',\n },\n scrollbar: {\n position: 'absolute',\n zIndex: 1,\n display: 'flex',\n touchAction: 'none',\n userSelect: 'none',\n transitionProperty: 'opacity',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n },\n scrollbarVertical: {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8,\n flexDirection: 'column',\n paddingTop: 2,\n paddingBottom: 2,\n paddingRight: 2,\n },\n scrollbarHorizontal: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 8,\n flexDirection: 'row',\n paddingLeft: 2,\n paddingRight: 2,\n paddingBottom: 2,\n },\n scrollbarHidden: {\n opacity: 0,\n },\n scrollbarVisible: {\n opacity: 1,\n },\n thumb: {\n position: 'relative',\n flex: 1,\n backgroundColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n },\n borderRadius: radii.full,\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n // Dynamic styles — simple identifier params only (StyleX constraint)\n viewportMaxHeight: (maxHeight: number | string) => ({\n maxHeight,\n }),\n thumbVertical: (height: string, transform: string) => ({\n height,\n transform,\n }),\n thumbHorizontal: (width: string, transform: string) => ({\n width,\n transform,\n }),\n})\n","import {createContext, useContext} from 'react'\n\nexport interface ScrollAreaContextValue {\n viewportRef: React.RefObject<HTMLDivElement | null>\n contentRef: React.RefObject<HTMLDivElement | null>\n scrollTop: number\n scrollLeft: number\n scrollHeight: number\n scrollWidth: number\n clientHeight: number\n clientWidth: number\n scrolling: boolean\n}\n\nexport const ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null)\n\nexport function useScrollArea() {\n const ctx = useContext(ScrollAreaContext)\n if (!ctx) throw new Error('ScrollArea compound components must be used within ScrollArea.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useEffect} from 'react'\nimport type {ScrollAreaContextValue} from './ScrollAreaContext'\n\nexport function useScrollAreaRoot(): ScrollAreaContextValue {\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const contentRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollLeft, setScrollLeft] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [scrollWidth, setScrollWidth] = useState(0)\n const [clientHeight, setClientHeight] = useState(0)\n const [clientWidth, setClientWidth] = useState(0)\n const [scrolling, setScrolling] = useState(false)\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const handleScroll = useCallback(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n setScrollTop(vp.scrollTop)\n setScrollLeft(vp.scrollLeft)\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n setScrolling(true)\n\n if (scrollTimerRef.current) clearTimeout(scrollTimerRef.current)\n scrollTimerRef.current = setTimeout(() => setScrolling(false), 1000)\n }, [])\n\n // Observe viewport size changes\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n\n const observer = new ResizeObserver(() => {\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n })\n observer.observe(vp)\n // Initial measurement\n setScrollHeight(vp.scrollHeight)\n setScrollWidth(vp.scrollWidth)\n setClientHeight(vp.clientHeight)\n setClientWidth(vp.clientWidth)\n\n return () => observer.disconnect()\n }, [])\n\n // Attach scroll listener directly to ensure we capture it\n useEffect(() => {\n const vp = viewportRef.current\n if (!vp) return\n vp.addEventListener('scroll', handleScroll, {passive: true})\n return () => vp.removeEventListener('scroll', handleScroll)\n }, [handleScroll])\n\n return {\n viewportRef,\n contentRef,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n scrolling,\n }\n}\n","import {type ReactNode, useRef, useCallback} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {ScrollAreaContext, useScrollArea} from './ScrollAreaContext'\nimport {useScrollAreaRoot} from './useScrollAreaRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const ctx = useScrollAreaRoot()\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <html.div style={styles.root}>{children}</html.div>\n </ScrollAreaContext.Provider>\n )\n}\n\n// --- Viewport ---\n\ninterface ViewportProps {\n children: ReactNode\n maxHeight?: number | string\n}\n\nfunction Viewport({children, maxHeight}: ViewportProps) {\n const {viewportRef} = useScrollArea()\n\n return (\n <html.div\n ref={viewportRef}\n style={[styles.viewport, maxHeight != null && styles.viewportMaxHeight(maxHeight)]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Content ---\n\ninterface ContentProps {\n children: ReactNode\n}\n\nfunction Content({children}: ContentProps) {\n const {contentRef} = useScrollArea()\n return (\n <html.div ref={contentRef} style={styles.content}>\n {children}\n </html.div>\n )\n}\n\n// --- Scrollbar ---\n\ntype ScrollbarOrientation = 'vertical' | 'horizontal'\n\ninterface ScrollbarProps {\n orientation?: ScrollbarOrientation\n children: ReactNode\n}\n\nfunction Scrollbar({orientation = 'vertical', children}: ScrollbarProps) {\n const {scrolling, scrollHeight, scrollWidth, clientHeight, clientWidth} = useScrollArea()\n\n // Hide scrollbar when content fits\n const hasOverflow =\n orientation === 'vertical' ? scrollHeight > clientHeight : scrollWidth > clientWidth\n\n if (!hasOverflow) return null\n\n return (\n <html.div\n style={[\n styles.scrollbar,\n orientation === 'vertical' ? styles.scrollbarVertical : styles.scrollbarHorizontal,\n scrolling ? styles.scrollbarVisible : styles.scrollbarHidden,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Thumb ---\n\ninterface ThumbProps {\n orientation?: ScrollbarOrientation\n}\n\nfunction Thumb({orientation = 'vertical'}: ThumbProps) {\n const {viewportRef, scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth} =\n useScrollArea()\n const draggingRef = useRef(false)\n const startPosRef = useRef(0)\n const startScrollRef = useRef(0)\n\n const isVertical = orientation === 'vertical'\n\n const thumbSizePercent = isVertical\n ? Math.max((clientHeight / scrollHeight) * 100, 10)\n : Math.max((clientWidth / scrollWidth) * 100, 10)\n\n const maxScroll = isVertical ? scrollHeight - clientHeight : scrollWidth - clientWidth\n const trackSize = isVertical ? clientHeight : clientWidth\n const thumbPixelSize = (thumbSizePercent / 100) * trackSize\n const scrollOffset = isVertical ? scrollTop : scrollLeft\n const thumbOffset = maxScroll > 0 ? (scrollOffset / maxScroll) * (trackSize - thumbPixelSize) : 0\n\n const thumbStyle = isVertical\n ? styles.thumbVertical(`${thumbSizePercent}%`, `translateY(${thumbOffset}px)`)\n : styles.thumbHorizontal(`${thumbSizePercent}%`, `translateX(${thumbOffset}px)`)\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n draggingRef.current = true\n startPosRef.current = isVertical ? e.clientY : e.clientX\n startScrollRef.current = isVertical\n ? (viewportRef.current?.scrollTop ?? 0)\n : (viewportRef.current?.scrollLeft ?? 0)\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [isVertical, viewportRef],\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!draggingRef.current) return\n const vp = viewportRef.current\n if (!vp) return\n\n const delta = (isVertical ? e.clientY : e.clientX) - startPosRef.current\n const scrollRatio = maxScroll / (trackSize - thumbPixelSize)\n const scrollDelta = delta * scrollRatio\n\n if (isVertical) {\n vp.scrollTop = startScrollRef.current + scrollDelta\n } else {\n vp.scrollLeft = startScrollRef.current + scrollDelta\n }\n },\n [isVertical, maxScroll, trackSize, thumbPixelSize, viewportRef],\n )\n\n const handlePointerUp = useCallback(() => {\n draggingRef.current = false\n }, [])\n\n return (\n <html.div\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={[styles.thumb, thumbStyle]}\n />\n )\n}\n\nexport const ScrollArea = {\n Root,\n Viewport,\n Content,\n Scrollbar,\n Thumb,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: {\n default: colors.border,\n ':hover': colors.accent,\n },\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n },\n value: {\n color: colors.text,\n },\n placeholder: {\n color: colors.textMuted,\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n color: colors.textMuted,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 120,\n zIndex: 50,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n },\n itemSelected: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n hidden: {\n display: 'none',\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SelectContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n value: string | null\n setValue: (value: string) => void\n labels: Record<string, string>\n registerLabel: (value: string, label: string) => void\n listboxId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, value: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null)\n\nexport function useSelect() {\n const ctx = useContext(SelectContext)\n if (!ctx) throw new Error('Select compound components must be used within Select.Root')\n return ctx\n}\n","import {useState, useCallback} from 'react'\n\nexport function useControllableValue<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n) {\n const [internal, setInternal] = useState(defaultValue)\n const value = controlledValue !== undefined ? controlledValue : internal\n const setValue = useCallback(\n (v: T) => {\n if (controlledValue === undefined) setInternal(v)\n onChange?.(v)\n },\n [controlledValue, onChange],\n )\n return [value, setValue] as const\n}\n","import {useState, useCallback, useMemo, useRef, useId, useEffect} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {SelectContextValue} from './SelectContext'\n\ninterface UseSelectRootOptions {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\n initialLabels,\n}: UseSelectRootOptions) {\n const [value, setValue] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange,\n )\n const [open, setOpen] = useState(false)\n const [labels, setLabels] = useState<Record<string, string>>(initialLabels ?? {})\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const listboxId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, {value: string; element: HTMLElement}>())\n const orderRef = useRef<string[]>([])\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n const items = itemsRef.current\n const order = orderRef.current\n let found: string | null = null\n for (const id of order) {\n const item = items.get(id)\n if (item && item.value === value) {\n found = id\n break\n }\n }\n setHighlightedId(found ?? (order.length > 0 ? order[0] : null))\n } else {\n setHighlightedId(null)\n }\n return !prev\n })\n }, [value])\n\n const registerLabel = useCallback((v: string, label: string) => {\n setLabels((prev) => {\n if (prev[v] === label) return prev\n return {...prev, [v]: label}\n })\n }, [])\n\n const registerItem = useCallback((id: string, itemValue: string, element: HTMLElement) => {\n itemsRef.current.set(id, {value: itemValue, element})\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)?.element\n const elB = map.get(b)?.element\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n const items = itemsRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n setHighlightedId((prev) => {\n if (prev) {\n const item = items.get(prev)\n if (item) {\n setValue(item.value)\n close()\n }\n }\n return prev\n })\n break\n }\n case 'Escape':\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close, setValue])\n\n const ctx: SelectContextValue = useMemo(\n () => ({\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }),\n [\n open,\n toggle,\n close,\n value,\n setValue,\n labels,\n registerLabel,\n listboxId,\n highlightedId,\n setHighlightedId,\n registerItem,\n ],\n )\n\n return {ctx, rootRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {SelectContext, useSelect} from './SelectContext'\nimport {useSelectRoot} from './useSelectRoot'\n\n// --- Root ---\ninterface RootProps {\n name?: string\n defaultValue?: string\n value?: string\n onValueChange?: (value: string | null) => void\n initialLabels?: Record<string, string>\n children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, initialLabels, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange, initialLabels})\n\n return (\n <SelectContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {name && <html.input type=\"hidden\" name={name} value={ctx.value ?? ''} />}\n {children}\n </html.div>\n </SelectContext.Provider>\n )\n}\n\n// --- Trigger ---\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, listboxId, highlightedId, triggerRef} = useSelect()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n role={'combobox' as 'listbox'}\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={highlightedId ?? undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Value ---\nfunction Value({placeholder}: {placeholder?: string}) {\n const {value, labels} = useSelect()\n const display = value ? (labels[value] ?? value) : null\n\n return (\n <html.span style={display ? styles.value : styles.placeholder}>\n {display ?? placeholder}\n </html.span>\n )\n}\n\n// --- Icon ---\nfunction Icon({children}: {children?: ReactNode}) {\n return (\n <html.span style={styles.icon}>\n {children ?? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </html.span>\n )\n}\n\n// --- Popup ---\nfunction Popup({children}: {children: ReactNode}) {\n const {open, close, listboxId} = useSelect()\n\n return (\n <>\n {open && <html.div style={styles.backdrop} onClick={close} />}\n <html.div\n id={listboxId}\n role=\"listbox\"\n aria-hidden={!open}\n style={[styles.popup, !open && styles.hidden]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value: itemValue, children}: ItemProps) {\n const {\n value: selectedValue,\n setValue,\n close,\n registerLabel,\n highlightedId,\n setHighlightedId,\n registerItem,\n } = useSelect()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isSelected = selectedValue === itemValue\n const isHighlighted = highlightedId === id\n\n // Register label from DOM text content (works with both string and JSX children)\n useEffect(() => {\n const el = ref.current\n if (!el) return\n const text = el.textContent\n if (text) registerLabel(itemValue, text)\n }, [itemValue, registerLabel])\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, itemValue, el)\n }, [id, itemValue, registerItem])\n\n const handleClick = () => {\n setValue(itemValue)\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[\n styles.item,\n isSelected && styles.itemSelected,\n isHighlighted && styles.itemHighlighted,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- ItemText ---\nfunction ItemText({children}: {children: ReactNode}) {\n return <html.span>{children}</html.span>\n}\n\nexport const Select = {\n Root,\n Trigger,\n Value,\n Icon,\n Popup,\n Item,\n ItemText,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n },\n group: {\n display: 'flex',\n flexDirection: 'column',\n },\n groupTrigger: {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.xs,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n fontWeight: typography.fontWeightSemibold,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n transitionProperty: 'color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n groupTriggerActive: {\n color: colors.text,\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n transitionProperty: 'transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n chevronOpen: {\n transform: 'rotate(90deg)',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: spacing.lg,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightNormal,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 0,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'color, background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n textAlign: 'left' as const,\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n },\n itemActive: {\n color: colors.accent,\n fontWeight: typography.fontWeightMedium,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface SideNavContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n expandedGroups: Set<string>\n toggleGroup: (group: string) => void\n registerItem: (value: string) => () => void\n orderRef: React.RefObject<string[]>\n}\n\nexport const SideNavContext = createContext<SideNavContextValue | null>(null)\n\nexport function useSideNav() {\n const ctx = useContext(SideNavContext)\n if (!ctx) throw new Error('SideNav compound components must be used within SideNav.Root')\n return ctx\n}\n","import {type ReactNode, useState, useCallback, useRef, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport {SideNavContext, useSideNav} from './SideNavContext'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n}\n\nfunction Root({children, value: controlledValue, defaultValue, onValueChange}: RootProps) {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set())\n const orderRef = useRef<string[]>([])\n\n const toggleGroup = useCallback((group: string) => {\n setExpandedGroups((prev) => {\n const next = new Set(prev)\n if (next.has(group)) {\n next.delete(group)\n } else {\n next.add(group)\n }\n return next\n })\n }, [])\n\n const registerItem = useCallback((value: string) => {\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n // Auto-expand group containing active value\n useEffect(() => {\n if (activeValue) {\n setExpandedGroups((prev) => {\n // We don't know which group it belongs to here — Group handles this\n return prev\n })\n }\n }, [activeValue])\n\n return (\n <SideNavContext.Provider\n value={{activeValue, onSelect, expandedGroups, toggleGroup, registerItem, orderRef}}\n >\n <html.nav role=\"navigation\" style={styles.root}>\n {children}\n </html.nav>\n </SideNavContext.Provider>\n )\n}\n\n// --- Group ---\n\ninterface GroupProps {\n children: ReactNode\n label: string\n groupKey?: string\n defaultExpanded?: boolean\n}\n\nfunction Group({children, label, groupKey, defaultExpanded}: GroupProps) {\n const key = groupKey ?? label\n const {expandedGroups, toggleGroup, activeValue} = useSideNav()\n const isExpanded = expandedGroups.has(key)\n const groupRef = useRef<HTMLDivElement>(null)\n\n // Auto-expand if this group contains the active item\n useEffect(() => {\n if (!activeValue || expandedGroups.has(key)) return\n const el = groupRef.current\n if (!el) return\n const activeBtn = el.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n if (activeBtn) {\n toggleGroup(key)\n }\n }, [activeValue, key, expandedGroups, toggleGroup])\n\n // Expand on first render if defaultExpanded\n useEffect(() => {\n if (defaultExpanded && !expandedGroups.has(key)) {\n toggleGroup(key)\n }\n // Only run on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const hasActiveChild = (() => {\n if (!activeValue || !groupRef.current) return false\n return !!groupRef.current.querySelector(`[data-nav-value=\"${activeValue}\"]`)\n })()\n\n return (\n <html.div ref={groupRef} style={styles.group}>\n <html.button\n type=\"button\"\n onClick={() => toggleGroup(key)}\n style={[styles.groupTrigger, hasActiveChild && styles.groupTriggerActive]}\n aria-expanded={isExpanded}\n >\n <html.span style={[styles.chevron, isExpanded && styles.chevronOpen]}>\n <svg\n width={10}\n height={10}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </html.span>\n {label}\n </html.button>\n {isExpanded && children}\n </html.div>\n )\n}\n\n// --- Item ---\n\ninterface ItemProps {\n value: string\n children: ReactNode\n}\n\nfunction Item({value, children}: ItemProps) {\n const {activeValue, onSelect, registerItem} = useSideNav()\n const isActive = activeValue === value\n\n useEffect(() => {\n return registerItem(value)\n }, [value, registerItem])\n\n return (\n <html.button\n type=\"button\"\n data-nav-value={value}\n onClick={() => onSelect(value)}\n style={[styles.item, isActive && styles.itemActive]}\n aria-current={isActive ? 'page' : undefined}\n >\n {children}\n </html.button>\n )\n}\n\nexport const SideNav = {\n Root,\n Group,\n Item,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\n\nconst spin = css.keyframes({\n '0%': {transform: 'rotate(0deg)'},\n '100%': {transform: 'rotate(360deg)'},\n})\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n spinner: {\n borderRadius: '50%',\n borderStyle: 'solid',\n borderColor: colors.border,\n borderTopColor: colors.accent,\n animationName: spin,\n animationDuration: '0.6s',\n animationTimingFunction: 'linear',\n animationIterationCount: 'infinite',\n },\n sm: {\n width: 16,\n height: 16,\n borderWidth: 2,\n },\n md: {\n width: 24,\n height: 24,\n borderWidth: 2,\n },\n lg: {\n width: 40,\n height: 40,\n borderWidth: 3,\n },\n srOnly: {\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n },\n})\n","import {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\n\ninterface SpinnerProps {\n size?: SpinnerSize\n label?: string\n}\n\nconst sizeMap = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const\n\nexport function Spinner({size = 'md', label = 'Loading'}: SpinnerProps) {\n return (\n <html.div role=\"status\" style={styles.root}>\n <html.div style={[styles.spinner, sizeMap[size]]} aria-hidden />\n <html.span style={styles.srOnly}>{label}</html.span>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: spacing.md,\n },\n error: {\n color: colors.error,\n },\n success: {\n color: colors.success,\n },\n warning: {\n color: colors.warning,\n },\n info: {\n color: colors.info,\n },\n muted: {\n color: colors.textMuted,\n },\n})\n","import {html} from 'react-strict-dom'\nimport {Icon} from '../Icon'\nimport type {IconName} from '../Icon'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = Extract<\n IconName,\n 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\n>\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'info' | 'muted'\n\ninterface StatusIconProps {\n name: StatusIconName\n size?: number\n variant?: StatusIconVariant\n}\n\nexport function StatusIcon({name, size = 48, variant = 'muted'}: StatusIconProps) {\n return (\n <html.div style={[styles.root, styles[variant]]}>\n <Icon name={name} size={size} />\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Root\n root: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Header group\n header: {\n backgroundColor: colors.bgCard,\n },\n\n // Row\n row: {\n display: 'grid',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n rowLastChild: {\n borderBottomWidth: 0,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n },\n\n // Header cell\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n },\n\n // Body cell\n cell: {\n color: colors.text,\n display: 'flex',\n alignItems: 'center',\n },\n\n // Size: sm\n cellSm: {\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows)\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders)\n borderedCell: {\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // Dynamic styles — simple identifier params only (StyleX constraint)\n gridColumns: (columns: number) => ({\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }),\n})\n","import {type ReactNode, createContext, useContext, Children} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n columns: number\n isHeader: boolean\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext (to distinguish header vs body rowgroup) ---\n\nconst HeaderContext = createContext(false)\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n columns: number\n}\n\nfunction Root({children, variant = 'default', size = 'md', columns}: RootProps) {\n return (\n <TableContext.Provider value={{variant, size, columns, isHeader: false}}>\n <html.div role=\"table\" style={styles.root}>\n {children}\n </html.div>\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nfunction Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nfunction Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children)\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\">\n {childArray.map((child, index) => {\n if (variant === 'striped') {\n return (\n <RowIndexContext.Provider key={index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n }\n return child\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// Row index context for striped variant\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n\nfunction Row({children}: {children: ReactNode}) {\n const {variant, columns} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children)\n const isLastRow = false // handled by CSS or parent\n\n return (\n <html.div\n role=\"row\"\n style={[\n styles.row,\n styles.gridColumns(columns),\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n ]}\n >\n {variant === 'bordered'\n ? childArray.map((child, index) => (\n <CellIndexContext.Provider key={index} value={{index, total: childArray.length}}>\n {child}\n </CellIndexContext.Provider>\n ))\n : children}\n </html.div>\n )\n}\n\n// Cell index context for bordered variant\nconst CellIndexContext = createContext<{index: number; total: number}>({\n index: 0,\n total: 0,\n})\n\n// --- HeaderCell ---\n\nfunction HeaderCell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Cell ---\n\nfunction Cell({children}: {children: ReactNode}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Export ---\n\nexport const Table = {\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n rootVertical: {\n flexDirection: 'row',\n },\n list: {\n display: 'flex',\n flexDirection: 'row',\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n gap: spacing.xs,\n },\n listVertical: {\n flexDirection: 'column',\n borderBottomWidth: 0,\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n gap: 0,\n },\n tab: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n fontWeight: typography.fontWeightMedium,\n color: {\n default: colors.textMuted,\n ':hover': colors.text,\n },\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderBottomWidth: 2,\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n cursor: 'pointer',\n transitionProperty: 'color, border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': -2,\n },\n },\n tabVertical: {\n justifyContent: 'flex-start',\n borderBottomWidth: 0,\n borderRightWidth: 2,\n borderRightStyle: 'solid',\n borderRightColor: 'transparent',\n },\n tabActiveHorizontal: {\n color: colors.text,\n borderBottomColor: colors.accent,\n },\n tabActiveVertical: {\n color: colors.text,\n borderRightColor: colors.accent,\n },\n tabDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n color: colors.textMuted,\n },\n panel: {\n paddingTop: spacing.md,\n },\n panelVertical: {\n paddingTop: 0,\n paddingLeft: spacing.md,\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport interface TabsContextValue {\n activeValue: string | null\n onSelect: (value: string) => void\n orientation: Orientation\n registerTab: (value: string, disabled: boolean) => () => void\n tabsRef: React.RefObject<Map<string, boolean>>\n orderRef: React.RefObject<string[]>\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport function useTabs() {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error('Tabs compound components must be used within Tabs.Root')\n return ctx\n}\n","import {useCallback, useRef} from 'react'\nimport {useControllableValue} from '../../hooks/useControllableValue'\nimport type {Orientation, TabsContextValue} from './TabsContext'\n\ninterface UseTabsRootOptions {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: Orientation\n}\n\nexport function useTabsRoot({\n value: controlledValue,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: UseTabsRootOptions): TabsContextValue {\n const [activeValue, onSelect] = useControllableValue<string | null>(\n controlledValue,\n defaultValue ?? null,\n onValueChange\n ? (v) => {\n if (v !== null) onValueChange(v)\n }\n : undefined,\n )\n const tabsRef = useRef(new Map<string, boolean>())\n const orderRef = useRef<string[]>([])\n\n const registerTab = useCallback((value: string, disabled: boolean) => {\n tabsRef.current.set(value, disabled)\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value)\n }\n return () => {\n tabsRef.current.delete(value)\n orderRef.current = orderRef.current.filter((v) => v !== value)\n }\n }, [])\n\n return {activeValue, onSelect, orientation, registerTab, tabsRef, orderRef}\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {TabsContext, useTabs} from './TabsContext'\nimport {useTabsRoot} from './useTabsRoot'\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n orientation?: 'horizontal' | 'vertical'\n}\n\nfunction Root({\n children,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n}: RootProps) {\n const ctx = useTabsRoot({value, defaultValue, onValueChange, orientation})\n\n return (\n <TabsContext.Provider value={ctx}>\n <html.div style={[styles.root, orientation === 'vertical' && styles.rootVertical]}>\n {children}\n </html.div>\n </TabsContext.Provider>\n )\n}\n\n// --- List ---\n\ninterface ListProps {\n children: ReactNode\n}\n\nfunction List({children}: ListProps) {\n const {orientation, activeValue, onSelect, tabsRef, orderRef} = useTabs()\n const listRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const el = listRef.current\n if (!el) return\n\n function handleKeyDown(this: HTMLElement, e: KeyboardEvent) {\n const order = orderRef.current\n const tabs = tabsRef.current\n if (order.length === 0) return\n const listEl = this\n\n const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'\n const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'\n\n let targetValue: string | null = null\n\n switch (e.key) {\n case nextKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : -1\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx + i) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case prevKey: {\n e.preventDefault()\n const currentIdx = activeValue ? order.indexOf(activeValue) : 0\n for (let i = 1; i <= order.length; i++) {\n const idx = (currentIdx - i + order.length) % order.length\n const val = order[idx]\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'Home': {\n e.preventDefault()\n for (const val of order) {\n if (!tabs.get(val)) {\n targetValue = val\n break\n }\n }\n break\n }\n case 'End': {\n e.preventDefault()\n for (let i = order.length - 1; i >= 0; i--) {\n if (!tabs.get(order[i])) {\n targetValue = order[i]\n break\n }\n }\n break\n }\n }\n\n if (targetValue) {\n onSelect(targetValue)\n // Focus the newly activated tab button\n const tabEl = listEl.querySelector(\n `[data-tab-value=\"${targetValue}\"]`,\n ) as HTMLElement | null\n tabEl?.focus()\n }\n }\n\n el.addEventListener('keydown', handleKeyDown)\n return () => el.removeEventListener('keydown', handleKeyDown)\n }, [orientation, activeValue, onSelect, tabsRef, orderRef])\n\n return (\n <html.div\n ref={listRef}\n role=\"tablist\"\n aria-orientation={orientation}\n style={[styles.list, orientation === 'vertical' && styles.listVertical]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- Tab ---\n\ninterface TabProps {\n value: string\n disabled?: boolean\n children: ReactNode\n}\n\nfunction Tab({value, disabled = false, children}: TabProps) {\n const {activeValue, onSelect, orientation, registerTab} = useTabs()\n const isActive = activeValue === value\n const tabId = useId()\n const panelId = `${tabId}-panel`\n\n useEffect(() => {\n return registerTab(value, disabled)\n }, [value, disabled, registerTab])\n\n const handleClick = () => {\n if (!disabled) {\n onSelect(value)\n }\n }\n\n return (\n <html.button\n type=\"button\"\n role=\"tab\"\n id={tabId}\n aria-selected={isActive}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n data-tab-value={value}\n tabIndex={isActive ? 0 : -1}\n onClick={handleClick}\n style={[\n styles.tab,\n orientation === 'vertical' && styles.tabVertical,\n isActive &&\n (orientation === 'vertical' ? styles.tabActiveVertical : styles.tabActiveHorizontal),\n disabled && styles.tabDisabled,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Panel ---\n\ninterface PanelProps {\n value: string\n children: ReactNode\n}\n\nfunction Panel({value, children}: PanelProps) {\n const {activeValue, orientation} = useTabs()\n\n if (activeValue !== value) return null\n\n return (\n <html.div\n role=\"tabpanel\"\n style={[styles.panel, orientation === 'vertical' && styles.panelVertical]}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tabs = {\n Root,\n List,\n Tab,\n Panel,\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n base: {\n width: '100%',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n lineHeight: typography.lineHeight,\n color: colors.text,\n backgroundColor: colors.bg,\n borderWidth: 1,\n borderStyle: 'solid',\n borderRadius: radii.sm,\n resize: 'vertical' as const,\n transitionProperty: 'border-color',\n transitionDuration: '150ms',\n transitionTimingFunction: 'ease',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: {\n default: 'none',\n ':focus-visible': 'solid',\n },\n outlineColor: {\n default: 'transparent',\n ':focus-visible': colors.accent,\n },\n outlineOffset: {\n default: 0,\n ':focus-visible': 1,\n },\n },\n default: {\n borderColor: {\n default: colors.border,\n ':hover': colors.textMuted,\n ':focus': colors.accent,\n },\n },\n error: {\n borderColor: {\n default: colors.error,\n ':focus': colors.error,\n },\n },\n})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\nimport {styles} from './styles.css'\n\nexport type TextareaVariant = 'default' | 'error'\n\ninterface TextareaProps {\n variant?: TextareaVariant\n name?: string\n placeholder?: string\n required?: boolean\n rows?: number\n value?: string\n defaultValue?: string\n disabled?: boolean\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n}\n\nexport function Textarea({\n variant = 'default',\n name,\n placeholder,\n required,\n rows = 3,\n value,\n defaultValue,\n disabled,\n onChange,\n}: TextareaProps) {\n const ctx = useFieldContext()\n\n return (\n <html.textarea\n id={ctx?.controlId}\n name={name}\n placeholder={placeholder}\n required={required}\n rows={rows}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n aria-describedby={\n ctx ? `${ctx.descriptionId} ${ctx.invalid ? ctx.errorId : ''}`.trim() : undefined\n }\n aria-invalid={ctx?.invalid || variant === 'error' || undefined}\n onChange={onChange}\n style={[styles.base, styles[variant]]}\n />\n )\n}\n","const e = {\n bg: \"var(--bg-xqkwqtp)\",\n bgCard: \"var(--bgCard-xj2l5r)\",\n bgCardHover: \"var(--bgCardHover-xlxk7vw)\",\n text: \"var(--text-xlpbogt)\",\n textMuted: \"var(--textMuted-x651nu9)\",\n accent: \"var(--accent-xw7wp3v)\",\n accentHover: \"var(--accentHover-x18fqoz)\",\n accentContrast: \"var(--accentContrast-x3gzxyp)\",\n border: \"var(--border-x1drj1pb)\",\n error: \"var(--error-x13gdhh0)\",\n errorHover: \"var(--errorHover-x7eyu03)\",\n errorBg: \"var(--errorBg-xrl8836)\",\n errorBorder: \"var(--errorBorder-x1a6pjl)\",\n errorText: \"var(--errorText-xf51nwe)\",\n errorContrast: \"var(--errorContrast-x1lvjkah)\",\n success: \"var(--success-x197pe5n)\",\n successBg: \"var(--successBg-xzjukav)\",\n successBorder: \"var(--successBorder-x1my3ygc)\",\n successText: \"var(--successText-x46dg9e)\",\n warning: \"var(--warning-x1gq0pyw)\",\n warningBg: \"var(--warningBg-xtnxqss)\",\n warningBorder: \"var(--warningBorder-x1ev2mr5)\",\n warningText: \"var(--warningText-x1lgjghx)\",\n info: \"var(--info-x97ho0r)\",\n infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, t = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n ms: \"var(--ms-x13y09zs)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n xxxl: \"var(--xxxl-xroalp5)\",\n __varGroupHash__: \"x6uc9q\"\n}, n = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, i = {\n stackXs: \"var(--stackXs-x1qfrfo2)\",\n stackSm: \"var(--stackSm-x2rk1ut)\",\n stackMd: \"var(--stackMd-xhblkt4)\",\n stackLg: \"var(--stackLg-xeue779)\",\n stackXl: \"var(--stackXl-x7sbbgu)\",\n inlineXs: \"var(--inlineXs-xq4tp4f)\",\n inlineSm: \"var(--inlineSm-x2o8bbf)\",\n inlineMd: \"var(--inlineMd-x1oalkxi)\",\n inlineLg: \"var(--inlineLg-xz69o43)\",\n containerSm: \"var(--containerSm-x3nosus)\",\n containerMd: \"var(--containerMd-x170dvin)\",\n containerLg: \"var(--containerLg-x1n6aasq)\",\n __varGroupHash__: \"x16nfoyr\"\n}, r = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\n fontFamilyMono: \"var(--fontFamilyMono-x1bzqfky)\",\n fontSizeXs: \"var(--fontSizeXs-x1w5m325)\",\n fontSizeSm: \"var(--fontSizeSm-x1bjjs4u)\",\n fontSizeMd: \"var(--fontSizeMd-xq8d99q)\",\n fontSizeLg: \"var(--fontSizeLg-x18ngplw)\",\n fontSizeXl: \"var(--fontSizeXl-x1b1mqsu)\",\n fontSizeHeading: \"var(--fontSizeHeading-x1stydh2)\",\n fontWeightNormal: \"var(--fontWeightNormal-x1y1cayu)\",\n fontWeightMedium: \"var(--fontWeightMedium-xaw13ft)\",\n fontWeightSemibold: \"var(--fontWeightSemibold-xg6c7xe)\",\n fontWeightBold: \"var(--fontWeightBold-x1pjkvwg)\",\n lineHeight: \"var(--lineHeight-x1gubzd5)\",\n __varGroupHash__: \"xs62swl\"\n}, a = {\n fontSize1: \"var(--fontSize1-xx27tux)\",\n fontSize2: \"var(--fontSize2-x5hag8h)\",\n fontSize3: \"var(--fontSize3-x1mf6j39)\",\n fontSize4: \"var(--fontSize4-xh0hch2)\",\n fontSize5: \"var(--fontSize5-xcllv62)\",\n fontSize6: \"var(--fontSize6-xo5veds)\",\n fontSize7: \"var(--fontSize7-x1j85tz8)\",\n fontSize8: \"var(--fontSize8-x17zhits)\",\n fontSize9: \"var(--fontSize9-xveysf7)\",\n lineHeight1: \"var(--lineHeight1-x17o1wol)\",\n lineHeight2: \"var(--lineHeight2-xinpx5n)\",\n lineHeight3: \"var(--lineHeight3-x1163vpm)\",\n lineHeight4: \"var(--lineHeight4-x1y0jdbp)\",\n lineHeight5: \"var(--lineHeight5-xjln4cz)\",\n lineHeight6: \"var(--lineHeight6-x1h1b5wo)\",\n lineHeight7: \"var(--lineHeight7-xx3gx0p)\",\n lineHeight8: \"var(--lineHeight8-xk1f09j)\",\n lineHeight9: \"var(--lineHeight9-xshcxhh)\",\n displaySm: \"var(--displaySm-x5inqzv)\",\n displayMd: \"var(--displayMd-x1oektom)\",\n displayLg: \"var(--displayLg-x6qsr1u)\",\n letterSpacingTight: \"var(--letterSpacingTight-xmavxfk)\",\n letterSpacingNormal: \"var(--letterSpacingNormal-x1ih41v1)\",\n letterSpacingWide: \"var(--letterSpacingWide-xt8z9rj)\",\n __varGroupHash__: \"x4cj49w\"\n}, o = {\n bodySm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:6\"\n },\n bodyMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xfzcsg9\",\n \"lineHeight-kLWn49\": \"lineHeight-x80sjjd\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:13\"\n },\n bodyLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1kws70c\",\n \"lineHeight-kLWn49\": \"lineHeight-x1487en2\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:20\"\n },\n caption: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x19zw8p8\",\n \"lineHeight-kLWn49\": \"lineHeight-xsnwo96\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x121swot\",\n $$css: \"tokens/type-presets.css.ts:29\"\n },\n label: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-x120ksxs\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:36\"\n },\n code: {\n \"fontFamily-kMv6JI\": \"fontFamily-x1kygxdj\",\n \"fontSize-kGuDYH\": \"fontSize-x1hn3ytp\",\n \"lineHeight-kLWn49\": \"lineHeight-xzs5d81\",\n \"fontWeight-k63SB2\": \"fontWeight-xrec02b\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x2e73ve\",\n $$css: \"tokens/type-presets.css.ts:43\"\n },\n overline: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x19zw8p8\",\n \"lineHeight-kLWn49\": \"lineHeight-xsnwo96\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-x121swot\",\n \"textTransform-kP9fke\": \"textTransform-xtvhhri\",\n $$css: \"tokens/type-presets.css.ts:50\"\n },\n headingSm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xtv95mj\",\n \"lineHeight-kLWn49\": \"lineHeight-xyb71hx\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:60\"\n },\n headingMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1qndi8g\",\n \"lineHeight-kLWn49\": \"lineHeight-x17ovj3u\",\n \"fontWeight-k63SB2\": \"fontWeight-x1x12jc5\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:67\"\n },\n headingLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xo0rcgw\",\n \"lineHeight-kLWn49\": \"lineHeight-x18micsl\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:74\"\n },\n headingXl: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x6ugw34\",\n \"lineHeight-kLWn49\": \"lineHeight-x1f79cfb\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:81\"\n },\n displaySm: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1lwaixd\",\n \"lineHeight-kLWn49\": \"lineHeight-x1u7k74\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:90\"\n },\n displayMd: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-xrqn33v\",\n \"lineHeight-kLWn49\": \"lineHeight-x1uo3zyz\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:97\"\n },\n displayLg: {\n \"fontFamily-kMv6JI\": \"fontFamily-xce2pww\",\n \"fontSize-kGuDYH\": \"fontSize-x1s08cw3\",\n \"lineHeight-kLWn49\": \"lineHeight-x1159mfc\",\n \"fontWeight-k63SB2\": \"fontWeight-xhkckuk\",\n \"letterSpacing-kb6lSQ\": \"letterSpacing-xql2p2a\",\n $$css: \"tokens/type-presets.css.ts:104\"\n }\n}, s = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, x = {\n xjvd03b: \"xrtwk39 xjvd03b\",\n $$css: !0\n}, l = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, g = {\n xjvd03b: \"xaveibd xjvd03b\",\n $$css: !0\n}, c = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n e as colors,\n c as highContrastShadows,\n g as highContrastTheme,\n i as layoutSpacing,\n l as lightShadows,\n x as lightTheme,\n n as radii,\n s as shadows,\n t as spacing,\n o as typePresets,\n a as typeScale,\n r as typography\n};\n//# sourceMappingURL=index.js.map\n","import type {ReactNode} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {lightTheme, lightShadows, highContrastTheme, highContrastShadows} from '@duro-app/tokens'\n\nexport type ThemeName = 'dark' | 'light' | 'high-contrast'\n\ninterface ThemeProviderProps {\n theme?: ThemeName\n children: ReactNode\n}\n\nconst themeMap: Partial<Record<ThemeName, readonly [typeof lightTheme, typeof lightShadows]>> = {\n light: [lightTheme, lightShadows],\n 'high-contrast': [highContrastTheme, highContrastShadows],\n}\n\nconst styles = css.create({\n root: {\n display: 'contents',\n },\n})\n\n// react-strict-dom's style prop rejects Theme<VarGroup<{named keys}>> because the\n// concrete VarGroup lacks the generic index signature. This is a known typing gap.\ntype DivStyle = Parameters<typeof html.div>[0]['style']\n\nexport function ThemeProvider({theme = 'dark', children}: ThemeProviderProps) {\n const overrides = themeMap[theme]\n const themeStyles = [overrides?.[0], overrides?.[1], styles.root] as DivStyle\n\n return <html.div style={themeStyles}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\nexport const styles = css.create({\n // Colors\n default: {\n color: colors.text,\n },\n muted: {\n color: colors.textMuted,\n },\n accent: {\n color: colors.accent,\n },\n error: {\n color: colors.errorText,\n },\n success: {\n color: colors.successText,\n },\n warning: {\n color: colors.warningText,\n },\n\n // Weight overrides\n weightNormal: {\n fontWeight: typography.fontWeightNormal,\n },\n weightMedium: {\n fontWeight: typography.fontWeightMedium,\n },\n weightSemibold: {\n fontWeight: typography.fontWeightSemibold,\n },\n weightBold: {\n fontWeight: typography.fontWeightBold,\n },\n\n // Alignment\n alignStart: {\n textAlign: 'start',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignEnd: {\n textAlign: 'end',\n },\n\n // Truncate\n truncate: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {typePresets} from '@duro-app/tokens/tokens/type-presets.css'\nimport {styles} from './styles.css'\n\nexport type TextVariant = 'bodySm' | 'bodyMd' | 'bodyLg' | 'caption' | 'label' | 'code' | 'overline'\nexport type TextColor = 'default' | 'muted' | 'accent' | 'error' | 'success' | 'warning'\n\ninterface TextProps {\n variant?: TextVariant\n color?: TextColor\n weight?: 'normal' | 'medium' | 'semibold' | 'bold'\n align?: 'start' | 'center' | 'end'\n truncate?: boolean\n as?: 'span' | 'p' | 'div'\n children: ReactNode\n}\n\nconst weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nexport function Text({\n variant = 'bodyMd',\n color = 'default',\n weight,\n align,\n truncate,\n as = 'span',\n children,\n}: TextProps) {\n const style = [\n typePresets[variant],\n styles[color],\n weight && weightMap[weight],\n align && alignMap[align],\n truncate && styles.truncate,\n ]\n\n if (as === 'p') return <html.p style={style}>{children}</html.p>\n if (as === 'div') return <html.div style={style}>{children}</html.div>\n return <html.span style={style}>{children}</html.span>\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n popup: {\n position: 'absolute',\n zIndex: 50,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n backgroundColor: colors.bgCard,\n color: colors.text,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeXs,\n lineHeight: typography.lineHeight,\n borderRadius: radii.sm,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n boxShadow: shadows.md,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n },\n top: {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: spacing.xs,\n },\n bottom: {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: spacing.xs,\n },\n left: {\n right: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginRight: spacing.xs,\n },\n right: {\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: spacing.xs,\n },\n})\n","import {\n type ReactNode,\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useId,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\n// --- Context ---\n\ntype Placement = 'top' | 'bottom' | 'left' | 'right'\n\ninterface TooltipContextValue {\n open: boolean\n show: () => void\n hide: () => void\n tooltipId: string\n placement: Placement\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null)\n\nfunction useTooltip() {\n const ctx = useContext(TooltipContext)\n if (!ctx) throw new Error('Tooltip compound components must be used within Tooltip.Root')\n return ctx\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n content: ReactNode\n placement?: Placement\n delay?: number\n}\n\nfunction Root({children, content, placement = 'top', delay = 300}: RootProps) {\n const [open, setOpen] = useState(false)\n const tooltipId = useId()\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const show = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = setTimeout(() => setOpen(true), delay)\n }, [delay])\n\n const hide = useCallback(() => {\n if (timerRef.current) clearTimeout(timerRef.current)\n timerRef.current = null\n setOpen(false)\n }, [])\n\n return (\n <TooltipContext.Provider value={{open, show, hide, tooltipId, placement}}>\n <html.div style={styles.root}>\n {children}\n {open && (\n <html.div id={tooltipId} role=\"tooltip\" style={[styles.popup, styles[placement]]}>\n {content}\n </html.div>\n )}\n </html.div>\n </TooltipContext.Provider>\n )\n}\n\n// --- Trigger ---\n\ninterface TriggerProps {\n children: ReactNode\n}\n\nfunction Trigger({children}: TriggerProps) {\n const {open, show, hide, tooltipId} = useTooltip()\n\n return (\n <html.div\n onPointerEnter={show}\n onPointerLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={open ? tooltipId : undefined}\n >\n {children}\n </html.div>\n )\n}\n\nexport const Tooltip = {\n Root,\n Trigger,\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignStretch: {alignItems: 'stretch'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type SpacingKey = 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl'\n\ninterface StackProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'stretch'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n} as const\n\nexport function Stack({gap = 'md', align = 'stretch', children}: StackProps) {\n return <html.div style={[styles.base, gapMap[gap], alignMap[align]]}>{children}</html.div>\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n alignBaseline: {alignItems: 'baseline'},\n alignStretch: {alignItems: 'stretch'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface InlineProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n baseline: styles.alignBaseline,\n stretch: styles.alignStretch,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Inline({gap = 'sm', align = 'center', justify = 'start', children}: InlineProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n alignStart: {alignItems: 'flex-start'},\n alignCenter: {alignItems: 'center'},\n alignEnd: {alignItems: 'flex-end'},\n justifyStart: {justifyContent: 'flex-start'},\n justifyCenter: {justifyContent: 'center'},\n justifyEnd: {justifyContent: 'flex-end'},\n justifyBetween: {justifyContent: 'space-between'},\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface ClusterProps {\n gap?: SpacingKey\n align?: 'start' | 'center' | 'end'\n justify?: 'start' | 'center' | 'end' | 'between'\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n} as const\n\nconst justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n} as const\n\nexport function Cluster({gap = 'sm', align = 'start', justify = 'start', children}: ClusterProps) {\n return (\n <html.div style={[styles.base, gapMap[gap], alignMap[align], justifyMap[justify]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nexport const styles = css.create({\n base: {\n display: 'grid',\n },\n col1: {gridTemplateColumns: '1fr'},\n col2: {gridTemplateColumns: 'repeat(2, 1fr)'},\n col3: {gridTemplateColumns: 'repeat(3, 1fr)'},\n col4: {gridTemplateColumns: 'repeat(4, 1fr)'},\n col5: {gridTemplateColumns: 'repeat(5, 1fr)'},\n col6: {gridTemplateColumns: 'repeat(6, 1fr)'},\n autoFit: (minWidth: string) => ({\n gridTemplateColumns: `repeat(auto-fit, minmax(${minWidth}, 1fr))`,\n }),\n gapXs: {gap: spacing.xs},\n gapSm: {gap: spacing.sm},\n gapMs: {gap: spacing.ms},\n gapMd: {gap: spacing.md},\n gapLg: {gap: spacing.lg},\n gapXl: {gap: spacing.xl},\n gapXxl: {gap: spacing.xxl},\n gapXxxl: {gap: spacing.xxxl},\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport type {SpacingKey} from '../Stack/Stack'\n\ninterface GridProps {\n gap?: SpacingKey\n columns?: 1 | 2 | 3 | 4 | 5 | 6\n minColumnWidth?: string\n children: ReactNode\n}\n\nconst gapMap = {\n xs: styles.gapXs,\n sm: styles.gapSm,\n ms: styles.gapMs,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n xxl: styles.gapXxl,\n xxxl: styles.gapXxxl,\n} as const\n\nconst columnsMap = {\n 1: styles.col1,\n 2: styles.col2,\n 3: styles.col3,\n 4: styles.col4,\n 5: styles.col5,\n 6: styles.col6,\n} as const\n\nexport function Grid({gap = 'md', columns, minColumnWidth, children}: GridProps) {\n const columnStyle = minColumnWidth\n ? styles.autoFit(minColumnWidth)\n : columns\n ? columnsMap[columns]\n : undefined\n\n return <html.div style={[styles.base, gapMap[gap], columnStyle]}>{children}</html.div>\n}\n","import {useRef, useState, useEffect} from 'react'\n\nexport type ContainerSize = 'compact' | 'default' | 'spacious'\n\ninterface UseContainerQueryOptions {\n compactBelow?: number\n spaciousAbove?: number\n}\n\nexport function useContainerQuery<T extends HTMLElement = HTMLElement>(\n options: UseContainerQueryOptions = {},\n): {\n ref: React.RefObject<T | null>\n size: ContainerSize\n} {\n const {compactBelow = 480, spaciousAbove = 768} = options\n const ref = useRef<T | null>(null)\n const [size, setSize] = useState<ContainerSize>('default')\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n let rafId: number | null = null\n\n const observer = new ResizeObserver((entries) => {\n if (rafId !== null) cancelAnimationFrame(rafId)\n\n rafId = requestAnimationFrame(() => {\n const entry = entries[0]\n if (!entry) return\n\n const width = entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n if (width < compactBelow) {\n setSize('compact')\n } else if (width >= spaciousAbove) {\n setSize('spacious')\n } else {\n setSize('default')\n }\n })\n })\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [compactBelow, spaciousAbove])\n\n return {ref, size}\n}\n"],"names":["styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","styles","i","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","a","button","div","heading","input","label","nav","p","span","textarea","defaultStyles","strokeIcons","jsxs","Fragment","jsx","clock","forbidden","shield","lock","key","filledIcons","Icon","name","size","filled","base","k1xSpc","kXwgrk","kGNEyG","kOIVth","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","iconWrap","kmuXW","kjj79g","kLKAdn","content","kUk6DE","k7Eaqz","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","defaultIcons","resolveIcon","icon","variant","undefined","Alert","children","resolvedIcon","_rsdMerge","_rsdDefaultStyles","kMv6JI","k63SB2","khDVqt","sizeMd","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","kkrTdU","k1ekBW","kIyJzY","kAMwcw","kybGjl","kMeerF","k3XXqK","kjBf7l","kInvED","sizeDefault","sizeSmall","primary","secondary","link","danger","fullWidth","kzqmXN","disabled","kSiTet","small","Button","type","onClick","kVQacm","kyUFMd","km5ZXQ","k1K539","keoZOQ","Callout","elevated","kGVxlE","outlined","interactive","k3aq6I","sizeCompact","sizeFull","header","compact","full","Card","root","rootDisabled","box","kZKoxP","boxUnchecked","boxChecked","kVAEAm","Checkbox","checked","controlledChecked","defaultChecked","onChange","isControlled","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","e","target","opacity","k9WMMc","message","action","EmptyState","typePresets","bodySm","kb6lSQ","bodyMd","bodyLg","caption","code","overline","kP9fke","headingSm","headingMd","headingLg","headingXl","displaySm","displayMd","displayLg","muted","accent","alignStart","alignCenter","alignEnd","defaultVariantMap","alignMap","start","center","end","Heading","level","color","align","resolvedVariant","h1","h2","h3","h4","h5","h6","FieldContext","createContext","useFieldContext","useContext","description","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","InputGroupContext","useInputGroupContext","inGroup","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","groupCtx","extraProps","trim","wrapper","addon","kfSwDN","addonStart","kWqL5O","kSWEuD","k26BEO","addonEnd","kZ1KPB","k4WBpm","kaZRDh","addonClickable","addonDisabled","Addon","position","positionStyle","InputGroup","LinkButton","href","rel","trigger","backdrop","k87sOh","kbCHJM","kCIrl2","krVfgx","kY2c9j","popup","popupEnd","item","itemHighlighted","linkItem","MenuContext","useMenu","useMenuRoot","open","setOpen","highlightedId","setHighlightedId","menuId","rootRef","useRef","triggerRef","itemsRef","Map","orderRef","needsInitialHighlightRef","close","current","focus","toggle","prev","useEffect","order","length","registerItem","element","set","map","ids","keys","sort","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","handleKeyDown","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","Item","ref","isHighlighted","el","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","kAzted","scrollbar","kFalU9","scrollbarVertical","scrollbarHorizontal","scrollbarHidden","scrollbarVisible","thumb","viewportMaxHeight","maxHeight","kskxy","val","thumbVertical","height","thumbHorizontal","width","ScrollAreaContext","useScrollArea","useScrollAreaRoot","viewportRef","contentRef","scrollTop","setScrollTop","scrollLeft","setScrollLeft","scrollHeight","setScrollHeight","scrollWidth","setScrollWidth","clientHeight","setClientHeight","clientWidth","setClientWidth","scrolling","setScrolling","scrollTimerRef","handleScroll","vp","clearTimeout","setTimeout","observer","ResizeObserver","observe","disconnect","passive","Viewport","Content","Scrollbar","orientation","Thumb","draggingRef","startPosRef","startScrollRef","isVertical","thumbSizePercent","Math","max","maxScroll","trackSize","thumbPixelSize","scrollOffset","thumbOffset","thumbStyle","handlePointerDown","clientY","clientX","setPointerCapture","pointerId","handlePointerMove","delta","scrollRatio","scrollDelta","handlePointerUp","ScrollArea","itemSelected","hidden","SelectContext","useSelect","useControllableValue","controlledValue","internal","setInternal","setValue","v","useSelectRoot","onValueChange","initialLabels","labels","setLabels","listboxId","found","registerLabel","itemValue","Value","display","selectedValue","isSelected","text","textContent","ItemText","Select","group","groupTrigger","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","Set","toggleGroup","next","has","add","includes","push","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","isActive","SideNav","spinner","kLZC3w","kKVMdj","k44tkh","kyAemX","ko0y90","lg","srOnly","kMcinP","Spinner","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","gridColumns","columns","TableContext","useTable","HeaderContext","isHeader","Header","Body","childArray","Children","toArray","child","index","RowIndexContext","Row","rowIndex","isEvenRow","CellIndexContext","total","HeaderCell","isLast","Cell","Table","rootVertical","list","listVertical","tab","tabVertical","tabActiveHorizontal","tabActiveVertical","tabDisabled","panel","panelVertical","TabsContext","useTabs","useTabsRoot","tabsRef","registerTab","List","listRef","tabs","listEl","prevKey","nextKey","targetValue","currentIdx","Tab","tabId","panelId","Panel","Tabs","kHenm0","Textarea","rows","bg","bgCard","bgCardHover","textMuted","accentHover","accentContrast","border","errorHover","errorBg","errorBorder","errorText","errorContrast","successBg","successBorder","successText","warningBg","warningBorder","warningText","infoBg","infoBorder","infoText","__varGroupHash__","themeMap","light","lightTheme","lightShadows","highContrastTheme","highContrastShadows","ThemeProvider","theme","overrides","themeStyles","weightNormal","weightMedium","weightSemibold","weightBold","truncate","kg5iWk","weightMap","normal","medium","semibold","bold","Text","weight","as","kfzvcC","top","bottom","left","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip","alignStretch","gapXs","gapSm","gapMs","gapMd","gapLg","gapXl","gapXxl","gapXxxl","gapMap","xs","ms","xl","xxl","xxxl","stretch","Stack","gap","kwnvtZ","alignBaseline","justifyStart","justifyCenter","justifyEnd","justifyBetween","baseline","justifyMap","between","Inline","justify","Cluster","col1","col2","col3","col4","col5","col6","autoFit","minWidth","columnsMap","Grid","minColumnWidth","columnStyle","useContainerQuery","compactBelow","spaciousAbove","setSize","rafId","entries","cancelAnimationFrame","requestAnimationFrame","entry","contentBoxSize","inlineSize","contentRect"],"mappings":"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","x_google_ignoreList":[0]}