@neuronection/assistant-ui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +1 -0
  3. package/dist/ai-actions-dropdown.d.ts +29 -0
  4. package/dist/ai-actions-dropdown.js +3 -0
  5. package/dist/ai-actions-dropdown.js.map +1 -0
  6. package/dist/ai-button.d.ts +22 -0
  7. package/dist/ai-button.js +3 -0
  8. package/dist/ai-button.js.map +1 -0
  9. package/dist/chip-list.d.ts +1 -1
  10. package/dist/chip-list.js +1 -1
  11. package/dist/{chunk-TJGX27YO.js → chunk-34NO2UOB.js} +4 -4
  12. package/dist/chunk-34NO2UOB.js.map +1 -0
  13. package/dist/{chunk-5X3RYDPC.js → chunk-5LRRVD27.js} +4 -4
  14. package/dist/chunk-5LRRVD27.js.map +1 -0
  15. package/dist/{chunk-LEDQQBVV.js → chunk-75QQR2VT.js} +4 -4
  16. package/dist/{chunk-LEDQQBVV.js.map → chunk-75QQR2VT.js.map} +1 -1
  17. package/dist/{chunk-N5KQRHXU.js → chunk-BE3XFZWU.js} +3 -3
  18. package/dist/{chunk-N5KQRHXU.js.map → chunk-BE3XFZWU.js.map} +1 -1
  19. package/dist/{chunk-XLD2BPTT.js → chunk-BN3YHYYL.js} +3 -2
  20. package/dist/chunk-BN3YHYYL.js.map +1 -0
  21. package/dist/{chunk-5HXDKOBY.js → chunk-BUPMDOVL.js} +3 -3
  22. package/dist/{chunk-5HXDKOBY.js.map → chunk-BUPMDOVL.js.map} +1 -1
  23. package/dist/{chunk-WPO6CDA4.js → chunk-BWPNEQ3T.js} +4 -4
  24. package/dist/{chunk-WPO6CDA4.js.map → chunk-BWPNEQ3T.js.map} +1 -1
  25. package/dist/{chunk-3HFL3JGP.js → chunk-GDGKARRB.js} +4 -2
  26. package/dist/chunk-GDGKARRB.js.map +1 -0
  27. package/dist/chunk-I37SYHM7.js +123 -0
  28. package/dist/chunk-I37SYHM7.js.map +1 -0
  29. package/dist/{chunk-ESUTPQDO.js → chunk-I5J6SDLK.js} +3 -3
  30. package/dist/{chunk-ESUTPQDO.js.map → chunk-I5J6SDLK.js.map} +1 -1
  31. package/dist/{chunk-KXLMTAZ5.js → chunk-JWAX2AOO.js} +3 -3
  32. package/dist/chunk-JWAX2AOO.js.map +1 -0
  33. package/dist/chunk-L56KGPGS.js +115 -0
  34. package/dist/chunk-L56KGPGS.js.map +1 -0
  35. package/dist/{chunk-DV3MXDLN.js → chunk-OT6EQFMP.js} +3 -3
  36. package/dist/{chunk-DV3MXDLN.js.map → chunk-OT6EQFMP.js.map} +1 -1
  37. package/dist/{chunk-CI56SSO2.js → chunk-SIIY2EGI.js} +3 -3
  38. package/dist/{chunk-CI56SSO2.js.map → chunk-SIIY2EGI.js.map} +1 -1
  39. package/dist/{chunk-RHBQ3GZE.js → chunk-SXVOJ7WE.js} +4 -4
  40. package/dist/{chunk-RHBQ3GZE.js.map → chunk-SXVOJ7WE.js.map} +1 -1
  41. package/dist/{chunk-GA3XIDVX.js → chunk-TKKHWO6C.js} +3 -3
  42. package/dist/{chunk-GA3XIDVX.js.map → chunk-TKKHWO6C.js.map} +1 -1
  43. package/dist/{chunk-MEBOS2FX.js → chunk-UU2V5FGF.js} +4 -4
  44. package/dist/{chunk-MEBOS2FX.js.map → chunk-UU2V5FGF.js.map} +1 -1
  45. package/dist/{chunk-3522NABN.js → chunk-W5WDGME5.js} +3 -3
  46. package/dist/{chunk-3522NABN.js.map → chunk-W5WDGME5.js.map} +1 -1
  47. package/dist/{chunk-WZSAUESL.js → chunk-WA7Q4TTA.js} +3 -3
  48. package/dist/{chunk-WZSAUESL.js.map → chunk-WA7Q4TTA.js.map} +1 -1
  49. package/dist/combobox.js +1 -1
  50. package/dist/confirmation-modal.js +1 -1
  51. package/dist/context-menu.js +1 -1
  52. package/dist/date-picker.js +1 -1
  53. package/dist/field-label.js +1 -1
  54. package/dist/form-modal.js +1 -1
  55. package/dist/index.d.ts +3 -1
  56. package/dist/index.js +24 -22
  57. package/dist/info-button.js +1 -1
  58. package/dist/menu.js +1 -1
  59. package/dist/modal.js +2 -2
  60. package/dist/popover-button.js +1 -1
  61. package/dist/popover.js +1 -1
  62. package/dist/styles.css +1 -1
  63. package/dist/table.d.ts +1 -0
  64. package/dist/table.js +1 -1
  65. package/dist/tokens.d.ts +1 -1
  66. package/dist/tokens.js +1 -1
  67. package/dist/tooltip.js +1 -1
  68. package/dist/wizard.js +1 -1
  69. package/package.json +9 -1
  70. package/dist/chunk-3HFL3JGP.js.map +0 -1
  71. package/dist/chunk-5X3RYDPC.js.map +0 -1
  72. package/dist/chunk-KXLMTAZ5.js.map +0 -1
  73. package/dist/chunk-TJGX27YO.js.map +0 -1
  74. package/dist/chunk-XLD2BPTT.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @neuronection/assistant-ui
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`59c5f5a`](https://github.com/neuronection/assistant-ui/commit/59c5f5a545f230c88e11b056088bfbbf991dd5a8) Thanks [@constLiakos](https://github.com/constLiakos)! - Phase-4 assistant patterns: new `AiButton` (sparkles trigger + popover with
8
+ suggestion chips, typed prompt, loading/error state and an `onResponse` render
9
+ slot — the app owns the API call) and `AiActionsDropdown` (action list +
10
+ optional custom prompt, `onAction`/`onPrompt` callbacks). `AiBadge` folds into
11
+ the existing `Badge variant="ai"` instead of a new component; health's live
12
+ task-monitor AIBadge stays app-side (store-coupled, ADR-006).
13
+
14
+ ### Patch Changes
15
+
16
+ - [`8df2f7a`](https://github.com/neuronection/assistant-ui/commit/8df2f7ad0baee8649e73318857a2c9d9baa6354c) Thanks [@constLiakos](https://github.com/constLiakos)! - `ChipList`/`ChipVariant`: add an `info` variant (accent tint) — health's
17
+ taxonomy chips use it.
18
+
19
+ - [`2b3da08`](https://github.com/neuronection/assistant-ui/commit/2b3da0894dc56fa6814a083ba0700692a0b70cfb) Thanks [@constLiakos](https://github.com/constLiakos)! - `Table`'s `emptyText` is opt-in now: an empty table renders no filler row
20
+ unless `emptyText` is provided (health-assistant shows nothing for empty
21
+ tables; pass `emptyText` to keep the previous default-row behavior).
22
+
23
+ - [`8cce666`](https://github.com/neuronection/assistant-ui/commit/8cce666585b7a7cb4553c1c34e359d9fdaaa3c82) Thanks [@constLiakos](https://github.com/constLiakos)! - Overlay stacking is token-driven: new `--as-z-modal` and `--as-z-popover`
24
+ (default 50, see `tokens.css`) replace the hardcoded `z-50` on modal,
25
+ popover, menu, combobox, tooltip and wizard surfaces. Apps with high-z chrome
26
+ (health's sidebar at z-950) raise them in `theme.css`. Also: for Tailwind 3
27
+ apps, import `styles.css` **before** the app's own CSS so app variant
28
+ utilities (`lg:relative` vs a library `.fixed`) win the cascade.
29
+
3
30
  ## 0.4.0
4
31
 
5
32
  ### Minor Changes
package/README.md CHANGED
@@ -89,6 +89,7 @@ files in the package's `dist/`. Visual reference:
89
89
  | `error-banner` / `undo-notice` / `empty-state` / `spinner` | presentational feedback: alert banner with `action` slot · undo toast · `EmptyState` · `Spinner` |
90
90
  | `info-button` / `field-label` | `InfoButton` (info popover) · `FieldLabel` (label + info affordance) |
91
91
  | `copy-button` / `breadcrumbs` | `CopyButton` (clipboard + copied state) · `Breadcrumbs` (SPA links via `linkComponent`) |
92
+ | `ai-button` / `ai-actions-dropdown` | `AiButton` (suggestions + prompt + response slot) · `AiActionsDropdown` (action list + custom prompt) |
92
93
  | `marquee` | `useMarquee`, `MarqueeSurface`, `MarqueeBand` (rubber-band selection) |
93
94
  | `portal` / `theme-scope` / `tokens` | `Portal` · `ThemeScope` · token name lists + types |
94
95
 
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { LucideIcon } from 'lucide-react';
3
+
4
+ interface AiAction {
5
+ id: string;
6
+ label: string;
7
+ description?: string;
8
+ icon: LucideIcon;
9
+ }
10
+ interface AiActionsDropdownProps {
11
+ actions: AiAction[];
12
+ onAction: (action: AiAction) => void;
13
+ onPrompt?: (prompt: string) => void;
14
+ busy?: boolean;
15
+ error?: string | null;
16
+ label?: string;
17
+ title?: string;
18
+ promptLabel?: string;
19
+ promptPlaceholder?: string;
20
+ promptSubmitLabel?: string;
21
+ disabled?: boolean;
22
+ align?: 'start' | 'center' | 'end';
23
+ side?: 'top' | 'bottom' | 'left' | 'right';
24
+ className?: string;
25
+ panelClassName?: string;
26
+ }
27
+ declare const AiActionsDropdown: React.ForwardRefExoticComponent<AiActionsDropdownProps & React.RefAttributes<HTMLButtonElement>>;
28
+
29
+ export { type AiAction, AiActionsDropdown, type AiActionsDropdownProps };
@@ -0,0 +1,3 @@
1
+ export { AiActionsDropdown } from './chunk-I37SYHM7.js';
2
+ //# sourceMappingURL=ai-actions-dropdown.js.map
3
+ //# sourceMappingURL=ai-actions-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ai-actions-dropdown.js"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+
3
+ interface AiButtonProps {
4
+ onSubmit: (prompt: string) => void;
5
+ suggestions?: string[];
6
+ onResponse?: React.ReactNode;
7
+ loading?: boolean;
8
+ error?: string | null;
9
+ label?: string;
10
+ promptLabel?: string;
11
+ submitLabel?: string;
12
+ loadingLabel?: string;
13
+ placeholder?: string;
14
+ disabled?: boolean;
15
+ side?: 'top' | 'bottom' | 'left' | 'right';
16
+ align?: 'start' | 'center' | 'end';
17
+ className?: string;
18
+ panelClassName?: string;
19
+ }
20
+ declare const AiButton: React.ForwardRefExoticComponent<AiButtonProps & React.RefAttributes<HTMLButtonElement>>;
21
+
22
+ export { AiButton, type AiButtonProps };
@@ -0,0 +1,3 @@
1
+ export { AiButton } from './chunk-L56KGPGS.js';
2
+ //# sourceMappingURL=ai-button.js.map
3
+ //# sourceMappingURL=ai-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ai-button.js"}
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- type ChipVariant = 'neutral' | 'primary' | 'success' | 'warning' | 'danger';
3
+ type ChipVariant = 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
4
4
  interface ChipListProps extends React.ComponentProps<'div'> {
5
5
  items: ReadonlyArray<string | null | undefined>;
6
6
  onRemove?: (item: string) => void;
package/dist/chip-list.js CHANGED
@@ -1,3 +1,3 @@
1
- export { ChipList } from './chunk-XLD2BPTT.js';
1
+ export { ChipList } from './chunk-BN3YHYYL.js';
2
2
  //# sourceMappingURL=chip-list.js.map
3
3
  //# sourceMappingURL=chip-list.js.map
@@ -1,4 +1,4 @@
1
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-CI56SSO2.js';
1
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-SIIY2EGI.js';
2
2
  import { cn } from './chunk-BLJWR4ZV.js';
3
3
  import * as React from 'react';
4
4
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
@@ -16,7 +16,7 @@ var TooltipContent = React.forwardRef(function TooltipContent2({ className, side
16
16
  "data-as": "tooltip",
17
17
  sideOffset,
18
18
  className: cn(
19
- "as-anim-fade z-50 max-w-64 rounded-[var(--as-radius)] bg-[var(--as-fg)] px-3 py-1.5 text-xs font-medium text-[var(--as-surface)] shadow-[var(--as-shadow-2)] focus:outline-none",
19
+ "as-anim-fade z-[var(--as-z-popover)] max-w-64 rounded-[var(--as-radius)] bg-[var(--as-fg)] px-3 py-1.5 text-xs font-medium text-[var(--as-surface)] shadow-[var(--as-shadow-2)] focus:outline-none",
20
20
  className
21
21
  ),
22
22
  ...props,
@@ -56,5 +56,5 @@ function InfoTooltip({
56
56
  }
57
57
 
58
58
  export { InfoTooltip, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
59
- //# sourceMappingURL=chunk-TJGX27YO.js.map
60
- //# sourceMappingURL=chunk-TJGX27YO.js.map
59
+ //# sourceMappingURL=chunk-34NO2UOB.js.map
60
+ //# sourceMappingURL=chunk-34NO2UOB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/tooltip/Tooltip.tsx","../src/components/tooltip/InfoTooltip.tsx"],"names":["TooltipContent","jsx"],"mappings":";;;;;;;AAIO,IAAM,eAAA,GAAmC,gBAAA,CAAA;AACzC,IAAM,OAAA,GAA2B,gBAAA,CAAA;AACjC,IAAM,cAAA,GAAkC,gBAAA,CAAA;AAExC,IAAM,cAAA,GAAuB,KAAA,CAAA,UAAA,CAGlC,SAASA,eAAAA,CAAe,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAChF,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAQ,SAAA;AAAA,MACR,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,oMAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAC;ACVM,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAM,IAAA,GAAO,IAAA;AAAA,EACb,IAAA,GAAO,KAAA;AAAA,EACP,OAAA,GAAU,OAAA;AAAA,EACV,KAAA,GAAQ,aAAA;AAAA,EACR;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,mBAAA,GAAsB,EAAA;AAAA,IAC1B,uRAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,IAAC,cAAA,EAAA,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAAA,GAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,KAAA,EAAO,SAAA,EAAW,qBAClD,QAAA,kBAAAA,GAAAA,CAAC,QAAK,SAAA,EAAU,QAAA,EAAS,GAC3B,CAAA,EACF,CAAA;AAAA,sBACA,IAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAY,SAAA,EAAU,MAAA,EACnC,QAAA,EAAA;AAAA,QAAA,KAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAA,EAAsD,iBAAM,CAAA,GACvE,IAAA;AAAA,wBACJA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAqD,QAAA,EAAA,OAAA,EAAQ;AAAA,OAAA,EAC9E;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAC,cAAA,EAAA,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAAA,GAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,KAAA,EAAO,SAAA,EAAW,qBAClD,QAAA,kBAAAA,GAAAA,CAAC,QAAK,SAAA,EAAU,QAAA,EAAS,GAC3B,CAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,kBAAe,IAAA,EACb,QAAA,EAAA;AAAA,MAAA,KAAA,mBAAQA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBAAA,EAAwB,iBAAM,CAAA,GAAO,IAAA;AAAA,MAC1D;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-34NO2UOB.js","sourcesContent":["import * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../../lib/utils'\n\nexport const TooltipProvider = TooltipPrimitive.Provider\nexport const Tooltip = TooltipPrimitive.Root\nexport const TooltipTrigger = TooltipPrimitive.Trigger\n\nexport const TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(function TooltipContent({ className, sideOffset = 6, children, ...props }, ref) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n data-as=\"tooltip\"\n sideOffset={sideOffset}\n className={cn(\n 'as-anim-fade z-[var(--as-z-popover)] max-w-64 rounded-[var(--as-radius)] bg-[var(--as-fg)] px-3 py-1.5 text-xs font-medium text-[var(--as-surface)] shadow-[var(--as-shadow-2)] focus:outline-none',\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n})\n","import * as React from 'react'\nimport { Info } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover/Popover'\nimport { Tooltip, TooltipContent, TooltipTrigger } from './Tooltip'\n\ntype IconType = React.ComponentType<{ className?: string }>\n\nexport interface InfoTooltipProps {\n content: React.ReactNode\n title?: string\n icon?: IconType\n side?: 'top' | 'bottom' | 'left' | 'right'\n trigger?: 'hover' | 'click'\n label?: string\n className?: string\n}\n\nexport function InfoTooltip({\n content,\n title,\n icon: Icon = Info,\n side = 'top',\n trigger = 'hover',\n label = 'Information',\n className,\n}: InfoTooltipProps) {\n const iconButtonClassName = cn(\n 'inline-flex size-6 items-center justify-center rounded-[var(--as-radius-sm)] text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]',\n className,\n )\n\n if (trigger === 'click') {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button type=\"button\" aria-label={label} className={iconButtonClassName}>\n <Icon className=\"size-4\" />\n </button>\n </PopoverTrigger>\n <PopoverContent side={side} className=\"w-72\">\n {title ? (\n <p className=\"mb-1 text-xs font-semibold uppercase tracking-wide\">{title}</p>\n ) : null}\n <div className=\"text-sm leading-relaxed text-[var(--as-muted-fg)]\">{content}</div>\n </PopoverContent>\n </Popover>\n )\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <button type=\"button\" aria-label={label} className={iconButtonClassName}>\n <Icon className=\"size-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side={side}>\n {title ? <p className=\"mb-0.5 font-semibold\">{title}</p> : null}\n {content}\n </TooltipContent>\n </Tooltip>\n )\n}\n"]}
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
 
5
5
  var Table = React.forwardRef(
6
- function Table2({ headers, rows, emptyText = "Nothing here yet", className, ...props }, ref) {
6
+ function Table2({ headers, rows, emptyText, className, ...props }, ref) {
7
7
  return /* @__PURE__ */ jsx(
8
8
  "div",
9
9
  {
@@ -21,7 +21,7 @@ var Table = React.forwardRef(
21
21
  },
22
22
  index
23
23
  )) }) }),
24
- /* @__PURE__ */ jsx("tbody", { className: "divide-y divide-[color-mix(in_srgb,var(--as-border)_55%,transparent)] bg-[var(--as-surface-raised)]", children: rows.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
24
+ /* @__PURE__ */ jsx("tbody", { className: "divide-y divide-[color-mix(in_srgb,var(--as-border)_55%,transparent)] bg-[var(--as-surface-raised)]", children: rows.length === 0 && emptyText ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
25
25
  "td",
26
26
  {
27
27
  colSpan: headers.length,
@@ -50,5 +50,5 @@ var Table = React.forwardRef(
50
50
  );
51
51
 
52
52
  export { Table };
53
- //# sourceMappingURL=chunk-5X3RYDPC.js.map
54
- //# sourceMappingURL=chunk-5X3RYDPC.js.map
53
+ //# sourceMappingURL=chunk-5LRRVD27.js.map
54
+ //# sourceMappingURL=chunk-5LRRVD27.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/table/Table.tsx"],"names":["Table"],"mappings":";;;;AAUO,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA;AAAA,EACzB,SAASA,MAAAA,CAAM,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AACrE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAQ,OAAA;AAAA,QACR,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,QACzC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,+CAAA,EACf,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAA,EAAA,EAAM,WAAU,sBAAA,EACf,QAAA,kBAAA,GAAA,CAAC,QACE,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACpB,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,KAAA,EAAM,KAAA;AAAA,cACN,SAAA,EAAU,8FAAA;AAAA,cAET,QAAA,EAAA;AAAA,aAAA;AAAA,YAJI;AAAA,WAMR,GACH,CAAA,EACF,CAAA;AAAA,0BACA,GAAA,CAAC,WAAM,SAAA,EAAU,qGAAA,EACd,eAAK,MAAA,KAAW,CAAA,IAAK,SAAA,mBACpB,GAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAS,OAAA,CAAQ,MAAA;AAAA,cACjB,SAAA,EAAU,yDAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,aAEL,CAAA,GAEA,IAAA,CAAK,GAAA,CAAI,CAAC,KAAK,QAAA,qBACb,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,iFAAA;AAAA,cAET,QAAA,EAAA,GAAA,CAAI,GAAA,CAAI,CAAC,IAAA,EAAM,SAAA,qBACd,GAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,yDAAA;AAAA,kBAET,QAAA,EAAA;AAAA,iBAAA;AAAA,gBAHI;AAAA,eAKR;AAAA,aAAA;AAAA,YAVI;AAAA,WAYR,CAAA,EAEL;AAAA,SAAA,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF","file":"chunk-5LRRVD27.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface TableProps extends React.ComponentProps<'div'> {\n headers: string[]\n rows: React.ReactNode[][]\n /** Rendered as a full-width row when the table is empty. No default. */\n emptyText?: string\n}\n\nexport const Table = React.forwardRef<HTMLDivElement, TableProps>(\n function Table({ headers, rows, emptyText, className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-as=\"table\"\n className={cn('overflow-x-auto', className)}\n {...props}\n >\n <table className=\"min-w-full divide-y divide-[var(--as-border)]\">\n <thead className=\"bg-[var(--as-muted)]\">\n <tr>\n {headers.map((header, index) => (\n <th\n key={index}\n scope=\"col\"\n className=\"px-4 py-2.5 text-left text-xs font-medium uppercase tracking-wider text-[var(--as-muted-fg)]\"\n >\n {header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-[color-mix(in_srgb,var(--as-border)_55%,transparent)] bg-[var(--as-surface-raised)]\">\n {rows.length === 0 && emptyText ? (\n <tr>\n <td\n colSpan={headers.length}\n className=\"px-4 py-6 text-center text-sm text-[var(--as-muted-fg)]\"\n >\n {emptyText}\n </td>\n </tr>\n ) : (\n rows.map((row, rowIndex) => (\n <tr\n key={rowIndex}\n className=\"transition-colors hover:bg-[color-mix(in_srgb,var(--as-muted)_60%,transparent)]\"\n >\n {row.map((cell, cellIndex) => (\n <td\n key={cellIndex}\n className=\"whitespace-nowrap px-4 py-3 text-sm text-[var(--as-fg)]\"\n >\n {cell}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n )\n },\n)\n"]}
@@ -116,7 +116,7 @@ function Wizard({
116
116
  DialogPrimitive.Overlay,
117
117
  {
118
118
  "data-as": "wizard-overlay",
119
- className: "as-anim-fade fixed inset-0 z-50 bg-[var(--as-overlay)]"
119
+ className: "as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]"
120
120
  }
121
121
  ),
122
122
  /* @__PURE__ */ jsxs(
@@ -126,7 +126,7 @@ function Wizard({
126
126
  "aria-describedby": void 0,
127
127
  className: cn(
128
128
  "flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
129
- variant === "drawer" ? "as-anim-drawer fixed inset-y-0 right-0 z-50 h-full w-4/5 max-w-md border-l" : "as-anim-modal fixed left-1/2 top-1/2 z-50 max-h-[92vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--as-radius-lg)]",
129
+ variant === "drawer" ? "as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l" : "as-anim-modal fixed left-1/2 top-1/2 z-[var(--as-z-modal)] max-h-[92vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--as-radius-lg)]",
130
130
  variant === "modal" && cn(
131
131
  size === "sm" && "max-w-sm",
132
132
  size === "md" && "max-w-md",
@@ -180,5 +180,5 @@ function Wizard({
180
180
  }
181
181
 
182
182
  export { Stepper, Wizard };
183
- //# sourceMappingURL=chunk-LEDQQBVV.js.map
184
- //# sourceMappingURL=chunk-LEDQQBVV.js.map
183
+ //# sourceMappingURL=chunk-75QQR2VT.js.map
184
+ //# sourceMappingURL=chunk-75QQR2VT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-LEDQQBVV.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Sparkles, X, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\n\nexport interface StepperStep {\n id: string\n label?: React.ReactNode\n icon?: LucideIcon\n}\n\nexport interface StepperProps {\n steps: StepperStep[]\n current: number\n variant?: 'dots' | 'labels'\n onStepClick?: (index: number) => void\n className?: string\n}\n\nexport function Stepper({\n steps,\n current,\n variant = 'dots',\n onStepClick,\n className,\n}: StepperProps) {\n if (variant === 'dots') {\n return (\n <div className={cn('flex items-center gap-1.5', className)} data-as=\"stepper\">\n <span className=\"sr-only\">\n Step {Math.min(current + 1, steps.length)} of {steps.length}\n </span>\n <div className=\"flex items-center gap-1.5\" aria-hidden>\n {steps.map((step, index) => (\n <span\n key={step.id}\n className={cn(\n 'size-2 rounded-full',\n index === current\n ? 'bg-[var(--as-primary)]'\n : index < current\n ? 'bg-[var(--as-primary)]/50'\n : 'bg-[var(--as-border)]',\n )}\n />\n ))}\n </div>\n </div>\n )\n }\n return (\n <ol className={cn('flex items-center gap-1', className)} data-as=\"stepper\">\n {steps.map((step, index) => {\n const Icon = step.icon\n const state = index < current ? 'done' : index === current ? 'current' : 'todo'\n const disabled = onStepClick === undefined || state === 'current'\n return (\n <li key={step.id}>\n <button\n type=\"button\"\n aria-current={state === 'current' ? 'step' : undefined}\n disabled={disabled}\n onClick={() => onStepClick?.(index)}\n className={cn(\n 'flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] px-2.5 py-1.5 text-sm transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:cursor-default',\n state === 'current' && 'bg-[var(--as-primary)]/10 font-medium text-[var(--as-primary)]',\n state === 'done' && 'text-[var(--as-fg)] hover:bg-[var(--as-secondary)]',\n state === 'todo' && 'text-[var(--as-muted-fg)] hover:bg-[var(--as-secondary)]',\n )}\n >\n {Icon ? <Icon className=\"size-4\" aria-hidden /> : null}\n {step.label}\n </button>\n </li>\n )\n })}\n </ol>\n )\n}\n\nexport interface WizardStep {\n id: string\n icon?: LucideIcon\n title?: React.ReactNode\n subtitle?: React.ReactNode\n canContinue?: boolean\n nextLabel?: string\n hideFooter?: boolean\n}\n\nexport interface WizardContext {\n id: string\n index: number\n step: WizardStep\n isFirst: boolean\n isLast: boolean\n next: () => void\n back: () => void\n goTo: (index: number) => void\n}\n\nexport interface WizardProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n steps: WizardStep[]\n renderStep: (ctx: WizardContext) => React.ReactNode\n initialStep?: number\n step?: number\n onStepChange?: (index: number) => void\n onSkip?: () => void\n skipLabel?: string | null\n backLabel?: string\n nextLabel?: string\n getStartedLabel?: string\n closeLabel?: string\n variant?: 'modal' | 'drawer'\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n}\n\nexport function Wizard({\n open,\n onOpenChange,\n title,\n steps,\n renderStep,\n initialStep = 0,\n step: stepProp,\n onStepChange,\n onSkip,\n skipLabel = 'Skip',\n backLabel = 'Back',\n nextLabel = 'Next',\n getStartedLabel = 'Get started',\n closeLabel = 'Close',\n variant = 'modal',\n size = 'lg',\n contentClassName,\n}: WizardProps) {\n const [internalStep, setInternalStep] = React.useState(initialStep)\n const isControlled = stepProp !== undefined\n const step = isControlled ? stepProp : internalStep\n const lastStep = Math.max(steps.length - 1, 0)\n const clamped = Math.min(Math.max(step, 0), lastStep)\n const current: WizardStep | undefined = steps[clamped]\n const StepIcon = current?.icon ?? Sparkles\n\n React.useEffect(() => {\n if (!open && !isControlled) {\n setInternalStep(initialStep)\n }\n }, [open, isControlled, initialStep])\n\n const goTo = React.useCallback(\n (index: number) => {\n const next = Math.min(Math.max(index, 0), lastStep)\n if (!isControlled) {\n setInternalStep(next)\n }\n onStepChange?.(next)\n },\n [isControlled, lastStep, onStepChange],\n )\n\n const ctx: WizardContext = {\n id: current?.id ?? '',\n index: clamped,\n step: current ?? { id: 'empty' },\n isFirst: clamped === 0,\n isLast: clamped === lastStep,\n next: () => goTo(clamped + 1),\n back: () => goTo(clamped - 1),\n goTo,\n }\n\n const skip = onSkip ?? (() => onOpenChange(false))\n const showFooter = !(current?.hideFooter ?? clamped === lastStep)\n const canContinue = current?.canContinue !== false\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"wizard-overlay\"\n className=\"as-anim-fade fixed inset-0 z-50 bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n data-as=\"wizard\"\n aria-describedby={undefined}\n className={cn(\n 'flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n variant === 'drawer'\n ? 'as-anim-drawer fixed inset-y-0 right-0 z-50 h-full w-4/5 max-w-md border-l'\n : 'as-anim-modal fixed left-1/2 top-1/2 z-50 max-h-[92vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--as-radius-lg)]',\n variant === 'modal' &&\n cn(\n size === 'sm' && 'max-w-sm',\n size === 'md' && 'max-w-md',\n size === 'lg' && 'max-w-2xl',\n size === 'xl' && 'max-w-4xl',\n ),\n contentClassName,\n )}\n >\n <div className=\"flex items-center gap-3 border-b border-[var(--as-border)] px-5 py-4\">\n <span className=\"flex size-9 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-primary)]/10 text-[var(--as-primary)]\">\n <StepIcon className=\"size-5\" aria-hidden />\n </span>\n <div className=\"min-w-0 flex-1\">\n <DialogPrimitive.Title className=\"truncate text-sm font-semibold\">\n {title}\n </DialogPrimitive.Title>\n {current?.subtitle !== undefined ? (\n <p className=\"truncate text-xs text-[var(--as-muted-fg)]\">\n {current.subtitle}\n </p>\n ) : null}\n </div>\n <Stepper steps={steps} current={clamped} variant=\"dots\" />\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={closeLabel}\n aria-label={closeLabel}\n onClick={skip}\n >\n <X className=\"size-4\" aria-hidden />\n </Button>\n </DialogPrimitive.Close>\n </div>\n <div className=\"flex-1 overflow-y-auto px-5 py-4\" data-as=\"wizard-body\">\n {current?.title !== undefined ? (\n <h2 className=\"mb-3 text-lg font-semibold\">{current.title}</h2>\n ) : null}\n {open ? renderStep(ctx) : null}\n </div>\n {showFooter ? (\n <div className=\"flex items-center gap-2 border-t border-[var(--as-border)] px-5 py-3\">\n <Button variant=\"ghost\" size=\"sm\" disabled={clamped === 0} onClick={ctx.back}>\n {backLabel}\n </Button>\n <div className=\"flex-1\" />\n {skipLabel !== null ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\n {skipLabel}\n </Button>\n ) : null}\n <Button\n size=\"sm\"\n disabled={!canContinue}\n onClick={ctx.next}\n >\n {clamped === 0 ? getStartedLabel : (current?.nextLabel ?? nextLabel)}\n </Button>\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-75QQR2VT.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { Sparkles, X, type LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\n\nexport interface StepperStep {\n id: string\n label?: React.ReactNode\n icon?: LucideIcon\n}\n\nexport interface StepperProps {\n steps: StepperStep[]\n current: number\n variant?: 'dots' | 'labels'\n onStepClick?: (index: number) => void\n className?: string\n}\n\nexport function Stepper({\n steps,\n current,\n variant = 'dots',\n onStepClick,\n className,\n}: StepperProps) {\n if (variant === 'dots') {\n return (\n <div className={cn('flex items-center gap-1.5', className)} data-as=\"stepper\">\n <span className=\"sr-only\">\n Step {Math.min(current + 1, steps.length)} of {steps.length}\n </span>\n <div className=\"flex items-center gap-1.5\" aria-hidden>\n {steps.map((step, index) => (\n <span\n key={step.id}\n className={cn(\n 'size-2 rounded-full',\n index === current\n ? 'bg-[var(--as-primary)]'\n : index < current\n ? 'bg-[var(--as-primary)]/50'\n : 'bg-[var(--as-border)]',\n )}\n />\n ))}\n </div>\n </div>\n )\n }\n return (\n <ol className={cn('flex items-center gap-1', className)} data-as=\"stepper\">\n {steps.map((step, index) => {\n const Icon = step.icon\n const state = index < current ? 'done' : index === current ? 'current' : 'todo'\n const disabled = onStepClick === undefined || state === 'current'\n return (\n <li key={step.id}>\n <button\n type=\"button\"\n aria-current={state === 'current' ? 'step' : undefined}\n disabled={disabled}\n onClick={() => onStepClick?.(index)}\n className={cn(\n 'flex cursor-pointer items-center gap-1.5 rounded-[var(--as-radius)] px-2.5 py-1.5 text-sm transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:cursor-default',\n state === 'current' && 'bg-[var(--as-primary)]/10 font-medium text-[var(--as-primary)]',\n state === 'done' && 'text-[var(--as-fg)] hover:bg-[var(--as-secondary)]',\n state === 'todo' && 'text-[var(--as-muted-fg)] hover:bg-[var(--as-secondary)]',\n )}\n >\n {Icon ? <Icon className=\"size-4\" aria-hidden /> : null}\n {step.label}\n </button>\n </li>\n )\n })}\n </ol>\n )\n}\n\nexport interface WizardStep {\n id: string\n icon?: LucideIcon\n title?: React.ReactNode\n subtitle?: React.ReactNode\n canContinue?: boolean\n nextLabel?: string\n hideFooter?: boolean\n}\n\nexport interface WizardContext {\n id: string\n index: number\n step: WizardStep\n isFirst: boolean\n isLast: boolean\n next: () => void\n back: () => void\n goTo: (index: number) => void\n}\n\nexport interface WizardProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n steps: WizardStep[]\n renderStep: (ctx: WizardContext) => React.ReactNode\n initialStep?: number\n step?: number\n onStepChange?: (index: number) => void\n onSkip?: () => void\n skipLabel?: string | null\n backLabel?: string\n nextLabel?: string\n getStartedLabel?: string\n closeLabel?: string\n variant?: 'modal' | 'drawer'\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n}\n\nexport function Wizard({\n open,\n onOpenChange,\n title,\n steps,\n renderStep,\n initialStep = 0,\n step: stepProp,\n onStepChange,\n onSkip,\n skipLabel = 'Skip',\n backLabel = 'Back',\n nextLabel = 'Next',\n getStartedLabel = 'Get started',\n closeLabel = 'Close',\n variant = 'modal',\n size = 'lg',\n contentClassName,\n}: WizardProps) {\n const [internalStep, setInternalStep] = React.useState(initialStep)\n const isControlled = stepProp !== undefined\n const step = isControlled ? stepProp : internalStep\n const lastStep = Math.max(steps.length - 1, 0)\n const clamped = Math.min(Math.max(step, 0), lastStep)\n const current: WizardStep | undefined = steps[clamped]\n const StepIcon = current?.icon ?? Sparkles\n\n React.useEffect(() => {\n if (!open && !isControlled) {\n setInternalStep(initialStep)\n }\n }, [open, isControlled, initialStep])\n\n const goTo = React.useCallback(\n (index: number) => {\n const next = Math.min(Math.max(index, 0), lastStep)\n if (!isControlled) {\n setInternalStep(next)\n }\n onStepChange?.(next)\n },\n [isControlled, lastStep, onStepChange],\n )\n\n const ctx: WizardContext = {\n id: current?.id ?? '',\n index: clamped,\n step: current ?? { id: 'empty' },\n isFirst: clamped === 0,\n isLast: clamped === lastStep,\n next: () => goTo(clamped + 1),\n back: () => goTo(clamped - 1),\n goTo,\n }\n\n const skip = onSkip ?? (() => onOpenChange(false))\n const showFooter = !(current?.hideFooter ?? clamped === lastStep)\n const canContinue = current?.canContinue !== false\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"wizard-overlay\"\n className=\"as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n data-as=\"wizard\"\n aria-describedby={undefined}\n className={cn(\n 'flex flex-col overflow-hidden border border-[var(--as-border)] bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n variant === 'drawer'\n ? 'as-anim-drawer fixed inset-y-0 right-0 z-[var(--as-z-modal)] h-full w-4/5 max-w-md border-l'\n : 'as-anim-modal fixed left-1/2 top-1/2 z-[var(--as-z-modal)] max-h-[92vh] w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--as-radius-lg)]',\n variant === 'modal' &&\n cn(\n size === 'sm' && 'max-w-sm',\n size === 'md' && 'max-w-md',\n size === 'lg' && 'max-w-2xl',\n size === 'xl' && 'max-w-4xl',\n ),\n contentClassName,\n )}\n >\n <div className=\"flex items-center gap-3 border-b border-[var(--as-border)] px-5 py-4\">\n <span className=\"flex size-9 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-primary)]/10 text-[var(--as-primary)]\">\n <StepIcon className=\"size-5\" aria-hidden />\n </span>\n <div className=\"min-w-0 flex-1\">\n <DialogPrimitive.Title className=\"truncate text-sm font-semibold\">\n {title}\n </DialogPrimitive.Title>\n {current?.subtitle !== undefined ? (\n <p className=\"truncate text-xs text-[var(--as-muted-fg)]\">\n {current.subtitle}\n </p>\n ) : null}\n </div>\n <Stepper steps={steps} current={clamped} variant=\"dots\" />\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={closeLabel}\n aria-label={closeLabel}\n onClick={skip}\n >\n <X className=\"size-4\" aria-hidden />\n </Button>\n </DialogPrimitive.Close>\n </div>\n <div className=\"flex-1 overflow-y-auto px-5 py-4\" data-as=\"wizard-body\">\n {current?.title !== undefined ? (\n <h2 className=\"mb-3 text-lg font-semibold\">{current.title}</h2>\n ) : null}\n {open ? renderStep(ctx) : null}\n </div>\n {showFooter ? (\n <div className=\"flex items-center gap-2 border-t border-[var(--as-border)] px-5 py-3\">\n <Button variant=\"ghost\" size=\"sm\" disabled={clamped === 0} onClick={ctx.back}>\n {backLabel}\n </Button>\n <div className=\"flex-1\" />\n {skipLabel !== null ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\n {skipLabel}\n </Button>\n ) : null}\n <Button\n size=\"sm\"\n disabled={!canContinue}\n onClick={ctx.next}\n >\n {clamped === 0 ? getStartedLabel : (current?.nextLabel ?? nextLabel)}\n </Button>\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n"]}
@@ -93,7 +93,7 @@ function PopoverButton({
93
93
  }
94
94
  } : void 0,
95
95
  className: cn(
96
- "as-anim-pop z-50 w-80 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-3 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] outline-none",
96
+ "as-anim-pop z-[var(--as-z-popover)] w-80 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-3 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] outline-none",
97
97
  panelClassName
98
98
  ),
99
99
  children: content
@@ -103,5 +103,5 @@ function PopoverButton({
103
103
  }
104
104
 
105
105
  export { PopoverButton };
106
- //# sourceMappingURL=chunk-N5KQRHXU.js.map
107
- //# sourceMappingURL=chunk-N5KQRHXU.js.map
106
+ //# sourceMappingURL=chunk-BE3XFZWU.js.map
107
+ //# sourceMappingURL=chunk-BE3XFZWU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/popover-button/PopoverButton.tsx"],"names":[],"mappings":"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","file":"chunk-N5KQRHXU.js","sourcesContent":["import * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../../lib/utils'\n\nexport interface PopoverButtonProps {\n trigger: React.ReactNode\n children: React.ReactNode | (() => React.ReactNode)\n label: string\n align?: 'start' | 'center' | 'end'\n side?: 'top' | 'right' | 'bottom' | 'left'\n sideOffset?: number\n panelClassName?: string\n triggerClassName?: string\n openOnHover?: boolean\n focusOnOpen?: boolean\n preserveFocus?: boolean\n closeSignal?: number\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n}\n\nexport function PopoverButton({\n trigger,\n children,\n label,\n align = 'end',\n side = 'bottom',\n sideOffset = 8,\n panelClassName,\n triggerClassName,\n openOnHover = false,\n focusOnOpen = true,\n preserveFocus = false,\n closeSignal = 0,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n}: PopoverButtonProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = openProp !== undefined\n const open = isControlled ? openProp : uncontrolledOpen\n const contentRef = React.useRef<HTMLDivElement | null>(null)\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n React.useEffect(() => {\n if (closeSignal > 0) {\n setOpen(false)\n }\n }, [closeSignal, setOpen])\n\n const content =\n typeof children === 'function' ? (open ? children() : null) : children\n\n const hoverProps = openOnHover\n ? {\n onMouseEnter: () => setOpen(true),\n onMouseLeave: (event: React.MouseEvent) => {\n const related = event.relatedTarget\n if (related instanceof Node && contentRef.current?.contains(related) === true) {\n return\n }\n setOpen(false)\n },\n }\n : {}\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <span className=\"relative inline-flex\" data-as=\"popover-button\" {...hoverProps}>\n <PopoverPrimitive.Trigger\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center justify-center gap-1 rounded-full transition-colors hover:bg-[var(--as-secondary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50',\n triggerClassName ?? 'size-9',\n )}\n onMouseDown={preserveFocus ? (event) => event.preventDefault() : undefined}\n onClick={\n openOnHover\n ? (event) => {\n event.preventDefault()\n setOpen(true)\n }\n : undefined\n }\n >\n {trigger}\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={contentRef}\n role=\"dialog\"\n aria-label={label}\n align={align}\n side={side}\n sideOffset={sideOffset}\n collisionPadding={8}\n onOpenAutoFocus={(event) => {\n if (!focusOnOpen) {\n event.preventDefault()\n }\n }}\n onMouseLeave={\n openOnHover\n ? (event) => {\n const related = event.relatedTarget\n const insideTrigger =\n related instanceof Element &&\n related.closest('[data-as=\"popover-button\"]') !== null\n const insideContent =\n related instanceof Node && contentRef.current?.contains(related) === true\n if (!insideTrigger && !insideContent) {\n setOpen(false)\n }\n }\n : undefined\n }\n className={cn(\n 'as-anim-pop z-50 w-80 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-3 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] outline-none',\n panelClassName,\n )}\n >\n {content}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </span>\n </PopoverPrimitive.Root>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/popover-button/PopoverButton.tsx"],"names":[],"mappings":"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","file":"chunk-BE3XFZWU.js","sourcesContent":["import * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../../lib/utils'\n\nexport interface PopoverButtonProps {\n trigger: React.ReactNode\n children: React.ReactNode | (() => React.ReactNode)\n label: string\n align?: 'start' | 'center' | 'end'\n side?: 'top' | 'right' | 'bottom' | 'left'\n sideOffset?: number\n panelClassName?: string\n triggerClassName?: string\n openOnHover?: boolean\n focusOnOpen?: boolean\n preserveFocus?: boolean\n closeSignal?: number\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n disabled?: boolean\n}\n\nexport function PopoverButton({\n trigger,\n children,\n label,\n align = 'end',\n side = 'bottom',\n sideOffset = 8,\n panelClassName,\n triggerClassName,\n openOnHover = false,\n focusOnOpen = true,\n preserveFocus = false,\n closeSignal = 0,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n}: PopoverButtonProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = openProp !== undefined\n const open = isControlled ? openProp : uncontrolledOpen\n const contentRef = React.useRef<HTMLDivElement | null>(null)\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n React.useEffect(() => {\n if (closeSignal > 0) {\n setOpen(false)\n }\n }, [closeSignal, setOpen])\n\n const content =\n typeof children === 'function' ? (open ? children() : null) : children\n\n const hoverProps = openOnHover\n ? {\n onMouseEnter: () => setOpen(true),\n onMouseLeave: (event: React.MouseEvent) => {\n const related = event.relatedTarget\n if (related instanceof Node && contentRef.current?.contains(related) === true) {\n return\n }\n setOpen(false)\n },\n }\n : {}\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <span className=\"relative inline-flex\" data-as=\"popover-button\" {...hoverProps}>\n <PopoverPrimitive.Trigger\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center justify-center gap-1 rounded-full transition-colors hover:bg-[var(--as-secondary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)] disabled:pointer-events-none disabled:opacity-50',\n triggerClassName ?? 'size-9',\n )}\n onMouseDown={preserveFocus ? (event) => event.preventDefault() : undefined}\n onClick={\n openOnHover\n ? (event) => {\n event.preventDefault()\n setOpen(true)\n }\n : undefined\n }\n >\n {trigger}\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={contentRef}\n role=\"dialog\"\n aria-label={label}\n align={align}\n side={side}\n sideOffset={sideOffset}\n collisionPadding={8}\n onOpenAutoFocus={(event) => {\n if (!focusOnOpen) {\n event.preventDefault()\n }\n }}\n onMouseLeave={\n openOnHover\n ? (event) => {\n const related = event.relatedTarget\n const insideTrigger =\n related instanceof Element &&\n related.closest('[data-as=\"popover-button\"]') !== null\n const insideContent =\n related instanceof Node && contentRef.current?.contains(related) === true\n if (!insideTrigger && !insideContent) {\n setOpen(false)\n }\n }\n : undefined\n }\n className={cn(\n 'as-anim-pop z-[var(--as-z-popover)] w-80 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface-raised)] p-3 text-[var(--as-fg)] shadow-[var(--as-shadow-3)] outline-none',\n panelClassName,\n )}\n >\n {content}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </span>\n </PopoverPrimitive.Root>\n )\n}\n"]}
@@ -5,6 +5,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
 
6
6
  var chipTints = {
7
7
  primary: "bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]",
8
+ info: "bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]",
8
9
  success: "bg-[color-mix(in_srgb,var(--as-success)_14%,transparent)] text-[var(--as-success)]",
9
10
  warning: "bg-[color-mix(in_srgb,var(--as-warning)_18%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]",
10
11
  danger: "bg-[color-mix(in_srgb,var(--as-danger)_12%,transparent)] text-[var(--as-danger)]"
@@ -78,5 +79,5 @@ var ChipList = React.forwardRef(
78
79
  );
79
80
 
80
81
  export { ChipList };
81
- //# sourceMappingURL=chunk-XLD2BPTT.js.map
82
- //# sourceMappingURL=chunk-XLD2BPTT.js.map
82
+ //# sourceMappingURL=chunk-BN3YHYYL.js.map
83
+ //# sourceMappingURL=chunk-BN3YHYYL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chip-list/ChipList.tsx"],"names":["ChipList"],"mappings":";;;;;AAsBA,IAAM,SAAA,GAA6D;AAAA,EACjE,OAAA,EAAS,oFAAA;AAAA,EACT,IAAA,EAAM,oFAAA;AAAA,EACN,OAAA,EACE,oFAAA;AAAA,EACF,OAAA,EACE,wHAAA;AAAA,EACF,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASA,SAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,WAAA,GAAc,QAAA;AAAA,IACd,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,UAAU,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAyB,OAAA,CAAQ,IAAI,CAAC,CAAA;AAEpE,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,MAAA,2BACG,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,mCAAA,EAAqC,SAAS,GAC5D,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAQ,WAAA;AAAA,QACR,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,QAChD,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC5B,UAAA,MAAM,IAAA,GACJ,OAAA,KAAY,SAAA,GACR,wDAAA,GACA,UAAU,OAAO,CAAA;AACvB,UAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,IAAA;AAAA,YACA,WAAA,IAAe,8BACd,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB,aAAA,EAAW,MAAC,CAAA,GACtD;AAAA,WAAA,EACN,CAAA;AAEF,UAAA,uBACE,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,iHAAA;AAAA,gBACA,WAAA,IACE,4JAAA;AAAA,gBACF;AAAA,eACF;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,WAAA,mBACC,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAS,MAAM,WAAA,CAAY,IAAA,EAAM,KAAK,CAAA;AAAA,oBACtC,SAAA,EAAU,6DAAA;AAAA,oBAET,QAAA,EAAA;AAAA;AAAA,iBACH,GAEA,OAAA;AAAA,gBAED,QAAA,mBACC,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAY,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA,oBAClC,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,oBAC5B,SAAA,EAAU,iMAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA,iBACpC,GACE;AAAA;AAAA,aAAA;AAAA,YA5BC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,WA6BvB;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF","file":"chunk-BN3YHYYL.js","sourcesContent":["import * as React from 'react'\nimport { ChevronRight, X } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport type ChipVariant =\n | 'neutral'\n | 'primary'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n\nexport interface ChipListProps extends React.ComponentProps<'div'> {\n items: ReadonlyArray<string | null | undefined>\n onRemove?: (item: string) => void\n onItemClick?: (value: string, index: number) => void\n variant?: ChipVariant\n emptyText?: string\n showChevron?: boolean\n removeLabel?: string\n}\n\nconst chipTints: Record<Exclude<ChipVariant, 'neutral'>, string> = {\n primary: 'bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]',\n info: 'bg-[color-mix(in_srgb,var(--as-primary)_12%,transparent)] text-[var(--as-primary)]',\n success:\n 'bg-[color-mix(in_srgb,var(--as-success)_14%,transparent)] text-[var(--as-success)]',\n warning:\n 'bg-[color-mix(in_srgb,var(--as-warning)_18%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]',\n danger: 'bg-[color-mix(in_srgb,var(--as-danger)_12%,transparent)] text-[var(--as-danger)]',\n}\n\nexport const ChipList = React.forwardRef<HTMLDivElement, ChipListProps>(\n function ChipList(\n {\n items,\n onRemove,\n onItemClick,\n variant = 'neutral',\n emptyText,\n showChevron = false,\n removeLabel = 'Remove',\n className,\n ...props\n },\n ref,\n ) {\n const cleaned = items.filter((item): item is string => Boolean(item))\n\n if (cleaned.length === 0) {\n if (!emptyText) return null\n return (\n <p className={cn('text-sm text-[var(--as-muted-fg)]', className)}>\n {emptyText}\n </p>\n )\n }\n\n return (\n <div\n ref={ref}\n data-as=\"chip-list\"\n className={cn('flex flex-wrap gap-1.5', className)}\n {...props}\n >\n {cleaned.map((item, index) => {\n const tint =\n variant === 'neutral'\n ? 'bg-[var(--as-secondary)] text-[var(--as-secondary-fg)]'\n : chipTints[variant]\n const content = (\n <>\n {item}\n {onItemClick && showChevron ? (\n <ChevronRight className=\"size-3 opacity-60\" aria-hidden />\n ) : null}\n </>\n )\n return (\n <span\n key={`${item}-${index}`}\n className={cn(\n 'inline-flex items-center gap-1 rounded-[calc(var(--as-radius-sm)-2px)] py-0.5 pl-2.5 pr-1.5 text-xs font-medium',\n onItemClick &&\n 'cursor-pointer transition-[filter] hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]',\n tint,\n )}\n >\n {onItemClick ? (\n <button\n type=\"button\"\n onClick={() => onItemClick(item, index)}\n className=\"cursor-pointer bg-transparent p-0 text-inherit outline-none\"\n >\n {content}\n </button>\n ) : (\n content\n )}\n {onRemove ? (\n <button\n type=\"button\"\n aria-label={`${removeLabel} ${item}`}\n onClick={() => onRemove(item)}\n className=\"cursor-pointer opacity-70 transition-colors hover:text-[var(--as-danger)] hover:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X className=\"size-3\" aria-hidden />\n </button>\n ) : null}\n </span>\n )\n })}\n </div>\n )\n },\n)\n"]}
@@ -1,4 +1,4 @@
1
- import { Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalFooter } from './chunk-RHBQ3GZE.js';
1
+ import { Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalFooter } from './chunk-SXVOJ7WE.js';
2
2
  import { Button } from './chunk-GTXGTQ6F.js';
3
3
  import { cn } from './chunk-BLJWR4ZV.js';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -76,5 +76,5 @@ function FormModal({
76
76
  }
77
77
 
78
78
  export { FormModal };
79
- //# sourceMappingURL=chunk-5HXDKOBY.js.map
80
- //# sourceMappingURL=chunk-5HXDKOBY.js.map
79
+ //# sourceMappingURL=chunk-BUPMDOVL.js.map
80
+ //# sourceMappingURL=chunk-BUPMDOVL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/form-modal/FormModal.tsx"],"names":[],"mappings":"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","file":"chunk-5HXDKOBY.js","sourcesContent":["import * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\nimport {\n Modal,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalHeader,\n ModalTitle,\n} from '../modal/Modal'\n\nexport interface FormModalProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n description?: React.ReactNode\n icon?: LucideIcon\n headerActions?: React.ReactNode\n children: React.ReactNode\n onSubmit?: () => void\n submitting?: boolean\n submitDisabled?: boolean\n submitLabel?: string\n cancelLabel?: string\n closeLabel?: string\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n bodyClassName?: string\n footer?: React.ReactNode\n hideFooter?: boolean\n onReject?: () => void\n rejectLabel?: string\n}\n\nexport function FormModal({\n open,\n onOpenChange,\n title,\n description,\n icon: Icon,\n headerActions,\n children,\n onSubmit,\n submitting = false,\n submitDisabled = false,\n submitLabel = 'Save',\n cancelLabel = 'Cancel',\n closeLabel = 'Close',\n size = 'md',\n contentClassName,\n bodyClassName,\n footer,\n hideFooter = false,\n onReject,\n rejectLabel = 'Reject',\n}: FormModalProps) {\n return (\n <Modal open={open} onOpenChange={onOpenChange}>\n <ModalContent size={size} closeLabel={closeLabel} aria-describedby={undefined}>\n <form\n data-as=\"form-modal\"\n className={cn('contents', contentClassName)}\n onSubmit={(event) => {\n event.preventDefault()\n if (!submitting && !submitDisabled) {\n onSubmit?.()\n }\n }}\n >\n <ModalHeader>\n <div className=\"flex items-center gap-3\">\n {Icon ? (\n <span className=\"rounded-[var(--as-radius)] bg-[var(--as-secondary)] p-2 text-[var(--as-fg)]\">\n <Icon aria-hidden=\"true\" className=\"size-5\" />\n </span>\n ) : null}\n <ModalTitle>{title}</ModalTitle>\n {headerActions ? (\n <span className=\"ml-auto flex items-center gap-1.5\">{headerActions}</span>\n ) : null}\n </div>\n {description ? <ModalDescription>{description}</ModalDescription> : null}\n </ModalHeader>\n <div className={cn('px-6 pb-2', bodyClassName)}>{children}</div>\n {footer ?? (hideFooter ? null : (\n <ModalFooter>\n {onReject ? (\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={onReject}\n disabled={submitting}\n className=\"sm:mr-auto\"\n >\n {rejectLabel}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={submitting}\n >\n {cancelLabel}\n </Button>\n {onSubmit ? (\n <Button type=\"submit\" disabled={submitDisabled || submitting} loading={submitting}>\n {submitLabel}\n </Button>\n ) : null}\n </ModalFooter>\n ))}\n </form>\n </ModalContent>\n </Modal>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/form-modal/FormModal.tsx"],"names":[],"mappings":";;;;;AAoCO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,EAAM,IAAA;AAAA,EACN,aAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,cAAA,GAAiB,KAAA;AAAA,EACjB,WAAA,GAAc,MAAA;AAAA,EACd,WAAA,GAAc,QAAA;AAAA,EACd,UAAA,GAAa,OAAA;AAAA,EACb,IAAA,GAAO,IAAA;AAAA,EACP,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,QAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAAmB;AACjB,EAAA,uBACE,GAAA,CAAC,SAAM,IAAA,EAAY,YAAA,EACjB,8BAAC,YAAA,EAAA,EAAa,IAAA,EAAY,UAAA,EAAwB,kBAAA,EAAkB,MAAA,EAClE,QAAA,kBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAQ,YAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,gBAAgB,CAAA;AAAA,MAC1C,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,IAAI,CAAC,UAAA,IAAc,CAAC,cAAA,EAAgB;AAClC,UAAA,QAAA,IAAW;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA,mBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6EAAA,EACd,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,QAAA,EAAS,CAAA,EAC9C,CAAA,GACE,IAAA;AAAA,4BACJ,GAAA,CAAC,cAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAClB,gCACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mCAAA,EAAqC,yBAAc,CAAA,GACjE;AAAA,WAAA,EACN,CAAA;AAAA,UACC,WAAA,mBAAc,GAAA,CAAC,gBAAA,EAAA,EAAkB,QAAA,EAAA,WAAA,EAAY,CAAA,GAAsB;AAAA,SAAA,EACtE,CAAA;AAAA,4BACC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,aAAa,GAAI,QAAA,EAAS,CAAA;AAAA,QACzD,MAAA,KAAW,UAAA,GAAa,IAAA,mBACvB,IAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,QAAA,mBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,aAAA;AAAA,cACR,OAAA,EAAS,QAAA;AAAA,cACT,QAAA,EAAU,UAAA;AAAA,cACV,SAAA,EAAU,YAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,0BACJ,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,cACjC,QAAA,EAAU,UAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UACC,QAAA,mBACC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,QAAA,EAAU,cAAA,IAAkB,UAAA,EAAY,OAAA,EAAS,UAAA,EACpE,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA;AAAA;AAAA,KAGN,CAAA,EACF,CAAA;AAEJ","file":"chunk-BUPMDOVL.js","sourcesContent":["import * as React from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '../button/Button'\nimport {\n Modal,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalHeader,\n ModalTitle,\n} from '../modal/Modal'\n\nexport interface FormModalProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: React.ReactNode\n description?: React.ReactNode\n icon?: LucideIcon\n headerActions?: React.ReactNode\n children: React.ReactNode\n onSubmit?: () => void\n submitting?: boolean\n submitDisabled?: boolean\n submitLabel?: string\n cancelLabel?: string\n closeLabel?: string\n size?: 'sm' | 'md' | 'lg' | 'xl'\n contentClassName?: string\n bodyClassName?: string\n footer?: React.ReactNode\n hideFooter?: boolean\n onReject?: () => void\n rejectLabel?: string\n}\n\nexport function FormModal({\n open,\n onOpenChange,\n title,\n description,\n icon: Icon,\n headerActions,\n children,\n onSubmit,\n submitting = false,\n submitDisabled = false,\n submitLabel = 'Save',\n cancelLabel = 'Cancel',\n closeLabel = 'Close',\n size = 'md',\n contentClassName,\n bodyClassName,\n footer,\n hideFooter = false,\n onReject,\n rejectLabel = 'Reject',\n}: FormModalProps) {\n return (\n <Modal open={open} onOpenChange={onOpenChange}>\n <ModalContent size={size} closeLabel={closeLabel} aria-describedby={undefined}>\n <form\n data-as=\"form-modal\"\n className={cn('contents', contentClassName)}\n onSubmit={(event) => {\n event.preventDefault()\n if (!submitting && !submitDisabled) {\n onSubmit?.()\n }\n }}\n >\n <ModalHeader>\n <div className=\"flex items-center gap-3\">\n {Icon ? (\n <span className=\"rounded-[var(--as-radius)] bg-[var(--as-secondary)] p-2 text-[var(--as-fg)]\">\n <Icon aria-hidden=\"true\" className=\"size-5\" />\n </span>\n ) : null}\n <ModalTitle>{title}</ModalTitle>\n {headerActions ? (\n <span className=\"ml-auto flex items-center gap-1.5\">{headerActions}</span>\n ) : null}\n </div>\n {description ? <ModalDescription>{description}</ModalDescription> : null}\n </ModalHeader>\n <div className={cn('px-6 pb-2', bodyClassName)}>{children}</div>\n {footer ?? (hideFooter ? null : (\n <ModalFooter>\n {onReject ? (\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={onReject}\n disabled={submitting}\n className=\"sm:mr-auto\"\n >\n {rejectLabel}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={submitting}\n >\n {cancelLabel}\n </Button>\n {onSubmit ? (\n <Button type=\"submit\" disabled={submitDisabled || submitting} loading={submitting}>\n {submitLabel}\n </Button>\n ) : null}\n </ModalFooter>\n ))}\n </form>\n </ModalContent>\n </Modal>\n )\n}\n"]}
@@ -38,7 +38,7 @@ var PanelModal = React.forwardRef(function PanelModal2({
38
38
  DialogPrimitive.Overlay,
39
39
  {
40
40
  "data-as": "modal-overlay",
41
- className: "as-anim-fade fixed inset-0 z-50 bg-[var(--as-overlay)]"
41
+ className: "as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]"
42
42
  }
43
43
  ),
44
44
  /* @__PURE__ */ jsxs(
@@ -48,7 +48,7 @@ var PanelModal = React.forwardRef(function PanelModal2({
48
48
  "data-as": "panel-modal",
49
49
  "aria-describedby": void 0,
50
50
  className: cn(
51
- "as-anim-pop fixed inset-0 z-50 flex flex-col overflow-y-auto bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
51
+ "as-anim-pop fixed inset-0 z-[var(--as-z-modal)] flex flex-col overflow-y-auto bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none",
52
52
  "sm:inset-auto sm:left-1/2 sm:top-1/2 sm:h-auto sm:max-h-[90vh] sm:w-auto sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-[var(--as-radius-lg)] sm:border sm:border-[var(--as-border)]",
53
53
  panelModalVariants({ size }),
54
54
  className
@@ -88,5 +88,5 @@ var PanelModal = React.forwardRef(function PanelModal2({
88
88
  });
89
89
 
90
90
  export { PanelModal };
91
- //# sourceMappingURL=chunk-WPO6CDA4.js.map
92
- //# sourceMappingURL=chunk-WPO6CDA4.js.map
91
+ //# sourceMappingURL=chunk-BWPNEQ3T.js.map
92
+ //# sourceMappingURL=chunk-BWPNEQ3T.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/modal/PanelModal.tsx"],"names":["PanelModal"],"mappings":"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","file":"chunk-WPO6CDA4.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\nconst panelModalVariants = cva('', {\n variants: {\n size: {\n sm: 'sm:max-w-md',\n md: 'sm:max-w-2xl',\n lg: 'sm:max-w-4xl',\n xl: 'sm:max-w-6xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface PanelModalProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n 'title'\n >,\n VariantProps<typeof panelModalVariants> {\n open: boolean\n onOpenChange: (open: boolean) => void\n title?: React.ReactNode\n headerIcon?: React.ReactNode\n headerActions?: React.ReactNode\n footer?: React.ReactNode\n hideHeader?: boolean\n bodyClassName?: string\n closeLabel?: string\n}\n\n/**\n * Dialog panel with a header (icon, title, actions, close), scrollable body\n * and optional sticky footer — full-screen on mobile, centered card on\n * desktop. For plain dialogs prefer the `Modal` parts; for forms prefer\n * `FormModal`.\n */\nexport const PanelModal = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n PanelModalProps\n>(function PanelModal(\n {\n open,\n onOpenChange,\n title,\n headerIcon,\n headerActions,\n footer,\n hideHeader = false,\n bodyClassName,\n closeLabel = 'Close',\n size,\n className,\n children,\n ...props\n },\n ref,\n) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"modal-overlay\"\n className=\"as-anim-fade fixed inset-0 z-50 bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n ref={ref}\n data-as=\"panel-modal\"\n aria-describedby={undefined}\n className={cn(\n 'as-anim-pop fixed inset-0 z-50 flex flex-col overflow-y-auto bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:h-auto sm:max-h-[90vh] sm:w-auto sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-[var(--as-radius-lg)] sm:border sm:border-[var(--as-border)]',\n panelModalVariants({ size }),\n className,\n )}\n {...props}\n >\n {hideHeader ? (\n <DialogPrimitive.Close\n aria-label={closeLabel}\n className=\"absolute right-3 top-3 z-10 rounded-[var(--as-radius-sm)] bg-[var(--as-surface-raised)] p-1.5 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </DialogPrimitive.Close>\n ) : (\n <div className=\"flex shrink-0 items-center justify-between gap-3 border-b border-[var(--as-border)] px-5 py-4 sm:px-6\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {headerIcon}\n {title ? (\n <DialogPrimitive.Title className=\"truncate font-semibold text-[var(--as-fg)]\">\n {title}\n </DialogPrimitive.Title>\n ) : null}\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {headerActions}\n <DialogPrimitive.Close\n aria-label={closeLabel}\n className=\"rounded-[var(--as-radius-sm)] p-1.5 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X aria-hidden=\"true\" className=\"size-5\" />\n </DialogPrimitive.Close>\n </div>\n </div>\n )}\n <div className={cn('min-h-0 flex-1', hideHeader && 'pt-10', bodyClassName ?? 'p-5 sm:p-6')}>\n {children}\n </div>\n {footer ? (\n <div className=\"shrink-0 border-t border-[var(--as-border)] px-5 py-4 sm:px-6\">\n {footer}\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n})\n"]}
1
+ {"version":3,"sources":["../src/components/modal/PanelModal.tsx"],"names":["PanelModal"],"mappings":"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","file":"chunk-BWPNEQ3T.js","sourcesContent":["import * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\nconst panelModalVariants = cva('', {\n variants: {\n size: {\n sm: 'sm:max-w-md',\n md: 'sm:max-w-2xl',\n lg: 'sm:max-w-4xl',\n xl: 'sm:max-w-6xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface PanelModalProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n 'title'\n >,\n VariantProps<typeof panelModalVariants> {\n open: boolean\n onOpenChange: (open: boolean) => void\n title?: React.ReactNode\n headerIcon?: React.ReactNode\n headerActions?: React.ReactNode\n footer?: React.ReactNode\n hideHeader?: boolean\n bodyClassName?: string\n closeLabel?: string\n}\n\n/**\n * Dialog panel with a header (icon, title, actions, close), scrollable body\n * and optional sticky footer — full-screen on mobile, centered card on\n * desktop. For plain dialogs prefer the `Modal` parts; for forms prefer\n * `FormModal`.\n */\nexport const PanelModal = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n PanelModalProps\n>(function PanelModal(\n {\n open,\n onOpenChange,\n title,\n headerIcon,\n headerActions,\n footer,\n hideHeader = false,\n bodyClassName,\n closeLabel = 'Close',\n size,\n className,\n children,\n ...props\n },\n ref,\n) {\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-as=\"modal-overlay\"\n className=\"as-anim-fade fixed inset-0 z-[var(--as-z-modal)] bg-[var(--as-overlay)]\"\n />\n <DialogPrimitive.Content\n ref={ref}\n data-as=\"panel-modal\"\n aria-describedby={undefined}\n className={cn(\n 'as-anim-pop fixed inset-0 z-[var(--as-z-modal)] flex flex-col overflow-y-auto bg-[var(--as-surface-raised)] text-[var(--as-fg)] shadow-[var(--as-shadow-3)] focus:outline-none',\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:h-auto sm:max-h-[90vh] sm:w-auto sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-[var(--as-radius-lg)] sm:border sm:border-[var(--as-border)]',\n panelModalVariants({ size }),\n className,\n )}\n {...props}\n >\n {hideHeader ? (\n <DialogPrimitive.Close\n aria-label={closeLabel}\n className=\"absolute right-3 top-3 z-10 rounded-[var(--as-radius-sm)] bg-[var(--as-surface-raised)] p-1.5 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </DialogPrimitive.Close>\n ) : (\n <div className=\"flex shrink-0 items-center justify-between gap-3 border-b border-[var(--as-border)] px-5 py-4 sm:px-6\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {headerIcon}\n {title ? (\n <DialogPrimitive.Title className=\"truncate font-semibold text-[var(--as-fg)]\">\n {title}\n </DialogPrimitive.Title>\n ) : null}\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n {headerActions}\n <DialogPrimitive.Close\n aria-label={closeLabel}\n className=\"rounded-[var(--as-radius-sm)] p-1.5 text-[var(--as-muted-fg)] transition-colors hover:bg-[var(--as-secondary)] hover:text-[var(--as-fg)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]\"\n >\n <X aria-hidden=\"true\" className=\"size-5\" />\n </DialogPrimitive.Close>\n </div>\n </div>\n )}\n <div className={cn('min-h-0 flex-1', hideHeader && 'pt-10', bodyClassName ?? 'p-5 sm:p-6')}>\n {children}\n </div>\n {footer ? (\n <div className=\"shrink-0 border-t border-[var(--as-border)] px-5 py-4 sm:px-6\">\n {footer}\n </div>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n})\n"]}
@@ -32,6 +32,8 @@ var semanticTokens = [
32
32
  "--as-ai-fg",
33
33
  "--as-focus-ring",
34
34
  "--as-overlay",
35
+ "--as-z-modal",
36
+ "--as-z-popover",
35
37
  "--as-radius-sm",
36
38
  "--as-radius",
37
39
  "--as-radius-lg",
@@ -43,5 +45,5 @@ var semanticTokens = [
43
45
  ];
44
46
 
45
47
  export { rawTokens, semanticTokens };
46
- //# sourceMappingURL=chunk-3HFL3JGP.js.map
47
- //# sourceMappingURL=chunk-3HFL3JGP.js.map
48
+ //# sourceMappingURL=chunk-GDGKARRB.js.map
49
+ //# sourceMappingURL=chunk-GDGKARRB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/tokens.ts"],"names":[],"mappings":";AAAO,IAAM,SAAA,GAAY;AAAA,EACvB,aAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF;AAEO,IAAM,cAAA,GAAiB;AAAA,EAC5B,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF","file":"chunk-GDGKARRB.js","sourcesContent":["export const rawTokens = [\n '--as-tone-0',\n '--as-tone-50',\n '--as-tone-100',\n '--as-tone-200',\n '--as-tone-300',\n '--as-tone-500',\n '--as-tone-700',\n '--as-tone-900',\n '--as-accent',\n '--as-accent-strong',\n '--as-success',\n '--as-warning',\n '--as-danger',\n '--as-ai',\n] as const\n\nexport const semanticTokens = [\n '--as-primary',\n '--as-primary-fg',\n '--as-secondary',\n '--as-secondary-fg',\n '--as-surface',\n '--as-surface-raised',\n '--as-border',\n '--as-fg',\n '--as-muted',\n '--as-muted-fg',\n '--as-success-fg',\n '--as-warning-fg',\n '--as-danger-fg',\n '--as-ai-fg',\n '--as-focus-ring',\n '--as-overlay',\n '--as-z-modal',\n '--as-z-popover',\n '--as-radius-sm',\n '--as-radius',\n '--as-radius-lg',\n '--as-font-sans',\n '--as-font-mono',\n '--as-shadow-1',\n '--as-shadow-2',\n '--as-shadow-3',\n] as const\n\nexport type RawTokenName = (typeof rawTokens)[number]\nexport type SemanticTokenName = (typeof semanticTokens)[number]\nexport type ThemeTokenName = SemanticTokenName | RawTokenName\nexport type ThemeTokens = Partial<Record<ThemeTokenName, string>>\n"]}