@wow-two-beta/ui 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/actions/index.js +2 -2
  2. package/dist/actions/toggleButton/ToggleButton.d.ts +7 -3
  3. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
  4. package/dist/{chunk-NTUKGLIQ.js → chunk-23DELZVV.js} +3 -3
  5. package/dist/{chunk-NTUKGLIQ.js.map → chunk-23DELZVV.js.map} +1 -1
  6. package/dist/{chunk-WPC3KBRU.js → chunk-2CDU2ZKL.js} +3 -3
  7. package/dist/{chunk-WPC3KBRU.js.map → chunk-2CDU2ZKL.js.map} +1 -1
  8. package/dist/{chunk-5V7FBKKL.js → chunk-2TKPRR4X.js} +3 -3
  9. package/dist/{chunk-5V7FBKKL.js.map → chunk-2TKPRR4X.js.map} +1 -1
  10. package/dist/{chunk-C6XVQ5TW.js → chunk-3YNJTBYF.js} +3 -3
  11. package/dist/{chunk-C6XVQ5TW.js.map → chunk-3YNJTBYF.js.map} +1 -1
  12. package/dist/{chunk-JYP2HIG3.js → chunk-BEOOTUFV.js} +4 -4
  13. package/dist/{chunk-JYP2HIG3.js.map → chunk-BEOOTUFV.js.map} +1 -1
  14. package/dist/{chunk-6URHYLVG.js → chunk-BUWJN6SN.js} +10 -4
  15. package/dist/chunk-BUWJN6SN.js.map +1 -0
  16. package/dist/{chunk-EUA2TRKE.js → chunk-CWT5VEMU.js} +4 -4
  17. package/dist/{chunk-EUA2TRKE.js.map → chunk-CWT5VEMU.js.map} +1 -1
  18. package/dist/{chunk-UPSN6NFK.js → chunk-L235NITI.js} +4 -4
  19. package/dist/{chunk-UPSN6NFK.js.map → chunk-L235NITI.js.map} +1 -1
  20. package/dist/{chunk-CMBKBLJE.js → chunk-VTVWJBOP.js} +150 -99
  21. package/dist/chunk-VTVWJBOP.js.map +1 -0
  22. package/dist/{chunk-34TLJSEH.js → chunk-WU5JMO3N.js} +39 -3
  23. package/dist/chunk-WU5JMO3N.js.map +1 -0
  24. package/dist/{chunk-ZJJ4KW6G.js → chunk-ZVOPRSED.js} +4 -4
  25. package/dist/{chunk-ZJJ4KW6G.js.map → chunk-ZVOPRSED.js.map} +1 -1
  26. package/dist/display/index.js +3 -3
  27. package/dist/feedback/index.js +3 -3
  28. package/dist/forms/index.js +5 -5
  29. package/dist/forms/select/Select.d.ts +52 -28
  30. package/dist/forms/select/Select.d.ts.map +1 -1
  31. package/dist/forms/select/index.d.ts +1 -1
  32. package/dist/forms/select/index.d.ts.map +1 -1
  33. package/dist/icons/index.js +1 -1
  34. package/dist/index.js +11 -11
  35. package/dist/layout/index.js +3 -3
  36. package/dist/nav/index.js +3 -3
  37. package/dist/overlays/index.js +2 -2
  38. package/dist/utils/Equality.d.ts +29 -0
  39. package/dist/utils/Equality.d.ts.map +1 -0
  40. package/dist/utils/index.d.ts +1 -0
  41. package/dist/utils/index.d.ts.map +1 -1
  42. package/dist/utils/index.js +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-34TLJSEH.js.map +0 -1
  45. package/dist/chunk-6URHYLVG.js.map +0 -1
  46. package/dist/chunk-CMBKBLJE.js.map +0 -1
