@duro-app/ui 5.13.0 → 5.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/{Table-Bms2ftt3.js → Table-DnaoH-h5.js} +747 -635
- package/dist/Table-DnaoH-h5.js.map +1 -0
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/ColorMode/ColorMode.d.ts +2 -1
- package/dist/components/ColorMode/ColorMode.d.ts.map +1 -1
- package/dist/components/ColorMode/storage.d.ts +4 -0
- package/dist/components/ColorMode/storage.d.ts.map +1 -0
- package/dist/components/ColorMode/styles.css.d.ts +4 -0
- package/dist/components/ColorMode/styles.css.d.ts.map +1 -1
- package/dist/components/ColorMode/useSystemScheme.d.ts +7 -0
- package/dist/components/ColorMode/useSystemScheme.d.ts.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +7 -2
- package/dist/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox/comboboxState.d.ts +29 -0
- package/dist/components/Combobox/comboboxState.d.ts.map +1 -0
- package/dist/components/Combobox/native.css.d.ts +27 -0
- package/dist/components/Combobox/native.css.d.ts.map +1 -0
- package/dist/components/Combobox/useComboboxRoot.d.ts +6 -10
- package/dist/components/Combobox/useComboboxRoot.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +5 -2
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/DrawerSnap.stories.d.ts +2 -0
- package/dist/components/Drawer/DrawerSnap.stories.d.ts.map +1 -1
- package/dist/components/Drawer/native.css.d.ts +4 -0
- package/dist/components/Drawer/native.css.d.ts.map +1 -1
- package/dist/components/Drawer/styles.css.d.ts +4 -0
- package/dist/components/Drawer/styles.css.d.ts.map +1 -1
- package/dist/components/Form/FormSubmitContext.d.ts +8 -0
- package/dist/components/Form/FormSubmitContext.d.ts.map +1 -0
- package/dist/components/Listbox/native.css.d.ts +84 -0
- package/dist/components/Listbox/native.css.d.ts.map +1 -0
- package/dist/components/QrCode/QrCode.d.ts +8 -0
- package/dist/components/QrCode/QrCode.d.ts.map +1 -0
- package/dist/components/QrCode/QrCode.meta.d.ts +3 -0
- package/dist/components/QrCode/QrCode.meta.d.ts.map +1 -0
- package/dist/components/QrCode/QrCode.stories.d.ts +8 -0
- package/dist/components/QrCode/QrCode.stories.d.ts.map +1 -0
- package/dist/components/QrCode/geometry.d.ts +14 -0
- package/dist/components/QrCode/geometry.d.ts.map +1 -0
- package/dist/components/QrCode/styles.css.d.ts +9 -0
- package/dist/components/QrCode/styles.css.d.ts.map +1 -0
- package/dist/components/QrCode/types.d.ts +7 -0
- package/dist/components/QrCode/types.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +9 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.stories.d.ts +11 -0
- package/dist/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/components/Select/native.css.d.ts +11 -0
- package/dist/components/Select/native.css.d.ts.map +1 -0
- package/dist/components/Select/selectState.d.ts +21 -0
- package/dist/components/Select/selectState.d.ts.map +1 -0
- package/dist/components/Select/styles.css.d.ts +10 -0
- package/dist/components/Select/styles.css.d.ts.map +1 -1
- package/dist/components/Select/useSelectRoot.d.ts +6 -8
- package/dist/components/Select/useSelectRoot.d.ts.map +1 -1
- package/dist/components/ThemeProvider/ThemeOverrides.stories.d.ts +13 -0
- package/dist/components/ThemeProvider/ThemeOverrides.stories.d.ts.map +1 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +9 -2
- package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeProvider/overrideRule.d.ts +7 -0
- package/dist/components/ThemeProvider/overrideRule.d.ts.map +1 -0
- package/dist/components/ThemeProvider/overrides.d.ts +16 -0
- package/dist/components/ThemeProvider/overrides.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6230 -4656
- package/dist/index.js.map +1 -1
- package/dist/shared/textOf.d.ts +7 -0
- package/dist/shared/textOf.d.ts.map +1 -0
- package/dist/table.js +1 -1
- package/package.json +5 -2
- package/src/components/Button/Button.tsx +12 -1
- package/src/components/ColorMode/ColorMode.meta.ts +1 -1
- package/src/components/ColorMode/ColorMode.tsx +16 -37
- package/src/components/ColorMode/storage.native.ts +8 -0
- package/src/components/ColorMode/storage.ts +19 -0
- package/src/components/ColorMode/styles.css.ts +6 -0
- package/src/components/ColorMode/useSystemScheme.native.ts +6 -0
- package/src/components/ColorMode/useSystemScheme.ts +19 -0
- package/src/components/Combobox/Combobox.meta.ts +1 -1
- package/src/components/Combobox/Combobox.native.tsx +295 -0
- package/src/components/Combobox/Combobox.tsx +14 -8
- package/src/components/Combobox/comboboxState.ts +107 -0
- package/src/components/Combobox/native.css.ts +33 -0
- package/src/components/Combobox/useComboboxRoot.ts +17 -91
- package/src/components/Drawer/Drawer.meta.ts +1 -1
- package/src/components/Drawer/Drawer.native.tsx +29 -7
- package/src/components/Drawer/Drawer.tsx +11 -2
- package/src/components/Drawer/DrawerSnap.stories.tsx +22 -2
- package/src/components/Drawer/native.css.ts +4 -0
- package/src/components/Drawer/styles.css.ts +4 -0
- package/src/components/Form/Form.meta.ts +1 -1
- package/src/components/Form/Form.native.tsx +120 -0
- package/src/components/Form/FormSubmitContext.ts +12 -0
- package/src/components/Listbox/Listbox.meta.ts +1 -1
- package/src/components/Listbox/Listbox.native.tsx +153 -0
- package/src/components/Listbox/native.css.ts +91 -0
- package/src/components/QrCode/QrCode.meta.ts +18 -0
- package/src/components/QrCode/QrCode.native.tsx +31 -0
- package/src/components/QrCode/QrCode.stories.tsx +44 -0
- package/src/components/QrCode/QrCode.tsx +30 -0
- package/src/components/QrCode/geometry.ts +34 -0
- package/src/components/QrCode/styles.css.ts +12 -0
- package/src/components/QrCode/types.ts +6 -0
- package/src/components/ScrollArea/ScrollArea.meta.ts +1 -1
- package/src/components/ScrollArea/ScrollArea.native.tsx +61 -0
- package/src/components/Select/Select.meta.ts +1 -1
- package/src/components/Select/Select.native.tsx +224 -0
- package/src/components/Select/Select.stories.tsx +49 -1
- package/src/components/Select/Select.tsx +20 -3
- package/src/components/Select/native.css.ts +13 -0
- package/src/components/Select/selectState.ts +36 -0
- package/src/components/Select/styles.css.ts +11 -0
- package/src/components/Select/useSelectRoot.ts +9 -30
- package/src/components/ThemeProvider/ThemeOverrides.stories.tsx +113 -0
- package/src/components/ThemeProvider/ThemeProvider.meta.ts +1 -1
- package/src/components/ThemeProvider/ThemeProvider.native.tsx +36 -7
- package/src/components/ThemeProvider/ThemeProvider.tsx +42 -6
- package/src/components/ThemeProvider/overrideRule.ts +39 -0
- package/src/components/ThemeProvider/overrides.ts +27 -0
- package/src/form.native.ts +7 -0
- package/src/index.native.ts +16 -0
- package/src/index.ts +2 -0
- package/src/shared/focusInput.native.ts +18 -0
- package/src/shared/textOf.ts +13 -0
- package/dist/Table-Bms2ftt3.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Table-Bms2ftt3.js","sources":["../../tokens/src/keys.ts","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.28_react-dom@19.2.4_react@19.2.4__react-native@0.81_9de9da099054af78a885f1e91eccbcf1/node_modules/react-strict-dom/dist/web/index.js","../src/components/Toolbar/ToolbarContext.ts","../src/components/ButtonGroup/ButtonGroupContext.ts","../src/components/ButtonGroup/attached.css.ts","../src/components/ButtonGroup/useGroupedControl.ts","../../tokens/src/themes/light.css.ts","../../tokens/src/themes/high-contrast.css.ts","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Toolbar/ControlContextBoundary.tsx","../src/shared/navigate.ts","../../tokens/src/tokens/breakpoints.css.ts","../../tokens/src/tokens/sizes.css.ts","../src/shared/devWarnOnce.ts","../src/shared/length.ts","../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Popover/outside.ts","../src/components/Menu/useMenuOpen.ts","../src/components/Menu/useMenuRoot.ts","../src/components/Popover/position.ts","../src/components/Popover/PopoverLayerContext.ts","../src/components/Menu/Menu.tsx","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx"],"sourcesContent":["// Token key unions and raw numeric values, as plain TypeScript.\n//\n// The css.ts files can't export these: StyleX requires inline object literals,\n// and `css.defineVars` returns an opaque VarGroup whose keyof includes phantom\n// members (`__opaqueId`, `__tokens`). So the scales are duplicated here as the\n// typed source of truth for component props, Storybook argTypes, and tooling —\n// with zero StyleX/react-strict-dom imports, so this module is safe to load in\n// Node (tests, scripts, the ESLint plugin's drift test).\n//\n// `scripts/check-token-drift.mjs` runs in `prebuild` and fails the build if any\n// value here diverges from the corresponding css.ts literal.\n\n// Explicit .js extensions: this module is also typechecked under NodeNext\n// resolution (the ESLint plugin's tests import it via the `types` condition),\n// which rejects extensionless relative imports. Both are type-only, so they\n// are erased at build time.\nimport type {RawColors} from './raw.js'\n\nexport const SPACING_KEYS = ['xs', 'sm', 'ms', 'md', 'lg', 'xl', 'xxl', 'xxxl'] as const\nexport type SpacingToken = (typeof SPACING_KEYS)[number]\n\n// Mirrors tokens/spacing.css.ts `spacing` (px).\nexport const SPACING_PX = {\n xs: 4,\n sm: 8,\n ms: 12,\n md: 16,\n lg: 24,\n xl: 32,\n xxl: 48,\n xxxl: 64,\n} as const\n\n// Mirrors tokens/spacing.css.ts `microSpacing` (px). Not a SpacingToken.\nexport const MICRO_SPACING_KEYS = ['px1', 'px2', 'px3', 'px5', 'px6'] as const\nexport type MicroSpacingToken = (typeof MICRO_SPACING_KEYS)[number]\nexport const MICRO_SPACING_PX = {\n px1: 1,\n px2: 2,\n px3: 3,\n px5: 5,\n px6: 6,\n} as const\n\nexport const RADIUS_KEYS = ['xs', 'px6', 'sm', 'md', 'lg', 'full'] as const\nexport type RadiusToken = (typeof RADIUS_KEYS)[number]\n\n// Mirrors tokens/spacing.css.ts `radii` (px).\nexport const RADII_PX = {\n xs: 4,\n px6: 6,\n sm: 8,\n md: 12,\n lg: 16,\n full: 9999,\n} as const\n\nexport const SHADOW_KEYS = ['sm', 'md', 'lg', 'dropReady', 'dropOver'] as const\nexport type ShadowToken = (typeof SHADOW_KEYS)[number]\n\n// Mirrors tokens/motion.css.ts `duration`, as numbers for setTimeout use.\nexport const DURATION_MS = {\n instant: 0,\n minimal: 1,\n quick: 120,\n fast: 150,\n brisk: 160,\n base: 200,\n slow: 280,\n} as const\nexport type DurationToken = keyof typeof DURATION_MS\n\nexport const SIZE_KEYS = [\n 'touchTarget',\n 'controlSm',\n 'controlMd',\n 'controlLg',\n 'indicator',\n 'indicatorDot',\n 'checkMarkW',\n 'checkMarkH',\n 'switchTrackW',\n 'switchTrackH',\n 'switchThumb',\n 'iconButton',\n 'iconButtonSm',\n 'spinnerSm',\n 'spinnerMd',\n 'spinnerLg',\n 'glyphXs',\n 'glyphSm',\n 'glyphMd',\n 'iconSm',\n 'iconMd',\n 'iconLg',\n 'iconXl',\n 'iconXxl',\n 'thumbSm',\n 'mediaTileMinW',\n 'glyphClampMax',\n 'timeReadoutW',\n 'navMarkerW',\n 'navMarkerH',\n 'divider',\n 'tabIndicator',\n 'edgeFade',\n 'scrollbar',\n 'swatchW',\n 'swatchH',\n 'labelMinW',\n 'popupMinW',\n 'listMaxH',\n 'listMaxHSm',\n 'dialogSm',\n 'dialogMd',\n 'dialogLg',\n 'panelSm',\n 'panelMd',\n 'panelLg',\n 'toastMaxW',\n 'gridColSm',\n 'gridColMd',\n 'pageSm',\n 'pageMd',\n 'pageLg',\n 'sidebarW',\n 'pageXs',\n 'pageXl',\n 'asideW',\n 'gridColXs',\n 'fieldMinWSm',\n 'fieldMinW',\n 'popoverWSm',\n 'popoverW',\n 'popupMaxW',\n 'meterH',\n 'skeletonChipW',\n 'dropZoneMinH',\n 'canvasMinH',\n 'editorMinH',\n 'toolbarH',\n 'embedW',\n 'colorPickerW',\n 'colorAreaH',\n 'colorTrackH',\n 'colorSwatch',\n 'colorPreviewH',\n 'handle',\n 'chip',\n 'placeholderMinH',\n 'previewMaxH',\n 'barH',\n 'sheetGrabberW',\n 'sheetGrabberH',\n 'readoutW',\n 'sliderW',\n 'paletteMinW',\n 'deviceBarW',\n 'timeGutterW',\n 'dayHeaderH',\n 'timelineLabelW',\n 'appBarH',\n 'dragThumbW',\n 'dragThumbH',\n] as const\nexport type SizeToken = (typeof SIZE_KEYS)[number]\n\n// Mirrors tokens/sizes.css.ts `sizes` (px).\nexport const SIZES_PX = {\n touchTarget: 44,\n controlSm: 28,\n controlMd: 39,\n controlLg: 40,\n indicator: 18,\n indicatorDot: 8,\n checkMarkW: 5,\n checkMarkH: 9,\n switchTrackW: 36,\n switchTrackH: 20,\n switchThumb: 16,\n iconButton: 32,\n iconButtonSm: 28,\n spinnerSm: 16,\n spinnerMd: 24,\n spinnerLg: 40,\n glyphXs: 10,\n glyphSm: 12,\n glyphMd: 16,\n iconSm: 16,\n iconMd: 18,\n iconLg: 24,\n iconXl: 36,\n iconXxl: 48,\n thumbSm: 40,\n mediaTileMinW: 108,\n glyphClampMax: 160,\n timeReadoutW: 74,\n navMarkerW: 3,\n navMarkerH: 18,\n divider: 1,\n tabIndicator: 2,\n edgeFade: 32,\n scrollbar: 8,\n swatchW: 44,\n swatchH: 34,\n labelMinW: 120,\n popupMinW: 160,\n listMaxH: 280,\n listMaxHSm: 200,\n dialogSm: 400,\n dialogMd: 520,\n dialogLg: 680,\n panelSm: 360,\n panelMd: 480,\n panelLg: 640,\n toastMaxW: 440,\n gridColSm: 240,\n gridColMd: 280,\n pageSm: 600,\n pageMd: 800,\n pageLg: 1200,\n sidebarW: 240,\n pageXs: 480,\n pageXl: 1440,\n asideW: 320,\n gridColXs: 200,\n fieldMinWSm: 80,\n fieldMinW: 160,\n popoverWSm: 240,\n popoverW: 320,\n popupMaxW: 280,\n meterH: 6,\n skeletonChipW: 96,\n dropZoneMinH: 128,\n canvasMinH: 480,\n editorMinH: 160,\n toolbarH: 36,\n embedW: 550,\n colorPickerW: 196,\n colorAreaH: 150,\n colorTrackH: 12,\n colorSwatch: 20,\n colorPreviewH: 22,\n handle: 16,\n chip: 24,\n placeholderMinH: 80,\n previewMaxH: 320,\n barH: 4,\n sheetGrabberW: 40,\n sheetGrabberH: 4,\n readoutW: 40,\n sliderW: 96,\n paletteMinW: 96,\n deviceBarW: 96,\n timeGutterW: 64,\n dayHeaderH: 46,\n timelineLabelW: 180,\n appBarH: 61,\n dragThumbW: 132,\n dragThumbH: 99,\n} as const\n\nexport const BORDER_KEYS = [\n 'hairline',\n 'strong',\n 'accent',\n 'focusRing',\n 'focusOffset',\n 'focusOffsetSm',\n] as const\nexport type BorderToken = (typeof BORDER_KEYS)[number]\n\n// Mirrors tokens/borders.css.ts `borders` (px).\nexport const BORDERS_PX = {\n hairline: 1,\n strong: 2,\n accent: 3,\n focusRing: 2,\n focusOffset: 2,\n focusOffsetSm: 1,\n} as const\n\nexport const LAYER_KEYS = [\n 'raised',\n 'floating',\n 'floatingRaised',\n 'overlay',\n 'modal',\n 'modalRaised',\n 'popover',\n 'popoverRaised',\n 'popupBackdrop',\n 'popup',\n 'toast',\n 'portal',\n] as const\nexport type LayerToken = (typeof LAYER_KEYS)[number]\n\n// Mirrors tokens/layers.css.ts `layers` (unitless), as numbers: React Native\n// takes a number for zIndex, not the CSS variable string.\nexport const LAYERS = {\n raised: 1,\n floating: 50,\n floatingRaised: 60,\n overlay: 1000,\n modal: 1001,\n modalRaised: 1002,\n popover: 1040,\n popoverRaised: 1041,\n popupBackdrop: 1049,\n popup: 1050,\n toast: 1060,\n portal: 1100,\n} as const\n\nexport const EFFECT_KEYS = ['overlayBlur', 'surfaceBlur'] as const\nexport type EffectToken = (typeof EFFECT_KEYS)[number]\n\n// Mirrors tokens/effects.css.ts `effects` verbatim.\nexport const EFFECTS = {\n overlayBlur: 'blur(2px)',\n surfaceBlur: 'blur(6px)',\n} as const\n\n// Icon rendering sizes (SVG width/height, px). Not its own css.defineVars\n// scale — icons size via attributes — so it is derived from the `sizes` group\n// (iconSm…iconXxl), keeping one source.\nexport const ICON_SIZES = {\n sm: SIZES_PX.iconSm,\n md: SIZES_PX.iconMd,\n lg: SIZES_PX.iconLg,\n xl: SIZES_PX.iconXl,\n xxl: SIZES_PX.iconXxl,\n} as const\nexport type IconSize = keyof typeof ICON_SIZES\n\n// Mirrors tokens/breakpoints.css.ts `breakpoints` (css.defineConsts), as\n// numbers. The css.ts file also exports `breakpointsPx`, but importing it\n// pulls react-strict-dom; tooling that only needs the numbers reads here.\nexport const BREAKPOINT_KEYS = ['xs', 'sm', 'md', 'lg', 'xl'] as const\nexport const BREAKPOINTS_PX = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n} as const\n\n// Mirrors tokens/typography.css.ts `typography` font sizes, in rem.\nexport const FONT_SIZE_REM = {\n fontSizeXs: 0.75,\n fontSizeSm: 0.875,\n fontSizeMd: 1,\n fontSizeLg: 1.125,\n fontSizeXl: 1.25,\n fontSizeHeading: 1.5,\n} as const\n\n// Mirrors tokens/typography.css.ts `typography` font weights, as numbers.\nexport const FONT_WEIGHTS = {\n fontWeightNormal: 400,\n fontWeightMedium: 500,\n fontWeightSemibold: 600,\n fontWeightBold: 700,\n} as const\n\n// Mirrors tokens/typography.css.ts `typeScale` fontSize1..9, in rem.\nexport const TYPE_SCALE_FONT_SIZE_REM = {\n fontSize1: 0.75,\n fontSize2: 0.8125,\n fontSize3: 0.875,\n fontSize4: 1,\n fontSize5: 1.125,\n fontSize6: 1.25,\n fontSize7: 1.5,\n fontSize8: 1.875,\n fontSize9: 2.25,\n} as const\n\n// Mirrors tokens/shadows.css.ts `shadows` (the base, dark palette) verbatim.\nexport const SHADOWS = {\n sm: '0 2px 4px rgba(0, 0, 0, 0.3)',\n md: '0 4px 12px rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.5)',\n dropReady: 'inset 0 0 0 1px #333333',\n dropOver: 'inset 0 0 0 2px #6aaffc',\n} as const\n\n// Mirrors tokens/motion.css.ts `easing` verbatim.\nexport const EASINGS = {\n standard: 'ease',\n linear: 'linear',\n easeOut: 'cubic-bezier(0.32, 0.72, 0, 1)',\n easeIn: 'cubic-bezier(0.72, 0, 0.68, 0.28)',\n} as const\n\nexport type ColorToken = keyof RawColors\n\nexport type {Breakpoint} from './tokens/breakpoints.css.js'\n","/**\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 { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\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\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\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$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\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: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\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 { html };\n","import {createContext, useContext} from 'react'\n\nexport interface ToolbarContextValue {\n register: (id: string, el: HTMLElement, disabled: boolean) => () => void\n /** 0 for the toolbar's one tab stop, -1 for the rest; undefined before\n * the control has registered (server render, first paint). */\n tabIndexOf: (id: string) => 0 | -1 | undefined\n onItemFocus: (id: string) => void\n}\n\nexport const ToolbarContext = createContext<ToolbarContextValue | null>(null)\n\nexport function useToolbar() {\n return useContext(ToolbarContext)\n}\n","import {createContext, useContext} from 'react'\nimport type {Orientation} from '../../shared/types'\n\n/** Where a control sits in an attached group. */\nexport type GroupPosition = 'first' | 'middle' | 'last' | 'only'\n\nexport interface ButtonGroupContextValue {\n orientation: Orientation\n register: (id: string, el: HTMLElement, disabled: boolean) => () => void\n /** `middle` until the control has registered (server render, first paint). */\n positionOf: (id: string) => GroupPosition\n}\n\n/** Provided by an `attached` ButtonGroup only; null everywhere else. */\nexport const ButtonGroupContext = createContext<ButtonGroupContextValue | null>(null)\n\nexport function useButtonGroup() {\n return useContext(ButtonGroupContext)\n}\n","import {css} from 'react-strict-dom'\nimport {borders} from '@duro-app/tokens/tokens/borders.css'\nimport {layers} from '@duro-app/tokens/tokens/layers.css'\n\n// The styles a control takes in an attached ButtonGroup, by its position.\n// Borders collapse into the neighbour's with a negative hairline margin; only\n// the outer corners keep the control's own radius.\nconst overlap = `calc(-1 * ${borders.hairline})`\n\nexport const attached = css.create({\n // A focused control rises above its neighbours, so their borders never\n // cover its focus ring. Position makes the z-index apply to a trigger that\n // is not itself the flex item (Select and Menu triggers sit in a Root).\n item: {\n position: 'relative',\n zIndex: {default: null, ':focus-visible': layers.raised},\n },\n horizontalFirst: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n horizontalMiddle: {\n borderRadius: 0,\n marginLeft: overlap,\n },\n horizontalLast: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n marginLeft: overlap,\n },\n verticalFirst: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n verticalMiddle: {\n borderRadius: 0,\n marginTop: overlap,\n },\n verticalLast: {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n marginTop: overlap,\n },\n})\n","import {type RefObject, useId, useLayoutEffect, useRef} from 'react'\nimport type {html} from 'react-strict-dom'\nimport {isNative} from '../../platform'\nimport {useToolbar} from '../Toolbar/ToolbarContext'\nimport {useButtonGroup, type GroupPosition} from './ButtonGroupContext'\nimport {attached} from './attached.css'\n\nconst positionStyles = {\n horizontal: {\n first: attached.horizontalFirst,\n middle: attached.horizontalMiddle,\n last: attached.horizontalLast,\n only: null,\n },\n vertical: {\n first: attached.verticalFirst,\n middle: attached.verticalMiddle,\n last: attached.verticalLast,\n only: null,\n },\n} as const\n\ntype ButtonStyle = Parameters<typeof html.button>[0]['style']\n\nexport interface GroupedControl<T extends HTMLElement> {\n ref: RefObject<T | null>\n /** In an attached ButtonGroup. */\n attached: boolean\n position: GroupPosition | null\n /** The joined style for its position; spread after the control's own. */\n style: ButtonStyle | null\n /** The Toolbar's roving tabindex, when in one. */\n tabIndex: 0 | -1 | undefined\n onFocus: (() => void) | undefined\n}\n\n/**\n * What a control (Button, Toggle, the Select, Menu and Popover triggers) takes\n * from an attached ButtonGroup and a Toolbar around it: its joined style by\n * position, and its roving tabindex. Outside both, every field is inert.\n */\nexport function useGroupedControl<T extends HTMLElement>({\n disabled = false,\n}: {disabled?: boolean} = {}): GroupedControl<T> {\n const id = useId()\n const ref = useRef<T | null>(null)\n const group = useButtonGroup()\n const toolbar = useToolbar()\n\n const groupRegister = group?.register\n const toolbarRegister = toolbar?.register\n useLayoutEffect(() => {\n const el = ref.current\n if (isNative || !el) return\n const unregisterGroup = groupRegister?.(id, el, disabled)\n const unregisterToolbar = toolbarRegister?.(id, el, disabled)\n return () => {\n unregisterGroup?.()\n unregisterToolbar?.()\n }\n }, [id, disabled, groupRegister, toolbarRegister])\n\n const position: GroupPosition | null = group ? group.positionOf(id) : null\n const style: ButtonStyle | null =\n group && position ? [attached.item, positionStyles[group.orientation][position]] : null\n\n return {\n ref,\n attached: group !== null,\n position,\n style,\n tabIndex: toolbar?.tabIndexOf(id),\n onFocus: toolbar ? () => toolbar.onItemFocus(id) : undefined,\n }\n}\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n\n // Highlight — a non-status accent (a category, an intent); no status meaning.\n highlight: '#6b21a8',\n highlightBg: 'rgba(107, 33, 168, 0.08)',\n highlightBorder: 'rgba(107, 33, 168, 0.3)',\n highlightText: '#581c87',\n // Fixed overlays — the same in every theme (a scrim darkens whatever is\n // under it; the inverse overlays sit on an accent surface).\n scrim: 'rgba(0, 0, 0, 0.4)',\n inverseFill: 'rgba(0, 0, 0, 0.10)',\n inverseFillHover: 'rgba(0, 0, 0, 0.18)',\n inverseBorder: 'rgba(0, 0, 0, 0.55)',\n inverseBorderHover: 'rgba(0, 0, 0, 0.70)',\n // A light that does not follow the theme (the Switch knob).\n fixedLight: '#ffffff',\n fixedDark: '#000000',\n // A fixed translucent white over content (the light counterpart of scrim).\n overlayLight: 'rgba(255, 255, 255, 0.78)',\n // The opposite tone of the theme: a surface that stands out from the page\n // (toasts, coach marks), with its own text colour. Not the fixed inverse*\n // overlays above, which sit on an accent fill.\n contrastSurface: '#1a1a1a',\n onContrastSurface: '#e5e5e5',\n // A border on contrastSurface, at least 3:1 against it (non-text).\n contrastBorder: 'rgba(255, 255, 255, 0.33)',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n dropReady: 'inset 0 0 0 1px #d4d4d4',\n dropOver: 'inset 0 0 0 2px #1e40af',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n\n // Highlight — a non-status accent (a category, an intent); no status meaning.\n highlight: '#d8b4fe',\n highlightBg: 'rgba(216, 180, 254, 0.15)',\n highlightBorder: 'rgba(216, 180, 254, 0.5)',\n highlightText: '#e9d5ff',\n // Fixed overlays — the same in every theme (a scrim darkens whatever is\n // under it; the inverse overlays sit on an accent surface).\n scrim: 'rgba(0, 0, 0, 0.4)',\n inverseFill: 'rgba(0, 0, 0, 0.10)',\n inverseFillHover: 'rgba(0, 0, 0, 0.18)',\n inverseBorder: 'rgba(0, 0, 0, 0.55)',\n inverseBorderHover: 'rgba(0, 0, 0, 0.70)',\n // A light that does not follow the theme (the Switch knob).\n fixedLight: '#ffffff',\n fixedDark: '#000000',\n // A fixed translucent white over content (the light counterpart of scrim).\n overlayLight: 'rgba(255, 255, 255, 0.78)',\n // The opposite tone of the theme: a surface that stands out from the page\n // (toasts, coach marks), with its own text colour. Not the fixed inverse*\n // overlays above, which sit on an accent fill.\n contrastSurface: '#ffffff',\n onContrastSurface: '#000000',\n // A border on contrastSurface, at least 3:1 against it (non-text).\n contrastBorder: 'rgba(0, 0, 0, 0.42)',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n dropReady: 'inset 0 0 0 1px #555555',\n dropOver: 'inset 0 0 0 2px #60a5fa',\n})\n","import {createContext, type ReactNode, useContext, useState} from 'react'\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {lightTheme, lightShadows} from '@duro-app/tokens/themes/light.css'\nimport {highContrastTheme, highContrastShadows} from '@duro-app/tokens/themes/high-contrast.css'\nimport {layers} from '@duro-app/tokens/tokens/layers.css'\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 color: colors.text,\n },\n // Sibling overlay where floating popups (Combobox, Menu, Tooltip) portal to.\n // Lives inside ThemeProvider so theme tokens cascade. Fixed + inset 0 so\n // popups can position freely with viewport coords; pointer-events: none lets\n // clicks fall through except where children re-enable them.\n portalMount: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n // The stacking context the layers scale orders: Dialog, Drawer, the\n // popups and toasts all portal in here.\n zIndex: layers.portal,\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\nconst PortalMountContext = createContext<HTMLElement | null>(null)\n\nexport function usePortalMount(): HTMLElement | null {\n return useContext(PortalMountContext)\n}\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 const [mount, setMount] = useState<HTMLElement | null>(null)\n\n return (\n <html.div data-theme={theme} style={themeStyles}>\n <PortalMountContext.Provider value={mount}>{children}</PortalMountContext.Provider>\n <html.div ref={setMount} data-portal-mount style={styles.portalMount} />\n </html.div>\n )\n}\n","import type {ReactNode} from 'react'\nimport {ButtonGroupContext} from '../ButtonGroup/ButtonGroupContext'\nimport {ToolbarContext} from './ToolbarContext'\n\n/**\n * Popups and modals stop the ButtonGroup and Toolbar contexts. A portal keeps\n * its React parent, so without this the buttons in a Popover opened from a\n * toolbar would come out squared and with tabindex=-1.\n */\nexport function ControlContextBoundary({children}: {children: ReactNode}) {\n return (\n <ButtonGroupContext.Provider value={null}>\n <ToolbarContext.Provider value={null}>{children}</ToolbarContext.Provider>\n </ButtonGroupContext.Provider>\n )\n}\n","/* Router-agnostic links (docs/adr/0002-link-parts-navigate-through-onnavigate.md).\n *\n * Every link part renders a real `<a href>`, so the browser keeps what a link\n * does on its own: cmd/ctrl-click and middle-click open a tab, shift-click a\n * window, alt-click downloads, \"Copy link\" works. An app with a client router\n * passes `onNavigate`; the part calls it for a plain primary click only, and\n * the app then decides:\n *\n * onNavigate={(href, event) => {\n * event.preventDefault()\n * navigate(href)\n * }}\n *\n * The part never prevents the default itself: without `onNavigate`, or for a\n * click it does not hand over, the browser follows the link. */\n\n/** The part of a click event a link part reads and hands to `onNavigate`. */\nexport interface LinkClickEvent {\n readonly button: number\n readonly metaKey: boolean\n readonly ctrlKey: boolean\n readonly shiftKey: boolean\n readonly altKey: boolean\n readonly defaultPrevented: boolean\n preventDefault(): void\n}\n\n/**\n * Called for a plain primary click on a link part. Call\n * `event.preventDefault()`, then your router's navigate; leave the event alone\n * to let the browser follow the link.\n */\nexport type OnNavigate = (href: string, event: LinkClickEvent) => void\n\n/** A primary-button click with no modifier key, not already prevented. */\nexport function isPlainClick(event: LinkClickEvent): boolean {\n return (\n event.button === 0 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey &&\n !event.altKey &&\n !event.defaultPrevented\n )\n}\n\n/**\n * The `onClick` of a link part: hands a plain click on a link with no\n * `target` to `onNavigate`, and does nothing otherwise, so the browser default\n * runs. Undefined when there is no `onNavigate` (no handler at all).\n */\nexport function linkClickHandler(\n href: string,\n onNavigate: OnNavigate | undefined,\n target?: string | null,\n): ((event: LinkClickEvent) => void) | undefined {\n if (!onNavigate) return undefined\n return (event) => {\n if (target != null || !isPlainClick(event)) return\n onNavigate(href, event)\n }\n}\n","import {css} from 'react-strict-dom'\n\n// Breakpoint scale — the widths at which responsive layouts change.\n//\n// These use `css.defineConsts` rather than `css.defineVars` because CSS media\n// and container queries cannot read custom properties: a query threshold has\n// to be a literal. `defineConsts` values are inlined into the query text at\n// build time by the StyleX babel plugin (that's their whole reason to exist),\n// so `@container (max-width: ${breakpoints.sm})` compiles to a real `640px`.\n//\n// For runtime JS comparisons (`containerWidth < breakpointsPx.sm`) use the\n// plain-number mirror below — defineConsts values are query strings, not\n// numbers. Keep the two in sync. Values follow the common Tailwind-aligned scale.\nexport const breakpoints = css.defineConsts({\n /** Phones — dense tables card up below here. */\n xs: '480px',\n /** Large phone / small tablet. The default \"go to the mobile layout\" line. */\n sm: '640px',\n /** Tablet portrait. */\n md: '768px',\n /** Tablet landscape / small laptop. */\n lg: '1024px',\n /** Desktop. */\n xl: '1280px',\n})\n\nexport const breakpointsPx = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n} as const\n\nexport type Breakpoint = keyof typeof breakpointsPx\n","import {css} from 'react-strict-dom'\n\nexport const sizes = css.defineVars({\n touchTarget: '44px',\n controlSm: '28px',\n controlMd: '39px',\n controlLg: '40px',\n indicator: '18px',\n indicatorDot: '8px',\n checkMarkW: '5px',\n checkMarkH: '9px',\n switchTrackW: '36px',\n switchTrackH: '20px',\n switchThumb: '16px',\n iconButton: '32px',\n iconButtonSm: '28px',\n spinnerSm: '16px',\n spinnerMd: '24px',\n spinnerLg: '40px',\n glyphXs: '10px',\n glyphSm: '12px',\n glyphMd: '16px',\n iconSm: '16px',\n iconMd: '18px',\n iconLg: '24px',\n iconXl: '36px',\n iconXxl: '48px',\n // A small square thumbnail (a file/media row preview).\n thumbSm: '40px',\n // Minimum width of a media grid tile.\n mediaTileMinW: '108px',\n // Upper bound a glyph scales up to inside its tile.\n glyphClampMax: '160px',\n // Width of a mm:ss time readout, so digits do not shift the layout.\n timeReadoutW: '74px',\n navMarkerW: '3px',\n navMarkerH: '18px',\n divider: '1px',\n tabIndicator: '2px',\n edgeFade: '32px',\n scrollbar: '8px',\n swatchW: '44px',\n swatchH: '34px',\n labelMinW: '120px',\n popupMinW: '160px',\n listMaxH: '280px',\n listMaxHSm: '200px',\n dialogSm: '400px',\n dialogMd: '520px',\n dialogLg: '680px',\n panelSm: '360px',\n panelMd: '480px',\n panelLg: '640px',\n toastMaxW: '440px',\n gridColSm: '240px',\n gridColMd: '280px',\n pageSm: '600px',\n pageMd: '800px',\n pageLg: '1200px',\n sidebarW: '240px',\n pageXs: '480px',\n pageXl: '1440px',\n asideW: '320px',\n gridColXs: '200px',\n fieldMinWSm: '80px',\n fieldMinW: '160px',\n popoverWSm: '240px',\n popoverW: '320px',\n popupMaxW: '280px',\n meterH: '6px',\n skeletonChipW: '96px',\n dropZoneMinH: '128px',\n canvasMinH: '480px',\n editorMinH: '160px',\n toolbarH: '36px',\n embedW: '550px',\n colorPickerW: '196px',\n colorAreaH: '150px',\n colorTrackH: '12px',\n colorSwatch: '20px',\n colorPreviewH: '22px',\n handle: '16px',\n chip: '24px',\n placeholderMinH: '80px',\n previewMaxH: '320px',\n barH: '4px',\n // Bottom-sheet grabber (Drawer snapPoints).\n sheetGrabberW: '40px',\n sheetGrabberH: '4px',\n readoutW: '40px',\n sliderW: '96px',\n paletteMinW: '96px',\n deviceBarW: '96px',\n // Calendar grids: the time-label column and the day-header row.\n timeGutterW: '64px',\n dayHeaderH: '46px',\n // Timeline: the row-label column beside the date track.\n timelineLabelW: '180px',\n // AppShell's bar below its collapse point: a touch-target Menu button\n // between spacing.sm above and below, plus the hairline under it.\n appBarH: '61px',\n // Drag-ghost thumbnail: the small preview image that follows the pointer.\n dragThumbW: '132px',\n dragThumbH: '99px',\n})\n","// --- Dev-only warn registry ---\n//\n// One-shot per warning code per process: long-running dev sessions\n// shouldn't drown the console on every re-render of a misused component.\nconst IS_PROD = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\nconst warned = new Set<string>()\n\n/** Warn once, outside production, as `[duro-app/ui <scope>] <message>`. */\nexport function devWarnOnce(scope: string, code: string, message: string): void {\n const key = `${scope}:${code}`\n if (IS_PROD || warned.has(key)) return\n warned.add(key)\n\n console.warn(`[duro-app/ui ${scope}] ${message}`)\n}\n","import {sizes} from '@duro-app/tokens/tokens/sizes.css'\nimport {SIZE_KEYS, type SizeToken} from '@duro-app/tokens/keys'\n\n/**\n * A length a measure prop accepts without a token: zero, a relative unit or a\n * keyword. These are the exemptions of design-system.every-measure-is-a-token\n * (ADR-0027); a px value is not one of them.\n */\nexport type RelativeLength =\n | 0\n | '0'\n | 'auto'\n | 'none'\n | 'min-content'\n | 'max-content'\n | 'fit-content'\n | `${number}%`\n | `${number}vh`\n | `${number}vw`\n | `${number}dvh`\n | `${number}svh`\n | `${number}lvh`\n | `${number}em`\n | `${number}rem`\n | `${number}ch`\n\n/** A measure prop: a `sizes` token key (`\"gridColMd\"`) or a relative length. */\nexport type Length = SizeToken | RelativeLength\n\n/** A Length written as a string, as it appears inside a track function. */\ntype LengthString = Exclude<Length, number>\n\n/** One argument of `minmax()`: a Length or a fraction. */\ntype TrackBreadth = LengthString | `${number}fr`\n\n/**\n * A CSS grid track: a Length, a fraction, or a track function whose\n * arguments are themselves Lengths or fractions — `'minmax(gridColSm, 1fr)'`,\n * `'minmax(0, 2fr)'`, `'fit-content(labelMinW)'`. A px inside is a type\n * error, as it is anywhere else. Arguments are separated by `, `.\n */\nexport type GridTrack =\n | Length\n | `${number}fr`\n | `minmax(${TrackBreadth}, ${TrackBreadth})`\n | `fit-content(${LengthString})`\n\nconst sizeKeys: ReadonlySet<string> = new Set(SIZE_KEYS)\n\n/** The CSS value for a Length: a size token key becomes its variable. */\nexport function resolveLength(value: Length): string | number {\n return typeof value === 'string' && sizeKeys.has(value) ? sizes[value as SizeToken] : value\n}\n\n/**\n * The CSS value for a GridTrack: a size token key becomes its variable, also\n * as an argument of `minmax()` / `fit-content()`.\n */\nexport function resolveTrack(track: GridTrack): string | number {\n // Read as a plain value: narrowing the template-literal union is more than\n // the checker will represent (TS2590), and the callers only need the CSS.\n const value: string | number = track\n if (typeof value !== 'string') return value\n const fn = /^(minmax|fit-content)\\((.*)\\)$/.exec(value)\n if (fn) {\n const args = fn[2]!.split(',').map((arg) => String(resolveLength(arg.trim() as Length)))\n return `${fn[1]}(${args.join(', ')})`\n }\n return sizeKeys.has(value) ? sizes[value as SizeToken] : value\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'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\nimport {sizes} from '@duro-app/tokens/tokens/sizes.css'\nimport {borders} from '@duro-app/tokens/tokens/borders.css'\nimport {layers} from '@duro-app/tokens/tokens/layers.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: borders.hairline,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n // A touch screen gets the 44px target; a mouse keeps the compact control.\n minWidth: {default: null, '@media (pointer: coarse)': sizes.touchTarget},\n minHeight: {default: null, '@media (pointer: coarse)': sizes.touchTarget},\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n },\n // Toolbar trigger: no border or fill until hover, at least icon-button size.\n triggerGhost: {\n justifyContent: 'center',\n minWidth: {default: sizes.iconButton, '@media (pointer: coarse)': sizes.touchTarget},\n minHeight: {default: sizes.iconButton, '@media (pointer: coarse)': sizes.touchTarget},\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.xs,\n paddingRight: spacing.xs,\n borderColor: 'transparent',\n },\n // size=\"small\": Toggle sizeSmall's values, as longhands so they win over the\n // trigger's own longhands. Every small control is at least controlSm tall,\n // whatever it holds, and the touch target under a coarse pointer.\n triggerSmall: {\n gap: spacing.xs,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n minHeight: {default: sizes.controlSm, '@media (pointer: coarse)': sizes.touchTarget},\n },\n // A small ghost trigger keeps the ghost's xs padding at the small icon-button size.\n triggerGhostSmall: {\n fontSize: typography.fontSizeXs,\n minWidth: {default: sizes.iconButtonSm, '@media (pointer: coarse)': sizes.touchTarget},\n minHeight: {default: sizes.iconButtonSm, '@media (pointer: coarse)': sizes.touchTarget},\n },\n popup: {\n position: 'fixed',\n top: 0,\n left: 0,\n backgroundColor: colors.bgCard,\n borderWidth: borders.hairline,\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: sizes.popupMinW,\n maxHeight: sizes.listMaxH,\n overflowY: 'auto',\n // Above Dialog/Drawer (1000/1001), like Select and Combobox: they portal\n // into the same mount, so a menu opened inside a dialog must out-rank it.\n zIndex: layers.popup,\n // The portal layer is pointer-events: none so clicks fall through it;\n // the popup takes them back.\n pointerEvents: 'auto',\n outlineStyle: 'none',\n },\n popupPosition: (top: number, left: number) => ({\n top,\n left,\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: duration.fast,\n },\n // The fill is the highlight; the transparent outline is what forced-colors\n // mode paints, where fills are dropped.\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n outlineStyle: 'solid',\n outlineWidth: borders.focusRing,\n outlineColor: 'transparent',\n outlineOffset: `calc(-1 * ${borders.focusRing})`,\n },\n separator: {\n height: 0,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n borderTopWidth: borders.hairline,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\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 the menu and put focus back on the trigger. */\n close: () => void\n menuId: string\n triggerId: 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 popupRef: React.RefObject<HTMLDivElement | 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","// True when a pointerdown target lies outside the popup, the trigger and every\n// ignored element. `inside` may hold nulls (refs not yet attached).\nexport function isOutsidePress(\n target: Node | null,\n inside: ReadonlyArray<Element | null>,\n): boolean {\n if (!target) return true\n return !inside.some((el) => el != null && el.contains(target))\n}\n","import {useCallback, useRef, useState} from 'react'\n\nexport interface MenuOpenOptions {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\n/**\n * The menu's open state, controlled or not, shared by both platforms (plan\n * N0, Decision 10). Focus, highlight and keys are each platform's adapter:\n * `useMenuRoot` on the web, Menu.native on native.\n */\nexport function useMenuOpen({open: openProp, defaultOpen = false, onOpenChange}: MenuOpenOptions) {\n const [inner, setInner] = useState(defaultOpen)\n const controlled = openProp !== undefined\n const open = controlled ? openProp : inner\n const openRef = useRef(open)\n openRef.current = open\n const onOpenChangeRef = useRef(onOpenChange)\n onOpenChangeRef.current = onOpenChange\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === openRef.current) return\n if (!controlled) setInner(next)\n onOpenChangeRef.current?.(next)\n },\n [controlled],\n )\n\n return {open, openRef, setOpen}\n}\n","import {useState, useCallback, useRef, useId, useEffect, useLayoutEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\nimport {isOutsidePress} from '../Popover/outside'\nimport {useMenuOpen, type MenuOpenOptions} from './useMenuOpen'\n\nexport type MenuRootOptions = MenuOpenOptions\n\n/**\n * The menu-button pattern (WAI-ARIA APG): on open, focus moves to the\n * `role=\"menu\"` popup, which carries `aria-activedescendant`; arrows move the\n * highlight; Escape closes and focus returns to the trigger. The keydown\n * handler sits on the popup itself, never on `document`, so keys typed\n * elsewhere (an editor) are never intercepted, and Escape stops there so an\n * enclosing Popover or Dialog stays open.\n */\nexport function useMenuRoot(options: MenuRootOptions) {\n const {open, openRef, setOpen} = useMenuOpen(options)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n // Read by the keydown handler, so activating an item is not a side effect\n // inside a state updater (React may run updaters twice).\n const highlightedRef = useRef(highlightedId)\n useLayoutEffect(() => {\n highlightedRef.current = highlightedId\n }, [highlightedId])\n const menuId = useId()\n const triggerId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const popupRef = useRef<HTMLDivElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n // Closes and leaves focus where it is (a press elsewhere put it there).\n const dismiss = useCallback(() => {\n if (!openRef.current) return\n setOpen(false)\n setHighlightedId(null)\n }, [openRef, setOpen])\n\n // Closes and puts focus back on the trigger.\n const close = useCallback(() => {\n if (!openRef.current) return\n dismiss()\n triggerRef.current?.focus()\n }, [openRef, dismiss])\n\n const toggle = useCallback(() => {\n if (openRef.current) close()\n else setOpen(true)\n }, [openRef, close, setOpen])\n\n // On open: focus the menu and highlight the first item. Child effects (item\n // registration) run before this parent effect, so orderRef is populated.\n const wasOpenRef = useRef(false)\n useEffect(() => {\n if (open && !wasOpenRef.current) {\n popupRef.current?.focus({preventScroll: true})\n const first = orderRef.current[0]\n if (first) setHighlightedId(first)\n } else if (!open && wasOpenRef.current) {\n setHighlightedId(null)\n }\n wasOpenRef.current = open\n }, [open])\n\n // Keep the highlighted item in view when the popup scrolls.\n useEffect(() => {\n if (!highlightedId) return\n const el = itemsRef.current.get(highlightedId)\n el?.scrollIntoView?.({block: 'nearest'})\n }, [highlightedId])\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 on the popup element, for full KeyboardEvent access.\n useEffect(() => {\n const popup = popupRef.current\n if (!popup || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n close()\n return\n }\n if (e.key === 'Tab') {\n // Back on the trigger before the browser moves focus, so Tab and\n // Shift+Tab continue from where the menu was opened.\n close()\n return\n }\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 current = highlightedRef.current\n if (current) itemsRef.current.get(current)?.click()\n break\n }\n }\n }\n\n popup.addEventListener('keydown', handleKeyDown)\n return () => popup.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n // A press outside the trigger and the popup closes the menu, and leaves\n // focus where the press put it.\n useEffect(() => {\n if (!open) return\n function onPointerDown(e: PointerEvent) {\n if (isOutsidePress(e.target as Node | null, [popupRef.current, triggerRef.current])) {\n dismiss()\n }\n }\n document.addEventListener('pointerdown', onPointerDown, true)\n return () => document.removeEventListener('pointerdown', onPointerDown, true)\n }, [open, dismiss])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n triggerId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n popupRef,\n }\n\n return {ctx, rootRef}\n}\n","export interface PopoverRect {\n top: number\n left: number\n width: number\n height: number\n}\n\nexport interface PopoverSize {\n width: number\n height: number\n}\n\nexport type PopoverSide = 'top' | 'bottom'\nexport type PopoverAlign = 'start' | 'center' | 'end'\n\ninterface Input {\n anchor: PopoverRect\n popup: PopoverSize\n viewport: PopoverSize\n side: PopoverSide\n align: PopoverAlign\n offset: number\n}\n\n// Pure placement: puts the popup on the requested side of the anchor, flips to\n// the opposite side when it would overflow the viewport there (and the other\n// side fits), and clamps horizontally into the viewport.\nexport function computePopoverPosition({anchor, popup, viewport, side, align, offset}: Input) {\n const below = anchor.top + anchor.height + offset\n const above = anchor.top - offset - popup.height\n const fitsBelow = below + popup.height <= viewport.height\n const fitsAbove = above >= 0\n\n let resolved: PopoverSide = side\n if (side === 'bottom' && !fitsBelow && fitsAbove) resolved = 'top'\n else if (side === 'top' && !fitsAbove && fitsBelow) resolved = 'bottom'\n\n const top = resolved === 'bottom' ? below : above\n\n let left = anchor.left\n if (align === 'center') left = anchor.left + (anchor.width - popup.width) / 2\n else if (align === 'end') left = anchor.left + anchor.width - popup.width\n\n const maxLeft = Math.max(0, viewport.width - popup.width)\n left = Math.min(Math.max(0, left), maxLeft)\n\n return {top, left, side: resolved}\n}\n","import {type RefObject, createContext, useContext, useLayoutEffect} from 'react'\n\n// A Popover's nested popups (a Select listbox, a Combobox listbox, a child\n// Popover) are portalled out of its DOM subtree. They register here so a press\n// on them counts as inside the Popover.\nexport interface PopoverLayerContextValue {\n register: (el: Element) => () => void\n /** Set by a `raised` Popup for what it holds, so a Popover nested in it is\n * raised too and is not drawn under its parent. */\n raised?: boolean\n}\n\nexport const PopoverLayerContext = createContext<PopoverLayerContextValue | null>(null)\n\n/** Register the ref's element as part of the enclosing Popover's layer while `active`. */\nexport function usePopoverLayer(ref: RefObject<Element | null>, {active}: {active: boolean}) {\n const layer = useContext(PopoverLayerContext)\n useLayoutEffect(() => {\n const el = ref.current\n if (!layer || !active || !el) return\n return layer.register(el)\n }, [layer, active, ref])\n}\n","import {\n type ReactNode,\n type Ref,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\nimport {createPortal} from 'react-dom'\nimport {html} from 'react-strict-dom'\nimport {SPACING_PX} from '@duro-app/tokens/keys'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\nimport {devWarnOnce} from '../../shared/devWarnOnce'\nimport {isPlainClick, type LinkClickEvent, type OnNavigate} from '../../shared/navigate'\nimport type {ControlSize} from '../../shared/types'\nimport {usePortalMount} from '../ThemeProvider/ThemeProvider'\nimport {computePopoverPosition} from '../Popover/position'\nimport {usePopoverLayer} from '../Popover/PopoverLayerContext'\nimport {useGroupedControl} from '../ButtonGroup/useGroupedControl'\nimport {ControlContextBoundary} from '../Toolbar/ControlContextBoundary'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n /** Controlled open state. */\n open?: boolean\n /** Initial open state (uncontrolled). */\n defaultOpen?: boolean\n /** Called when the menu opens or closes. */\n onOpenChange?: (open: boolean) => void\n}\n\nfunction Root({children, open, defaultOpen, onOpenChange}: RootProps) {\n const {ctx, rootRef} = useMenuRoot({open, defaultOpen, onOpenChange})\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 ---\n// Trigger IS the button: aria-haspopup / aria-expanded / aria-controls have to\n// sit on the focusable element, so it cannot be a wrapper like Dialog.Trigger.\n// Its children are the label (text, an Icon) — never a Button or other control.\nconst NESTED_CONTROL = 'button, a[href], input, select, textarea, [role=\"button\"]'\n\nexport type MenuTriggerVariant = 'default' | 'ghost'\n\ninterface TriggerProps {\n children: ReactNode\n /** Accessible name — required when the label is an icon only. */\n 'aria-label'?: string\n /** `ghost`: no border or fill until hover, for toolbars. Default: `default`. */\n variant?: MenuTriggerVariant\n /** `small` matches a small Toggle or Button beside it; a small ghost trigger is `iconButtonSm`. Default: `default`. */\n size?: ControlSize\n ref?: Ref<HTMLButtonElement>\n}\n\nfunction Trigger({\n children,\n 'aria-label': ariaLabel,\n variant = 'default',\n size = 'default',\n ref,\n}: TriggerProps) {\n const {open, toggle, menuId, triggerId, triggerRef} = useMenu()\n const grouped = useGroupedControl<HTMLButtonElement>()\n const groupedRef = grouped.ref\n\n const setRef = useCallback(\n (el: HTMLButtonElement | null) => {\n triggerRef.current = el\n groupedRef.current = el\n if (typeof ref === 'function') ref(el)\n else if (ref) ref.current = el\n },\n [ref, triggerRef, groupedRef],\n )\n\n // TypeScript can't stop a <Button> child; the DOM can tell.\n useEffect(() => {\n if (triggerRef.current?.querySelector(NESTED_CONTROL)) {\n devWarnOnce(\n 'Menu',\n 'trigger-nested-control',\n 'Menu.Trigger is itself the button — give it the label (text, an Icon), not a Button, link or other control. A control inside a <button> is invalid HTML: it breaks hydration and hands assistive tech a button inside a button.',\n )\n }\n }, [triggerRef])\n\n return (\n <html.button\n ref={setRef}\n tabIndex={grouped.tabIndex}\n onFocus={grouped.onFocus}\n id={triggerId}\n type=\"button\"\n onClick={toggle}\n aria-label={ariaLabel}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={[\n styles.trigger,\n variant === 'ghost'\n ? [styles.triggerGhost, size === 'small' && styles.triggerGhostSmall]\n : size === 'small' && styles.triggerSmall,\n grouped.style,\n ]}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\n// Portalled into the ThemeProvider mount and placed against the trigger, so a\n// sticky or overflow-clipped toolbar never cuts it off. Capped at\n// `sizes.listMaxH`; longer menus scroll.\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, menuId, triggerId, highlightedId, triggerRef, popupRef} = useMenu()\n const [coords, setCoords] = useState({top: 0, left: 0})\n const mount = usePortalMount()\n // Inside a Popover, a press on this portalled popup is not an outside press.\n usePopoverLayer(popupRef, {active: open})\n\n useLayoutEffect(() => {\n if (!open) return\n const update = () => {\n const popup = popupRef.current\n const rect = triggerRef.current?.getBoundingClientRect()\n if (!popup || !rect) return\n const next = computePopoverPosition({\n anchor: {top: rect.top, left: rect.left, width: rect.width, height: rect.height},\n popup: {width: popup.offsetWidth, height: popup.offsetHeight},\n viewport: {width: window.innerWidth, height: window.innerHeight},\n side: 'bottom',\n align,\n offset: SPACING_PX.xs,\n })\n setCoords((prev) =>\n prev.top === next.top && prev.left === next.left ? prev : {top: next.top, left: next.left},\n )\n }\n update()\n window.addEventListener('resize', update)\n window.addEventListener('scroll', update, true)\n return () => {\n window.removeEventListener('resize', update)\n window.removeEventListener('scroll', update, true)\n }\n }, [open, align, popupRef, triggerRef])\n\n if (!open || typeof document === 'undefined') return null\n\n return createPortal(\n <html.div\n ref={popupRef}\n id={menuId}\n role=\"menu\"\n tabIndex={-1}\n aria-labelledby={triggerId}\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, styles.popupPosition(coords.top, coords.left)]}\n >\n <ControlContextBoundary>{children}</ControlContextBoundary>\n </html.div>,\n mount ?? document.body,\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 /**\n * Called for a plain primary click (ADR-0002): call `event.preventDefault()`,\n * then your router's navigate. Without it the browser follows the link.\n */\n onNavigate?: OnNavigate\n children: ReactNode\n}\n\nfunction LinkItem({href, onNavigate, 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={(event: LinkClickEvent) => {\n if (onNavigate && isPlainClick(event)) onNavigate(href, event)\n close()\n }}\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\n// --- Separator ---\n// A rule between groups of items. role=\"separator\" is a valid child of a\n// menu (WAI-ARIA menu pattern), and it is never registered as an item, so\n// arrow keys and the active descendant pass over it.\nfunction Separator() {\n return <html.div role=\"separator\" aria-orientation=\"horizontal\" style={styles.separator} />\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n Separator,\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 {duration, easing} from '@duro-app/tokens/tokens/motion.css'\nimport {breakpoints} from '@duro-app/tokens/tokens/breakpoints.css'\nimport {sizes} from '@duro-app/tokens/tokens/sizes.css'\nimport {borders} from '@duro-app/tokens/tokens/borders.css'\n\n// Container-query thresholds, from the shared breakpoint scale. `sm` (640px)\n// is the single \"card up\" line used across every table (Table + VirtualTable);\n// below it dense tables become cards, above it they stay tabular and scroll\n// horizontally. `md` (768px) is the compact band (tighter padding, nowrap\n// headers). These are inlined into the @container query text at build time.\nconst COMPACT_BP = breakpoints.md\nconst STACK_BP = breakpoints.sm\n\nexport const styles = css.create({\n // Outer wrapper that hosts the @container query. Wraps SortChip + Root\n // + Pagination so all three react to the same width. Root itself does\n // NOT carry containerType — keeping a single query target per Table.\n //\n // @deprecated Use Table.Root's sortChip/pagination slot props instead.\n // This style backs the deprecated <Table.Container> wrapper.\n container: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // The same containment chrome, but applied by Root when responsive=true.\n // Mirrors `container` so consumers don't need to wrap manually.\n rootContainer: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // Applied when Row receives an `onClick` handler. Cursor signals clickability;\n // the :focus-visible outline meets WCAG 2.4.7 for keyboard navigation.\n clickableRow: {\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': borders.focusRing,\n },\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: `calc(-1 * ${borders.focusOffset})`,\n },\n\n // Root — the single grid container for the table itself\n root: {\n display: 'grid',\n borderWidth: borders.hairline,\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 // Stack-mode override: the Root's grid collapses to a single column so\n // each Row spans full width and stacks vertically.\n // NOTE: gridTemplateColumns is intentionally absent here. It is handled by\n // gridColumnsResponsive() so that StyleX conflict resolution does not remove\n // the explicit column template (a later style with the same property key\n // always wins, so combining gridColumns + rootResponsive in one array would\n // silently drop the column template).\n rootResponsive: {\n // Size the grid to its content so it can OVERFLOW the scroll wrapper\n // rather than shrink: `min-content` here is the sum of each column's\n // minimum track (the minmax() floor / its content), so a dense table\n // grows past the container and Root's `scrollX` wrapper scrolls sideways.\n // In stack mode the grid is a single column, so drop the floor to let the\n // card fill the width instead of forcing a horizontal scrollbar.\n minWidth: {\n default: 'min-content',\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: borders.hairline,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: borders.hairline,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\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: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: borders.hairline,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // Horizontal-scroll frame around the grid (responsive path). Above the\n // stack breakpoint the grid keeps each column at least `minColumnWidth`\n // wide (see the minmax() template), so a dense table overflows and this\n // wrapper scrolls sideways instead of crushing its cells — the standard\n // data-table behavior. In stack mode the grid collapses to one column, so\n // nothing overflows and no scrollbar appears.\n scrollX: {\n overflowX: 'auto',\n // Contain the scroll to this axis; vertical growth (rows) is natural.\n overflowY: 'visible',\n // Momentum scroll on touch + a stable gutter so the layout doesn't jump\n // when the scrollbar shows.\n WebkitOverflowScrolling: 'touch',\n },\n\n // Positioning context for the scroll-affordance edge fades, which sit on\n // top of the scroll port (not inside it, so they don't scroll away).\n scrollFrame: {\n position: 'relative',\n },\n // A soft fade pinned to a scroll edge that hints \"there's more this way\".\n // It fades the content into the surface colour, so it reads in any theme.\n // Toggled by opacity from JS scroll position; pointer-events off so it\n // never eats clicks. Sits just inside the rounded frame border.\n edgeFade: {\n position: 'absolute',\n top: 1,\n bottom: 1,\n width: sizes.edgeFade,\n pointerEvents: 'none',\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n edgeFadeLeft: {\n left: 1,\n borderTopLeftRadius: radii.md,\n borderBottomLeftRadius: radii.md,\n backgroundImage: `linear-gradient(to left, transparent, ${colors.bgCard})`,\n },\n edgeFadeRight: {\n right: 1,\n borderTopRightRadius: radii.md,\n borderBottomRightRadius: radii.md,\n backgroundImage: `linear-gradient(to right, transparent, ${colors.bgCard})`,\n },\n edgeFadeVisible: {\n opacity: 1,\n },\n\n // Dynamic: grid columns applied on Root (non-responsive path only).\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n\n // Dynamic: grid columns at three tiers (default / compact / stack) in\n // one style. Used instead of gridColumns() when responsive=true so that\n // every gridTemplateColumns rule lives in the same StyleX style object —\n // splitting them would let StyleX's conflict resolution drop the\n // earlier classes (the LAST style wins per property key).\n //\n // - default: balanced multi-column layout for desktop widths\n // - compact band (STACK_BP < width ≤ COMPACT_BP): consumer-supplied\n // \"compact\" template. This is written as an explicit RANGE, not just\n // `max-width: COMPACT_BP`, so it does NOT also match below STACK_BP —\n // otherwise both the compact and the stack rule would set\n // gridTemplateColumns at card widths and StyleX's ordering could let the\n // (wider, 4-column) compact template shadow the single-column stack one.\n // - @container (max-width: STACK_BP): collapse to a single column so\n // each row becomes a card\n gridColumnsResponsive: (template: string, compactTemplate: string) => ({\n gridTemplateColumns: {\n default: template,\n [`@container (${STACK_BP} < width <= ${COMPACT_BP})`]: compactTemplate,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n }),\n})\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {devWarnOnce} from '../../shared/devWarnOnce'\nimport {resolveLength, resolveTrack, type GridTrack, type Length} from '../../shared/length'\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 responsive: boolean\n /** Header labels indexed by column position. Populated synchronously by\n * extractColumnMeta() during Root render so SSR HTML carries them. */\n labels: ReadonlyArray<string>\n /** Mutable ref: header Row writes inferred template, Root reads it */\n inferredTemplateRef: MutableRefObject<string | null>\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 ---\n\nconst HeaderContext = createContext(false)\n\n// --- Container — owns the @container query target ---\n//\n// @deprecated Root sets up its own container query and accepts `sortChip`\n// / `pagination` as slot props. Container is kept exported as a passthrough\n// so existing call sites continue to work; new code should use Root alone.\n\nexport function Container({children}: {children: ReactNode}) {\n return <html.div style={styles.container}>{children}</html.div>\n}\n\n// --- Synchronous tree walk: widths + labels in document order ---\n//\n// Mirrors the pattern that was previously called extractTemplate(). Walks\n// the JSX tree, finds HeaderCell elements, captures their `width` and\n// `label` props (or extractText(children) fallback). Runs on every Root\n// render — cheap (small N, no DOM) — but worth memoising on `children`\n// reference if profiling flags it.\n\n// Shallow string-children extraction. We deliberately do NOT recurse into\n// child elements: an icon, tooltip trigger, or sort indicator nested inside\n// a HeaderCell would otherwise pollute the stack-mode label with its own\n// text content. JSX-only headers must set `label` explicitly.\nfunction extractText(node: ReactNode): string {\n let out = ''\n Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n out += String(child)\n }\n })\n return out\n}\n\n// Unwrap memo(...) / forwardRef(...) wrappers so JSX like\n// `<MemoizedHeaderCell ...>` still identifies as HeaderCell. Both wrappers\n// expose the inner component via a `.type` (memo) or `.render` (forwardRef)\n// property on the element-type descriptor. We walk both fields until we\n// reach a leaf, which is the underlying function/class component.\nfunction unwrapElementType(t: unknown): unknown {\n let current = t\n // Bounded loop — defensive cap against pathological infinite-nesting.\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const next =\n (current as {type?: unknown; render?: unknown}).type ?? (current as {render?: unknown}).render\n if (next == null) break\n current = next\n }\n return current\n}\n\nfunction extractColumnMeta(\n children: ReactNode,\n minColumnWidth: Length,\n): {\n template: string\n compactTemplate: string\n labels: string[]\n} {\n const widths: string[] = []\n const compactWidths: string[] = []\n const labels: string[] = []\n\n function walk(node: ReactNode) {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return\n const props = child.props as Record<string, any>\n const unwrappedType = unwrapElementType(child.type)\n const displayName =\n (unwrappedType as {name?: string; displayName?: string} | null)?.displayName ||\n (unwrappedType as {name?: string} | null)?.name ||\n ''\n if (unwrappedType === HeaderCell || displayName === 'HeaderCell') {\n // Default each column to `minmax(<minColumnWidth>px, 1fr)`: columns\n // share the row evenly (1fr) but never shrink below a readable floor.\n // That floor is what makes a dense table overflow its container\n // instead of crushing — Root's scroll wrapper then scrolls sideways.\n // Narrow columns (a checkbox) or naturally-wide ones (an actions\n // cell) override this with an explicit `width` (e.g. a size token\n // key, 'max-content').\n const width = props.width\n ? String(resolveTrack(props.width))\n : `minmax(${resolveLength(minColumnWidth)}, 1fr)`\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth ? String(resolveTrack(props.compactWidth)) : width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'Table',\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- ScrollFrame ---\n//\n// Wraps the grid in the horizontal-scroll port and paints a soft fade at\n// whichever edge still has hidden columns, so a scrollable table advertises\n// that there's more to see (and stops advertising once you reach the end).\n// This is the ONLY JS the responsive Table uses, and it's purely cosmetic —\n// it reads scroll position and toggles fade opacity; it never changes layout,\n// so none of the flicker/oscillation risk of the old auto-stacking applies.\nfunction ScrollFrame({children}: {children: ReactNode}) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const [edges, setEdges] = useState({start: false, end: false})\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n const update = () => {\n const overflowing = el.scrollWidth - el.clientWidth > 1\n setEdges({\n start: overflowing && el.scrollLeft > 1,\n end: overflowing && el.scrollLeft + el.clientWidth < el.scrollWidth - 1,\n })\n }\n update()\n el.addEventListener('scroll', update, {passive: true})\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null\n ro?.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n ro?.disconnect()\n }\n }, [])\n\n return (\n <html.div style={styles.scrollFrame}>\n <html.div ref={scrollRef} style={styles.scrollX}>\n {children}\n </html.div>\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeLeft, edges.start && styles.edgeFadeVisible]}\n />\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeRight, edges.end && styles.edgeFadeVisible]}\n />\n </html.div>\n )\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive behavior (horizontal scroll + card breakpoint). Default true. */\n responsive?: boolean\n /**\n * Minimum width each flexible column keeps before the table scrolls\n * horizontally rather than crushing its cells: a size token key or a\n * relative length. Columns still share the row evenly\n * (`minmax(<minColumnWidth>, 1fr)`); this is only the floor. Raise it for\n * roomier columns (more scrolling), lower it to fit more before scrolling.\n * Columns with an explicit `width` are unaffected. Default `\"labelMinW\"`.\n */\n minColumnWidth?: Length\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth = 'labelMinW',\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children, minColumnWidth)\n if (template) {\n inferredTemplateRef.current = template\n }\n\n const grid = (\n <html.div\n role=\"table\"\n style={[\n styles.root,\n // When responsive, use gridColumnsResponsive so the explicit column\n // template and the stack-mode @container override live in one StyleX\n // style object. Splitting them across two styles (gridColumns +\n // rootResponsive) causes StyleX conflict resolution to drop the\n // column template because rootResponsive's gridTemplateColumns key\n // always wins as the later entry in the array.\n template\n ? responsive\n ? styles.gridColumnsResponsive(template, compactTemplate)\n : styles.gridColumns(template)\n : undefined,\n responsive && styles.rootResponsive,\n ]}\n >\n {children}\n </html.div>\n )\n\n // Above the stack breakpoint the grid keeps each column ≥ minColumnWidth, so\n // a dense table overflows this wrapper and scrolls sideways instead of\n // crushing. Below it (@container ≤ sm) the grid is one column and there's\n // nothing to scroll. Non-responsive tables opt out of the frame entirely.\n const framedGrid = responsive ? <ScrollFrame>{grid}</ScrollFrame> : grid\n\n // Slots render unconditionally — `responsive=false` still wants its sort/\n // pagination chrome. Only the containerType:inline-size wrapper is\n // conditional, since it only matters when @container queries fire. SortChip\n // reveals itself in card mode via its own @container rule — no JS needed.\n const body = (\n <>\n {sortChip}\n {framedGrid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider value={{variant, size, responsive, labels, inferredTemplateRef}}>\n {responsive ? <html.div style={styles.rootContainer}>{body}</html.div> : body}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function 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\nexport function Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children) as ReactElement[]\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\" style={styles.body}>\n {childArray.map((child, index) => {\n if (variant !== 'striped') return child\n // Key the provider by the child's React key (Children.toArray\n // guarantees one) so reordered rows carry their providers along\n // with them. Position is passed as the value because striping is\n // a positional concern even when row identity is stable.\n return (\n <RowIndexContext.Provider key={child.key ?? index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n//\n// Always provides CellIndexContext, regardless of variant. Previously this\n// was only set up for `variant === 'bordered'`, which meant non-bordered\n// tables had every cell reading {index: 0} from the default — fine until\n// we needed to look up labels by column index.\n//\n// Interactive rows: pass `onClick` to make the row a navigation target.\n// The role stays `row` (per ARIA grid pattern) — we don't wrap in an outer\n// element with role=button, which would break the rowgroup → row hierarchy.\n// A click that originates inside an interactive descendant (button, link,\n// input, etc.) is treated as that descendant's click and does not fire\n// onClick — prevents double-fire when a row contains action buttons.\n\ninterface RowProps {\n children: ReactNode\n /** When set, the row becomes focusable + clickable. */\n onClick?: () => void\n /** Per-row accessible name — required when onClick is set, recommended otherwise. */\n 'aria-label'?: string\n}\n\n// Heuristic for \"clicking a descendant means the descendant, not the row\".\n// Matches the elements the WAI-ARIA grid pattern lists as \"widgets\" plus the\n// usual native focus-stealers.\nconst INTERACTIVE_SELECTOR =\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"menuitem\"], [role=\"switch\"], [role=\"tab\"], [contenteditable=\"true\"]'\n\nexport function Row({children, onClick, 'aria-label': ariaLabel}: RowProps) {\n const {variant} = 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) as ReactElement[]\n const isClickable = onClick !== undefined && !isHeader\n\n return (\n <html.div\n role=\"row\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={isClickable ? ariaLabel : undefined}\n onClick={\n isClickable\n ? (e) => {\n // react-strict-dom's typed click event omits `target`, but the\n // underlying SyntheticEvent still carries it. Cast through so\n // we can detect clicks that originate inside an interactive\n // descendant (action button, link, input) and let them be\n // attributed to that widget instead of the row.\n const target = (e as unknown as {target?: EventTarget | null}).target\n if (target instanceof Element && target.closest(INTERACTIVE_SELECTOR)) {\n return\n }\n onClick()\n }\n : undefined\n }\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onClick()\n }\n }\n : undefined\n }\n style={[\n styles.row,\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n isClickable && styles.clickableRow,\n ]}\n >\n {childArray.map((child, index) => (\n // Key by the child's React key (Children.toArray assigns one) so a\n // reordered column carries its CellIndexContext provider along.\n // The positional `index` lives in the provider's value, not its key.\n <CellIndexContext.Provider\n key={child.key ?? index}\n value={{index, total: childArray.length}}\n >\n {child}\n </CellIndexContext.Provider>\n ))}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nexport function HeaderCell({\n children,\n width: _width,\n compactWidth: _compactWidth,\n label: _label,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width at default (wide) viewport. CSS grid-template-columns\n * track value — e.g. `sizes` key `\"iconButton\"`, '2fr', 'max-content'. Defaults to\n * 'minmax(0, 1fr)' so each column shares the row evenly and is free\n * to shrink below its content's intrinsic size. */\n width?: GridTrack\n /** Column width when the table's container drops into compact mode\n * (≤720px container). Use this to switch to a content-aware layout\n * at narrow widths — e.g. give a status badge `max-content` and the\n * action column `minmax(0, 2fr)` so it absorbs the slack — while\n * keeping evenly-distributed columns on wide screens. Defaults to the\n * same value as `width`. */\n compactWidth?: GridTrack\n /** Stack-mode label string. Optional when children is a plain string — the\n * text content is used as the label automatically. Required when children\n * contain JSX (icon + text, sort indicator, etc.). */\n label?: string\n 'aria-label'?: string\n}) {\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 aria-label={ariaLabel}\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}\nHeaderCell.displayName = 'HeaderCell'\n\n// --- Cell ---\n//\n// Renders the column-header label as a real <html.span>, hidden via\n// container query in non-stack modes. The span is omitted entirely when\n// isActions=true — actions footers don't show a label.\n\nexport function Cell({children, isActions}: {children: ReactNode; isActions?: boolean}) {\n const {size, variant, labels, responsive} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n const label = labels[index] ?? ''\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 isActions && styles.cellActions,\n ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={styles.cellLabel}>{label}</html.span>\n ) : null}\n {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\n/**\n * The presentational table. Deliberately free of any TanStack import: this is\n * reachable from the package root, and a static import here would put\n * `@tanstack/react-table` in the module graph of every consumer, including the\n * ones that never render a data table. A bundler has to RESOLVE an import\n * before it can tree-shake the code behind it, so that made an optional\n * feature's peer dependency mandatory for everyone.\n *\n * The TanStack-aware parts — Pagination, SortIndicator, ColumnFilter,\n * SortChip, FromTanstack, useDataTable, VirtualTable — live behind\n * `@duro-app/ui/table`, which re-exports this object with them attached. So\n * `Table.Root` is identical either way; only the import specifier differs.\n */\nexport const TableCore = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n\nexport const Table = TableCore\n"],"names":["SPACING_PX","xs","sm","ms","md","lg","xl","xxl","xxxl","DURATION_MS","instant","minimal","quick","fast","brisk","base","slow","SIZE_KEYS","SIZES_PX","touchTarget","controlSm","controlMd","controlLg","indicator","indicatorDot","checkMarkW","checkMarkH","switchTrackW","switchTrackH","switchThumb","iconButton","iconButtonSm","spinnerSm","spinnerMd","spinnerLg","glyphXs","glyphSm","glyphMd","iconSm","iconMd","iconLg","iconXl","iconXxl","thumbSm","mediaTileMinW","glyphClampMax","timeReadoutW","navMarkerW","navMarkerH","divider","tabIndicator","edgeFade","scrollbar","swatchW","swatchH","labelMinW","popupMinW","listMaxH","listMaxHSm","dialogSm","dialogMd","dialogLg","panelSm","panelMd","panelLg","toastMaxW","gridColSm","gridColMd","pageSm","pageMd","pageLg","sidebarW","pageXs","pageXl","asideW","gridColXs","fieldMinWSm","fieldMinW","popoverWSm","popoverW","popupMaxW","meterH","skeletonChipW","dropZoneMinH","canvasMinH","editorMinH","toolbarH","embedW","colorPickerW","colorAreaH","colorTrackH","colorSwatch","colorPreviewH","handle","chip","placeholderMinH","previewMaxH","barH","sheetGrabberW","sheetGrabberH","readoutW","sliderW","paletteMinW","deviceBarW","timeGutterW","dayHeaderH","timelineLabelW","appBarH","dragThumbW","dragThumbH","ICON_SIZES","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","key","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","validateStrictProps","props","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","ref","htmlFor","restProps","hostProps","hostStyleProps","jsx","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","heading","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","defaultStyles","a","article","aside","b","bdi","bdo","blockquote","br","button","code","del","div","em","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hr","img","input","ins","kbd","label","li","main","mark","nav","ol","optgroup","option","p","pre","s","section","select","span","strong","sub","sup","textarea","u","ul","html","ToolbarContext","createContext","useToolbar","useContext","ButtonGroupContext","useButtonGroup","attached","item","$$css","horizontalFirst","horizontalMiddle","horizontalLast","verticalFirst","verticalMiddle","verticalLast","positionStyles","horizontal","first","middle","last","only","vertical","useGroupedControl","t0","$","_c","t1","undefined","disabled","t2","id","useId","useRef","group","toolbar","groupRegister","register","toolbarRegister","t3","t4","el","current","unregisterGroup","unregisterToolbar","useLayoutEffect","t5","positionOf","position","t6","orientation","t7","t8","tabIndexOf","t9","onItemFocus","t10","tabIndex","onFocus","lightTheme","xjvd03b","lightShadows","x13v825q","highContrastTheme","highContrastShadows","themeMap","light","root","portalMount","PortalMountContext","usePortalMount","ThemeProvider","theme","children","overrides","themeStyles","mount","setMount","useState","Symbol","for","_rsdMerge","_rsdDefaultStyles","jsxs","ControlContextBoundary","isPlainClick","event","metaKey","ctrlKey","shiftKey","altKey","defaultPrevented","linkClickHandler","href","onNavigate","target","breakpointsPx","sizes","__varGroupHash__","IS_PROD","process","env","NODE_ENV","warned","Set","devWarnOnce","scope","message","has","add","console","warn","sizeKeys","resolveLength","resolveTrack","track","fn","exec","args","split","map","arg","String","trim","join","trigger","triggerGhost","triggerSmall","triggerGhostSmall","popup","popupPosition","top","left","val","itemHighlighted","separator","linkItem","MenuContext","useMenu","ctx","Error","isOutsidePress","inside","some","contains","useMenuOpen","open","openProp","defaultOpen","onOpenChange","inner","setInner","controlled","openRef","onOpenChangeRef","setOpen","useCallback","next","useMenuRoot","highlightedId","setHighlightedId","highlightedRef","menuId","triggerId","rootRef","triggerRef","popupRef","Map","itemsRef","orderRef","dismiss","focus","close","toggle","wasOpenRef","preventScroll","useEffect","get","scrollIntoView","block","t11","element","set","ids","keys","sort","elA","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","registerItem","t12","t13","handleKeyDown","e","preventDefault","stopPropagation","order","length","bb91","prev_0","idx_0","prev","indexOf","idx","click","addEventListener","removeEventListener","t14","t15","onPointerDown","e_0","document","t16","computePopoverPosition","anchor","viewport","side","align","offset","below","height","above","fitsBelow","fitsAbove","resolved","width","maxLeft","Math","max","min","PopoverLayerContext","usePopoverLayer","active","layer","Root","NESTED_CONTROL","Trigger","ariaLabel","variant","size","grouped","groupedRef","setRef","querySelector","Popup","coords","setCoords","update","rect","getBoundingClientRect","offsetWidth","offsetHeight","window","innerWidth","innerHeight","body","createPortal","Item","onClick","isHighlighted","handleClick","LinkItem","Separator","Menu","container","rootContainer","clickableRow","rootResponsive","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","scrollX","scrollFrame","edgeFadeLeft","edgeFadeRight","edgeFadeVisible","gridColumns","template","gridColumnsResponsive","compactTemplate","TableContext","useTable","HeaderContext","Container","extractText","node","out","Children","forEach","child","unwrapElementType","t","type","render","extractColumnMeta","minColumnWidth","widths","compactWidths","labels","walk","isValidElement","unwrappedType","displayName","name","HeaderCell","push","compactWidth","explicit","fallback","ScrollFrame","scrollRef","start","end","edges","setEdges","overflowing","scrollWidth","clientWidth","scrollLeft","passive","ro","ResizeObserver","observe","disconnect","responsive","pagination","inferredTemplateRef","grid","Fragment","Header","Body","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","isHeader","rowIndex","isEvenRow","isClickable","Element","closest","CellIndexContext","total","isLast","Cell","isActions","TableCore","Table"],"mappings":";;;;AAsBO,MAAMA,KAAa;AAAA,EACxBC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,KAAK;AAAA,EACLC,MAAM;AACR,GA8BaC,KAAc;AAAA,EACzBC,SAAS;AAAA,EACTC,SAAS;AAAA,EACTC,OAAO;AAAA,EACPC,MAAM;AAAA,EACNC,OAAO;AAAA,EACPC,MAAM;AAAA,EACNC,MAAM;AACR,GAGaC,KAAY,CACvB,eACA,aACA,aACA,aACA,aACA,gBACA,cACA,cACA,gBACA,gBACA,eACA,cACA,gBACA,aACA,aACA,aACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,WACA,iBACA,iBACA,gBACA,cACA,cACA,WACA,gBACA,YACA,aACA,WACA,WACA,aACA,aACA,YACA,cACA,YACA,YACA,YACA,WACA,WACA,WACA,aACA,aACA,aACA,UACA,UACA,UACA,YACA,UACA,UACA,UACA,aACA,eACA,aACA,cACA,YACA,aACA,UACA,iBACA,gBACA,cACA,cACA,YACA,UACA,gBACA,cACA,eACA,eACA,iBACA,UACA,QACA,mBACA,eACA,QACA,iBACA,iBACA,YACA,WACA,eACA,cACA,eACA,cACA,kBACA,WACA,cACA,YAAY,GAKDC,IAAW;AAAA,EACtBC,aAAa;AAAA,EACbC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,cAAc;AAAA,EACdC,YAAY;AAAA,EACZC,YAAY;AAAA,EACZC,cAAc;AAAA,EACdC,cAAc;AAAA,EACdC,aAAa;AAAA,EACbC,YAAY;AAAA,EACZC,cAAc;AAAA,EACdC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,SAAS;AAAA,EACTC,SAAS;AAAA,EACTC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,SAAS;AAAA,EACTC,SAAS;AAAA,EACTC,eAAe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","x_google_ignoreList":[1]}
|