@duro-app/ui 0.5.1 → 0.6.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.
Files changed (45) hide show
  1. package/dist/components/Alert/styles.css.d.ts.map +1 -1
  2. package/dist/components/Badge/styles.css.d.ts.map +1 -1
  3. package/dist/components/Button/styles.css.d.ts.map +1 -1
  4. package/dist/components/Card/styles.css.d.ts.map +1 -1
  5. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  6. package/dist/components/Checkbox/Checkbox.stories.d.ts +12 -0
  7. package/dist/components/Checkbox/Checkbox.stories.d.ts.map +1 -0
  8. package/dist/components/Checkbox/styles.css.d.ts.map +1 -1
  9. package/dist/components/EmptyState/EmptyState.stories.d.ts +10 -0
  10. package/dist/components/EmptyState/EmptyState.stories.d.ts.map +1 -0
  11. package/dist/components/EmptyState/styles.css.d.ts.map +1 -1
  12. package/dist/components/Field/styles.css.d.ts.map +1 -1
  13. package/dist/components/Input/styles.css.d.ts.map +1 -1
  14. package/dist/components/LinkButton/LinkButton.stories.d.ts +12 -0
  15. package/dist/components/LinkButton/LinkButton.stories.d.ts.map +1 -0
  16. package/dist/components/LinkButton/styles.css.d.ts.map +1 -1
  17. package/dist/components/Menu/Menu.stories.d.ts +1 -0
  18. package/dist/components/Menu/Menu.stories.d.ts.map +1 -1
  19. package/dist/components/Menu/styles.css.d.ts.map +1 -1
  20. package/dist/components/ScrollArea/styles.css.d.ts.map +1 -1
  21. package/dist/components/Select/Select.stories.d.ts +1 -0
  22. package/dist/components/Select/Select.stories.d.ts.map +1 -1
  23. package/dist/components/Select/styles.css.d.ts.map +1 -1
  24. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  25. package/dist/components/SideNav/SideNav.stories.d.ts +9 -0
  26. package/dist/components/SideNav/SideNav.stories.d.ts.map +1 -0
  27. package/dist/components/SideNav/styles.css.d.ts.map +1 -1
  28. package/dist/components/Spinner/Spinner.stories.d.ts +11 -0
  29. package/dist/components/Spinner/Spinner.stories.d.ts.map +1 -0
  30. package/dist/components/StatusIcon/StatusIcon.d.ts.map +1 -1
  31. package/dist/components/StatusIcon/StatusIcon.stories.d.ts +14 -0
  32. package/dist/components/StatusIcon/StatusIcon.stories.d.ts.map +1 -0
  33. package/dist/components/StatusIcon/styles.css.d.ts.map +1 -1
  34. package/dist/components/Table/styles.css.d.ts.map +1 -1
  35. package/dist/components/Tabs/styles.css.d.ts.map +1 -1
  36. package/dist/components/Textarea/Textarea.stories.d.ts +11 -0
  37. package/dist/components/Textarea/Textarea.stories.d.ts.map +1 -0
  38. package/dist/components/Textarea/styles.css.d.ts.map +1 -1
  39. package/dist/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  40. package/dist/components/Tooltip/styles.css.d.ts.map +1 -1
  41. package/dist/index.js +857 -856
  42. package/dist/index.js.map +1 -1
  43. package/dist/stubs/assets-registry.d.ts +2 -0
  44. package/dist/stubs/assets-registry.d.ts.map +1 -0
  45. package/package.json +2 -4
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/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","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx"],"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 {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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 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 {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\ninterface AlertProps {\n variant?: AlertVariant\n children: ReactNode\n}\n\nexport function Alert({variant = 'info', children}: AlertProps) {\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\n {children}\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, shadows, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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 Svg, {Polyline} from 'react-native-svg'\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 {isChecked && (\n <Svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\">\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 )}\n </html.span>\n {children && <html.span>{children}</html.span>}\n </html.label>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, spacing, typography} from '@duro-app/tokens'\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 {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, spacing, typography} from '@duro-app/tokens'\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 {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\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\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]]}\n {...(extraProps as Record<string, unknown>)}\n />\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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, radii} from '@duro-app/tokens'\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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\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>>({})\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 children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange})\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, spacing, radii, typography} from '@duro-app/tokens'\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 Svg, {Path} from 'react-native-svg'\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'\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, spacing} from '@duro-app/tokens'\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 muted: {\n color: colors.textMuted,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport Svg, {Circle, Line, Path, Polyline} from 'react-native-svg'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'muted'\n\nconst icons: Record<StatusIconName, 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}\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 <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 {icons[name]}\n </Svg>\n </html.div>\n )\n}\n","import {css} from 'react-strict-dom'\nimport {colors, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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, radii, spacing, typography} from '@duro-app/tokens'\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 r = {\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 infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, a = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n __varGroupHash__: \"x6uc9q\"\n}, e = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, t = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\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}, x = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, o = {\n xjvd03b: \"x18itf25 xjvd03b\",\n $$css: !0\n}, v = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, n = {\n xjvd03b: \"x1qgt5a2 xjvd03b\",\n $$css: !0\n}, s = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n r as colors,\n s as highContrastShadows,\n n as highContrastTheme,\n v as lightShadows,\n o as lightTheme,\n e as radii,\n x as shadows,\n a as spacing,\n t 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, radii, spacing, typography, shadows} from '@duro-app/tokens'\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"],"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","input","label","nav","p","span","textarea","defaultStyles","base","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","Alert","variant","children","jsx","_rsdMerge","_rsdDefaultStyles","k1xSpc","kGNEyG","kjj79g","kMv6JI","k63SB2","khDVqt","sizeMd","kLKAdn","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","size","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","filled","interactive","k3aq6I","sizeCompact","sizeFull","header","k1K539","compact","full","Card","jsxs","root","rootDisabled","box","kZKoxP","kmuXW","boxUnchecked","boxChecked","kVAEAm","kVQacm","Checkbox","name","checked","controlledChecked","defaultChecked","onChange","isControlled","undefined","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","e","target","Svg","Polyline","kXwgrk","k9WMMc","message","action","keoZOQ","EmptyState","icon","FieldContext","createContext","useFieldContext","useContext","description","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","extraProps","trim","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","key","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","align","Fragment","Item","ref","isHighlighted","el","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","content","kAzted","scrollbar","kFalU9","kfSwDN","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","labels","setLabels","listboxId","found","registerLabel","itemValue","Value","display","Icon","selectedValue","isSelected","text","textContent","ItemText","Select","group","groupTrigger","kP9fke","kb6lSQ","groupTriggerActive","chevron","chevronOpen","itemActive","SideNavContext","useSideNav","activeValue","onSelect","expandedGroups","setExpandedGroups","Set","toggleGroup","next","has","add","includes","push","Group","groupKey","defaultExpanded","isExpanded","groupRef","querySelector","hasActiveChild","Path","isActive","SideNav","spinner","kLZC3w","kKVMdj","k44tkh","kyAemX","ko0y90","lg","srOnly","kMcinP","Spinner","muted","icons","Circle","Line","clock","forbidden","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","kWqL5O","kSWEuD","k26BEO","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","r","bg","bgCard","bgCardHover","textMuted","accent","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","kfzvcC","top","bottom","left","km5ZXQ","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip"],"mappings":";;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAIA,KAAW,CAAA;AACf,OAAO,eAAeA,IAAU,cAAc;AAAA,EAC5C,OAAO;AACT,CAAC;AACD,IAAIC,KAAWD,GAAS,SAAS,QAC7BE,KAAQ,oBAAI,QAAO,GACnBC,KAAc;AAClB,SAASC,GAAaC,GAAS;AAC7B,MAAIC,GACAC,GACAC;AACJ,SAAIH,KAAW,SACbC,IAAeD,EAAQ,iBAAiB,IACxCE,IAAaF,EAAQ,eAAe,IACpCG,IAAYH,EAAQ,YAEf,WAAkB;AAOvB,aANII,IAAoB,CAAA,GACpBC,IAAY,IACZC,IAAc,MACdC,IAAc,IACdC,IAAYP,IAAe,OAAOJ,IAClCY,IAAS,IAAI,MAAM,UAAU,MAAM,GAC9BC,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,MAAAD,EAAOC,CAAC,IAAI,UAAUA,CAAC;AAEzB,WAAOD,EAAO,SAAS,KAAG;AACxB,UAAIE,IAAgBF,EAAO,IAAG;AAC9B,UAAI,EAAAE,KAAiB,QAAQA,MAAkB,KAG/C;AAAA,YAAI,MAAM,QAAQA,CAAa,GAAG;AAChC,mBAASC,IAAK,GAAGA,IAAKD,EAAc,QAAQC;AAC1C,YAAAH,EAAO,KAAKE,EAAcC,CAAE,CAAC;AAE/B;AAAA,QACF;AACA,YAAIC,IAAQV,KAAa,OAAOA,EAAUQ,CAAa,IAAIA;AAC3D,YAAIE,EAAM,SAAS,MAAM;AACvB,cAAIC,IAAiB;AACrB,cAAIN,KAAa,QAAQA,EAAU,IAAIK,CAAK,GAAG;AAC7C,gBAAIE,IAAaP,EAAU,IAAIK,CAAK;AACpC,YAAIE,KAAc,SAChBD,IAAiBC,EAAW,CAAC,GAC7BR,IAAcQ,EAAW,CAAC,GAC1BX,EAAkB,KAAK,MAAMA,GAAmBW,EAAW,CAAC,CAAC,GAC7DP,IAAYO,EAAW,CAAC;AAAA,UAE5B,OAAO;AACL,gBAAIC,IAAyB,CAAA;AAC7B,qBAASC,KAAQJ,GAAO;AACtB,kBAAIK,IAAQL,EAAMI,CAAI;AACtB,kBAAIA,MAASnB,IAAa;AACxB,oBAAIqB,IAAmBN,EAAMI,CAAI;AACjC,gBAAIE,MAAqB,OACvBZ,IAAcA,IAAcY,IAAmB,OAAOZ,IAAcY;AAEtE;AAAA,cACF;AACA,cAAI,OAAOD,KAAU,YAAYA,MAAU,OACpCd,EAAkB,SAASa,CAAI,MAClCb,EAAkB,KAAKa,CAAI,GACvBT,KAAa,QACfQ,EAAuB,KAAKC,CAAI,GAE9B,OAAOC,KAAU,aACnBJ,KAAkBA,IAAiB,MAAMI,IAAQA,MAIrD,QAAQ,MAAM,WAAW,OAAOD,GAAM,UAAU,EAAE,OAAO,OAAOC,CAAK,GAAG,6BAAiC,CAAC;AAAA,YAE9G;AACA,gBAAIV,KAAa,MAAM;AACrB,kBAAIY,IAAU,oBAAI,QAAO;AACzB,cAAAZ,EAAU,IAAIK,GAAO,CAACC,GAAgBE,GAAwBT,GAAaa,CAAO,CAAC,GACnFZ,IAAYY;AAAA,YACd;AAAA,UACF;AACA,UAAIN,MACFT,IAAYA,IAAYS,IAAiB,MAAMT,IAAYS;AAAA,QAE/D,WACMZ;AACF,UAAII,KAAe,SACjBA,IAAc,CAAA,IAEhBA,IAAc,OAAO,OAAO,CAAA,GAAIO,GAAOP,CAAW;AAAA,aAC7C;AACL,cAAIe,IAAW;AACf,mBAASC,KAAST,GAAO;AACvB,gBAAIU,IAASV,EAAMS,CAAK;AACxB,YAAIC,MAAW,WACRnB,EAAkB,SAASkB,CAAK,MAC/BC,KAAU,SACRjB,KAAe,SACjBA,IAAc,CAAA,IAEZe,KAAY,SACdA,IAAW,CAAA,IAEbA,EAASC,CAAK,IAAIC,IAEpBnB,EAAkB,KAAKkB,CAAK,GAC5Bd,IAAY;AAAA,UAGlB;AACA,UAAIa,KAAY,SACdf,IAAc,OAAO,OAAOe,GAAUf,CAAW;AAAA,QAErD;AAAA;AAAA,IAEJ;AACA,QAAIkB,IAAa,CAACnB,GAAWC,GAAaC,CAAW;AACrD,WAAOiB;AAAA,EACT;AACF;AACA,IAAIC,KAAS7B,KAAWD,GAAS,SAASI,GAAY;AACtD0B,GAAO,UAAU1B;AACjB,MAAM2B,KAAkB9B,GAAS,QAAQ;AAAA,EACvC,YAAY;AACd,CAAC;AACD,SAAS+B,KAASlB,GAAQ;AACxB,QAAM,CAACJ,GAAWQ,GAAOe,CAAY,IAAIF,GAAgBjB,CAAM,GACzDoB,IAAS,CAAA;AAOf,MANIxB,KAAa,QAAQA,MAAc,OACrCwB,EAAO,YAAYxB,IAEjBQ,KAAS,SACXgB,EAAO,QAAQhB,IAEbe,KAAgB,QAAQA,MAAiB,IAAI;AAC/C,UAAME,IAASF,EAAa,MAAM,GAAG,GAC/BG,IAAW,CAAA;AACjB,eAAWC,KAASF,GAAQ;AAC1B,YAAMG,IAAUD,EAAM,KAAI,GACpB,CAACE,GAAMC,CAAI,IAAIF,EAAQ,MAAM,GAAG;AACtC,MAAIE,KAAQ,SACVJ,EAASG,CAAI,IAAIH,EAASG,CAAI,KAAK,OAAO,GAAGH,EAASG,CAAI,CAAC,IAAIC,CAAI,KAAKA;AAAA,IAE5E;AACA,IAAAN,EAAO,gBAAgB,IAAI,OAAO,KAAKE,CAAQ,EAAE,IAAI,CAAAG,MAAQ,GAAGA,CAAI,IAAIH,EAASG,CAAI,CAAC,EAAE,EAAE,KAAK,IAAI;AAAA,EACrG;AACA,SAAOL;AACT;AACA,MAAMpB,IAAS;AAAA,EACb,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EA0BE,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EASE,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,GACM2B,KAAI3B,EAAO,QAQX4B,KAAS,CAAC5B,EAAO,aAAaA,EAAO,MAAM,GAG3C6B,KAAM7B,EAAO,OAUb8B,KAAQ,CAAC9B,EAAO,aAAaA,EAAO,KAAK,GAGzC+B,KAAQ/B,EAAO,QAIfgC,KAAMhC,EAAO,OAIbiC,KAAIjC,EAAO,OAKXkC,KAAOlC,EAAO,QAIdmC,KAAW,CAACnC,EAAO,aAAaA,EAAO,QAAQ,GAG/CoC,IAAgB;AAAA,EACpB,GAAGT;AAAAA,EAQH,QAAQC;AAAA,EAGR,KAAKC;AAAA,EAeL,OAAOC;AAAA,EAGP,OAAOC;AAAA,EAIP,KAAKC;AAAA,EAIL,GAAGC;AAAA,EAKH,MAAMC;AAAA,EAIN,UAAUC;AAGZ,GC7TanC,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAO,MAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA;ACQZ,SAASQ,GAAM;AAAA,EAACC,SAAAA,IAAU;AAAA,EAAQC,UAAAA;AAAoB,GAAG;AAC9D,SACE,gBAAAC,WAAU,MAAK,SAAO,GAAAC,EAAAC,EAAA5B,KAAS7B,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,GACxDC,UAAAA,GACH;AAEJ;ACdO,MAAMtD,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAnB,OAAA;AAAA,EAAA;AAAA,EAAAoB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAyB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAxB,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAH,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAO,MAAA;AAAA,IAAAL,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCUb2B,KAAU;AAAA,EACdC,IAAIxE,GAAOqE;AAAAA,EACXI,IAAIzE,GAAOgE;AACb;AAEO,SAASU,GAAM;AAAA,EAACrB,SAAAA,IAAU;AAAA,EAAWsB,MAAAA,IAAO;AAAA,EAAMrB,UAAAA;AAAoB,GAAG;AAC9E,SAAO,gBAAAC,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAmBlC,GAAOqC,MAAMkC,GAAQI,CAAI,GAAG3E,GAAOqD,CAAO,CAAC,GAAIC,UAAAA,GAAS;AACpF;ACjBO,MAAMtD,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAf,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAoC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAArB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA2C,WAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA4C,SAAA;AAAA,IAAA1C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA6C,WAAA;AAAA,IAAA3C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA8C,MAAA;AAAA,IAAA5C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiC,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA+C,QAAA;AAAA,IAAA7C,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgD,WAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,EAAAkD,UAAA;AAAA,IAAAC,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAAjC,OAAA;AAAA,EAAA;AAAA,GCcb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBU,OAAOhG,EAAOuF;AAChB;AAEO,SAASU,GAAO;AAAA,EACrB5C,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiB,WAAAA,IAAY;AAAA,EACZE,UAAAA,IAAW;AAAA,EACXI,MAAAA,IAAO;AAAA,EACPC,SAAAA;AAAAA,EACA7C,UAAAA;AACW,GAAG;AACd,SACE,gBAAAC,EAAA,UAAA,EACE,MAAA2C,GACA,UAAAJ,GACA,SAAAK,GAAiB,GAAA3C,EAAAC,EAAA7B,QAEf5B,EAAOqC,MACPkC,GAAQI,CAAI,GACZ3E,EAAOqD,CAAO,GACduC,KAAa5F,EAAO4F,WACpBE,KAAY9F,EAAO8F,QAAQ,GAG5BxC,UAAAA,EAAAA,CACH;AAEJ;AC5CO,MAAMtD,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAS,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAa,QAAA;AAAA,IAAAjB,OAAA;AAAA,EAAA;AAAA,EAAAwD,UAAA;AAAA,IAAA7D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAsD,QAAA;AAAA,IAAAzD,OAAA;AAAA,EAAA;AAAA,EAAA0D,UAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAA2D,QAAA;AAAA,IAAAhE,QAAA;AAAA,IAAAK,OAAA;AAAA,EAAA;AAAA,EAAA4D,aAAA;AAAA,IAAAjE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAA+B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAyB,QAAA;AAAA,IAAA7D,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAAhD,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAA8D,aAAA;AAAA,IAAApE,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAA+D,UAAA;AAAA,IAAArE,QAAA;AAAA,IAAAM,OAAA;AAAA,EAAA;AAAA,EAAAgE,QAAA;AAAA,IAAAlE,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAA+C,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,GCYb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBwB,SAAS9G,EAAO0G;AAAAA,EAChBK,MAAM/G,EAAO2G;AACf;AAEO,SAASK,GAAK;AAAA,EACnB3D,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiC,QAAAA;AAAAA,EACAT,SAAAA;AAAAA,EACA7C,UAAAA;AACS,GAAG;AACZ,SACE,gBAAA2D,EAAA,OAAA,EAAU,SAAAd,GAAiB,GAAA3C,EAAAC,EAAA5B,KAAS7B,EAAOqC,MAAMrC,EAAOqD,CAAO,GAAGkB,GAAQI,CAAI,CAAC,GAC5EiC,UAAAA;AAAAA,IAAAA,KAAU,gBAAArD,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAO4G,MAAM,GAAGA,UAAAA,EAAAA,CAAO;AAAA,IAClDtD;AAAAA,EAAAA,GACH;AAEJ;AC/BO,MAAMtD,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAuE,cAAA;AAAA,IAAApB,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAAjC,OAAA;AAAA,EAAA;AAAA,EAAAwE,KAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA0D,OAAA;AAAA,IAAAxC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA2E,cAAA;AAAA,IAAAzE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAA4E,YAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAd,OAAA;AAAA,IAAA2F,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAtB,QAAA;AAAA,IAAA2B,QAAA;AAAA,IAAA9E,OAAA;AAAA,EAAA;AAAA;ACYZ,SAAS+E,GAAS;AAAA,EACvBC,MAAAA;AAAAA,EACAnH,OAAAA;AAAAA,EACAoH,SAASC;AAAAA,EACTC,gBAAAA,IAAiB;AAAA,EACjBjC,UAAAA,IAAW;AAAA,EACXkC,UAAAA;AAAAA,EACA1E,UAAAA;AACa,GAAG;AAChB,QAAM2E,IAAeH,MAAsBI,QACrC,CAACC,GAAiBC,CAAkB,IAAIC,EAASN,CAAc,GAC/DO,IAAYL,IAAeH,IAAoBK,GAE/CI,IAAeC,EACnB,CAACC,MAA2C;AAC1C,IAAKR,KACHG,EAAmBK,EAAEC,OAAOb,OAAO,GAErCG,IAAWS,CAAC;AAAA,EACd,GACA,CAACR,GAAcD,CAAQ,CACzB;AAEA,SACE,gBAAAf,EAAA,SAAA,EAAA,GAAAzD,EAAAC,EAAA1B,OAAoB/B,EAAOkH,MAAMpB,KAAY9F,EAAOmH,YAAY,GAC9D,UAAA;AAAA,IAAA,gBAAA5D,EAAA,SAAA,EACE,MAAK,YACL,MAAAqE,GACA,OAAAnH,GACA,SAASwH,IAAeH,IAAoBI,QAC5C,gBAAiBD,IAAgCC,SAAjBH,GAChC,UAAAjC,GACA,UAAUyC,GAAa,GAAA/E,EAAAC,EAAA3B,OAChB9B,EAAO8B,KAAK,GAAA,KAAA,OAAA,CAAA;AAAA,sBAErB,QAAA,EAAA,GAAA0B,EAAAC,EAAAvB,MACUlC,EAAOoH,KAAKkB,IAAYtI,EAAOwH,aAAaxH,EAAOuH,YAAY,GACvE,eAAW,IAEVe,UAAAA,uBACEK,IAAA,EAAI,OAAO,IAAI,QAAQ,IAAI,SAAQ,aAAY,MAAK,QACnD,UAAA,gBAAApF,EAACqF,MACC,QAAO,uBACP,QAAO,gBACP,aAAa,KACb,eAAc,SACd,gBAAe,QAAA,CAAO,GAE1B,GAEJ;AAAA,IACCtF,uBAAY,QAAA,EAAA,GAAAE,EAAAC,EAAAvB,IAAA,GAAYoB,UAAAA,EAAAA,CAAS;AAAA,EAAA,GACpC;AAEJ;AClEO,MAAMtD,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAAlF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA4E,QAAA;AAAA,IAAAlG,OAAA;AAAA,EAAA;AAAA,EAAAmG,SAAA;AAAA,IAAArG,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAL,QAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAoG,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAArG,OAAA;AAAA,EAAA;AAAA;ACOZ,SAASsG,GAAW;AAAA,EAACH,SAAAA;AAAAA,EAASI,MAAAA;AAAAA,EAAMH,QAAAA;AAAuB,GAAG;AACnE,SACE,gBAAA/B,EAAA,SAAA,GAAAzD,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GACzBiC,UAAAA;AAAAA,IAAAA;AAAAA,IACD,gBAAA5F,EAAA,OAAA,GAAAC,EAAAC,EAAAxB,GAAejC,GAAO+I,OAAO,GAAGA,UAAAA,EAAAA,CAAQ;AAAA,IACvCC,KAAU,gBAAAzF,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,GAAOgJ,MAAM,GAAGA,UAAAA,EAAAA,CAAO;AAAA,EAAA,GACrD;AAEJ;ACTO,MAAMI,KAAeC,EAAwC,IAAI;AAEjE,SAASC,IAAkB;AAChC,SAAOC,EAAWH,EAAY;AAChC;ACVO,MAAMpJ,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAAjE,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAb,OAAA;AAAA,IAAAW,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA4G,aAAA;AAAA,IAAA9G,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAH,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA;ACQnB,SAAS6G,GAAK;AAAA,EAACC,SAAAA,IAAU;AAAA,EAAOpG,UAAAA;AAAmB,GAAG;AACpD,QAAMqG,IAAKC,EAAAA,GACLC,IAAMC,GACV,OAAO;AAAA,IACLC,WAAW,GAAGJ,CAAE;AAAA,IAChBK,eAAe,GAAGL,CAAE;AAAA,IACpBM,SAAS,GAAGN,CAAE;AAAA,IACdD,SAAAA;AAAAA,EAAAA,IAEF,CAACC,GAAID,CAAO,CACd;AAEA,2BACGN,GAAa,UAAb,EAAsB,OAAOS,GAC5B,UAAA,gBAAAtG,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GAAG5D,UAAAA,GAAS,GAC1C;AAEJ;AAOA,SAAS4G,GAAM;AAAA,EAAC5G,UAAAA;AAAoB,GAAG;AACrC,QAAMuG,IAAMP,EAAAA;AACZ,SACE,gBAAA/F,aAAY,SAAKsG,GAAKE,WAAU,GAAAvG,EAAAC,EAAA1B,OAAQ/B,GAAO+B,KAAK,GACjDuB,UAAAA,EAAAA,CACH;AAEJ;AAOA,SAAS6G,GAAY;AAAA,EAAC7G,UAAAA;AAA0B,GAAG;AACjD,QAAMuG,IAAMP,EAAAA;AACZ,SACE,gBAAA/F,YAAW,IAAIsG,GAAKG,eAAc,GAAAxG,EAAAC,EAAAvB,MAAQlC,GAAOwJ,WAAW,GACzDlG,UAAAA,EAAAA,CACH;AAEJ;AAOA,SAAS8G,GAAM;AAAA,EAAC9G,UAAAA;AAAoB,GAAG;AACrC,QAAMuG,IAAMP,EAAAA;AACZ,SAAI,CAACO,GAAKH,WAAW,CAACpG,IAAiB,OAGrC,gBAAAC,EAAA,QAAA,EAAW,IAAIsG,GAAKI,SAAS,MAAK,SAAO,GAAAzG,EAAAC,EAAAvB,MAAQlC,GAAO6C,KAAK,GAC1DS,UAAAA,GACH;AAEJ;AAEO,MAAM+G,KAAQ;AAAA,EAAA,MACnBZ;AAAAA,EACAS,OAAAA;AAAAA,EACAC,aAAAA;AAAAA,EAAAA,OACAC;AACF,GC5EapK,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAwD,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAE,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA;AC8BZ,SAAS0H,GAAM;AAAA,EACpBjH,SAAAA,IAAU;AAAA,EACV6C,MAAAA,IAAO;AAAA,EACP0B,MAAAA;AAAAA,EACA2C,aAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAlK,OAAAA;AAAAA,EACAmK,cAAAA;AAAAA,EACA9E,UAAAA;AAAAA,EACAkC,UAAAA;AACU,GAAG;AACb,QAAM6B,IAAMP,EAAAA,GAINuB,IAAaH,MAAYxC,SAAY;AAAA,IAACwC,SAAAA;AAAAA,EAAAA,IAAWxC;AAEvD,SACE,gBAAA3E,EAAA,WACE,IAAIsG,GAAKE,WACT,MAAA7D,GACA,MAAA0B,GACA,aAAA2C,GACA,UAAAC,GACA,WAAAC,GACA,cAAAE,GACA,OAAAlK,GACA,cAAAmK,GACA,UAAA9E,GACA,oBACE+D,IAAM,GAAGA,EAAIG,aAAa,IAAIH,EAAIH,UAAUG,EAAII,UAAU,EAAE,GAAGa,KAAAA,IAAS5C,QAE1E,gBAAc2B,GAAKH,WAAWrG,MAAY,WAAW6E,QACrD,UAAAF,GAAmB,GAAAxE,EAAAC,EAAA3B,OACX9B,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,MAC/BwH,GAAuC,KAAA,OAAA,CAAA;AAGlD;ACvEO,MAAM7K,IAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAf,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAI,QAAA;AAAA,IAAAH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA0C,aAAA;AAAA,IAAArB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAA2C,WAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAA4C,SAAA;AAAA,IAAA1C,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA6C,WAAA;AAAA,IAAA3C,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgD,WAAA;AAAA,IAAAC,QAAA;AAAA,IAAAjD,OAAA;AAAA,EAAA;AAAA,GCcb2B,KAAU;AAAA,EACdD,SAAStE,EAAOsF;AAAAA,EAChBU,OAAOhG,EAAOuF;AAChB;AAEO,SAASwF,GAAW;AAAA,EACzBC,MAAAA;AAAAA,EACA3H,SAAAA,IAAU;AAAA,EACVsB,MAAAA,IAAO;AAAA,EACPiB,WAAAA,IAAY;AAAA,EACZ8C,QAAAA;AAAAA,EACAuC,KAAAA;AAAAA,EACA3H,UAAAA;AACe,GAAG;AAClB,SACE,gBAAAC,SACE,MAAAyH,GACA,QAAAtC,GACA,KAAAuC,MAASzH,EAAAC,EAAA9B,GACD3B,EAAOqC,MAAMkC,GAAQI,CAAI,GAAG3E,EAAOqD,CAAO,GAAGuC,KAAa5F,EAAO4F,SAAS,GAEjFtC,UAAAA,GACH;AAEJ;ACtCO,MAAMtD,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAAsI,SAAA;AAAA,IAAAxH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAuI,UAAA;AAAA,IAAA1D,QAAA;AAAA,IAAA2D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAA6I,OAAA;AAAA,IAAAhE,QAAA;AAAA,IAAA2D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAnG,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAwH,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAA+I,UAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1I,OAAA;AAAA,EAAA;AAAA,EAAAgJ,MAAA;AAAA,IAAAlI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAT,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAA/B,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAiJ,iBAAA;AAAA,IAAA/I,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAkJ,UAAA;AAAA,IAAA7G,QAAA;AAAA,IAAAjC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCUNmJ,KAAc1C,EAAuC,IAAI;AAE/D,SAAS2C,KAAU;AACxB,QAAMnC,IAAMN,EAAWwC,EAAW;AAClC,MAAI,CAAClC,EAAK,OAAM,IAAIO,MAAM,wDAAwD;AAClF,SAAOP;AACT;AChBO,SAASoC,KAAc;AAC5B,QAAM,CAACC,GAAMC,CAAO,IAAI9D,EAAS,EAAK,GAChC,CAAC+D,GAAeC,CAAgB,IAAIhE,EAAwB,IAAI,GAChEiE,IAAS1C,EAAAA,GACT2C,IAAUC,EAAuB,IAAI,GACrCC,IAAaD,EAAiC,IAAI,GAClDE,IAAWF,EAAO,oBAAIG,KAA0B,GAChDC,IAAWJ,EAAiB,EAAE,GAC9BK,IAA2BL,EAAO,EAAK,GAEvCM,IAAQtE,EAAY,MAAM;AAC9B2D,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBQ,EAAyBE,UAAU,IACnCN,EAAWM,SAASC,MAAAA;AAAAA,EACtB,GAAG,CAAA,CAAE,GAECC,IAASzE,EAAY,MAAM;AAC/B2D,IAAAA,EAASe,CAAAA,OACFA,KAGHb,EAAiB,IAAI,GACrBQ,EAAyBE,UAAU,MAHnCF,EAAyBE,UAAU,IAK9B,CAACG,EACT;AAAA,EACH,GAAG,CAAA,CAAE;AAKLC,EAAAA,EAAU,MAAM;AACd,QAAIjB,KAAQW,EAAyBE,SAAS;AAC5CF,MAAAA,EAAyBE,UAAU;AACnC,YAAMK,IAAQR,EAASG;AACvB,MAAIK,EAAMC,SAAS,KACjBhB,EAAiBe,EAAM,CAAC,CAAC;AAAA,IAE7B;AAAA,EACF,GAAG,CAAClB,CAAI,CAAC;AAET,QAAMoB,IAAe9E,EAAY,CAACmB,GAAY4D,MAAyB;AACrEb,IAAAA,EAASK,QAAQS,IAAI7D,GAAI4D,CAAO;AAChC,UAAME,IAAMf,EAASK,SACfW,IAAM,CAAC,GAAGD,EAAIE,MAAM;AAC1BD,WAAAA,EAAIE,KAAK,CAACjM,GAAGkM,MAAM;AACjB,YAAMC,IAAML,EAAIM,IAAIpM,CAAC,GACfqM,IAAMP,EAAIM,IAAIF,CAAC;AACrB,aAAI,CAACC,KAAO,CAACE,IAAY,IAClBF,EAAIG,wBAAwBD,CAAG,IAAIE,KAAKC,8BAA8B,KAAK;AAAA,IACpF,CAAC,GACDvB,EAASG,UAAUW,GACZ,MAAM;AACXhB,MAAAA,EAASK,QAAQqB,OAAOzE,CAAE,GAC1BiD,EAASG,UAAUH,EAASG,QAAQsB,OAAQpO,CAAAA,MAAMA,MAAM0J,CAAE;AAAA,IAC5D;AAAA,EACF,GAAG,CAAA,CAAE;AAGLwD,SAAAA,EAAU,MAAM;AACd,UAAMjG,IAAOqF,EAAQQ;AACrB,QAAI,CAAC7F,KAAQ,CAACgF,EAAM;AAEpB,aAASoC,EAAc7F,GAAkB;AACvC,YAAM2E,IAAQR,EAASG;AACvB,UAAIK,EAAMC,WAAW;AAErB,gBAAQ5E,EAAE8F,KAAAA;AAAAA,UACR,KAAK,aAAa;AAChB9F,YAAAA,EAAE+F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,KAAKrB,EAAMC,MAAM;AAAA,YACvC,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,WAAW;AACd5E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,IAAIrB,EAAMC,UAAUD,EAAMC,MAAM;AAAA,YACtD,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,QAAQ;AACX5E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAiBe,EAAM,CAAC,CAAC;AACzB;AAAA,UACF;AAAA,UACA,KAAK,OAAO;AACV3E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAiBe,EAAMA,EAAMC,SAAS,CAAC,CAAC;AACxC;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,KAAK;AACR5E,YAAAA,EAAE+F,eAAAA;AACF,kBAAMG,IAAQjC,EAASK;AACvBV,YAAAA,EAAkBa,CAAAA,OACZA,KACSyB,EAAMZ,IAAIb,CAAI,GACrB0B,MAAAA,GAEC1B,EACR;AACD;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,OAAO;AACVJ,YAAAA,EAAAA;AACA;AAAA,UACF;AAAA,QAAA;AAAA,IAEJ;AAEA5F,WAAAA,EAAK2H,iBAAiB,WAAWP,CAAa,GACvC,MAAMpH,EAAK4H,oBAAoB,WAAWR,CAAa;AAAA,EAChE,GAAG,CAACpC,GAAMY,CAAK,CAAC,GAaT;AAAA,IAACjD,KAXsB;AAAA,MAC5BqC,MAAAA;AAAAA,MACAe,QAAAA;AAAAA,MACAH,OAAAA;AAAAA,MACAR,QAAAA;AAAAA,MACAF,eAAAA;AAAAA,MACAC,kBAAAA;AAAAA,MACAiB,cAAAA;AAAAA,MACAb,YAAAA;AAAAA,IAAAA;AAAAA,IAGWF,SAAAA;AAAAA,EAAAA;AACf;AC5HA,SAAS9C,GAAK;AAAA,EAACnG,UAAAA;AAAmB,GAAG;AACnC,QAAM;AAAA,IAACuG,KAAAA;AAAAA,IAAK0C,SAAAA;AAAAA,EAAAA,IAAWN,GAAAA;AAEvB,2BACGF,GAAY,UAAZ,EAAqB,OAAOlC,GAC3B,4BAAA,OAAA,EAAU,KAAK0C,GAAQ,GAAA/I,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACvC5D,UAAAA,GACH,GACF;AAEJ;AAGA,SAASyL,GAAQ;AAAA,EAACzL,UAAAA;AAA+B,GAAG;AAClD,QAAM;AAAA,IAAC4I,MAAAA;AAAAA,IAAMe,QAAAA;AAAAA,IAAQX,QAAAA;AAAAA,IAAQG,YAAAA;AAAAA,EAAAA,IAAcT,GAAAA,GACrCgD,IAAWxC,EAA0B,IAAI;AAG/CW,SAAAA,EAAU,MAAM;AACdV,IAAAA,EAAWM,UAAUiC,EAASjC;AAAAA,EAChC,CAAC,GAGC,gBAAAxJ,EAAA,YACE,KAAKyL,GACL,MAAK,UACL,SAAS/B,GACT,iBAAef,GACf,iBAAc,QACd,iBAAeA,IAAOI,IAASpE,QAAU,GAAA1E,EAAAC,EAAA7B,QAClC5B,EAAOkL,OAAO,GAEpB5H,UAAAA,EAAAA,CACH;AAEJ;AAQA,SAAS2L,GAAM;AAAA,EAAC3L,UAAAA;AAAAA,EAAU4L,OAAAA,IAAQ;AAAmB,GAAG;AACtD,QAAM;AAAA,IAAChD,MAAAA;AAAAA,IAAMY,OAAAA;AAAAA,IAAOR,QAAAA;AAAAA,IAAQF,eAAAA;AAAAA,EAAAA,IAAiBJ,GAAAA;AAE7C,SAAKE,IAGH,gBAAAjF,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOmL,QAAQ,GAAE,SAAS2B,EAAAA,CAAM;AAAA,IACjD,gBAAAvJ,EAAA,SACE,IAAI+I,GACJ,MAAK,QACL,yBAAuBF,KAAiBlE,QAAU,GAAA1E,EAAAC,EAAA5B,KAC1C7B,EAAOyL,OAAOyD,MAAU,SAASlP,EAAO2L,QAAQ,GAEvDrI,UAAAA,EAAAA,CACH;AAAA,EAAA,GACF,IAbgB;AAepB;AAQA,SAAS8L,GAAK;AAAA,EAACjJ,SAAAA;AAAAA,EAAS7C,UAAAA;AAAmB,GAAG;AAC5C,QAAM;AAAA,IAACwJ,OAAAA;AAAAA,IAAOV,eAAAA;AAAAA,IAAeC,kBAAAA;AAAAA,IAAkBiB,cAAAA;AAAAA,EAAAA,IAAgBtB,GAAAA,GACzDrC,IAAKC,EAAAA,GACLyF,IAAM7C,EAAuB,IAAI,GACjC8C,IAAgBlD,MAAkBzC;AAExCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAI4F,CAAE;AAAA,EAC5B,GAAG,CAAC5F,GAAI2D,CAAY,CAAC,GAQnB,gBAAA/J,EAAA,SACE,KAAA8L,GACA,IAAA1F,GACA,MAAK,YACL,SAVgB6F,MAAM;AACxBrJ,IAAAA,IAAAA,GACA2G,EAAAA;AAAAA,EACF,GAQI,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAnG,EAAAC,EAAA5B,KACnC7B,EAAO4L,MAAM0D,KAAiBtP,EAAO6L,eAAe,GAE3DvI,UAAAA,EAAAA,CACH;AAEJ;AAQA,SAASmM,GAAS;AAAA,EAACzE,MAAAA;AAAAA,EAAM1H,UAAAA;AAAuB,GAAG;AACjD,QAAM;AAAA,IAACwJ,OAAAA;AAAAA,IAAOV,eAAAA;AAAAA,IAAeC,kBAAAA;AAAAA,IAAkBiB,cAAAA;AAAAA,EAAAA,IAAgBtB,GAAAA,GACzDrC,IAAKC,EAAAA,GACLyF,IAAM7C,EAA0B,IAAI,GACpC8C,IAAgBlD,MAAkBzC;AAExCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAI4F,CAAE;AAAA,EAC5B,GAAG,CAAC5F,GAAI2D,CAAY,CAAC,GAGnB,gBAAA/J,EAAA,KAAA,EACE,KAAA8L,GACA,IAAA1F,GACA,MAAAqB,GACA,SAAS8B,GACT,MAAK,YACL,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAnG,EAAAC,EAAA9B,GACnC3B,EAAO4L,MAAM5L,EAAO8L,UAAUwD,KAAiBtP,EAAO6L,eAAe,GAE5EvI,UAAAA,EAAAA,CACH;AAEJ;AAEO,MAAMoM,KAAO;AAAA,EAAA,MAClBjG;AAAAA,EAAAA,SACAsF;AAAAA,EAAAA,OACAE;AAAAA,EAAAA,MACAG;AAAAA,EACAK,UAAAA;AACF,GCnJazP,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA9E,OAAA;AAAA,EAAA;AAAA,EAAA+M,UAAA;AAAA,IAAA9J,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAuI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAlN,OAAA;AAAA,EAAA;AAAA,EAAAmN,SAAA;AAAA,IAAArE,QAAA;AAAA,IAAAsE,QAAA;AAAA,IAAApN,OAAA;AAAA,EAAA;AAAA,EAAAqN,WAAA;AAAA,IAAAxI,QAAA;AAAA,IAAA+D,QAAA;AAAA,IAAA9H,QAAA;AAAA,IAAAwM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAArL,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAAwN,mBAAA;AAAA,IAAAhF,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1F,QAAA;AAAA,IAAAgD,QAAA;AAAA,IAAA5E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAxB,OAAA;AAAA,EAAA;AAAA,EAAAyN,qBAAA;AAAA,IAAAhF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAlE,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAtB,OAAA;AAAA,EAAA;AAAA,EAAA0N,iBAAA;AAAA,IAAAvK,QAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAA2N,kBAAA;AAAA,IAAAxK,QAAA;AAAA,IAAAnD,OAAA;AAAA,EAAA;AAAA,EAAA4N,OAAA;AAAA,IAAA/I,QAAA;AAAA,IAAAgJ,QAAA;AAAA,IAAA3N,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAA8N,mBAAAA,CAiEGC,MAA0B,CAAA;AAAA,IAAAC,OAC5CD,KAAS,OAAA,aAATA;AAAAA,IAAS/N,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,kBAAAiO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA3I,QAATyI,CAAS;AAAA,EAAA,CAAA;AAAA,EAAAG,eAAAA,CAEKC,GAAgBrR,MAAiB,CAAA;AAAA,IAAA2H,QAC/C0J,KAAM,OAAA,aAANA;AAAAA,IAAMtK,QACN/G,KAAS,OAAA,YAATA;AAAAA,IAASkD,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,eAAAiO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA3I,QADT6I,CAAM;AAAA,IAAA,iBACNrR,KAASwI;AAAAA,EAAAA,CAAA;AAAA,EAAA8I,iBAAAA,CAEOC,GAAevR,MAAiB,CAAA;AAAA,IAAAmG,QAChDoL,KAAK,OAAA,YAALA;AAAAA,IAAKxK,QACL/G,KAAS,OAAA,YAATA;AAAAA,IAASkD,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,cAAAiO,CAAAA,MAAA,OAAAA,KAAA,WAAAA,IAAA,OAAAA,KAAA3I,QADT+I,CAAK;AAAA,IAAA,iBACLvR,KAASwI;AAAAA,EAAAA,CAAA;AAAA,GC/DAgJ,KAAoB7H,EAA6C,IAAI;AAE3E,SAAS8H,KAAgB;AAC9B,QAAMtH,IAAMN,EAAW2H,EAAiB;AACxC,MAAI,CAACrH,EAAK,OAAM,IAAIO,MAAM,oEAAoE;AAC9F,SAAOP;AACT;ACjBO,SAASuH,KAA4C;AAC1D,QAAMC,IAAc7E,EAA8B,IAAI,GAChD8E,IAAa9E,EAA8B,IAAI,GAC/C,CAAC+E,GAAWC,CAAY,IAAInJ,EAAS,CAAC,GACtC,CAACoJ,GAAYC,CAAa,IAAIrJ,EAAS,CAAC,GACxC,CAACsJ,GAAcC,CAAe,IAAIvJ,EAAS,CAAC,GAC5C,CAACwJ,GAAaC,CAAc,IAAIzJ,EAAS,CAAC,GAC1C,CAAC0J,GAAcC,CAAe,IAAI3J,EAAS,CAAC,GAC5C,CAAC4J,GAAaC,CAAc,IAAI7J,EAAS,CAAC,GAC1C,CAAC8J,GAAWC,CAAY,IAAI/J,EAAS,EAAK,GAC1CgK,IAAiB7F,EAA6C,IAAI,GAElE8F,IAAe9J,EAAY,MAAM;AACrC,UAAM+J,IAAKlB,EAAYtE;AACvB,IAAKwF,MAELf,EAAae,EAAGhB,SAAS,GACzBG,EAAca,EAAGd,UAAU,GAC3BG,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW,GAC7BG,EAAa,EAAI,GAEbC,EAAetF,WAASyF,aAAaH,EAAetF,OAAO,GAC/DsF,EAAetF,UAAU0F,WAAW,MAAML,EAAa,EAAK,GAAG,GAAI;AAAA,EACrE,GAAG,CAAA,CAAE;AAGLjF,SAAAA,EAAU,MAAM;AACd,UAAMoF,IAAKlB,EAAYtE;AACvB,QAAI,CAACwF,EAAI;AAET,UAAMG,IAAW,IAAIC,eAAe,MAAM;AACxCf,MAAAA,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW;AAAA,IAC/B,CAAC;AACDS,WAAAA,EAASE,QAAQL,CAAE,GAEnBX,EAAgBW,EAAGZ,YAAY,GAC/BG,EAAeS,EAAGV,WAAW,GAC7BG,EAAgBO,EAAGR,YAAY,GAC/BG,EAAeK,EAAGN,WAAW,GAEtB,MAAMS,EAASG,WAAAA;AAAAA,EACxB,GAAG,CAAA,CAAE,GAGL1F,EAAU,MAAM;AACd,UAAMoF,IAAKlB,EAAYtE;AACvB,QAAKwF;AACLA,aAAAA,EAAG1D,iBAAiB,UAAUyD,GAAc;AAAA,QAACQ,SAAS;AAAA,MAAA,CAAK,GACpD,MAAMP,EAAGzD,oBAAoB,UAAUwD,CAAY;AAAA,EAC5D,GAAG,CAACA,CAAY,CAAC,GAEV;AAAA,IACLjB,aAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAE,aAAAA;AAAAA,IACAE,cAAAA;AAAAA,IACAE,aAAAA;AAAAA,IACAE,WAAAA;AAAAA,EAAAA;AAEJ;AC3DA,SAAS1I,GAAK;AAAA,EAACnG,UAAAA;AAAmB,GAAG;AACnC,QAAMuG,IAAMuH,GAAAA;AAEZ,2BACGF,GAAkB,UAAlB,EAA2B,OAAOrH,GACjC,UAAA,gBAAAtG,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOkH,IAAI,GAAG5D,UAAAA,GAAS,GAC1C;AAEJ;AASA,SAASyP,GAAS;AAAA,EAACzP,UAAAA;AAAAA,EAAUqN,WAAAA;AAAwB,GAAG;AACtD,QAAM;AAAA,IAACU,aAAAA;AAAAA,EAAAA,IAAeF,GAAAA;AAEtB,2BACE,OAAA,EACE,KAAKE,GAAY,GAAA7N,EAAAC,EAAA5B,KACT7B,EAAO2P,UAAUgB,KAAa,QAAQ3Q,EAAO0Q,kBAAkBC,CAAS,CAAC,GAEhFrN,UAAAA,GACH;AAEJ;AAQA,SAAS0P,GAAQ;AAAA,EAAC1P,UAAAA;AAAsB,GAAG;AACzC,QAAM;AAAA,IAACgO,YAAAA;AAAAA,EAAAA,IAAcH,GAAAA;AACrB,SACE,gBAAA5N,EAAA,OAAA,EAAU,KAAK+N,GAAW,GAAA9N,EAAAC,EAAA5B,KAAQ7B,EAAO+P,OAAO,GAC7CzM,UAAAA,EAAAA,CACH;AAEJ;AAWA,SAAS2P,GAAU;AAAA,EAACC,aAAAA,IAAc;AAAA,EAAY5P,UAAAA;AAAwB,GAAG;AACvE,QAAM;AAAA,IAAC6O,WAAAA;AAAAA,IAAWR,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,IAAaE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,EAAAA,IAAed,GAAAA;AAM1E,UAFE+B,MAAgB,aAAavB,IAAeI,IAAeF,IAAcI,KAKzE,gBAAA1O,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAEI7B,EAAOiQ,WACPiD,MAAgB,aAAalT,EAAOoQ,oBAAoBpQ,EAAOqQ,qBAC/D8B,IAAYnS,EAAOuQ,mBAAmBvQ,EAAOsQ,eAAe,GAG7DhN,UAAAA,GACH,IAXuB;AAa3B;AAQA,SAAS6P,GAAM;AAAA,EAACD,aAAAA,IAAc;AAAsB,GAAG;AACrD,QAAM;AAAA,IAAC7B,aAAAA;AAAAA,IAAaE,WAAAA;AAAAA,IAAWE,YAAAA;AAAAA,IAAYE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,IAAaE,cAAAA;AAAAA,IAAcE,aAAAA;AAAAA,EAAAA,IAClFd,GAAAA,GACIiC,IAAc5G,EAAO,EAAK,GAC1B6G,IAAc7G,EAAO,CAAC,GACtB8G,IAAiB9G,EAAO,CAAC,GAEzB+G,IAAaL,MAAgB,YAE7BM,IACFC,KAAKC,IADgBH,IACXxB,IAAeJ,IAAgB,MAC/BM,IAAcJ,IAAe,KADO,EAAE,GAG9C8B,IAAYJ,IAAa5B,IAAeI,IAAeF,IAAcI,GACrE2B,IAAYL,IAAaxB,IAAeE,GACxC4B,IAAkBL,IAAmB,MAAOI,GAC5CE,IAAeP,IAAahC,IAAYE,GACxCsC,IAAcJ,IAAY,IAAKG,IAAeH,KAAcC,IAAYC,KAAkB,GAE1FG,IAAaT,IACfvT,EAAO8Q,cAAc,GAAG0C,CAAgB,KAAK,cAAcO,CAAW,KAAK,IAC3E/T,EAAOgR,gBAAgB,GAAGwC,CAAgB,KAAK,cAAcO,CAAW,KAAK,GAE3EE,IAAoBzL,EACxB,CAACC,MAA0B;AACzBA,IAAAA,EAAE+F,eAAAA,GACF4E,EAAYrG,UAAU,IACtBsG,EAAYtG,UAAUwG,IAAa9K,EAAEyL,UAAUzL,EAAE0L,SACjDb,EAAevG,UAAUwG,IACpBlC,EAAYtE,SAASwE,aAAa,IAClCF,EAAYtE,SAAS0E,cAAc,GACtChJ,EAAEC,OAAuB0L,kBAAkB3L,EAAE4L,SAAS;AAAA,EAC1D,GACA,CAACd,GAAYlC,CAAW,CAC1B,GAEMiD,IAAoB9L,EACxB,CAACC,MAA0B;AACzB,QAAI,CAAC2K,EAAYrG,QAAS;AAC1B,UAAMwF,IAAKlB,EAAYtE;AACvB,QAAI,CAACwF,EAAI;AAET,UAAMgC,KAAShB,IAAa9K,EAAEyL,UAAUzL,EAAE0L,WAAWd,EAAYtG,SAC3DyH,IAAcb,KAAaC,IAAYC,IACvCY,IAAcF,IAAQC;AAE5B,IAAIjB,IACFhB,EAAGhB,YAAY+B,EAAevG,UAAU0H,IAExClC,EAAGd,aAAa6B,EAAevG,UAAU0H;AAAAA,EAE7C,GACA,CAAClB,GAAYI,GAAWC,GAAWC,GAAgBxC,CAAW,CAChE,GAEMqD,IAAkBlM,EAAY,MAAM;AACxC4K,IAAAA,EAAYrG,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE;AAEL,SACE,gBAAAxJ,EAAA,OAAA,EACE,eAAe0Q,GACf,eAAeK,GACf,aAAaI,GAAgB,GAAAlR,EAAAC,EAAA5B,KACrB7B,EAAOwQ,OAAOwD,CAAU,GAAA;AAGtC;AAEO,MAAMW,KAAa;AAAA,EAAA,MACxBlL;AAAAA,EACAsJ,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAE,OAAAA;AACF,GCtKanT,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAAsI,SAAA;AAAA,IAAAxH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAgB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAnC,OAAA;AAAA,IAAAuC,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA2H,aAAA;AAAA,IAAAvH,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAuG,MAAA;AAAA,IAAAzF,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAuI,UAAA;AAAA,IAAA1D,QAAA;AAAA,IAAA2D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAA6I,OAAA;AAAA,IAAAhE,QAAA;AAAA,IAAA2D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAnG,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAApC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAwH,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA5I,OAAA;AAAA,EAAA;AAAA,EAAAgJ,MAAA;AAAA,IAAAlI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAT,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAA/B,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAnC,OAAA;AAAA,EAAA;AAAA,EAAAgS,cAAA;AAAA,IAAA5R,QAAA;AAAA,IAAAc,QAAA;AAAA,IAAAlB,OAAA;AAAA,EAAA;AAAA,EAAAiJ,iBAAA;AAAA,IAAA/I,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAiS,QAAA;AAAA,IAAAnR,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,GCcNkS,KAAgBzL,EAAyC,IAAI;AAEnE,SAAS0L,KAAY;AAC1B,QAAMlL,IAAMN,EAAWuL,EAAa;AACpC,MAAI,CAACjL,EAAK,OAAM,IAAIO,MAAM,4DAA4D;AACtF,SAAOP;AACT;ACrBO,SAASmL,GACdC,GACArK,GACA5C,GACA;AACA,QAAM,CAACkN,GAAUC,CAAW,IAAI9M,EAASuC,CAAY,GAC/CnK,IAAQwU,MAAoB/M,SAAY+M,IAAkBC,GAC1DE,IAAW5M,EACf,CAAC6M,MAAS;AACR,IAAIJ,MAAoB/M,UAAWiN,EAAYE,CAAC,GAChDrN,IAAWqN,CAAC;AAAA,EACd,GACA,CAACJ,GAAiBjN,CAAQ,CAC5B;AACA,SAAO,CAACvH,GAAO2U,CAAQ;AACzB;ACPO,SAASE,GAAc;AAAA,EAC5B1K,cAAAA;AAAAA,EACAnK,OAAOwU;AAAAA,EACPM,eAAAA;AACoB,GAAG;AACvB,QAAM,CAAC9U,GAAO2U,CAAQ,IAAIJ,GACxBC,GACArK,KAAgB,MAChB2K,CACF,GACM,CAACrJ,GAAMC,CAAO,IAAI9D,EAAS,EAAK,GAChC,CAACmN,GAAQC,CAAS,IAAIpN,EAAiC,CAAA,CAAE,GACzD,CAAC+D,GAAeC,CAAgB,IAAIhE,EAAwB,IAAI,GAChEqN,IAAY9L,EAAAA,GACZ2C,IAAUC,EAAuB,IAAI,GACrCC,IAAaD,EAAiC,IAAI,GAClDE,IAAWF,EAAO,oBAAIG,KAAoD,GAC1EC,IAAWJ,EAAiB,EAAE,GAE9BM,IAAQtE,EAAY,MAAM;AAC9B2D,IAAAA,EAAQ,EAAK,GACbE,EAAiB,IAAI,GACrBI,EAAWM,SAASC,MAAAA;AAAAA,EACtB,GAAG,CAAA,CAAE,GAECC,IAASzE,EAAY,MAAM;AAC/B2D,IAAAA,EAASe,CAAAA,MAAS;AAChB,UAAKA;AAaHb,QAAAA,EAAiB,IAAI;AAAA,WAbZ;AACT,cAAMsC,IAAQjC,EAASK,SACjBK,IAAQR,EAASG;AACvB,YAAI4I,IAAuB;AAC3B,mBAAWhM,KAAMyD,GAAO;AACtB,gBAAMxB,IAAO+C,EAAMZ,IAAIpE,CAAE;AACzB,cAAIiC,KAAQA,EAAKnL,UAAUA,GAAO;AAChCkV,YAAAA,IAAQhM;AACR;AAAA,UACF;AAAA,QACF;AACA0C,QAAAA,EAAiBsJ,MAAUvI,EAAMC,SAAS,IAAID,EAAM,CAAC,IAAI,KAAK;AAAA,MAChE;AAGA,aAAO,CAACF;AAAAA,IACV,CAAC;AAAA,EACH,GAAG,CAACzM,CAAK,CAAC,GAEJmV,IAAgBpN,EAAY,CAAC6M,GAAWtT,MAAkB;AAC9D0T,IAAAA,EAAWvI,CAAAA,MACLA,EAAKmI,CAAC,MAAMtT,IAAcmL,IACvB;AAAA,MAAC,GAAGA;AAAAA,MAAM,CAACmI,CAAC,GAAGtT;AAAAA,IAAAA,CACvB;AAAA,EACH,GAAG,CAAA,CAAE,GAECuL,IAAe9E,EAAY,CAACmB,GAAYkM,GAAmBtI,MAAyB;AACxFb,IAAAA,EAASK,QAAQS,IAAI7D,GAAI;AAAA,MAAClJ,OAAOoV;AAAAA,MAAWtI,SAAAA;AAAAA,IAAAA,CAAQ;AACpD,UAAME,IAAMf,EAASK,SACfW,IAAM,CAAC,GAAGD,EAAIE,MAAM;AAC1BD,WAAAA,EAAIE,KAAK,CAACjM,GAAGkM,MAAM;AACjB,YAAMC,KAAML,EAAIM,IAAIpM,CAAC,GAAG4L,SAClBS,KAAMP,EAAIM,IAAIF,CAAC,GAAGN;AACxB,aAAI,CAACO,MAAO,CAACE,KAAY,IAClBF,GAAIG,wBAAwBD,EAAG,IAAIE,KAAKC,8BAA8B,KAAK;AAAA,IACpF,CAAC,GACDvB,EAASG,UAAUW,GACZ,MAAM;AACXhB,MAAAA,EAASK,QAAQqB,OAAOzE,CAAE,GAC1BiD,EAASG,UAAUH,EAASG,QAAQsB,OAAQpO,CAAAA,MAAMA,MAAM0J,CAAE;AAAA,IAC5D;AAAA,EACF,GAAG,CAAA,CAAE;AAGLwD,SAAAA,EAAU,MAAM;AACd,UAAMjG,IAAOqF,EAAQQ;AACrB,QAAI,CAAC7F,KAAQ,CAACgF,EAAM;AAEpB,aAASoC,EAAc7F,GAAkB;AACvC,YAAM2E,IAAQR,EAASG,SACjB4B,IAAQjC,EAASK;AACvB,UAAIK,EAAMC,WAAW;AAErB,gBAAQ5E,EAAE8F,KAAAA;AAAAA,UACR,KAAK,aAAa;AAChB9F,YAAAA,EAAE+F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,KAAKrB,EAAMC,MAAM;AAAA,YACvC,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,WAAW;AACd5E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,oBAAMuB,IAAMvB,IAAOE,EAAMsB,QAAQxB,CAAI,IAAI;AACzC,qBAAOE,GAAOqB,IAAM,IAAIrB,EAAMC,UAAUD,EAAMC,MAAM;AAAA,YACtD,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK,QAAQ;AACX5E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAiBe,EAAM,CAAC,CAAC;AACzB;AAAA,UACF;AAAA,UACA,KAAK,OAAO;AACV3E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAiBe,EAAMA,EAAMC,SAAS,CAAC,CAAC;AACxC;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,KAAK;AACR5E,YAAAA,EAAE+F,eAAAA,GACFnC,EAAkBa,CAAAA,MAAS;AACzB,kBAAIA,GAAM;AACR,sBAAMtB,IAAO+C,EAAMZ,IAAIb,CAAI;AAC3B,gBAAItB,MACFwJ,EAASxJ,EAAKnL,KAAK,GACnBqM,EAAAA;AAAAA,cAEJ;AACA,qBAAOI;AAAAA,YACT,CAAC;AACD;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,KAAK,OAAO;AACVJ,YAAAA,EAAAA;AACA;AAAA,UACF;AAAA,QAAA;AAAA,IAEJ;AAEA5F,WAAAA,EAAK2H,iBAAiB,WAAWP,CAAa,GACvC,MAAMpH,EAAK4H,oBAAoB,WAAWR,CAAa;AAAA,EAChE,GAAG,CAACpC,GAAMY,GAAOsI,CAAQ,CAAC,GAgCnB;AAAA,IAACvL,KA9BwBC,GAC9B,OAAO;AAAA,MACLoC,MAAAA;AAAAA,MACAe,QAAAA;AAAAA,MACAH,OAAAA;AAAAA,MACArM,OAAAA;AAAAA,MACA2U,UAAAA;AAAAA,MACAI,QAAAA;AAAAA,MACAI,eAAAA;AAAAA,MACAF,WAAAA;AAAAA,MACAtJ,eAAAA;AAAAA,MACAC,kBAAAA;AAAAA,MACAiB,cAAAA;AAAAA,MACAb,YAAAA;AAAAA,IAAAA,IAEF,CACEP,GACAe,GACAH,GACArM,GACA2U,GACAI,GACAI,GACAF,GACAtJ,GACAC,GACAiB,CAAY,CAEhB;AAAA,IAEaf,SAAAA;AAAAA,EAAAA;AACf;AChKA,SAAS9C,GAAK;AAAA,EAAC7B,MAAAA;AAAAA,EAAMgD,cAAAA;AAAAA,EAAcnK,OAAAA;AAAAA,EAAO8U,eAAAA;AAAAA,EAAejS,UAAAA;AAAmB,GAAG;AAC7E,QAAM;AAAA,IAACuG,KAAAA;AAAAA,IAAK0C,SAAAA;AAAAA,EAAAA,IAAW+I,GAAc;AAAA,IAAC1K,cAAAA;AAAAA,IAAcnK,OAAAA;AAAAA,IAAO8U,eAAAA;AAAAA,EAAAA,CAAc;AAEzE,2BACGT,GAAc,UAAd,EAAuB,OAAOjL,GAC7B,UAAA,gBAAA5C,EAAA,OAAA,EAAU,KAAKsF,GAAQ,GAAA/I,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACvCU,UAAAA;AAAAA,IAAAA,KAAQ,gBAAArE,EAAA,SAAA,EAAY,MAAK,UAAS,MAAAqE,GAAY,OAAOiC,EAAIpJ,SAAS,IAAG,KAAA,QAAA,GAAA+C,EAAAC,EAAA3B,KAAA,GAAA;AAAA,IACrEwB;AAAAA,EAAAA,EAAAA,CACH,EAAA,CACF;AAEJ;AAGA,SAASyL,GAAQ;AAAA,EAACzL,UAAAA;AAA+B,GAAG;AAClD,QAAM;AAAA,IAAC4I,MAAAA;AAAAA,IAAMe,QAAAA;AAAAA,IAAQyI,WAAAA;AAAAA,IAAWtJ,eAAAA;AAAAA,IAAeK,YAAAA;AAAAA,EAAAA,IAAcsI,GAAAA,GACvD/F,IAAWxC,EAA0B,IAAI;AAG/CW,SAAAA,EAAU,MAAM;AACdV,IAAAA,EAAWM,UAAUiC,EAASjC;AAAAA,EAChC,CAAC,GAGC,gBAAAxJ,EAAA,UAAA,EACE,KAAKyL,GACL,MAAK,UACL,MAAM,YACN,SAAS/B,GACT,iBAAef,GACf,iBAAc,WACd,iBAAeA,IAAOwJ,IAAYxN,QAClC,yBAAuBkE,KAAiBlE,QAAU,GAAA1E,EAAAC,EAAA7B,QAC3C5B,EAAOkL,OAAO,GAEpB5H,UAAAA,EAAAA,CACH;AAEJ;AAGA,SAASwS,GAAM;AAAA,EAACvL,aAAAA;AAAmC,GAAG;AACpD,QAAM;AAAA,IAAC9J,OAAAA;AAAAA,IAAO+U,QAAAA;AAAAA,EAAAA,IAAUT,GAAAA,GAClBgB,IAAUtV,IAAS+U,EAAO/U,CAAK,KAAKA,IAAS;AAEnD,SACE,gBAAA8C,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAkB6T,IAAU/V,EAAOS,QAAQT,EAAOuK,WAAW,GAC1DwL,eAAWxL,GACd;AAEJ;AAGA,SAASyL,GAAK;AAAA,EAAC1S,UAAAA;AAAgC,GAAG;AAChD,SACE,gBAAAC,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAkBlC,EAAOmJ,IAAI,GAC1B7F,eACC,gBAAAC,EAAC,OAAA,EACC,OAAM,MACN,QAAO,MACP,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAY,KACZ,eAAc,SACd,gBAAe,SACf,eAAY,QAEZ,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,eAAA,CAAc,GACxB,GAEJ;AAEJ;AAGA,SAAS0L,GAAM;AAAA,EAAC3L,UAAAA;AAA+B,GAAG;AAChD,QAAM;AAAA,IAAC4I,MAAAA;AAAAA,IAAMY,OAAAA;AAAAA,IAAO4I,WAAAA;AAAAA,EAAAA,IAAaX,GAAAA;AAEjC,SACE,gBAAA9N,EAAAkI,GAAA,EACGjD,UAAAA;AAAAA,IAAAA,KAAQ,gBAAA3I,cAAAC,EAAAC,EAAA5B,KAAiB7B,EAAOmL,QAAQ,GAAE,SAAS2B,EAAAA,CAAM;AAAA,IAC1D,gBAAAvJ,EAAA,SACE,IAAImS,GACJ,MAAK,WACL,eAAa,CAACxJ,GAAK,GAAA1I,EAAAC,EAAA5B,KACX7B,EAAOyL,OAAO,CAACS,KAAQlM,EAAO6U,MAAM,GAE3CvR,UAAAA,EAAAA,CACH;AAAA,EAAA,GACF;AAEJ;AAQA,SAAS8L,GAAK;AAAA,EAAC3O,OAAOoV;AAAAA,EAAWvS,UAAAA;AAAmB,GAAG;AACrD,QAAM;AAAA,IACJ7C,OAAOwV;AAAAA,IACPb,UAAAA;AAAAA,IACAtI,OAAAA;AAAAA,IACA8I,eAAAA;AAAAA,IACAxJ,eAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAiB,cAAAA;AAAAA,EAAAA,IACEyH,GAAAA,GACEpL,IAAKC,EAAAA,GACLyF,IAAM7C,EAAuB,IAAI,GACjC0J,IAAaD,MAAkBJ,GAC/BvG,IAAgBlD,MAAkBzC;AAGxCwD,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAI,CAACwC,EAAI;AACT,UAAM4G,IAAO5G,EAAG6G;AAChB,IAAID,KAAMP,EAAcC,GAAWM,CAAI;AAAA,EACzC,GAAG,CAACN,GAAWD,CAAa,CAAC,GAE7BzI,EAAU,MAAM;AACd,UAAMoC,IAAKF,EAAItC;AACf,QAAKwC;AACL,aAAOjC,EAAa3D,GAAIkM,GAAWtG,CAAE;AAAA,EACvC,GAAG,CAAC5F,GAAIkM,GAAWvI,CAAY,CAAC,GAQ9B,gBAAA/J,EAAA,OAAA,EACE,KAAA8L,GACA,IAAA1F,GACA,MAAK,UACL,iBAAeuM,GACf,SAXgB1G,MAAM;AACxB4F,IAAAA,EAASS,CAAS,GAClB/I,EAAAA;AAAAA,EACF,GASI,gBAAgB,MAAMT,EAAiB1C,CAAE,GAAE,GAAAnG,EAAAC,EAAA5B,KAEzC7B,EAAO4L,MACPsK,KAAclW,EAAO4U,cACrBtF,KAAiBtP,EAAO6L,eAAe,GAGxCvI,UAAAA,EAAAA,CACH;AAEJ;AAGA,SAAS+S,GAAS;AAAA,EAAC/S,UAAAA;AAA+B,GAAG;AACnD,2BAAO,QAAA,EAAA,GAAAE,EAAAC,EAAAvB,IAAA,GAAYoB,UAAAA,GAAS;AAC9B;AAEO,MAAMgT,KAAS;AAAA,EAAA,MACpB7M;AAAAA,EAAAA,SACAsF;AAAAA,EACA+G,OAAAA;AAAAA,EACAE,MAAAA;AAAAA,EACA/G,OAAAA;AAAAA,EAAAA,MACAG;AAAAA,EACAiH,UAAAA;AACF,GClLarW,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAAjE,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAA2T,OAAA;AAAA,IAAA7S,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAAjG,OAAA;AAAA,EAAA;AAAA,EAAA4T,cAAA;AAAA,IAAA9S,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiB,QAAA;AAAA,IAAAX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAA2S,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1T,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAqC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAA+T,oBAAA;AAAA,IAAA3T,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgU,SAAA;AAAA,IAAAlT,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAmB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAAiU,aAAA;AAAA,IAAApQ,QAAA;AAAA,IAAA7D,OAAA;AAAA,EAAA;AAAA,EAAAgJ,MAAA;AAAA,IAAAlI,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAAsC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA8D,QAAA;AAAA,IAAA5D,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAxC,OAAA;AAAA,EAAA;AAAA,EAAAkU,YAAA;AAAA,IAAA9T,QAAA;AAAA,IAAAc,QAAA;AAAA,IAAAlB,OAAA;AAAA,EAAA;AAAA,GCQNmU,KAAiB1N,EAA0C,IAAI;AAErE,SAAS2N,KAAa;AAC3B,QAAMnN,IAAMN,EAAWwN,EAAc;AACrC,MAAI,CAAClN,EAAK,OAAM,IAAIO,MAAM,8DAA8D;AACxF,SAAOP;AACT;ACDA,SAASJ,GAAK;AAAA,EAACnG,UAAAA;AAAAA,EAAU7C,OAAOwU;AAAAA,EAAiBrK,cAAAA;AAAAA,EAAc2K,eAAAA;AAAwB,GAAG;AACxF,QAAM,CAAC0B,GAAaC,CAAQ,IAAIlC,GAC9BC,GACArK,KAAgB,MAChB2K,IACKF,CAAAA,MAAM;AACL,IAAIA,MAAM,QAAME,EAAcF,CAAC;AAAA,EACjC,IACAnN,MACN,GACM,CAACiP,GAAgBC,CAAiB,IAAI/O,EAAsB,oBAAIgP,KAAK,GACrEzK,IAAWJ,EAAiB,EAAE,GAE9B8K,IAAc9O,EAAY,CAAC+N,MAAkB;AACjDa,IAAAA,EAAmBlK,CAAAA,MAAS;AAC1B,YAAMqK,IAAO,IAAIF,IAAInK,CAAI;AACzB,aAAIqK,EAAKC,IAAIjB,CAAK,IAChBgB,EAAKnJ,OAAOmI,CAAK,IAEjBgB,EAAKE,IAAIlB,CAAK,GAETgB;AAAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAA,CAAE,GAECjK,IAAe9E,EAAY,CAAC/H,OAC3BmM,EAASG,QAAQ2K,SAASjX,CAAK,KAClCmM,EAASG,QAAQ4K,KAAKlX,CAAK,GAEtB,MAAM;AACXmM,IAAAA,EAASG,UAAUH,EAASG,QAAQsB,OAAQgH,CAAAA,MAAMA,MAAM5U,CAAK;AAAA,EAC/D,IACC,CAAA,CAAE;AAGL0M,SAAAA,EAAU,MAAM;AACd,IAAI8J,KACFG,EAAmBlK,CAAAA,MAEVA,CACR;AAAA,EAEL,GAAG,CAAC+J,CAAW,CAAC,GAGd,gBAAA1T,EAACwT,GAAe,UAAf,EACC,OAAO;AAAA,IAACE,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUC,gBAAAA;AAAAA,IAAgBG,aAAAA;AAAAA,IAAahK,cAAAA;AAAAA,IAAcV,UAAAA;AAAAA,EAAAA,GAE1E,UAAA,gBAAArJ,EAAA,OAAA,EAAU,MAAK,cAAY,GAAAC,EAAAC,EAAAzB,KAAQhC,EAAOkH,IAAI,GAC3C5D,UAAAA,GACH,EAAA,CACF;AAEJ;AAWA,SAASsU,GAAM;AAAA,EAACtU,UAAAA;AAAAA,EAAUvB,OAAAA;AAAAA,EAAO8V,UAAAA;AAAAA,EAAUC,iBAAAA;AAA2B,GAAG;AACvE,QAAMvJ,IAAMsJ,KAAY9V,GAClB;AAAA,IAACoV,gBAAAA;AAAAA,IAAgBG,aAAAA;AAAAA,IAAaL,aAAAA;AAAAA,EAAAA,IAAeD,GAAAA,GAC7Ce,IAAaZ,EAAeK,IAAIjJ,CAAG,GACnCyJ,IAAWxL,EAAuB,IAAI;AAG5CW,EAAAA,EAAU,MAAM;AACd,QAAI,CAAC8J,KAAeE,EAAeK,IAAIjJ,CAAG,EAAG;AAC7C,UAAMgB,IAAKyI,EAASjL;AACpB,QAAI,CAACwC,EAAI;AAET,IADkBA,EAAG0I,cAAc,oBAAoBhB,CAAW,IAAI,KAEpEK,EAAY/I,CAAG;AAAA,EAEnB,GAAG,CAAC0I,GAAa1I,GAAK4I,GAAgBG,CAAW,CAAC,GAGlDnK,EAAU,MAAM;AACd,IAAI2K,KAAmB,CAACX,EAAeK,IAAIjJ,CAAG,KAC5C+I,EAAY/I,CAAG;AAAA,EAInB,GAAG,CAAA,CAAE;AAEL,QAAM2J,IACA,CAACjB,KAAe,CAACe,EAASjL,UAAgB,KACvC,CAAC,CAACiL,EAASjL,QAAQkL,cAAc,oBAAoBhB,CAAW,IAAI;AAG7E,SACE,gBAAAhQ,EAAA,OAAA,EAAU,KAAK+Q,GAAS,GAAAxU,EAAAC,EAAA5B,KAAQ7B,EAAOuW,KAAK,GAC1C,UAAA;AAAA,IAAA,gBAAAtP,EAAA,YACE,MAAK,UACL,SAAS,MAAMqQ,EAAY/I,CAAG,MAAE/K,EAAAC,EAAA7B,QACxB5B,EAAOwW,cAAc0B,KAAkBlY,EAAO2W,kBAAkB,GACxE,iBAAeoB,GAEf,UAAA;AAAA,MAAA,gBAAAxU,EAAA,QAAA,EAAA,GAAAC,EAAAC,EAAAvB,MAAmBlC,EAAO4W,SAASmB,KAAc/X,EAAO6W,WAAW,GACjE,UAAA,gBAAAtT,EAACoF,IAAA,EACC,OAAO,IACP,QAAQ,IACR,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAa,KACb,eAAc,SACd,gBAAe,SAEf,UAAA,gBAAApF,EAAC4U,IAAA,EAAK,GAAE,gBAAA,CAAe,GACzB,GACF;AAAA,MACCpW;AAAAA,IAAAA,GACH;AAAA,IACCgW,KAAczU;AAAAA,EAAAA,GACjB;AAEJ;AASA,SAAS8L,GAAK;AAAA,EAAC3O,OAAAA;AAAAA,EAAO6C,UAAAA;AAAmB,GAAG;AAC1C,QAAM;AAAA,IAAC2T,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAU5J,cAAAA;AAAAA,EAAAA,IAAgB0J,GAAAA,GACxCoB,IAAWnB,MAAgBxW;AAEjC0M,SAAAA,EAAU,MACDG,EAAa7M,CAAK,GACxB,CAACA,GAAO6M,CAAY,CAAC,GAGtB,gBAAA/J,EAAA,UAAA,EACE,MAAK,UACL,kBAAgB9C,GAChB,SAAS,MAAMyW,EAASzW,CAAK,GAAE,GAAA+C,EAAAC,EAAA7B,QACvB5B,EAAO4L,MAAMwM,KAAYpY,EAAO8W,UAAU,GAClD,gBAAcsB,IAAW,SAASlQ,QAEjC5E,UAAAA,EAAAA,CACH;AAEJ;AAEO,MAAM+U,KAAU;AAAA,EAAA,MACrB5O;AAAAA,EACAmO,OAAAA;AAAAA,EACAxI,MAAAA;AACF,GCpKapP,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAhB,OAAA;AAAA,EAAA;AAAA,EAAA0V,SAAA;AAAA,IAAA/V,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAwV,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA/V,OAAA;AAAA,EAAA;AAAA,EAAA4B,IAAA;AAAA,IAAAqB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAA6B,IAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAAgW,IAAA;AAAA,IAAA/S,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAA7E,QAAA;AAAA,IAAAI,OAAA;AAAA,EAAA;AAAA,EAAAiW,QAAA;AAAA,IAAApR,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAwB,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAoR,QAAA;AAAA,IAAAlW,OAAA;AAAA,EAAA;AAAA,GCEb2B,KAAU;AAAA,EACdC,IAAIxE,EAAOwE;AAAAA,EACXC,IAAIzE,EAAOyE;AAAAA,EACXmU,IAAI5Y,EAAO4Y;AACb;AAEO,SAASG,GAAQ;AAAA,EAACpU,MAAAA,IAAO;AAAA,EAAM5C,OAAAA,IAAQ;AAAuB,GAAG;AACtE,SACE,gBAAAkF,EAAA,OAAA,EAAU,MAAK,UAAQ,GAAAzD,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACxC,UAAA;AAAA,IAAA,gBAAA3D,cAAAC,EAAAC,EAAA5B,KAAkB7B,EAAOsY,SAAS/T,GAAQI,CAAI,CAAC,GAAG,eAAW,GAAA,CAAA;AAAA,IAC7D,gBAAApB,EAAA,UAAA,GAAAC,EAAAC,EAAAvB,MAAkBlC,EAAO6Y,MAAM,GAAG9W,UAAAA,EAAAA,CAAM;AAAA,EAAA,GAC1C;AAEJ;ACpBO,MAAM/B,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAiD,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAG,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,SAAA;AAAA,IAAAD,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAM,SAAA;AAAA,IAAAF,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAoW,OAAA;AAAA,IAAAhW,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,GCKbqW,KAA2C;AAAA,EAC/C,YACE,gBAAAhS,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAC2V,KAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAA3V,EAAC4V,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAA,CAAI;AAAA,IACnC,gBAAA5V,EAAC4V,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAI;AAAA,EAAA,GACrC;AAAA,EAEF,gBACE,gBAAAlS,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAC2V,KAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAA3V,EAACqF,IAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEF,cACE,gBAAA3B,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAC4U,IAAA,EAAK,GAAE,qCAAA,CAAoC;AAAA,IAC5C,gBAAA5U,EAACqF,IAAA,EAAS,QAAO,wBAAA,CAAuB;AAAA,EAAA,GAC1C;AAAA,EAEFwQ,OACE,gBAAAnS,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAC2V,KAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAA3V,EAACqF,IAAA,EAAS,QAAO,mBAAA,CAAkB;AAAA,EAAA,GACrC;AAAA,EAEFyQ,WACE,gBAAApS,EAAAkI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5L,EAAC2V,KAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAI;AAAA,IAC9B,gBAAA3V,EAAC4V,MAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAA,CAAO;AAAA,EAAA,EAAA,CACjD;AAEJ;AAQO,SAASG,GAAW;AAAA,EAAC1R,MAAAA;AAAAA,EAAMjD,MAAAA,IAAO;AAAA,EAAItB,SAAAA,IAAU;AAAwB,GAAG;AAChF,SACE,gBAAAE,EAAA,OAAA,EAAA,GAAAC,EAAAC,EAAA5B,KAAkB7B,GAAOkH,MAAMlH,GAAOqD,CAAO,CAAC,GAC5C,UAAA,gBAAAE,EAACoF,MACC,SAAQ,aACR,MAAK,QACL,QAAO,gBACP,aAAa,GACb,eAAc,SACd,gBAAe,SACf,OAAOhE,GACP,QAAQA,GAEPsU,UAAAA,GAAMrR,CAAI,GACb,GACF;AAEJ;AChEmE,MAAA2R,KAAA;AAAA,EAAAC,QAAA;AAAA,EAAA,OAAA;AAAA,GAEtDxZ,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAA1E,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAR,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAA5E,QAAA;AAAA,IAAAe,QAAA;AAAA,IAAAb,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAgE,QAAA;AAAA,IAAA9D,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAA6W,KAAA;AAAA,IAAA/V,QAAA;AAAA,IAAAgW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAhX,OAAA;AAAA,EAAA;AAAA,EAAAiX,cAAA;AAAA,IAAAH,QAAA;AAAA,IAAA9W,OAAA;AAAA,EAAA;AAAA,EAAAkX,SAAA;AAAA,IAAAhX,QAAA;AAAA,IAAAgC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAApC,OAAA;AAAA,EAAA;AAAA,EAAAmX,YAAA;AAAA,IAAAjW,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAA8F,QAAA;AAAA,IAAAlG,OAAA;AAAA,EAAA;AAAA,EAAAoX,MAAA;AAAA,IAAAhX,QAAA;AAAA,IAAAU,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAf,OAAA;AAAA,EAAA;AAAA,EAAAqX,QAAA;AAAA,IAAAhW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAsX,QAAA;AAAA,IAAAjW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA1B,QAAA;AAAA,IAAAE,OAAA;AAAA,EAAA;AAAA,EAAAuX,aAAA;AAAA,IAAArX,QAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAwX,cAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3X,OAAA;AAAA,EAAA;AAAA,EAAA4X,kBAAA;AAAA,IAAAH,QAAA;AAAA,IAAAzX,OAAA;AAAA,EAAA;AAAA,EAAA6X,aAAAA,CAwFHC,OAAenB,IAAA;AAAA,IAAA,2BACN,UAAUmB,CAAO,mBAAjB,UAAUA,CAAO,WAAQxS;AAAAA,EAAAA,CAAA;AAAA,GC1E5CyS,KAAetR,EAAwC,IAAI;AAEjE,SAASuR,KAAW;AAClB,QAAM/Q,IAAMN,EAAWoR,EAAY;AACnC,MAAI,CAAC9Q,EAAK,OAAM,IAAIO,MAAM,0DAA0D;AACpF,SAAOP;AACT;AAIA,MAAMgR,KAAgBxR,EAAc,EAAK;AAWzC,SAASI,GAAK;AAAA,EAACnG,UAAAA;AAAAA,EAAUD,SAAAA,IAAU;AAAA,EAAWsB,MAAAA,IAAO;AAAA,EAAM+V,SAAAA;AAAkB,GAAG;AAC9E,SACE,gBAAAnX,EAACoX,GAAa,UAAb,EAAsB,OAAO;AAAA,IAACtX,SAAAA;AAAAA,IAASsB,MAAAA;AAAAA,IAAM+V,SAAAA;AAAAA,IAASI,UAAU;AAAA,EAAA,GAC/D,UAAA,gBAAAvX,EAAA,OAAA,EAAU,MAAK,SAAO,GAAAC,EAAAC,EAAA5B,KAAQ7B,EAAOkH,IAAI,GACtC5D,UAAAA,GACH,EAAA,CACF;AAEJ;AAIA,SAASyX,GAAO;AAAA,EAACzX,UAAAA;AAA+B,GAAG;AACjD,2BACGuX,GAAc,UAAd,EAAuB,OAAO,IAC7B,4BAAA,OAAA,EAAU,MAAK,YAAU,GAAArX,EAAAC,EAAA5B,KAAQ7B,EAAO4G,MAAM,GAC3CtD,UAAAA,GACH,GACF;AAEJ;AAIA,SAAS0X,GAAK;AAAA,EAAC1X,UAAAA;AAA+B,GAAG;AAC/C,QAAM;AAAA,IAACD,SAAAA;AAAAA,EAAAA,IAAWuX,GAAAA,GACZK,IAAaC,GAASC,QAAQ7X,CAAQ;AAE5C,2BACGuX,GAAc,UAAd,EAAuB,OAAO,IAC7B,4BAAA,OAAA,EAAU,MAAK,eAAUrX,EAAAC,EAAA5B,GAAA,GACtBoZ,YAAWxN,IAAI,CAAC2N,GAAOC,MAClBhY,MAAY,8BAEXiY,GAAgB,UAAhB,EAAqC,OAAOD,GAC1CD,eAD4BC,CAE/B,IAGGD,CACR,GACH,GACF;AAEJ;AAGA,MAAME,KAAkBjS,EAAsB,EAAE;AAIhD,SAASkS,GAAI;AAAA,EAACjY,UAAAA;AAA+B,GAAG;AAC9C,QAAM;AAAA,IAACD,SAAAA;AAAAA,IAASqX,SAAAA;AAAAA,EAAAA,IAAWE,GAAAA,GACrBE,IAAWvR,EAAWsR,EAAa,GACnCW,IAAWjS,EAAW+R,EAAe,GACrCG,IAAYD,KAAY,KAAKA,IAAW,MAAM,GAC9CP,IAAaC,GAASC,QAAQ7X,CAAQ;AAG5C,oCAEI,MAAK,OAAK,GAAAE,EAAAC,EAAA5B,KAER7B,EAAOyZ,KACPzZ,EAAOya,YAAYC,CAAO,GAC1B,CAACI,KAAY9a,EAAO8Z,SACpB,CAACgB,KAAYzX,MAAY,aAAaoY,KAAazb,EAAOma,WAAW,GAGtE9W,UAAAA,MAAY,aACT4X,EAAWxN,IAAI,CAAC2N,GAAOC,wBACpBK,GAAiB,UAAjB,EAAsC,OAAO;AAAA,IAACL,OAAAA;AAAAA,IAAOM,OAAOV,EAAW5N;AAAAA,EAAAA,GACrE+N,UAAAA,EAAAA,GAD6BC,CAEhC,CACD,IACD/X,EAAAA,CACN;AAEJ;AAGA,MAAMoY,KAAmBrS,EAA8C;AAAA,EACrEgS,OAAO;AAAA,EACPM,OAAO;AACT,CAAC;AAID,SAASC,GAAW;AAAA,EAACtY,UAAAA;AAA+B,GAAG;AACrD,QAAM;AAAA,IAACqB,MAAAA;AAAAA,IAAMtB,SAAAA;AAAAA,EAAAA,IAAWuX,GAAAA,GAClB;AAAA,IAACS,OAAAA;AAAAA,IAAOM,OAAAA;AAAAA,EAAAA,IAASpS,EAAWmS,EAAgB,GAC5CG,IAASxY,MAAY,cAAcgY,MAAUM,IAAQ;AAE3D,SACE,gBAAApY,WACE,MAAK,gBAAc,GAAAC,EAAAC,EAAA5B,KAEjB7B,EAAO+Z,YACPpV,MAAS,OAAO3E,EAAOia,SAASja,EAAOka,QACvC7W,MAAY,cAAcrD,EAAOoa,cACjCyB,KAAU7b,EAAOwa,gBAAgB,GAGlClX,UAAAA,EAAAA,CACH;AAEJ;AAIA,SAASwY,GAAK;AAAA,EAACxY,UAAAA;AAA+B,GAAG;AAC/C,QAAM;AAAA,IAACqB,MAAAA;AAAAA,IAAMtB,SAAAA;AAAAA,EAAAA,IAAWuX,GAAAA,GAClB;AAAA,IAACS,OAAAA;AAAAA,IAAOM,OAAAA;AAAAA,EAAAA,IAASpS,EAAWmS,EAAgB,GAC5CG,IAASxY,MAAY,cAAcgY,MAAUM,IAAQ;AAE3D,SACE,gBAAApY,WACE,MAAK,QAAM,GAAAC,EAAAC,EAAA5B,KAET7B,EAAOga,MACPrV,MAAS,OAAO3E,EAAOia,SAASja,EAAOka,QACvC7W,MAAY,cAAcrD,EAAOoa,cACjCyB,KAAU7b,EAAOwa,gBAAgB,GAGlClX,UAAAA,EAAAA,CACH;AAEJ;AAIO,MAAMyY,KAAQ;AAAA,EAAA,MACnBtS;AAAAA,EACAsR,QAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAO,KAAAA;AAAAA,EACAK,YAAAA;AAAAA,EACAE,MAAAA;AACF,GC/Ka9b,IAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAAjG,OAAA;AAAA,EAAA;AAAA,EAAAoZ,cAAA;AAAA,IAAAnT,QAAA;AAAA,IAAAjG,OAAA;AAAA,EAAA;AAAA,EAAAqZ,MAAA;AAAA,IAAAvY,QAAA;AAAA,IAAAmF,QAAA;AAAA,IAAA6Q,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAhV,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAsZ,cAAA;AAAA,IAAArT,QAAA;AAAA,IAAA6Q,QAAA;AAAA,IAAAW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3V,QAAA;AAAA,IAAAhC,OAAA;AAAA,EAAA;AAAA,EAAAuZ,KAAA;AAAA,IAAAzY,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAoB,QAAA;AAAA,IAAAd,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAkX,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA/U,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAAwZ,aAAA;AAAA,IAAAxY,QAAA;AAAA,IAAA8V,QAAA;AAAA,IAAAW,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA3X,OAAA;AAAA,EAAA;AAAA,EAAAyZ,qBAAA;AAAA,IAAArZ,QAAA;AAAA,IAAA4W,QAAA;AAAA,IAAAhX,OAAA;AAAA,EAAA;AAAA,EAAA0Z,mBAAA;AAAA,IAAAtZ,QAAA;AAAA,IAAAuX,QAAA;AAAA,IAAA3X,OAAA;AAAA,EAAA;AAAA,EAAA2Z,aAAA;AAAA,IAAAxW,QAAA;AAAA,IAAAlB,QAAA;AAAA,IAAA7B,QAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAA4Z,OAAA;AAAA,IAAAvY,QAAA;AAAA,IAAArB,OAAA;AAAA,EAAA;AAAA,EAAA6Z,eAAA;AAAA,IAAAxY,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAvB,OAAA;AAAA,EAAA;AAAA,GCUN8Z,KAAcrT,EAAuC,IAAI;AAE/D,SAASsT,KAAU;AACxB,QAAM9S,IAAMN,EAAWmT,EAAW;AAClC,MAAI,CAAC7S,EAAK,OAAM,IAAIO,MAAM,wDAAwD;AAClF,SAAOP;AACT;ACRO,SAAS+S,GAAY;AAAA,EAC1Bnc,OAAOwU;AAAAA,EACPrK,cAAAA;AAAAA,EACA2K,eAAAA;AAAAA,EACArC,aAAAA,IAAc;AACI,GAAqB;AACvC,QAAM,CAAC+D,GAAaC,CAAQ,IAAIlC,GAC9BC,GACArK,KAAgB,MAChB2K,IACKF,CAAAA,MAAM;AACL,IAAIA,MAAM,QAAME,EAAcF,CAAC;AAAA,EACjC,IACAnN,MACN,GACM2U,IAAUrQ,EAAO,oBAAIG,KAAsB,GAC3CC,IAAWJ,EAAiB,EAAE,GAE9BsQ,IAActU,EAAY,CAAC/H,GAAeqF,OAC9C+W,EAAQ9P,QAAQS,IAAI/M,GAAOqF,CAAQ,GAC9B8G,EAASG,QAAQ2K,SAASjX,CAAK,KAClCmM,EAASG,QAAQ4K,KAAKlX,CAAK,GAEtB,MAAM;AACXoc,IAAAA,EAAQ9P,QAAQqB,OAAO3N,CAAK,GAC5BmM,EAASG,UAAUH,EAASG,QAAQsB,OAAQgH,CAAAA,MAAMA,MAAM5U,CAAK;AAAA,EAC/D,IACC,CAAA,CAAE;AAEL,SAAO;AAAA,IAACwW,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUhE,aAAAA;AAAAA,IAAa4J,aAAAA;AAAAA,IAAaD,SAAAA;AAAAA,IAASjQ,UAAAA;AAAAA,EAAAA;AACpE;ACzBA,SAASnD,GAAK;AAAA,EACZnG,UAAAA;AAAAA,EACA7C,OAAAA;AAAAA,EACAmK,cAAAA;AAAAA,EACA2K,eAAAA;AAAAA,EACArC,aAAAA,IAAc;AACL,GAAG;AACZ,QAAMrJ,IAAM+S,GAAY;AAAA,IAACnc,OAAAA;AAAAA,IAAOmK,cAAAA;AAAAA,IAAc2K,eAAAA;AAAAA,IAAerC,aAAAA;AAAAA,EAAAA,CAAY;AAEzE,SACE,gBAAA3P,EAACmZ,GAAY,UAAZ,EAAqB,OAAO7S,GAC3B,UAAA,gBAAAtG,cAAAC,EAAAC,EAAA5B,KAAkB7B,EAAOkH,MAAMgM,MAAgB,cAAclT,EAAOgc,YAAY,GAC7E1Y,UAAAA,GACH,GACF;AAEJ;AAQA,SAASyZ,GAAK;AAAA,EAACzZ,UAAAA;AAAmB,GAAG;AACnC,QAAM;AAAA,IAAC4P,aAAAA;AAAAA,IAAa+D,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAU2F,SAAAA;AAAAA,IAASjQ,UAAAA;AAAAA,EAAAA,IAAY+P,GAAAA,GAC1DK,IAAUxQ,EAAuB,IAAI;AAE3CW,SAAAA,EAAU,MAAM;AACd,UAAMoC,IAAKyN,EAAQjQ;AACnB,QAAI,CAACwC,EAAI;AAET,aAASjB,EAAiC7F,GAAkB;AAC1D,YAAM2E,IAAQR,EAASG,SACjBkQ,IAAOJ,EAAQ9P;AACrB,UAAIK,EAAMC,WAAW,EAAG;AACxB,YAAM6P,IAAS,MAETC,IAAUjK,MAAgB,eAAe,cAAc,WACvDkK,IAAUlK,MAAgB,eAAe,eAAe;AAE9D,UAAImK,IAA6B;AAEjC,cAAQ5U,EAAE8F,KAAAA;AAAAA,QACR,KAAK6O,GAAS;AACZ3U,UAAAA,EAAE+F,eAAAA;AACF,gBAAM8O,IAAarG,IAAc7J,EAAMsB,QAAQuI,CAAW,IAAI;AAC9D,mBAAShX,IAAI,GAAGA,KAAKmN,EAAMC,QAAQpN,KAAK;AACtC,kBAAMwO,KAAO6O,IAAard,KAAKmN,EAAMC,QAC/BwD,IAAMzD,EAAMqB,CAAG;AACrB,gBAAI,CAACwO,EAAKlP,IAAI8C,CAAG,GAAG;AAClBwM,cAAAA,IAAcxM;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAKsM,GAAS;AACZ1U,UAAAA,EAAE+F,eAAAA;AACF,gBAAM8O,IAAarG,IAAc7J,EAAMsB,QAAQuI,CAAW,IAAI;AAC9D,mBAAShX,IAAI,GAAGA,KAAKmN,EAAMC,QAAQpN,KAAK;AACtC,kBAAMwO,KAAO6O,IAAard,IAAImN,EAAMC,UAAUD,EAAMC,QAC9CwD,IAAMzD,EAAMqB,CAAG;AACrB,gBAAI,CAACwO,EAAKlP,IAAI8C,CAAG,GAAG;AAClBwM,cAAAA,IAAcxM;AACd;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACXpI,UAAAA,EAAE+F,eAAAA;AACF,qBAAWqC,KAAOzD;AAChB,gBAAI,CAAC6P,EAAKlP,IAAI8C,CAAG,GAAG;AAClBwM,cAAAA,IAAcxM;AACd;AAAA,YACF;AAEF;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACVpI,UAAAA,EAAE+F,eAAAA;AACF,mBAASvO,IAAImN,EAAMC,SAAS,GAAGpN,KAAK,GAAGA;AACrC,gBAAI,CAACgd,EAAKlP,IAAIX,EAAMnN,CAAC,CAAC,GAAG;AACvBod,cAAAA,IAAcjQ,EAAMnN,CAAC;AACrB;AAAA,YACF;AAEF;AAAA,QACF;AAAA,MAAA;AAGF,MAAIod,MACFnG,EAASmG,CAAW,GAENH,EAAOjF,cACnB,oBAAoBoF,CAAW,IACjC,GACOrQ,MAAAA;AAAAA,IAEX;AAEAuC,WAAAA,EAAGV,iBAAiB,WAAWP,CAAa,GACrC,MAAMiB,EAAGT,oBAAoB,WAAWR,CAAa;AAAA,EAC9D,GAAG,CAAC4E,GAAa+D,GAAaC,GAAU2F,GAASjQ,CAAQ,CAAC,qBAGxD,OAAA,EACE,KAAKoQ,GACL,MAAK,WACL,oBAAkB9J,GAAY,GAAA1P,EAAAC,EAAA5B,KACtB7B,EAAOic,MAAM/I,MAAgB,cAAclT,EAAOkc,YAAY,GAErE5Y,UAAAA,GACH;AAEJ;AAUA,SAASia,GAAI;AAAA,EAAC9c,OAAAA;AAAAA,EAAOqF,UAAAA,IAAW;AAAA,EAAOxC,UAAAA;AAAkB,GAAG;AAC1D,QAAM;AAAA,IAAC2T,aAAAA;AAAAA,IAAaC,UAAAA;AAAAA,IAAUhE,aAAAA;AAAAA,IAAa4J,aAAAA;AAAAA,EAAAA,IAAeH,GAAAA,GACpDvE,IAAWnB,MAAgBxW,GAC3B+c,IAAQ5T,EAAAA,GACR6T,IAAU,GAAGD,CAAK;AAExBrQ,SAAAA,EAAU,MACD2P,EAAYrc,GAAOqF,CAAQ,GACjC,CAACrF,GAAOqF,GAAUgX,CAAW,CAAC,GAS/B,gBAAAvZ,EAAA,YACE,MAAK,UACL,MAAK,OACL,IAAIia,GACJ,iBAAepF,GACf,iBAAeqF,GACf,iBAAe3X,KAAYoC,QAC3B,kBAAgBzH,GAChB,UAAU2X,IAAW,IAAI,IACzB,SAhBgB5I,MAAM;AACxB,IAAK1J,KACHoR,EAASzW,CAAK;AAAA,EAElB,GAYyB,GAAA+C,EAAAC,EAAA7B,QAEnB5B,EAAOmc,KACPjJ,MAAgB,cAAclT,EAAOoc,aACrChE,MACGlF,MAAgB,aAAalT,EAAOsc,oBAAoBtc,EAAOqc,sBAClEvW,KAAY9F,EAAOuc,WAAW,GAG/BjZ,UAAAA,GACH;AAEJ;AASA,SAASoa,GAAM;AAAA,EAACjd,OAAAA;AAAAA,EAAO6C,UAAAA;AAAoB,GAAG;AAC5C,QAAM;AAAA,IAAC2T,aAAAA;AAAAA,IAAa/D,aAAAA;AAAAA,EAAAA,IAAeyJ,GAAAA;AAEnC,SAAI1F,MAAgBxW,IAAc,OAGhC,gBAAA8C,EAAA,OAAA,EACE,MAAK,eAAUC,EAAAC,EAAA5B,KACP7B,EAAOwc,OAAOtJ,MAAgB,cAAclT,EAAOyc,aAAa,GAEvEnZ,UAAAA,GACH;AAEJ;AAEO,MAAMqa,KAAO;AAAA,EAAA,MAClBlU;AAAAA,EACAsT,MAAAA;AAAAA,EACAQ,KAAAA;AAAAA,EACAG,OAAAA;AACF,GC9Ma1d,KAAM;AAAA,EAAAqC,MAAA;AAAA,IAAAwD,QAAA;AAAA,IAAA5B,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAP,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAK,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAN,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAAqb,QAAA;AAAA,IAAA9Y,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAzC,OAAA;AAAA,EAAA;AAAA,EAAA0B,SAAA;AAAA,IAAAvB,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAC,OAAA;AAAA,IAAAE,QAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA;ACeZ,SAASib,GAAS;AAAA,EACvBxa,SAAAA,IAAU;AAAA,EACVuE,MAAAA;AAAAA,EACA2C,aAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAsT,MAAAA,IAAO;AAAA,EACPrd,OAAAA;AAAAA,EACAmK,cAAAA;AAAAA,EACA9E,UAAAA;AAAAA,EACAkC,UAAAA;AACa,GAAG;AAChB,QAAM6B,IAAMP,EAAAA;AAEZ,SACE,gBAAA/F,EAAA,cACE,IAAIsG,GAAKE,WACT,MAAAnC,GACA,aAAA2C,GACA,UAAAC,GACA,MAAAsT,GACA,OAAArd,GACA,cAAAmK,GACA,UAAA9E,GACA,oBACE+D,IAAM,GAAGA,EAAIG,aAAa,IAAIH,EAAIH,UAAUG,EAAII,UAAU,EAAE,GAAGa,KAAAA,IAAS5C,QAE1E,gBAAc2B,GAAKH,WAAWrG,MAAY,WAAW6E,QACrD,UAAAF,GAAmB,GAAAxE,EAAAC,EAAAtB,UACXnC,GAAOqC,MAAMrC,GAAOqD,CAAO,CAAC,GAAA,KAAA,QAAA;AAG1C;AC/CO,MAAM0a,KAAS;AAAA,EACpBC,IAAI;AAAA,EACJC,QAAQ;AAAA,EACRC,aAAa;AAAA,EACb/H,MAAM;AAAA,EACNgI,WAAW;AAAA,EACXC,QAAQ;AAAA,EACRC,aAAa;AAAA,EACbC,gBAAgB;AAAA,EAChBC,QAAQ;AAAA,EACR1b,OAAO;AAAA,EACP2b,YAAY;AAAA,EACZC,SAAS;AAAA,EACTC,aAAa;AAAA,EACbC,WAAW;AAAA,EACXC,eAAe;AAAA,EACf3b,SAAS;AAAA,EACT4b,WAAW;AAAA,EACXC,eAAe;AAAA,EACfC,aAAa;AAAA,EACb7b,SAAS;AAAA,EACT8b,WAAW;AAAA,EACXC,eAAe;AAAA,EACfC,aAAa;AAAA,EACbC,QAAQ;AAAA,EACRC,YAAY;AAAA,EACZC,UAAU;AAAA,EACVC,kBAAkB;AACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCnBMC,KAA0F;AAAA,EAC9FC,OAAO,CAACC,IAAYC,EAAY;AAAA,EAChC,iBAAiB,CAACC,IAAmBC,EAAmB;AAC1D,GAEM5f,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAxD,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA;AAUL,SAASid,GAAc;AAAA,EAACC,OAAAA,IAAQ;AAAA,EAAQxc,UAAAA;AAA4B,GAAG;AAC5E,QAAMyc,IAAYR,GAASO,CAAK,GAC1BE,IAAc,CAACD,IAAY,CAAC,GAAGA,IAAY,CAAC,GAAG/f,GAAOkH,IAAI;AAEhE,SAAO,gBAAA3D,EAAA,SAAA,GAAAC,EAAAC,EAAA5B,KAAiBme,CAAW,GAAG1c,UAAAA,GAAS;AACjD;AC5BO,MAAMtD,KAAM;AAAA,EAAAkH,MAAA;AAAA,IAAAO,QAAA;AAAA,IAAA/D,QAAA;AAAA,IAAAd,OAAA;AAAA,EAAA;AAAA,EAAA6I,OAAA;AAAA,IAAAhE,QAAA;AAAA,IAAA+D,QAAA;AAAA,IAAAvH,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAtB,QAAA;AAAA,IAAAE,QAAA;AAAA,IAAAa,QAAA;AAAA,IAAAnB,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAJ,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAAM,QAAA;AAAA,IAAAsD,QAAA;AAAA,IAAAtC,QAAA;AAAA,IAAAkc,QAAA;AAAA,IAAArd,OAAA;AAAA,EAAA;AAAA,EAAAsd,KAAA;AAAA,IAAA3U,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA5E,QAAA;AAAA,IAAAI,QAAA;AAAA,IAAAjE,OAAA;AAAA,EAAA;AAAA,EAAAud,QAAA;AAAA,IAAA/U,QAAA;AAAA,IAAAC,QAAA;AAAA,IAAA5E,QAAA;AAAA,IAAAwC,QAAA;AAAA,IAAArG,OAAA;AAAA,EAAA;AAAA,EAAAwd,MAAA;AAAA,IAAA9U,QAAA;AAAA,IAAAF,QAAA;AAAA,IAAA3E,QAAA;AAAA,IAAA4Z,QAAA;AAAA,IAAAzd,OAAA;AAAA,EAAA;AAAA,EAAA0d,OAAA;AAAA,IAAAjV,QAAA;AAAA,IAAAD,QAAA;AAAA,IAAA3E,QAAA;AAAA,IAAA8Z,QAAA;AAAA,IAAA3d,OAAA;AAAA,EAAA;AAAA,GCqBb4d,KAAiBnX,EAA0C,IAAI;AAErE,SAASoX,KAAa;AACpB,QAAM5W,IAAMN,EAAWiX,EAAc;AACrC,MAAI,CAAC3W,EAAK,OAAM,IAAIO,MAAM,8DAA8D;AACxF,SAAOP;AACT;AAWA,SAASJ,GAAK;AAAA,EAACnG,UAAAA;AAAAA,EAAUyM,SAAAA;AAAAA,EAAS2Q,WAAAA,IAAY;AAAA,EAAOC,OAAAA,IAAQ;AAAc,GAAG;AAC5E,QAAM,CAACzU,GAAMC,CAAO,IAAI9D,EAAS,EAAK,GAChCuY,IAAYhX,EAAAA,GACZiX,IAAWrU,EAA6C,IAAI,GAE5DsU,IAAOtY,EAAY,MAAM;AAC7B,IAAIqY,EAAS9T,WAASyF,aAAaqO,EAAS9T,OAAO,GACnD8T,EAAS9T,UAAU0F,WAAW,MAAMtG,EAAQ,EAAI,GAAGwU,CAAK;AAAA,EAC1D,GAAG,CAACA,CAAK,CAAC,GAEJI,IAAOvY,EAAY,MAAM;AAC7B,IAAIqY,EAAS9T,WAASyF,aAAaqO,EAAS9T,OAAO,GACnD8T,EAAS9T,UAAU,MACnBZ,EAAQ,EAAK;AAAA,EACf,GAAG,CAAA,CAAE;AAEL,SACE,gBAAA5I,EAACid,GAAe,UAAf,EAAwB,OAAO;AAAA,IAACtU,MAAAA;AAAAA,IAAM4U,MAAAA;AAAAA,IAAMC,MAAAA;AAAAA,IAAMH,WAAAA;AAAAA,IAAWF,WAAAA;AAAAA,EAAAA,GAC5D,4BAAA,OAAA,EAAA,GAAAld,EAAAC,EAAA5B,KAAiB7B,GAAOkH,IAAI,GACzB5D,UAAAA;AAAAA,IAAAA;AAAAA,IACA4I,KACC,gBAAA3I,EAAA,OAAA,EAAU,IAAIqd,GAAW,MAAK,WAAS,GAAApd,EAAAC,EAAA5B,KAAS7B,GAAOyL,OAAOzL,GAAO0gB,CAAS,CAAC,GAC5E3Q,UAAAA,EAAAA,CACH;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;AAQA,SAAShB,GAAQ;AAAA,EAACzL,UAAAA;AAAsB,GAAG;AACzC,QAAM;AAAA,IAAC4I,MAAAA;AAAAA,IAAM4U,MAAAA;AAAAA,IAAMC,MAAAA;AAAAA,IAAMH,WAAAA;AAAAA,EAAAA,IAAaH,GAAAA;AAEtC,oCAEI,gBAAgBK,GAChB,gBAAgBC,GAChB,SAASD,GACT,QAAQC,GACR,oBAAkB7U,IAAO0U,IAAY1Y,QAAU,GAAA1E,EAAAC,EAAA5B,GAAA,GAE9CyB,UAAAA,GACH;AAEJ;AAEO,MAAM0d,KAAU;AAAA,EACrBvX,MAAAA;AAAAA,EACAsF,SAAAA;AACF;","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/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","../src/components/Field/FieldContext.ts","../src/components/Field/styles.css.ts","../src/components/Field/Field.tsx","../src/components/Input/styles.css.ts","../src/components/Input/Input.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/Tooltip/styles.css.ts","../src/components/Tooltip/Tooltip.tsx"],"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 {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 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 {styles} from './styles.css'\n\nexport type AlertVariant = 'error' | 'success' | 'warning' | 'info'\n\ninterface AlertProps {\n variant?: AlertVariant\n children: ReactNode\n}\n\nexport function Alert({variant = 'info', children}: AlertProps) {\n return (\n <html.div role=\"alert\" style={[styles.base, styles[variant]]}>\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 {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 {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})\n","import {html} from 'react-strict-dom'\nimport {useFieldContext} from '../Field/FieldContext'\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\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]]}\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 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}\n\nexport function useSelectRoot({\n defaultValue,\n value: controlledValue,\n onValueChange,\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>>({})\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 children: ReactNode\n}\n\nfunction Root({name, defaultValue, value, onValueChange, children}: RootProps) {\n const {ctx, rootRef} = useSelectRoot({defaultValue, value, onValueChange})\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 muted: {\n color: colors.textMuted,\n },\n})\n","import type {ReactNode} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\n\nexport type StatusIconName = 'x-circle' | 'check-circle' | 'check-done' | 'clock' | 'forbidden'\nexport type StatusIconVariant = 'error' | 'success' | 'warning' | 'muted'\n\nconst icons: Record<StatusIconName, 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}\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 <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 {icons[name]}\n </svg>\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 r = {\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 infoBg: \"var(--infoBg-xho8jir)\",\n infoBorder: \"var(--infoBorder-xnevk3x)\",\n infoText: \"var(--infoText-x19pseus)\",\n __varGroupHash__: \"xjvd03b\"\n}, a = {\n xs: \"var(--xs-xxfyjsd)\",\n sm: \"var(--sm-xbh8y7f)\",\n md: \"var(--md-x3pkb85)\",\n lg: \"var(--lg-x34mutn)\",\n xl: \"var(--xl-xttpygj)\",\n xxl: \"var(--xxl-xbe9eha)\",\n __varGroupHash__: \"x6uc9q\"\n}, e = {\n sm: \"var(--sm-x1bhtfs5)\",\n md: \"var(--md-xx2g89g)\",\n lg: \"var(--lg-xwd56yl)\",\n full: \"var(--full-x9vxdtd)\",\n __varGroupHash__: \"xw3ffwm\"\n}, t = {\n fontFamily: \"var(--fontFamily-xvrmnat)\",\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}, x = {\n sm: \"var(--sm-x17hhtln)\",\n md: \"var(--md-x1oyt0aw)\",\n lg: \"var(--lg-x1mxd62i)\",\n __varGroupHash__: \"x13v825q\"\n}, o = {\n xjvd03b: \"x18itf25 xjvd03b\",\n $$css: !0\n}, v = {\n x13v825q: \"xv9ibj0 x13v825q\",\n $$css: !0\n}, n = {\n xjvd03b: \"x1qgt5a2 xjvd03b\",\n $$css: !0\n}, s = {\n x13v825q: \"x15e39jv x13v825q\",\n $$css: !0\n};\nexport {\n r as colors,\n s as highContrastShadows,\n n as highContrastTheme,\n v as lightShadows,\n o as lightTheme,\n e as radii,\n x as shadows,\n a as spacing,\n t 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 {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"],"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","input","label","nav","p","span","textarea","defaultStyles","base","kmVPX3","kaIpWk","kMzoRj","ksu8eU","kGuDYH","kLWn49","$$css","error","kWkggS","kVAM5u","kMwMTN","success","warning","info","Alert","variant","children","jsx","_rsdMerge","_rsdDefaultStyles","k1xSpc","kGNEyG","kjj79g","kMv6JI","k63SB2","khDVqt","sizeMd","kLKAdn","kGO01o","kE3dHu","kpe85a","sizeSm","default","sizeMap","sm","md","Badge","size","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","filled","interactive","k3aq6I","sizeCompact","sizeFull","header","k1K539","compact","full","Card","jsxs","root","rootDisabled","box","kZKoxP","kmuXW","boxUnchecked","boxChecked","kVAEAm","kVQacm","Checkbox","name","checked","controlledChecked","defaultChecked","onChange","isControlled","undefined","internalChecked","setInternalChecked","useState","isChecked","handleChange","useCallback","e","target","opacity","kXwgrk","k9WMMc","message","action","keoZOQ","EmptyState","icon","FieldContext","createContext","useFieldContext","useContext","description","Root","invalid","id","useId","ctx","useMemo","controlId","descriptionId","errorId","Label","Description","Error","Field","Input","placeholder","required","minLength","pattern","autoComplete","defaultValue","extraProps","trim","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","key","preventDefault","idx","indexOf","items","click","addEventListener","removeEventListener","Trigger","localRef","Popup","align","Fragment","Item","ref","isHighlighted","el","handleClick","LinkItem","Menu","viewport","kXHlph","kORKVm","k5wCbM","content","kAzted","scrollbar","kFalU9","kfSwDN","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","labels","setLabels","listboxId","found","registerLabel","itemValue","Value","display","Icon","selectedValue","isSelected","text","textContent","ItemText","Select","group","groupTrigger","kP9fke","kb6lSQ","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","muted","icons","clock","forbidden","StatusIcon","_temp","kumcoG","row","kt9PQ7","kfdmCh","kL6WhQ","rowLastChild","bodyRow","headerCell","cell","cellSm","cellMd","stripedEven","borderedCell","kWqL5O","kSWEuD","k26BEO","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","r","bg","bgCard","bgCardHover","textMuted","accent","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","kfzvcC","top","bottom","left","km5ZXQ","right","koQZXg","TooltipContext","useTooltip","placement","delay","tooltipId","timerRef","show","hide","Tooltip"],"mappings":"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","x_google_ignoreList":[0]}