@@ -8,6 +8,7 @@ var utils_exports = {};
8
8
  __export(utils_exports, {
9
9
  ButtonType: () => ButtonType,
10
10
  CssExtensions: () => CssExtensions,
11
+ Equality: () => Equality,
11
12
  HtmlElement: () => HtmlElement,
12
13
  Key: () => Key,
13
14
  Layer: () => Layer,
@@ -457,6 +458,41 @@ function layerStyle(layer) {
457
458
  return { zIndex: Layer[layer] };
458
459
  }
459
460
 
460
- export { ButtonType, CssExtensions, HtmlElement, Key, Layer, OptionalExtensions, PressExtensions, TransitionExtensions, composeEventHandlers, dataAttr, layerStyle, surfaceVariants, utils_exports };
461
- //# sourceMappingURL=chunk-34TLJSEH.js.map
462
- //# sourceMappingURL=chunk-34TLJSEH.js.map
461
+ // src/utils/Equality.ts
462
+ var Equality = {
463
+ /**
464
+ * Default. NaN-safe strict equality.
465
+ * Correct for `string | number | boolean | symbol | null | undefined`.
466
+ * Reference equality for objects (only same instance is equal).
467
+ */
468
+ strict: (a, b) => Object.is(a, b),
469
+ /**
470
+ * Plain `===` equality. Like `strict` but NaN !== NaN.
471
+ * Use when you need pre-ES6 semantics; otherwise prefer `strict`.
472
+ */
473
+ reference: (a, b) => a === b,
474
+ /**
475
+ * Compare two objects by an extracted scalar key.
476
+ *
477
+ * @example
478
+ * keyEquals: Equality.byKey<User>(u => u.id)
479
+ * // → (a, b) => Object.is(a.id, b.id)
480
+ */
481
+ byKey: (extract) => (a, b) => Object.is(extract(a), extract(b)),
482
+ /**
483
+ * Shallow object equality — equal iff every key has identical (Object.is) value.
484
+ * Good for objects with primitive-only fields; doesn't recurse.
485
+ */
486
+ shallow: (a, b) => {
487
+ if (Object.is(a, b)) return true;
488
+ if (a == null || b == null) return false;
489
+ const ak = Object.keys(a);
490
+ const bk = Object.keys(b);
491
+ if (ak.length !== bk.length) return false;
492
+ return ak.every((k) => Object.is(a[k], b[k]));
493
+ }
494
+ };
495
+
496
+ export { ButtonType, CssExtensions, Equality, HtmlElement, Key, Layer, OptionalExtensions, PressExtensions, TransitionExtensions, composeEventHandlers, dataAttr, layerStyle, surfaceVariants, utils_exports };
497
+ //# sourceMappingURL=chunk-WU5JMO3N.js.map
498
+ //# sourceMappingURL=chunk-WU5JMO3N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/index.ts","../src/utils/composeEventHandlers.ts","../src/utils/dataAttr.ts","../src/utils/CssExtensions.ts","../src/utils/OptionalExtensions.ts","../src/utils/PressExtensions.ts","../src/utils/HtmlExtensions.ts","../src/utils/KeyboardExtensions.ts","../src/utils/TransitionExtensions.ts","../src/utils/SurfaceStyles.ts","../src/utils/Layers.ts","../src/utils/Equality.ts"],"names":[],"mappings":"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","file":"chunk-WU5JMO3N.js","sourcesContent":["export { cn } from './cn';\nexport { composeRefs } from './composeRefs';\nexport { composeEventHandlers } from './composeEventHandlers';\nexport { dataAttr } from './dataAttr';\nexport { tv, type VariantProps } from './tv';\nexport type {\n PolymorphicProps,\n PolymorphicPropsWithoutRef,\n PolymorphicRef,\n} from './polymorphic';\nexport { CssExtensions } from './CssExtensions';\nexport type {\n PaddingToken,\n RadiusToken,\n SizeValue,\n PaddingProp,\n RadiusProp,\n BoxSizeOverrides,\n SizeUnion,\n SizePreset,\n AbsolutePositionPreset,\n AbsoluteInsetOverrides,\n AbsolutePosition,\n} from './CssExtensions';\nexport { OptionalExtensions } from './OptionalExtensions';\nexport { PressExtensions, type PressEvent } from './PressExtensions';\nexport { HtmlElement, ButtonType } from './HtmlExtensions';\nexport { Key } from './KeyboardExtensions';\nexport { TransitionExtensions } from './TransitionExtensions';\nexport type {\n PresenceAnimationDurationProp,\n PresenceAnimationDuration,\n} from './TransitionExtensions';\nexport { surfaceVariants } from './SurfaceStyles';\nexport type {\n SurfaceVariants,\n SurfaceVariant,\n SurfaceTone,\n SurfaceRadius,\n SurfacePadding,\n SurfaceElevation,\n} from './SurfaceStyles';\nexport { Layer, layerStyle, type LayerName } from './Layers';\nexport { Equality, type EqualityComparer } from './Equality';\n","import type { SyntheticEvent } from 'react';\n\n/**\n * Chain two event handlers. The first handler runs, then the second — unless\n * the first called `event.preventDefault()`, in which case the second is skipped.\n * Use when overriding a default handler from a parent while still allowing\n * the consumer to provide their own.\n */\nexport function composeEventHandlers<E extends SyntheticEvent>(\n theirHandler: ((event: E) => void) | undefined,\n ourHandler: (event: E) => void,\n { checkForDefaultPrevented = true }: { checkForDefaultPrevented?: boolean } = {},\n): (event: E) => void {\n return (event) => {\n theirHandler?.(event);\n if (!checkForDefaultPrevented || !event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\n","/**\n * Returns `\"\"` when the condition is true, `undefined` otherwise.\n * Use for boolean `data-*` attributes — React strips the attr when value is undefined,\n * so the DOM cleanly toggles `data-state` rather than `data-state=\"false\"`.\n */\nexport function dataAttr(condition: boolean | undefined): '' | undefined {\n return condition ? '' : undefined;\n}\n","import type { CSSProperties } from 'react';\n\n/** CSS-value extensions — types, token maps, resolvers. Call as `CssExtensions.x(...)`. */\n\n// =============================================================================\n// Tokens (types — individually exported; types are erased, no shaking concern)\n// =============================================================================\n\nexport type PaddingToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type RadiusToken = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport type SizeValue = string | number;\nexport type PaddingProp = PaddingToken | { x?: SizeValue; y?: SizeValue };\nexport type RadiusProp = RadiusToken | SizeValue;\nexport interface BoxSizeOverrides {\n width?: SizeValue;\n height?: SizeValue;\n minWidth?: SizeValue;\n minHeight?: SizeValue;\n maxWidth?: SizeValue;\n maxHeight?: SizeValue;\n /** Shorthand for square boxes — applied as fallback for both `width` and `height`. Explicit `width`/`height` win when both are set. */\n boxSize?: SizeValue;\n /** CSS `aspect-ratio`. String like `'16/9'` or number like `1.5`. Pairs naturally with a single width/height. */\n aspectRatio?: string | number;\n}\n\n/** Canonical size preset vocabulary — shared across components. Each component picks the subset it supports via `Extract<SizePreset, ...>` and owns its internal dimension mapping. */\nexport type SizePreset = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/* Absolute-positioning tokens — preset 9-anchor enum + raw inset overrides. */\n\nexport type AbsolutePositionPreset =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'center';\n\nexport interface AbsoluteInsetOverrides {\n top?: SizeValue;\n right?: SizeValue;\n bottom?: SizeValue;\n left?: SizeValue;\n}\n\nexport type AbsolutePosition = AbsolutePositionPreset | AbsoluteInsetOverrides;\n\n// =============================================================================\n// Token → CSS maps\n// =============================================================================\n\nconst PADDING_TOKEN_TO_CSS: Record<Exclude<PaddingToken, 'none'>, string> = {\n xs: '0.5rem',\n sm: '0.75rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n};\n\nconst RADIUS_TOKEN_TO_CSS: Record<Exclude<RadiusToken, 'none' | 'full'>, string> = {\n xs: '0.125rem',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '0.75rem',\n xl: '1rem',\n};\n\n// =============================================================================\n// Internal resolvers\n// =============================================================================\n\nfunction toCss(v: SizeValue): string {\n return typeof v === 'number' ? `${v}px` : v;\n}\n\nfunction resolvePadding(padding: PaddingProp | undefined): CSSProperties | undefined {\n if (!padding) return undefined;\n if (typeof padding === 'string') {\n if (padding === 'none') {\n return { paddingLeft: 0, paddingRight: 0, paddingTop: 0, paddingBottom: 0 };\n }\n const v = PADDING_TOKEN_TO_CSS[padding];\n return { paddingLeft: v, paddingRight: v, paddingTop: v, paddingBottom: v };\n }\n const style: CSSProperties = {};\n if (padding.x !== undefined) {\n const v = toCss(padding.x);\n style.paddingLeft = v;\n style.paddingRight = v;\n }\n if (padding.y !== undefined) {\n const v = toCss(padding.y);\n style.paddingTop = v;\n style.paddingBottom = v;\n }\n return style;\n}\n\nfunction resolveRadius(radius: RadiusProp | undefined): CSSProperties | undefined {\n if (radius === undefined || radius === null) return undefined;\n if (typeof radius === 'number') return { borderRadius: `${radius}px` };\n if (radius === 'none') return { borderRadius: 0 };\n if (radius === 'full') return { borderRadius: '9999px' };\n if (radius in RADIUS_TOKEN_TO_CSS) {\n return {\n borderRadius:\n RADIUS_TOKEN_TO_CSS[radius as Exclude<RadiusToken, 'none' | 'full'>],\n };\n }\n return { borderRadius: radius };\n}\n\nfunction resolveBoxSize(overrides: BoxSizeOverrides): CSSProperties | undefined {\n const style: CSSProperties = {};\n let hasAny = false;\n // boxSize is the fallback for width AND height — explicit dims win.\n const effectiveWidth = overrides.width ?? overrides.boxSize;\n const effectiveHeight = overrides.height ?? overrides.boxSize;\n if (effectiveWidth !== undefined) {\n style.width = toCss(effectiveWidth);\n hasAny = true;\n }\n if (effectiveHeight !== undefined) {\n style.height = toCss(effectiveHeight);\n hasAny = true;\n }\n if (overrides.minWidth !== undefined) {\n style.minWidth = toCss(overrides.minWidth);\n hasAny = true;\n }\n if (overrides.minHeight !== undefined) {\n style.minHeight = toCss(overrides.minHeight);\n hasAny = true;\n }\n if (overrides.maxWidth !== undefined) {\n style.maxWidth = toCss(overrides.maxWidth);\n hasAny = true;\n }\n if (overrides.maxHeight !== undefined) {\n style.maxHeight = toCss(overrides.maxHeight);\n hasAny = true;\n }\n if (overrides.aspectRatio !== undefined) {\n style.aspectRatio = String(overrides.aspectRatio);\n hasAny = true;\n }\n return hasAny ? style : undefined;\n}\n\n/** Union type for size props that accept either a named preset, a raw value (applied as `boxSize`), or an explicit dim object. */\nexport type SizeUnion<P extends string> =\n | P\n | (string & {}) // keeps preset literals in autocomplete while accepting any CSS unit string\n | number\n | BoxSizeOverrides;\n\n/**\n * Parse a union-style size prop into (a) a preset name (if matched), or (b) a `BoxSizeOverrides` payload.\n *\n * Resolution order:\n * - `undefined` → `{}`\n * - object → `{ box: input }`\n * - preset string → `{ preset: input }`\n * - any other string → `{ box: { boxSize: input } }`\n * - number → `{ box: { boxSize: input } }`\n */\nfunction parseSizeUnion<P extends string>(\n input: SizeUnion<P> | undefined,\n presets: ReadonlySet<string>,\n): { preset?: P; box?: BoxSizeOverrides } {\n if (input === undefined) return {};\n if (typeof input === 'object' && input !== null) return { box: input };\n if (typeof input === 'string' && presets.has(input)) return { preset: input as P };\n if (typeof input === 'number' || typeof input === 'string') {\n return { box: { boxSize: input } };\n }\n return {};\n}\n\n// =============================================================================\n// Grouped namespace export\n// =============================================================================\n\nexport const CssExtensions = {\n toCss,\n resolvePadding,\n resolveRadius,\n resolveBoxSize,\n parseSizeUnion,\n PADDING_TOKEN_TO_CSS,\n RADIUS_TOKEN_TO_CSS,\n} as const;\n","/** Optional value extensions — call as `OptionalExtensions.x(...)`. */\n\n/**\n * Construct an optional from a `(condition, value)` pair: returns `value` when\n * `condition` is truthy, otherwise `undefined`. Use to keep DOM attributes\n * absent when their default/false meaning is what we want (e.g. `aria-busy`,\n * `tabIndex`, `disabled`).\n */\nfunction from<T>(condition: unknown, value: T): T | undefined {\n return condition ? value : undefined;\n}\n\nexport const OptionalExtensions = {\n from,\n} as const;\n","import type { KeyboardEvent, PointerEvent } from 'react';\n\n/** Press-interaction extensions — types + constants shared by interactive components. */\n\n/** Unified press event — pointer OR keyboard activation on any HTML element. */\nexport type PressEvent<T extends HTMLElement = HTMLElement> =\n | PointerEvent<T>\n | KeyboardEvent<T>;\n\nexport const PressExtensions = {\n /**\n * Bounds for `longPressDelay` props. Below `min`: overlaps with normal\n * click latency, too easy to trigger accidentally. Above `max`: clearly a\n * developer error (5-min hold). `default` is the conventional 500ms.\n */\n longPressDelay: {\n min: 200,\n max: 300_000,\n default: 500,\n },\n} as const;\n","/* HTML attribute & element value enums (const + type pairs). */\n\n/* HTML element tag names — for JSX intrinsics and polymorphic `Comp` variables. */\nexport const HtmlElement = {\n Button: 'button',\n Anchor: 'a',\n Span: 'span',\n Div: 'div',\n} as const;\nexport type HtmlElement = (typeof HtmlElement)[keyof typeof HtmlElement];\n\n/* HTML `<button type=\"\">` attribute. */\nexport const ButtonType = {\n Button: 'button',\n Submit: 'submit',\n Reset: 'reset',\n} as const;\nexport type ButtonType = (typeof ButtonType)[keyof typeof ButtonType];\n","/* Keyboard key values from `KeyboardEvent.key`. Add new entries as components need them. */\nexport const Key = {\n Space: ' ',\n Enter: 'Enter',\n Escape: 'Escape',\n Tab: 'Tab',\n Backspace: 'Backspace',\n Delete: 'Delete',\n Home: 'Home',\n End: 'End',\n PageUp: 'PageUp',\n PageDown: 'PageDown',\n ArrowUp: 'ArrowUp',\n ArrowDown: 'ArrowDown',\n ArrowLeft: 'ArrowLeft',\n ArrowRight: 'ArrowRight',\n} as const;\nexport type Key = (typeof Key)[keyof typeof Key];\n","/* Transition / animation utility extensions — duration normalization, defaults. Call as `TransitionExtensions.x(...)`. */\n\n// =============================================================================\n// Types — presence-style asymmetric durations (enter/exit). Not every animation\n// has an enter/exit phase (loops, one-shots, springs); this shape applies\n// specifically to mount/unmount or appear/disappear transitions.\n// =============================================================================\n\n/** Input prop — symmetric number OR asymmetric `{ enter, exit }`. */\nexport type PresenceAnimationDurationProp =\n | number\n | { enter?: number; exit?: number };\n\n/** Resolved (canonical) — both sides always present. */\nexport interface PresenceAnimationDuration {\n enter: number;\n exit: number;\n}\n\n// =============================================================================\n// Defaults\n// =============================================================================\n\nconst DEFAULT_DURATION_MS = 200;\n\n// =============================================================================\n// Internal resolvers\n// =============================================================================\n\nfunction resolveDuration(\n d: PresenceAnimationDurationProp | undefined,\n): PresenceAnimationDuration {\n if (typeof d === 'number') return { enter: d, exit: d };\n if (d && typeof d === 'object') {\n return {\n enter: d.enter ?? DEFAULT_DURATION_MS,\n exit: d.exit ?? DEFAULT_DURATION_MS,\n };\n }\n return { enter: DEFAULT_DURATION_MS, exit: DEFAULT_DURATION_MS };\n}\n\n// =============================================================================\n// Grouped namespace export\n// =============================================================================\n\nexport const TransitionExtensions = {\n resolveDuration,\n duration: { default: DEFAULT_DURATION_MS },\n} as const;\n","/*\n * Cross-domain surface style engine.\n *\n * Every \"block of content with a visual treatment\" in the lib composes these\n * variants: floating panels (Popover, Tooltip, HoverCard), menus (DropdownMenu,\n * ContextMenu, CommandPalette), dialogs/drawers, cards (Card, ChatBubble,\n * AlertCard), notifications (Toast, NotificationItem), and listbox surfaces.\n *\n * Lives in `src/utils/` because the boundaries lint forbids domain folders from\n * being import roots of other domains. Mirrors `forms/InputStyles.ts` for inputs\n * and `actions/button/Button.variants.ts` for buttons.\n *\n * Axes:\n * - variant — the visual recipe (bg + border + shadow structure)\n * - tone — semantic colorisation (neutral/primary/danger/success/warning/info)\n * - radius — corner roundness (independent)\n * - padding — interior breathing room (independent; default: none — most\n * surfaces contain children that pad themselves)\n * - elevation — optional shadow override (0–5). When omitted, variant decides.\n */\n\nimport { tv, type VariantProps } from './tv';\n\nexport const surfaceVariants = tv({\n base: 'outline-none transition-colors',\n variants: {\n variant: {\n /* Opaque fill, no border, light shadow. Tooltips, chips, inline pills. */\n solid: 'shadow-sm',\n /* Muted/tinted fill, no border, light shadow. Chat bubbles, inline groups. */\n soft: 'shadow-sm',\n /* Opaque fill + visible border + medium shadow. Default for popovers/menus. */\n surface: 'border shadow-md',\n /* Transparent fill + visible border. Static cards, embedded info blocks. */\n outline: 'border bg-transparent',\n /* Translucent + blur, no border, medium shadow. Image overlays. */\n glass: 'backdrop-blur-md shadow-md',\n /* Translucent + blur + subtle border. Premium / hero overlays. */\n 'glass-outline': 'border backdrop-blur-md shadow-md',\n /* Opaque fill, no border, heavy shadow. Modals, drawers, command palette. */\n elevated: 'shadow-xl',\n /* Opaque fill, no border, no shadow. Embedded sub-panels inside another surface. */\n flat: '',\n },\n\n tone: {\n neutral: '',\n primary: '',\n danger: '',\n success: '',\n warning: '',\n info: '',\n },\n\n radius: {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n },\n\n padding: {\n none: 'p-0',\n xs: 'p-1',\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n xl: 'p-6',\n '2xl': 'p-8',\n },\n\n /* Optional shadow override — when set, beats variant's default shadow via\n tailwind-merge precedence. Leave undefined to inherit from variant. */\n elevation: {\n 0: 'shadow-none',\n 1: 'shadow-sm',\n 2: 'shadow-md',\n 3: 'shadow-lg',\n 4: 'shadow-xl',\n 5: 'shadow-2xl',\n },\n },\n\n compoundVariants: [\n /* SOLID + ELEVATED + FLAT — opaque, tone bg, tone foreground. Same color matrix\n across these three variants — shadow is the only diff (handled by variant base). */\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'neutral',\n class: 'bg-popover text-popover-foreground',\n },\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'primary',\n class: 'bg-primary text-primary-foreground',\n },\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'danger',\n class: 'bg-destructive text-destructive-foreground',\n },\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'success',\n class: 'bg-success text-success-foreground',\n },\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'warning',\n class: 'bg-warning text-warning-foreground',\n },\n {\n variant: ['solid', 'elevated', 'flat'],\n tone: 'info',\n class: 'bg-info text-info-foreground',\n },\n\n /* SOFT — muted/tinted bg, tone-readable text. */\n { variant: 'soft', tone: 'neutral', class: 'bg-muted text-foreground' },\n { variant: 'soft', tone: 'primary', class: 'bg-primary-soft text-primary' },\n { variant: 'soft', tone: 'danger', class: 'bg-destructive-soft text-destructive' },\n { variant: 'soft', tone: 'success', class: 'bg-success-soft text-success' },\n { variant: 'soft', tone: 'warning', class: 'bg-warning-soft text-warning' },\n { variant: 'soft', tone: 'info', class: 'bg-info-soft text-info' },\n\n /* SURFACE — popover bg + tone-accent border. Border colours subtly to keep\n the panel reading as \"neutral surface with [tone] context\". */\n {\n variant: 'surface',\n tone: 'neutral',\n class: 'border-border bg-popover text-popover-foreground',\n },\n {\n variant: 'surface',\n tone: 'primary',\n class: 'border-primary/40 bg-popover text-popover-foreground',\n },\n {\n variant: 'surface',\n tone: 'danger',\n class: 'border-destructive/40 bg-popover text-popover-foreground',\n },\n {\n variant: 'surface',\n tone: 'success',\n class: 'border-success/40 bg-popover text-popover-foreground',\n },\n {\n variant: 'surface',\n tone: 'warning',\n class: 'border-warning/40 bg-popover text-popover-foreground',\n },\n {\n variant: 'surface',\n tone: 'info',\n class: 'border-info/40 bg-popover text-popover-foreground',\n },\n\n /* OUTLINE — fully transparent fill, tone border + tone-readable text. */\n { variant: 'outline', tone: 'neutral', class: 'border-border text-foreground' },\n { variant: 'outline', tone: 'primary', class: 'border-primary text-primary' },\n { variant: 'outline', tone: 'danger', class: 'border-destructive text-destructive' },\n { variant: 'outline', tone: 'success', class: 'border-success text-success' },\n { variant: 'outline', tone: 'warning', class: 'border-warning text-warning' },\n { variant: 'outline', tone: 'info', class: 'border-info text-info' },\n\n /* GLASS — translucent tinted fill + blur. Tone fills with alpha; foreground\n must read clearly across the blurred background underneath. */\n {\n variant: 'glass',\n tone: 'neutral',\n class: 'bg-popover/70 text-popover-foreground',\n },\n {\n variant: 'glass',\n tone: 'primary',\n class: 'bg-primary/30 text-primary-foreground',\n },\n {\n variant: 'glass',\n tone: 'danger',\n class: 'bg-destructive/30 text-destructive-foreground',\n },\n {\n variant: 'glass',\n tone: 'success',\n class: 'bg-success/30 text-success-foreground',\n },\n {\n variant: 'glass',\n tone: 'warning',\n class: 'bg-warning/30 text-warning-foreground',\n },\n {\n variant: 'glass',\n tone: 'info',\n class: 'bg-info/30 text-info-foreground',\n },\n\n /* GLASS-OUTLINE — glass + tone-accent border at 50% alpha. */\n {\n variant: 'glass-outline',\n tone: 'neutral',\n class: 'border-border/50 bg-popover/70 text-popover-foreground',\n },\n {\n variant: 'glass-outline',\n tone: 'primary',\n class: 'border-primary/50 bg-primary/30 text-primary-foreground',\n },\n {\n variant: 'glass-outline',\n tone: 'danger',\n class: 'border-destructive/50 bg-destructive/30 text-destructive-foreground',\n },\n {\n variant: 'glass-outline',\n tone: 'success',\n class: 'border-success/50 bg-success/30 text-success-foreground',\n },\n {\n variant: 'glass-outline',\n tone: 'warning',\n class: 'border-warning/50 bg-warning/30 text-warning-foreground',\n },\n {\n variant: 'glass-outline',\n tone: 'info',\n class: 'border-info/50 bg-info/30 text-info-foreground',\n },\n ],\n\n defaultVariants: {\n variant: 'surface',\n tone: 'neutral',\n radius: 'md',\n padding: 'none',\n },\n});\n\nexport type SurfaceVariants = VariantProps<typeof surfaceVariants>;\n\n/* Convenience type aliases for component props that want to expose the subset. */\nexport type SurfaceVariant = NonNullable<SurfaceVariants['variant']>;\nexport type SurfaceTone = NonNullable<SurfaceVariants['tone']>;\nexport type SurfaceRadius = NonNullable<SurfaceVariants['radius']>;\nexport type SurfacePadding = NonNullable<SurfaceVariants['padding']>;\nexport type SurfaceElevation = NonNullable<SurfaceVariants['elevation']>;\n","/*\n * Layer (z-index) constants — the single source of truth for stacking order.\n *\n * Each layer is a semantic name with a fixed z-index value. Components never\n * pick arbitrary numbers; they pick a named layer that matches their role.\n *\n * Gaps of 10 between layers leave room to insert a future intermediate tier\n * without renumbering. `Debug` lives far above the rest (9999) so DevTools /\n * inspector overlays always win.\n *\n * Tailwind utility classes (`z-base`, `z-dropdown`, etc.) are auto-generated\n * from matching `--z-index-*` entries in `src/index.css` (Tailwind v4 @theme).\n * Use either form:\n *\n * className=\"z-dropdown\" // utility class\n * style={layerStyle('Modal')} // inline programmatic\n * style={{ zIndex: Layer.Modal }} // raw const\n */\n\nexport const Layer = {\n /** Visually hidden — slip under base layer. */\n Hide: -1,\n /** Default DOM flow — no z-index applied. */\n Base: 0,\n /** Slightly elevated — sticky list items, hover-cards inside a grid. */\n Raised: 10,\n /** Pinned widgets inside a section (panel, inline overlay). */\n Docked: 20,\n /** Page-level sticky header / footer. */\n Sticky: 30,\n /** System banners — cookie notice, status banner, alert strip. */\n Banner: 40,\n /** Dropdowns, popovers, comboboxes, menus, hover-cards anchored to a trigger. */\n Dropdown: 50,\n /** Modal backdrop / drawer scrim — the dim layer behind a modal. */\n Overlay: 60,\n /** Modal / dialog / drawer / sheet content sitting above its backdrop. */\n Modal: 70,\n /** Popovers / menus opened FROM inside a modal — must beat Modal. */\n Popover: 80,\n /** Toasts / snackbars / undo bars — survive above modals. */\n Toast: 90,\n /** Tooltips — highest functional layer. */\n Tooltip: 100,\n /** DevTools / design-system inspector overlays. Always wins. */\n Debug: 9999,\n} as const;\n\nexport type LayerName = keyof typeof Layer;\n\n/** Inline style helper for programmatic use. */\nexport function layerStyle(layer: LayerName): { zIndex: number } {\n return { zIndex: Layer[layer] };\n}\n","/*\n * Equality comparers — reusable helpers for selection components, diff checks,\n * and any place that asks \"are these two values the same?\".\n *\n * Default comparer is `Object.is` (NaN-safe strict equality) which covers\n * strings, numbers, booleans, symbols. For complex objects, consumers pass\n * their own comparer (typically `byKey(o => o.id)`).\n */\n\n/** A function that decides whether two values are equal. */\nexport type EqualityComparer<T> = (a: T, b: T) => boolean;\n\nexport const Equality = {\n /**\n * Default. NaN-safe strict equality.\n * Correct for `string | number | boolean | symbol | null | undefined`.\n * Reference equality for objects (only same instance is equal).\n */\n strict: <T>(a: T, b: T): boolean => Object.is(a, b),\n\n /**\n * Plain `===` equality. Like `strict` but NaN !== NaN.\n * Use when you need pre-ES6 semantics; otherwise prefer `strict`.\n */\n reference: <T>(a: T, b: T): boolean => a === b,\n\n /**\n * Compare two objects by an extracted scalar key.\n *\n * @example\n * keyEquals: Equality.byKey<User>(u => u.id)\n * // → (a, b) => Object.is(a.id, b.id)\n */\n byKey:\n <T, K = unknown>(extract: (item: T) => K): EqualityComparer<T> =>\n (a, b) =>\n Object.is(extract(a), extract(b)),\n\n /**\n * Shallow object equality — equal iff every key has identical (Object.is) value.\n * Good for objects with primitive-only fields; doesn't recurse.\n */\n shallow: <T extends Record<string, unknown>>(a: T, b: T): boolean => {\n if (Object.is(a, b)) return true;\n if (a == null || b == null) return false;\n const ak = Object.keys(a);\n const bk = Object.keys(b);\n if (ak.length !== bk.length) return false;\n return ak.every((k) => Object.is(a[k], b[k]));\n },\n} as const;\n"]}
@@ -1,7 +1,7 @@
1
- import { Kbd, addDays, MONTHS_LONG, startOfDay, buildMonthGrid, WEEKDAYS_SHORT, isToday, addMonths, isSameDay } from './chunk-5V7FBKKL.js';
1
+ import { Kbd, addDays, MONTHS_LONG, startOfDay, buildMonthGrid, WEEKDAYS_SHORT, isToday, addMonths, isSameDay } from './chunk-2TKPRR4X.js';
2
2
  import { useClipboard, useControlled } from './chunk-NUMFGKPY.js';
3
3
  import { Icon } from './chunk-F227LKWK.js';
4
- import { tv, CssExtensions, dataAttr } from './chunk-34TLJSEH.js';
4
+ import { tv, CssExtensions, dataAttr } from './chunk-WU5JMO3N.js';
5
5
  import { Slot, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner } from './chunk-BMABNEZX.js';
6
6
  import { cn, composeRefs } from './chunk-LDRFQG44.js';
7
7
  import { forwardRef, useState, Children, isValidElement, Fragment as Fragment$1, createContext, useId, useMemo, useCallback, useContext, useEffect, useRef, useImperativeHandle, useLayoutEffect, cloneElement } from 'react';
@@ -5560,5 +5560,5 @@ var ActivityFeed = ActivityFeedInner;
5560
5560
  ActivityFeed.Item = ActivityItem;
5561
5561
 
5562
5562
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityFeed, ActivityItem, AnimatedNumber, AnnotationMarker, AudioPlayer, AudioWaveform, Avatar, AvatarGroup, Badge, BadgeOverlay, Card, Carousel, CarouselDot, CarouselDots, CarouselNext, CarouselPrev, CarouselSlide, CarouselSlides, CarouselViewport, ChatBubble, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Comment, CommentThread, Confetti, CountBadge, CountUp, DataGrid, DataTable, DaySeparator, DescriptionList, DiffViewer, EmptyState, EventCalendar, Gantt, GradientText, Heading, HeatmapCalendar, Highlight, Image, InfoRow, KeyboardShortcut, List, ListItem, Mark, Marquee, MessageList, NodeEditor, NotificationDot, PDFViewer, Quote, ReactionBar, ScheduleView, ScrollReveal, SectionHeader, Separator, Snippet, Sparkline, Stat, Status, SwipeActions, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeaderCell, TableRow, Tabs, TabsList, TabsPanel, TabsTab, Text, ThreadView, Tilt, Timeline, TimelineDescription, TimelineItem, TimelineTitle, Tooltip, Tree, TreeGroup, TreeItem, Typewriter, VideoPlayer, avatarVariants, badgeVariants, codeVariants, headingVariants, textVariants };
5563
- //# sourceMappingURL=chunk-ZJJ4KW6G.js.map
5564
- //# sourceMappingURL=chunk-ZJJ4KW6G.js.map
5563
+ //# sourceMappingURL=chunk-ZVOPRSED.js.map
5564
+ //# sourceMappingURL=chunk-ZVOPRSED.js.map