@duestel/ui 0.1.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 (226) hide show
  1. package/README.md +110 -0
  2. package/dist/components/accordion/Accordion.d.ts +34 -0
  3. package/dist/components/accordion/Accordion.js +54 -0
  4. package/dist/components/accordion/Accordion.js.map +1 -0
  5. package/dist/components/accordion/index.d.ts +1 -0
  6. package/dist/components/accordion/index.js +2 -0
  7. package/dist/components/alert-dialog/AlertDialog.d.ts +53 -0
  8. package/dist/components/alert-dialog/AlertDialog.js +69 -0
  9. package/dist/components/alert-dialog/AlertDialog.js.map +1 -0
  10. package/dist/components/alert-dialog/index.d.ts +1 -0
  11. package/dist/components/alert-dialog/index.js +2 -0
  12. package/dist/components/autocomplete/Autocomplete.d.ts +90 -0
  13. package/dist/components/autocomplete/Autocomplete.js +137 -0
  14. package/dist/components/autocomplete/Autocomplete.js.map +1 -0
  15. package/dist/components/autocomplete/index.d.ts +1 -0
  16. package/dist/components/autocomplete/index.js +2 -0
  17. package/dist/components/avatar/Avatar.d.ts +44 -0
  18. package/dist/components/avatar/Avatar.js +45 -0
  19. package/dist/components/avatar/Avatar.js.map +1 -0
  20. package/dist/components/avatar/index.d.ts +2 -0
  21. package/dist/components/avatar/index.js +2 -0
  22. package/dist/components/badge/Badge.d.ts +43 -0
  23. package/dist/components/badge/Badge.js +32 -0
  24. package/dist/components/badge/Badge.js.map +1 -0
  25. package/dist/components/badge/index.d.ts +2 -0
  26. package/dist/components/badge/index.js +2 -0
  27. package/dist/components/button/Button.d.ts +60 -0
  28. package/dist/components/button/Button.js +61 -0
  29. package/dist/components/button/Button.js.map +1 -0
  30. package/dist/components/button/index.d.ts +1 -0
  31. package/dist/components/button/index.js +2 -0
  32. package/dist/components/carousel/Carousel.d.ts +32 -0
  33. package/dist/components/carousel/Carousel.js +113 -0
  34. package/dist/components/carousel/Carousel.js.map +1 -0
  35. package/dist/components/carousel/index.d.ts +1 -0
  36. package/dist/components/carousel/index.js +2 -0
  37. package/dist/components/checkbox/Checkbox.d.ts +64 -0
  38. package/dist/components/checkbox/Checkbox.js +59 -0
  39. package/dist/components/checkbox/Checkbox.js.map +1 -0
  40. package/dist/components/checkbox/index.d.ts +1 -0
  41. package/dist/components/checkbox/index.js +2 -0
  42. package/dist/components/collapsible/Collapsible.d.ts +28 -0
  43. package/dist/components/collapsible/Collapsible.js +40 -0
  44. package/dist/components/collapsible/Collapsible.js.map +1 -0
  45. package/dist/components/collapsible/index.d.ts +1 -0
  46. package/dist/components/collapsible/index.js +2 -0
  47. package/dist/components/combobox/Combobox.d.ts +113 -0
  48. package/dist/components/combobox/Combobox.js +189 -0
  49. package/dist/components/combobox/Combobox.js.map +1 -0
  50. package/dist/components/combobox/index.d.ts +1 -0
  51. package/dist/components/combobox/index.js +2 -0
  52. package/dist/components/command/Command.d.ts +37 -0
  53. package/dist/components/command/Command.js +90 -0
  54. package/dist/components/command/Command.js.map +1 -0
  55. package/dist/components/command/index.d.ts +1 -0
  56. package/dist/components/command/index.js +2 -0
  57. package/dist/components/context-menu/ContextMenu.d.ts +76 -0
  58. package/dist/components/context-menu/ContextMenu.js +132 -0
  59. package/dist/components/context-menu/ContextMenu.js.map +1 -0
  60. package/dist/components/context-menu/index.d.ts +1 -0
  61. package/dist/components/context-menu/index.js +2 -0
  62. package/dist/components/data-table/DataTable.d.ts +32 -0
  63. package/dist/components/data-table/DataTable.js +102 -0
  64. package/dist/components/data-table/DataTable.js.map +1 -0
  65. package/dist/components/data-table/Table.d.ts +51 -0
  66. package/dist/components/data-table/Table.js +69 -0
  67. package/dist/components/data-table/Table.js.map +1 -0
  68. package/dist/components/data-table/index.d.ts +3 -0
  69. package/dist/components/data-table/index.js +3 -0
  70. package/dist/components/date-picker/DatePicker.d.ts +63 -0
  71. package/dist/components/date-picker/DatePicker.js +247 -0
  72. package/dist/components/date-picker/DatePicker.js.map +1 -0
  73. package/dist/components/date-picker/index.d.ts +2 -0
  74. package/dist/components/date-picker/index.js +2 -0
  75. package/dist/components/dialog/Dialog.d.ts +59 -0
  76. package/dist/components/dialog/Dialog.js +71 -0
  77. package/dist/components/dialog/Dialog.js.map +1 -0
  78. package/dist/components/dialog/index.d.ts +1 -0
  79. package/dist/components/dialog/index.js +2 -0
  80. package/dist/components/drawer/Drawer.d.ts +93 -0
  81. package/dist/components/drawer/Drawer.js +106 -0
  82. package/dist/components/drawer/Drawer.js.map +1 -0
  83. package/dist/components/drawer/index.d.ts +1 -0
  84. package/dist/components/drawer/index.js +2 -0
  85. package/dist/components/form/Field.d.ts +52 -0
  86. package/dist/components/form/Field.js +54 -0
  87. package/dist/components/form/Field.js.map +1 -0
  88. package/dist/components/form/Fieldset.d.ts +24 -0
  89. package/dist/components/form/Fieldset.js +24 -0
  90. package/dist/components/form/Fieldset.js.map +1 -0
  91. package/dist/components/form/Form.d.ts +18 -0
  92. package/dist/components/form/Form.js +14 -0
  93. package/dist/components/form/Form.js.map +1 -0
  94. package/dist/components/form/Input.d.ts +33 -0
  95. package/dist/components/form/Input.js +99 -0
  96. package/dist/components/form/Input.js.map +1 -0
  97. package/dist/components/form/app-form.d.ts +71 -0
  98. package/dist/components/form/app-form.js +95 -0
  99. package/dist/components/form/app-form.js.map +1 -0
  100. package/dist/components/form/index.d.ts +5 -0
  101. package/dist/components/form/index.js +6 -0
  102. package/dist/components/hotkeys/Kbd.d.ts +20 -0
  103. package/dist/components/hotkeys/Kbd.js +31 -0
  104. package/dist/components/hotkeys/Kbd.js.map +1 -0
  105. package/dist/components/hotkeys/hotkeys.d.ts +14 -0
  106. package/dist/components/hotkeys/hotkeys.js +2 -0
  107. package/dist/components/hotkeys/index.d.ts +2 -0
  108. package/dist/components/hotkeys/index.js +3 -0
  109. package/dist/components/menu/Menu.d.ts +84 -0
  110. package/dist/components/menu/Menu.js +142 -0
  111. package/dist/components/menu/Menu.js.map +1 -0
  112. package/dist/components/menu/index.d.ts +1 -0
  113. package/dist/components/menu/index.js +2 -0
  114. package/dist/components/menubar/Menubar.d.ts +87 -0
  115. package/dist/components/menubar/Menubar.js +142 -0
  116. package/dist/components/menubar/Menubar.js.map +1 -0
  117. package/dist/components/menubar/index.d.ts +1 -0
  118. package/dist/components/menubar/index.js +2 -0
  119. package/dist/components/meter/Meter.d.ts +33 -0
  120. package/dist/components/meter/Meter.js +45 -0
  121. package/dist/components/meter/Meter.js.map +1 -0
  122. package/dist/components/meter/index.d.ts +1 -0
  123. package/dist/components/meter/index.js +2 -0
  124. package/dist/components/navigation-menu/NavigationMenu.d.ts +81 -0
  125. package/dist/components/navigation-menu/NavigationMenu.js +112 -0
  126. package/dist/components/navigation-menu/NavigationMenu.js.map +1 -0
  127. package/dist/components/navigation-menu/index.d.ts +1 -0
  128. package/dist/components/navigation-menu/index.js +2 -0
  129. package/dist/components/number-field/NumberField.d.ts +53 -0
  130. package/dist/components/number-field/NumberField.js +72 -0
  131. package/dist/components/number-field/NumberField.js.map +1 -0
  132. package/dist/components/number-field/index.d.ts +1 -0
  133. package/dist/components/number-field/index.js +2 -0
  134. package/dist/components/otp-field/OtpField.d.ts +33 -0
  135. package/dist/components/otp-field/OtpField.js +31 -0
  136. package/dist/components/otp-field/OtpField.js.map +1 -0
  137. package/dist/components/otp-field/index.d.ts +1 -0
  138. package/dist/components/otp-field/index.js +2 -0
  139. package/dist/components/pagination/Pagination.d.ts +17 -0
  140. package/dist/components/pagination/Pagination.js +75 -0
  141. package/dist/components/pagination/Pagination.js.map +1 -0
  142. package/dist/components/pagination/index.d.ts +1 -0
  143. package/dist/components/pagination/index.js +2 -0
  144. package/dist/components/popover/Popover.d.ts +73 -0
  145. package/dist/components/popover/Popover.js +97 -0
  146. package/dist/components/popover/Popover.js.map +1 -0
  147. package/dist/components/popover/index.d.ts +1 -0
  148. package/dist/components/popover/index.js +2 -0
  149. package/dist/components/preview-card/PreviewCard.d.ts +60 -0
  150. package/dist/components/preview-card/PreviewCard.js +83 -0
  151. package/dist/components/preview-card/PreviewCard.js.map +1 -0
  152. package/dist/components/preview-card/index.d.ts +1 -0
  153. package/dist/components/preview-card/index.js +2 -0
  154. package/dist/components/progress/Progress.d.ts +36 -0
  155. package/dist/components/progress/Progress.js +45 -0
  156. package/dist/components/progress/Progress.js.map +1 -0
  157. package/dist/components/progress/index.d.ts +1 -0
  158. package/dist/components/progress/index.js +2 -0
  159. package/dist/components/radio/Radio.d.ts +39 -0
  160. package/dist/components/radio/Radio.js +39 -0
  161. package/dist/components/radio/Radio.js.map +1 -0
  162. package/dist/components/radio/index.d.ts +1 -0
  163. package/dist/components/radio/index.js +2 -0
  164. package/dist/components/resizable/Resizable.d.ts +35 -0
  165. package/dist/components/resizable/Resizable.js +38 -0
  166. package/dist/components/resizable/Resizable.js.map +1 -0
  167. package/dist/components/resizable/index.d.ts +1 -0
  168. package/dist/components/resizable/index.js +2 -0
  169. package/dist/components/scroll-area/ScrollArea.d.ts +37 -0
  170. package/dist/components/scroll-area/ScrollArea.js +52 -0
  171. package/dist/components/scroll-area/ScrollArea.js.map +1 -0
  172. package/dist/components/scroll-area/index.d.ts +1 -0
  173. package/dist/components/scroll-area/index.js +2 -0
  174. package/dist/components/select/Select.d.ts +94 -0
  175. package/dist/components/select/Select.js +151 -0
  176. package/dist/components/select/Select.js.map +1 -0
  177. package/dist/components/select/index.d.ts +1 -0
  178. package/dist/components/select/index.js +2 -0
  179. package/dist/components/separator/Separator.d.ts +29 -0
  180. package/dist/components/separator/Separator.js +20 -0
  181. package/dist/components/separator/Separator.js.map +1 -0
  182. package/dist/components/separator/index.d.ts +1 -0
  183. package/dist/components/separator/index.js +2 -0
  184. package/dist/components/slider/Slider.d.ts +53 -0
  185. package/dist/components/slider/Slider.js +70 -0
  186. package/dist/components/slider/Slider.js.map +1 -0
  187. package/dist/components/slider/index.d.ts +1 -0
  188. package/dist/components/slider/index.js +2 -0
  189. package/dist/components/switch/Switch.d.ts +28 -0
  190. package/dist/components/switch/Switch.js +31 -0
  191. package/dist/components/switch/Switch.js.map +1 -0
  192. package/dist/components/switch/index.d.ts +1 -0
  193. package/dist/components/switch/index.js +2 -0
  194. package/dist/components/tabs/Tabs.d.ts +41 -0
  195. package/dist/components/tabs/Tabs.js +45 -0
  196. package/dist/components/tabs/Tabs.js.map +1 -0
  197. package/dist/components/tabs/index.d.ts +1 -0
  198. package/dist/components/tabs/index.js +2 -0
  199. package/dist/components/toast/Toast.d.ts +70 -0
  200. package/dist/components/toast/Toast.js +95 -0
  201. package/dist/components/toast/Toast.js.map +1 -0
  202. package/dist/components/toast/index.d.ts +1 -0
  203. package/dist/components/toast/index.js +2 -0
  204. package/dist/components/toggle/Toggle.d.ts +38 -0
  205. package/dist/components/toggle/Toggle.js +30 -0
  206. package/dist/components/toggle/Toggle.js.map +1 -0
  207. package/dist/components/toggle/index.d.ts +1 -0
  208. package/dist/components/toggle/index.js +2 -0
  209. package/dist/components/toolbar/Toolbar.d.ts +50 -0
  210. package/dist/components/toolbar/Toolbar.js +59 -0
  211. package/dist/components/toolbar/Toolbar.js.map +1 -0
  212. package/dist/components/toolbar/index.d.ts +1 -0
  213. package/dist/components/toolbar/index.js +2 -0
  214. package/dist/components/tooltip/Tooltip.d.ts +58 -0
  215. package/dist/components/tooltip/Tooltip.js +57 -0
  216. package/dist/components/tooltip/Tooltip.js.map +1 -0
  217. package/dist/components/tooltip/index.d.ts +1 -0
  218. package/dist/components/tooltip/index.js +2 -0
  219. package/dist/index.d.ts +60 -0
  220. package/dist/index.js +48 -0
  221. package/dist/lib/cn.d.ts +3 -0
  222. package/dist/lib/cn.js +29 -0
  223. package/dist/lib/cn.js.map +1 -0
  224. package/dist/styles.css +2 -0
  225. package/dist/theme.css +109 -0
  226. package/package.json +131 -0
package/README.md ADDED
@@ -0,0 +1,110 @@
1
+ # @duestel/ui
2
+
3
+ A **Material 3 (M3)** React component library — the Duestel design guide, packaged. Built on [Base UI](https://base-ui.com/) primitives, [Tailwind 4](https://tailwindcss.com/) (CSS-first tokens), and React 19.
4
+
5
+ - 🎨 **40 components** — accordion → tooltip, all M3-spec'd
6
+ - 🌗 **Theming** — light + dark out of the box, on M3 semantic color tokens
7
+ - 🧩 **Headless behavior** — Base UI compound parts (`Root` / `Trigger` / `Panel` …) wrapped in M3 styling
8
+ - 🔠 **Full M3 type scale, radii, elevation** — `text-title-medium`, `rounded-medium`, `shadow-mm-1`, …
9
+ - 📦 **Tree-shakeable** — per-component subpath exports, `preserveModules` build
10
+
11
+ > Published publicly under the `@duestel` scope — `npm install @duestel/ui`, no auth required.
12
+
13
+ 📖 **Docs & live component explorer:** [duestel.com/ui](https://duestel.com/ui/)
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ npm install @duestel/ui
19
+ # or
20
+ bun add @duestel/ui
21
+ ```
22
+
23
+ `react` and `react-dom` (^19) are **peer dependencies** — install them in your app.
24
+
25
+ ## Quick start
26
+
27
+ Import the styles once at your app root, then use components anywhere.
28
+
29
+ ```tsx
30
+ // app entry (e.g. main.tsx / layout.tsx)
31
+ import '@duestel/ui/styles.css'
32
+ ```
33
+
34
+ ```tsx
35
+ import { Button } from '@duestel/ui'
36
+
37
+ export function App() {
38
+ return <Button.Root variant="filled">Click me</Button.Root>
39
+ }
40
+ ```
41
+
42
+ The components render with [Readex Pro](https://fonts.google.com/specimen/Readex+Pro). `styles.css` is a zero-config drop-in — it ships the M3 tokens plus exactly the Tailwind utilities the components use. **Load Readex Pro yourself** (e.g. via Google Fonts or `@fontsource/readex-pro`).
43
+
44
+ ## Imports
45
+
46
+ Two import styles, both supported:
47
+
48
+ ```tsx
49
+ // 1. Namespace barrel (the root export)
50
+ import { Button, Accordion, DataTable } from '@duestel/ui'
51
+
52
+ <Accordion.Root>
53
+ <Accordion.Item>…</Accordion.Item>
54
+ </Accordion.Root>
55
+
56
+ // 2. Per-component subpath (mirrors Base UI, best for tree-shaking)
57
+ import { Root, Item, Trigger, Panel } from '@duestel/ui/accordion'
58
+ ```
59
+
60
+ Shared compound part names (`Root`, `Trigger`, …) collide in the flat barrel, so the root export exposes each component as a **namespace object** (`Accordion.Root`). Reach bare parts via the namespace or the subpath import.
61
+
62
+ ## Theming
63
+
64
+ Light is the default (`:root`); wrap any subtree in `.dark` for dark mode:
65
+
66
+ ```tsx
67
+ <div className="dark">
68
+ {/* M3 dark tokens apply here */}
69
+ </div>
70
+ ```
71
+
72
+ Colors are driven by M3 semantic tokens — `primary` / `secondary` / `tertiary` / `error` (+ `on-*`, `*-container`), surfaces (`surface`, `surface-container-low`, `on-surface-variant`, …), `outline`, `scrim`. Override the `--m3-*` CSS variables to retheme.
73
+
74
+ ### Bring-your-own Tailwind build
75
+
76
+ If your app already runs Tailwind 4 and you want the raw token layer (so component utilities compile in your pipeline), use `theme.css` instead of `styles.css`:
77
+
78
+ ```css
79
+ /* your app's main css */
80
+ @import '@duestel/ui/theme.css';
81
+ @source '@duestel/ui';
82
+ ```
83
+
84
+ This imports the M3 `@theme` token layer and tells Tailwind to scan the package for utilities. Load Readex Pro yourself in this mode too.
85
+
86
+ ## Components
87
+
88
+ | | | | |
89
+ |---|---|---|---|
90
+ | accordion | alert-dialog | autocomplete | avatar |
91
+ | badge | button | carousel | checkbox |
92
+ | collapsible | combobox | command | context-menu |
93
+ | data-table | date-picker | dialog | drawer |
94
+ | form | hotkeys | menu | menubar |
95
+ | meter | navigation-menu | number-field | otp-field |
96
+ | pagination | popover | preview-card | progress |
97
+ | radio | resizable | scroll-area | select |
98
+ | separator | slider | switch | tabs |
99
+ | toast | toggle | toolbar | tooltip |
100
+
101
+ **Data tables** are powered by [TanStack Table](https://tanstack.com/table); **app forms** by [TanStack Form](https://tanstack.com/form) (`useAppForm` pre-binds M3 fields). Browse every component's stories, variants, and props at [duestel.com/ui](https://duestel.com/ui/).
102
+
103
+ ## Requirements
104
+
105
+ - React 19+
106
+ - A Tailwind 4 toolchain only if you use `theme.css`; `styles.css` needs none.
107
+
108
+ ## License
109
+
110
+ UNLICENSED — © Duestel. Publicly available on npm; all rights reserved.
@@ -0,0 +1,34 @@
1
+ import { Accordion as BaseAccordion } from '@base-ui/react/accordion';
2
+ import { ComponentProps, ReactNode } from 'react';
3
+ /**
4
+ * Accordion — Material 3 styled wrapper over Base UI's headless Accordion.
5
+ * Behaviour/accessibility: Base UI (https://base-ui.com/react/components/accordion).
6
+ * Visuals: M3 surface, shape, type scale, and state layers (see CLAUDE.md).
7
+ *
8
+ * Compound API mirrors Base UI:
9
+ * <Accordion.Root>
10
+ * <Accordion.Item value="a">
11
+ * <Accordion.Header>
12
+ * <Accordion.Trigger>Title</Accordion.Trigger>
13
+ * </Accordion.Header>
14
+ * <Accordion.Panel>Content</Accordion.Panel>
15
+ * </Accordion.Item>
16
+ * </Accordion.Root>
17
+ */
18
+ declare function Root({ className, ...props }: ComponentProps<typeof BaseAccordion.Root>): import("react").JSX.Element;
19
+ declare function Item({ className, ...props }: ComponentProps<typeof BaseAccordion.Item>): import("react").JSX.Element;
20
+ declare function Header({ className, ...props }: ComponentProps<typeof BaseAccordion.Header>): import("react").JSX.Element;
21
+ type TriggerProps = ComponentProps<typeof BaseAccordion.Trigger> & {
22
+ /** Replace the trailing chevron with a custom node, or `null` to hide it. */
23
+ icon?: ReactNode;
24
+ };
25
+ declare function Trigger({ className, children, icon, ...props }: TriggerProps): import("react").JSX.Element;
26
+ declare function Panel({ className, children, ...props }: ComponentProps<typeof BaseAccordion.Panel>): import("react").JSX.Element;
27
+ export declare const Accordion: {
28
+ Root: typeof Root;
29
+ Item: typeof Item;
30
+ Header: typeof Header;
31
+ Trigger: typeof Trigger;
32
+ Panel: typeof Panel;
33
+ };
34
+ export { Root, Item, Header, Trigger, Panel };
@@ -0,0 +1,54 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { Accordion as t } from "@base-ui/react/accordion";
3
+ import { ChevronDown as n } from "lucide-react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region src/components/accordion/Accordion.tsx
6
+ function a({ className: n, ...i }) {
7
+ return /* @__PURE__ */ r(t.Root, {
8
+ className: e("flex w-full flex-col overflow-hidden rounded-medium bg-surface-container-low text-on-surface", n),
9
+ ...i
10
+ });
11
+ }
12
+ function o({ className: n, ...i }) {
13
+ return /* @__PURE__ */ r(t.Item, {
14
+ className: e("border-b border-outline-variant last:border-b-0", n),
15
+ ...i
16
+ });
17
+ }
18
+ function s({ className: n, ...i }) {
19
+ return /* @__PURE__ */ r(t.Header, {
20
+ className: e("m-0", n),
21
+ ...i
22
+ });
23
+ }
24
+ function c({ className: a, children: o, icon: s, ...c }) {
25
+ return /* @__PURE__ */ i(t.Trigger, {
26
+ className: e("group flex w-full cursor-pointer items-center justify-between gap-4", "px-4 py-[18px] text-left text-title-medium text-on-surface", "transition-colors hover:bg-on-surface/[0.08]", "focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary", "disabled:cursor-not-allowed disabled:opacity-[0.38]", a),
27
+ ...c,
28
+ children: [o, s === void 0 ? /* @__PURE__ */ r(n, {
29
+ "aria-hidden": !0,
30
+ className: "size-5 shrink-0 text-on-surface-variant transition-transform duration-200 ease-out group-data-[panel-open]:rotate-180"
31
+ }) : s]
32
+ });
33
+ }
34
+ function l({ className: n, children: i, ...a }) {
35
+ return /* @__PURE__ */ r(t.Panel, {
36
+ className: e("h-(--accordion-panel-height) overflow-hidden transition-[height] duration-200 ease-out", "data-[ending-style]:h-0 data-[starting-style]:h-0", n),
37
+ ...a,
38
+ children: /* @__PURE__ */ r("div", {
39
+ className: "px-4 pb-4 text-body-medium text-on-surface-variant",
40
+ children: i
41
+ })
42
+ });
43
+ }
44
+ var u = {
45
+ Root: a,
46
+ Item: o,
47
+ Header: s,
48
+ Trigger: c,
49
+ Panel: l
50
+ };
51
+ //#endregion
52
+ export { u as Accordion, s as Header, o as Item, l as Panel, a as Root, c as Trigger };
53
+
54
+ //# sourceMappingURL=Accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.js","names":[],"sources":["../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import { Accordion as BaseAccordion } from '@base-ui/react/accordion'\nimport { ChevronDown } from 'lucide-react'\nimport { cn } from '#/lib/cn'\n\nimport type { ComponentProps, ReactNode } from 'react'\n\n/**\n * Accordion — Material 3 styled wrapper over Base UI's headless Accordion.\n * Behaviour/accessibility: Base UI (https://base-ui.com/react/components/accordion).\n * Visuals: M3 surface, shape, type scale, and state layers (see CLAUDE.md).\n *\n * Compound API mirrors Base UI:\n * <Accordion.Root>\n * <Accordion.Item value=\"a\">\n * <Accordion.Header>\n * <Accordion.Trigger>Title</Accordion.Trigger>\n * </Accordion.Header>\n * <Accordion.Panel>Content</Accordion.Panel>\n * </Accordion.Item>\n * </Accordion.Root>\n */\n\nfunction Root({ className, ...props }: ComponentProps<typeof BaseAccordion.Root>) {\n return (\n <BaseAccordion.Root\n className={cn(\n 'flex w-full flex-col overflow-hidden rounded-medium bg-surface-container-low text-on-surface',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Item({ className, ...props }: ComponentProps<typeof BaseAccordion.Item>) {\n return (\n <BaseAccordion.Item\n className={cn(\n 'border-b border-outline-variant last:border-b-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Header({ className, ...props }: ComponentProps<typeof BaseAccordion.Header>) {\n return <BaseAccordion.Header className={cn('m-0', className)} {...props} />\n}\n\ntype TriggerProps = ComponentProps<typeof BaseAccordion.Trigger> & {\n /** Replace the trailing chevron with a custom node, or `null` to hide it. */\n icon?: ReactNode\n}\n\nfunction Trigger({ className, children, icon, ...props }: TriggerProps) {\n return (\n <BaseAccordion.Trigger\n className={cn(\n 'group flex w-full cursor-pointer items-center justify-between gap-4',\n 'px-4 py-[18px] text-left text-title-medium text-on-surface',\n 'transition-colors hover:bg-on-surface/[0.08]',\n 'focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-primary',\n 'disabled:cursor-not-allowed disabled:opacity-[0.38]',\n className,\n )}\n {...props}\n >\n {children}\n {icon === undefined ? (\n <ChevronDown\n aria-hidden\n className=\"size-5 shrink-0 text-on-surface-variant transition-transform duration-200 ease-out group-data-[panel-open]:rotate-180\"\n />\n ) : (\n icon\n )}\n </BaseAccordion.Trigger>\n )\n}\n\nfunction Panel({ className, children, ...props }: ComponentProps<typeof BaseAccordion.Panel>) {\n return (\n <BaseAccordion.Panel\n className={cn(\n 'h-(--accordion-panel-height) overflow-hidden transition-[height] duration-200 ease-out',\n 'data-[ending-style]:h-0 data-[starting-style]:h-0',\n className,\n )}\n {...props}\n >\n <div className=\"px-4 pb-4 text-body-medium text-on-surface-variant\">{children}</div>\n </BaseAccordion.Panel>\n )\n}\n\nexport const Accordion = { Root, Item, Header, Trigger, Panel }\nexport { Root, Item, Header, Trigger, Panel }\n"],"mappings":";;;;;AAsBA,SAAS,EAAK,EAAE,cAAW,GAAG,KAAoD;CAChF,OACE,kBAAC,EAAc,MAAf;EACE,WAAW,EACT,gGACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAK,EAAE,cAAW,GAAG,KAAoD;CAChF,OACE,kBAAC,EAAc,MAAf;EACE,WAAW,EACT,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAO,EAAE,cAAW,GAAG,KAAsD;CACpF,OAAO,kBAAC,EAAc,QAAf;EAAsB,WAAW,EAAG,OAAO,CAAS;EAAG,GAAI;CAAQ,CAAA;AAC5E;AAOA,SAAS,EAAQ,EAAE,cAAW,aAAU,SAAM,GAAG,KAAuB;CACtE,OACE,kBAAC,EAAc,SAAf;EACE,WAAW,EACT,uEACA,8DACA,gDACA,yFACA,uDACA,CACF;EACA,GAAI;YATN,CAWG,GACA,MAAS,KAAA,IACR,kBAAC,GAAD;GACE,eAAA;GACA,WAAU;EACX,CAAA,IAED,CAEmB;;AAE3B;AAEA,SAAS,EAAM,EAAE,cAAW,aAAU,GAAG,KAAqD;CAC5F,OACE,kBAAC,EAAc,OAAf;EACE,WAAW,EACT,0FACA,qDACA,CACF;EACA,GAAI;YAEJ,kBAAC,OAAD;GAAK,WAAU;GAAsD;EAAc,CAAA;CAChE,CAAA;AAEzB;AAEA,IAAa,IAAY;CAAE;CAAM;CAAM;CAAQ;CAAS;AAAM"}
@@ -0,0 +1 @@
1
+ export { Accordion, Root, Item, Header, Trigger, Panel } from './Accordion';
@@ -0,0 +1,2 @@
1
+ import { Accordion as e, Header as t, Item as n, Panel as r, Root as i, Trigger as a } from "./Accordion.js";
2
+ export { e as Accordion, t as Header, n as Item, r as Panel, i as Root, a as Trigger };
@@ -0,0 +1,53 @@
1
+ import { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';
2
+ import { ComponentProps } from 'react';
3
+ /**
4
+ * AlertDialog — Material 3 styled wrapper over Base UI's headless Alert Dialog.
5
+ * Behaviour/accessibility (focus trap, role="alertdialog", no dismiss on
6
+ * backdrop/Esc): Base UI (https://base-ui.com/react/components/alert-dialog).
7
+ * Visuals: M3 dialog anatomy — scrim, extra-large corner, surface-container,
8
+ * headline-small title, body-medium supporting text, text-button actions.
9
+ * Design ref: port/core/ui/components/dialogs (see CLAUDE.md).
10
+ *
11
+ * Compound API mirrors Base UI:
12
+ * <AlertDialog.Root>
13
+ * <AlertDialog.Trigger>Delete</AlertDialog.Trigger>
14
+ * <AlertDialog.Portal>
15
+ * <AlertDialog.Backdrop />
16
+ * <AlertDialog.Viewport>
17
+ * <AlertDialog.Popup>
18
+ * <AlertDialog.Title>Delete file?</AlertDialog.Title>
19
+ * <AlertDialog.Description>This can't be undone.</AlertDialog.Description>
20
+ * <AlertDialog.Actions>
21
+ * <AlertDialog.Close>Cancel</AlertDialog.Close>
22
+ * <AlertDialog.Close>Delete</AlertDialog.Close>
23
+ * </AlertDialog.Actions>
24
+ * </AlertDialog.Popup>
25
+ * </AlertDialog.Viewport>
26
+ * </AlertDialog.Portal>
27
+ * </AlertDialog.Root>
28
+ */
29
+ declare const Root: typeof BaseAlertDialog.Root;
30
+ declare const Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AlertDialogPortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
31
+ declare function Trigger({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Trigger>): import("react").JSX.Element;
32
+ declare function Backdrop({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Backdrop>): import("react").JSX.Element;
33
+ declare function Viewport({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Viewport>): import("react").JSX.Element;
34
+ declare function Popup({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Popup>): import("react").JSX.Element;
35
+ declare function Title({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Title>): import("react").JSX.Element;
36
+ declare function Description({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Description>): import("react").JSX.Element;
37
+ /** Trailing actions row (M3: right-aligned text buttons). */
38
+ declare function Actions({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
39
+ /** Closes the dialog; styled as an M3 text button — pair inside <Actions>. */
40
+ declare function Close({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Close>): import("react").JSX.Element;
41
+ export declare const AlertDialog: {
42
+ Root: typeof BaseAlertDialog.Root;
43
+ Trigger: typeof Trigger;
44
+ Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AlertDialogPortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
45
+ Backdrop: typeof Backdrop;
46
+ Viewport: typeof Viewport;
47
+ Popup: typeof Popup;
48
+ Title: typeof Title;
49
+ Description: typeof Description;
50
+ Actions: typeof Actions;
51
+ Close: typeof Close;
52
+ };
53
+ export { Root, Trigger, Portal, Backdrop, Viewport, Popup, Title, Description, Actions, Close };
@@ -0,0 +1,69 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { AlertDialog as n } from "@base-ui/react/alert-dialog";
4
+ //#region src/components/alert-dialog/AlertDialog.tsx
5
+ var r = n.Root, i = n.Portal;
6
+ function a({ className: r, ...i }) {
7
+ return /* @__PURE__ */ t(n.Trigger, {
8
+ className: e(r),
9
+ ...i
10
+ });
11
+ }
12
+ function o({ className: r, ...i }) {
13
+ return /* @__PURE__ */ t(n.Backdrop, {
14
+ className: e("fixed inset-0 z-40 bg-scrim transition-opacity duration-200 ease-out", "data-[ending-style]:opacity-0 data-[starting-style]:opacity-0", r),
15
+ ...i
16
+ });
17
+ }
18
+ function s({ className: r, ...i }) {
19
+ return /* @__PURE__ */ t(n.Viewport, {
20
+ className: e("fixed inset-0 z-50 flex items-center justify-center p-4", r),
21
+ ...i
22
+ });
23
+ }
24
+ function c({ className: r, ...i }) {
25
+ return /* @__PURE__ */ t(n.Popup, {
26
+ className: e("flex w-full min-w-[280px] max-w-[560px] flex-col gap-4", "rounded-extra-large bg-surface-container p-6 text-on-surface shadow-mm-3", "transition-all duration-200 ease-out focus:outline-none", "data-[starting-style]:scale-95 data-[starting-style]:opacity-0", "data-[ending-style]:scale-95 data-[ending-style]:opacity-0", r),
27
+ ...i
28
+ });
29
+ }
30
+ function l({ className: r, ...i }) {
31
+ return /* @__PURE__ */ t(n.Title, {
32
+ className: e("m-0 text-headline-small text-on-surface", r),
33
+ ...i
34
+ });
35
+ }
36
+ function u({ className: r, ...i }) {
37
+ return /* @__PURE__ */ t(n.Description, {
38
+ className: e("m-0 text-body-medium text-on-surface-variant", r),
39
+ ...i
40
+ });
41
+ }
42
+ function d({ className: n, ...r }) {
43
+ return /* @__PURE__ */ t("div", {
44
+ className: e("mt-2 flex items-center justify-end gap-2", n),
45
+ ...r
46
+ });
47
+ }
48
+ function f({ className: r, ...i }) {
49
+ return /* @__PURE__ */ t(n.Close, {
50
+ className: e("inline-flex h-10 cursor-pointer items-center justify-center rounded-full px-3", "text-label-large text-primary transition-colors", "hover:bg-primary/[0.08] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary", "disabled:cursor-not-allowed disabled:opacity-[0.38]", r),
51
+ ...i
52
+ });
53
+ }
54
+ var p = {
55
+ Root: r,
56
+ Trigger: a,
57
+ Portal: i,
58
+ Backdrop: o,
59
+ Viewport: s,
60
+ Popup: c,
61
+ Title: l,
62
+ Description: u,
63
+ Actions: d,
64
+ Close: f
65
+ };
66
+ //#endregion
67
+ export { d as Actions, p as AlertDialog, o as Backdrop, f as Close, u as Description, c as Popup, i as Portal, r as Root, l as Title, a as Trigger, s as Viewport };
68
+
69
+ //# sourceMappingURL=AlertDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDialog.js","names":[],"sources":["../../../src/components/alert-dialog/AlertDialog.tsx"],"sourcesContent":["import { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog'\nimport { cn } from '#/lib/cn'\n\nimport type { ComponentProps } from 'react'\n\n/**\n * AlertDialog — Material 3 styled wrapper over Base UI's headless Alert Dialog.\n * Behaviour/accessibility (focus trap, role=\"alertdialog\", no dismiss on\n * backdrop/Esc): Base UI (https://base-ui.com/react/components/alert-dialog).\n * Visuals: M3 dialog anatomy — scrim, extra-large corner, surface-container,\n * headline-small title, body-medium supporting text, text-button actions.\n * Design ref: port/core/ui/components/dialogs (see CLAUDE.md).\n *\n * Compound API mirrors Base UI:\n * <AlertDialog.Root>\n * <AlertDialog.Trigger>Delete</AlertDialog.Trigger>\n * <AlertDialog.Portal>\n * <AlertDialog.Backdrop />\n * <AlertDialog.Viewport>\n * <AlertDialog.Popup>\n * <AlertDialog.Title>Delete file?</AlertDialog.Title>\n * <AlertDialog.Description>This can't be undone.</AlertDialog.Description>\n * <AlertDialog.Actions>\n * <AlertDialog.Close>Cancel</AlertDialog.Close>\n * <AlertDialog.Close>Delete</AlertDialog.Close>\n * </AlertDialog.Actions>\n * </AlertDialog.Popup>\n * </AlertDialog.Viewport>\n * </AlertDialog.Portal>\n * </AlertDialog.Root>\n */\n\nconst Root = BaseAlertDialog.Root\nconst Portal = BaseAlertDialog.Portal\n\nfunction Trigger({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Trigger>) {\n return <BaseAlertDialog.Trigger className={cn(className)} {...props} />\n}\n\nfunction Backdrop({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Backdrop>) {\n return (\n <BaseAlertDialog.Backdrop\n className={cn(\n 'fixed inset-0 z-40 bg-scrim transition-opacity duration-200 ease-out',\n 'data-[ending-style]:opacity-0 data-[starting-style]:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Viewport({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Viewport>) {\n return (\n <BaseAlertDialog.Viewport\n className={cn('fixed inset-0 z-50 flex items-center justify-center p-4', className)}\n {...props}\n />\n )\n}\n\nfunction Popup({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Popup>) {\n return (\n <BaseAlertDialog.Popup\n className={cn(\n 'flex w-full min-w-[280px] max-w-[560px] flex-col gap-4',\n 'rounded-extra-large bg-surface-container p-6 text-on-surface shadow-mm-3',\n 'transition-all duration-200 ease-out focus:outline-none',\n 'data-[starting-style]:scale-95 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-95 data-[ending-style]:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Title({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Title>) {\n return (\n <BaseAlertDialog.Title\n className={cn('m-0 text-headline-small text-on-surface', className)}\n {...props}\n />\n )\n}\n\nfunction Description({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Description>) {\n return (\n <BaseAlertDialog.Description\n className={cn('m-0 text-body-medium text-on-surface-variant', className)}\n {...props}\n />\n )\n}\n\n/** Trailing actions row (M3: right-aligned text buttons). */\nfunction Actions({ className, ...props }: ComponentProps<'div'>) {\n return <div className={cn('mt-2 flex items-center justify-end gap-2', className)} {...props} />\n}\n\n/** Closes the dialog; styled as an M3 text button — pair inside <Actions>. */\nfunction Close({ className, ...props }: ComponentProps<typeof BaseAlertDialog.Close>) {\n return (\n <BaseAlertDialog.Close\n className={cn(\n 'inline-flex h-10 cursor-pointer items-center justify-center rounded-full px-3',\n 'text-label-large text-primary transition-colors',\n 'hover:bg-primary/[0.08] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary',\n 'disabled:cursor-not-allowed disabled:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport const AlertDialog = {\n Root,\n Trigger,\n Portal,\n Backdrop,\n Viewport,\n Popup,\n Title,\n Description,\n Actions,\n Close,\n}\nexport { Root, Trigger, Portal, Backdrop, Viewport, Popup, Title, Description, Actions, Close }\n"],"mappings":";;;;AAgCA,IAAM,IAAO,EAAgB,MACvB,IAAS,EAAgB;AAE/B,SAAS,EAAQ,EAAE,cAAW,GAAG,KAAyD;CACxF,OAAO,kBAAC,EAAgB,SAAjB;EAAyB,WAAW,EAAG,CAAS;EAAG,GAAI;CAAQ,CAAA;AACxE;AAEA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA0D;CAC1F,OACE,kBAAC,EAAgB,UAAjB;EACE,WAAW,EACT,wEACA,iEACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA0D;CAC1F,OACE,kBAAC,EAAgB,UAAjB;EACE,WAAW,EAAG,2DAA2D,CAAS;EAClF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAuD;CACpF,OACE,kBAAC,EAAgB,OAAjB;EACE,WAAW,EACT,0DACA,4EACA,2DACA,kEACA,8DACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAuD;CACpF,OACE,kBAAC,EAAgB,OAAjB;EACE,WAAW,EAAG,2CAA2C,CAAS;EAClE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAA6D;CAChG,OACE,kBAAC,EAAgB,aAAjB;EACE,WAAW,EAAG,gDAAgD,CAAS;EACvE,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAQ,EAAE,cAAW,GAAG,KAAgC;CAC/D,OAAO,kBAAC,OAAD;EAAK,WAAW,EAAG,4CAA4C,CAAS;EAAG,GAAI;CAAQ,CAAA;AAChG;AAGA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAuD;CACpF,OACE,kBAAC,EAAgB,OAAjB;EACE,WAAW,EACT,iFACA,mDACA,gHACA,uDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,IAAa,IAAc;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -0,0 +1 @@
1
+ export { AlertDialog, Root, Trigger, Portal, Backdrop, Viewport, Popup, Title, Description, Actions, Close, } from './AlertDialog';
@@ -0,0 +1,2 @@
1
+ import { Actions as e, AlertDialog as t, Backdrop as n, Close as r, Description as i, Popup as a, Portal as o, Root as s, Title as c, Trigger as l, Viewport as u } from "./AlertDialog.js";
2
+ export { e as Actions, t as AlertDialog, n as Backdrop, r as Close, i as Description, a as Popup, o as Portal, s as Root, c as Title, l as Trigger, u as Viewport };
@@ -0,0 +1,90 @@
1
+ import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete';
2
+ import { ComponentProps } from 'react';
3
+ /**
4
+ * Autocomplete — Material 3 styled wrapper over Base UI's headless Autocomplete.
5
+ * Behaviour/accessibility (combobox pattern, filtering, list navigation):
6
+ * Base UI (https://base-ui.com/react/components/autocomplete).
7
+ * Visuals: M3 search-bar anatomy for the field (surface-container-low pill,
8
+ * leading icon, trailing clear) and M3 menu anatomy for the suggestion popup
9
+ * (surface-container, small elevation, 48dp label-large items).
10
+ * Design refs: port/core/ui/components/search, text-field, dropdown (see CLAUDE.md).
11
+ *
12
+ * Compound API mirrors Base UI:
13
+ * <Autocomplete.Root items={items}>
14
+ * <Autocomplete.InputGroup>
15
+ * <Autocomplete.Icon><Search /></Autocomplete.Icon>
16
+ * <Autocomplete.Input placeholder="Search" />
17
+ * <Autocomplete.Clear><X /></Autocomplete.Clear>
18
+ * </Autocomplete.InputGroup>
19
+ * <Autocomplete.Portal>
20
+ * <Autocomplete.Positioner>
21
+ * <Autocomplete.Popup>
22
+ * <Autocomplete.Empty>No results.</Autocomplete.Empty>
23
+ * <Autocomplete.List>
24
+ * {(item) => <Autocomplete.Item key={item} value={item}>{item}</Autocomplete.Item>}
25
+ * </Autocomplete.List>
26
+ * </Autocomplete.Popup>
27
+ * </Autocomplete.Positioner>
28
+ * </Autocomplete.Portal>
29
+ * </Autocomplete.Root>
30
+ */
31
+ declare const Root: typeof BaseAutocomplete.Root;
32
+ declare const Value: typeof BaseAutocomplete.Value;
33
+ declare const Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AutocompletePortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
34
+ declare const Collection: typeof BaseAutocomplete.Collection;
35
+ /** Field container — M3 search bar: 56dp pill on surface-container-low. */
36
+ declare function InputGroup({ className, ...props }: ComponentProps<typeof BaseAutocomplete.InputGroup>): import("react").JSX.Element;
37
+ /** Text input — bare body-large field; pair inside <InputGroup> for the chrome. */
38
+ declare function Input({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Input>): import("react").JSX.Element;
39
+ /** Leading icon slot (decorative; M3 search bar leading icon). */
40
+ declare function Icon({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Icon>): import("react").JSX.Element;
41
+ /** Opens the popup — 40dp icon button (chevron rotates via group-data-[popup-open]). */
42
+ declare function Trigger({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Trigger>): import("react").JSX.Element;
43
+ /** Clears the input — trailing 40dp icon button; unmounts while the field is empty. */
44
+ declare function Clear({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Clear>): import("react").JSX.Element;
45
+ declare function Backdrop({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Backdrop>): import("react").JSX.Element;
46
+ declare function Positioner({ className, sideOffset, ...props }: ComponentProps<typeof BaseAutocomplete.Positioner>): import("react").JSX.Element;
47
+ /** Suggestion menu — M3 menu container: surface-container, 12dp corner, level-2 shadow. */
48
+ declare function Popup({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Popup>): import("react").JSX.Element;
49
+ declare function Arrow({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Arrow>): import("react").JSX.Element;
50
+ declare function List({ className, ...props }: ComponentProps<typeof BaseAutocomplete.List>): import("react").JSX.Element;
51
+ /** Polite live region for async list status; collapses padding when childless. */
52
+ declare function Status({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Status>): import("react").JSX.Element;
53
+ /** Shown only when the filtered list is empty; collapses padding otherwise. */
54
+ declare function Empty({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Empty>): import("react").JSX.Element;
55
+ declare function Group({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Group>): import("react").JSX.Element;
56
+ /** Group subheader — M3 list subheader: label-medium, on-surface-variant. */
57
+ declare function GroupLabel({ className, ...props }: ComponentProps<typeof BaseAutocomplete.GroupLabel>): import("react").JSX.Element;
58
+ /** Suggestion — M3 menu item: 48dp row, label-large, on-surface 8% highlight layer. */
59
+ declare function Item({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Item>): import("react").JSX.Element;
60
+ /** Single row of items when the root list is a grid. */
61
+ declare function Row({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Row>): import("react").JSX.Element;
62
+ declare function Separator({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Separator>): import("react").JSX.Element;
63
+ declare const useFilter: typeof import('@base-ui/react/internals/filter').getFilter;
64
+ declare const useFilteredItems: typeof BaseAutocomplete.useFilteredItems;
65
+ export declare const Autocomplete: {
66
+ Root: typeof BaseAutocomplete.Root;
67
+ Value: typeof BaseAutocomplete.Value;
68
+ Trigger: typeof Trigger;
69
+ Input: typeof Input;
70
+ InputGroup: typeof InputGroup;
71
+ Icon: typeof Icon;
72
+ Clear: typeof Clear;
73
+ List: typeof List;
74
+ Status: typeof Status;
75
+ Portal: import('react').ForwardRefExoticComponent<Omit<import('@base-ui/react').AutocompletePortalProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
76
+ Backdrop: typeof Backdrop;
77
+ Positioner: typeof Positioner;
78
+ Popup: typeof Popup;
79
+ Arrow: typeof Arrow;
80
+ Group: typeof Group;
81
+ GroupLabel: typeof GroupLabel;
82
+ Item: typeof Item;
83
+ Row: typeof Row;
84
+ Collection: typeof BaseAutocomplete.Collection;
85
+ Empty: typeof Empty;
86
+ Separator: typeof Separator;
87
+ useFilter: typeof import('@base-ui/react/internals/filter').getFilter;
88
+ useFilteredItems: typeof BaseAutocomplete.useFilteredItems;
89
+ };
90
+ export { Root, Value, Trigger, Input, InputGroup, Icon, Clear, List, Status, Portal, Backdrop, Positioner, Popup, Arrow, Group, GroupLabel, Item, Row, Collection, Empty, Separator, useFilter, useFilteredItems, };
@@ -0,0 +1,137 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { Autocomplete as n } from "@base-ui/react/autocomplete";
4
+ //#region src/components/autocomplete/Autocomplete.tsx
5
+ var r = n.Root, i = n.Value, a = n.Portal, o = n.Collection;
6
+ function s({ className: r, ...i }) {
7
+ return /* @__PURE__ */ t(n.InputGroup, {
8
+ className: e("flex h-14 w-full min-w-0 items-center gap-1 rounded-full bg-surface-container-low px-2", "text-on-surface transition-colors", "focus-within:outline-2 focus-within:-outline-offset-2 focus-within:outline-primary", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-[0.38]", r),
9
+ ...i
10
+ });
11
+ }
12
+ function c({ className: r, ...i }) {
13
+ return /* @__PURE__ */ t(n.Input, {
14
+ className: e("h-full w-full min-w-0 flex-1 bg-transparent px-2 text-body-large text-on-surface", "outline-none placeholder:text-on-surface-variant", "disabled:cursor-not-allowed disabled:opacity-[0.38]", r),
15
+ ...i
16
+ });
17
+ }
18
+ function l({ className: r, ...i }) {
19
+ return /* @__PURE__ */ t(n.Icon, {
20
+ className: e("flex size-10 shrink-0 items-center justify-center text-on-surface-variant", r),
21
+ ...i
22
+ });
23
+ }
24
+ function u({ className: r, ...i }) {
25
+ return /* @__PURE__ */ t(n.Trigger, {
26
+ className: e("group flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-full", "text-on-surface-variant transition-colors hover:bg-on-surface/[0.08]", "focus-visible:outline-2 focus-visible:outline-primary", "disabled:cursor-not-allowed disabled:opacity-[0.38]", r),
27
+ ...i
28
+ });
29
+ }
30
+ function d({ className: r, ...i }) {
31
+ return /* @__PURE__ */ t(n.Clear, {
32
+ className: e("flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-full", "text-on-surface-variant transition-colors hover:bg-on-surface/[0.08]", "focus-visible:outline-2 focus-visible:outline-primary", "disabled:cursor-not-allowed disabled:opacity-[0.38]", r),
33
+ ...i
34
+ });
35
+ }
36
+ function f({ className: r, ...i }) {
37
+ return /* @__PURE__ */ t(n.Backdrop, {
38
+ className: e("fixed inset-0 z-40", r),
39
+ ...i
40
+ });
41
+ }
42
+ function p({ className: r, sideOffset: i = 4, ...a }) {
43
+ return /* @__PURE__ */ t(n.Positioner, {
44
+ className: e("z-50 outline-none", r),
45
+ sideOffset: i,
46
+ ...a
47
+ });
48
+ }
49
+ function m({ className: r, ...i }) {
50
+ return /* @__PURE__ */ t(n.Popup, {
51
+ className: e("max-h-[min(var(--available-height),20rem)] w-(--anchor-width)", "origin-(--transform-origin) overflow-y-auto overscroll-contain", "rounded-medium bg-surface-container py-2 text-on-surface shadow-mm-2 outline-none", "transition-[transform,scale,opacity] duration-150 ease-out", "data-[starting-style]:scale-95 data-[starting-style]:opacity-0", "data-[ending-style]:scale-95 data-[ending-style]:opacity-0", r),
52
+ ...i
53
+ });
54
+ }
55
+ function h({ className: r, ...i }) {
56
+ return /* @__PURE__ */ t(n.Arrow, {
57
+ className: e(r),
58
+ ...i
59
+ });
60
+ }
61
+ function g({ className: r, ...i }) {
62
+ return /* @__PURE__ */ t(n.List, {
63
+ className: e("outline-none", r),
64
+ ...i
65
+ });
66
+ }
67
+ function _({ className: r, ...i }) {
68
+ return /* @__PURE__ */ t(n.Status, {
69
+ className: e("px-4 py-2 text-body-small text-on-surface-variant empty:p-0", r),
70
+ ...i
71
+ });
72
+ }
73
+ function v({ className: r, ...i }) {
74
+ return /* @__PURE__ */ t(n.Empty, {
75
+ className: e("px-4 py-2 text-body-medium text-on-surface-variant empty:p-0", r),
76
+ ...i
77
+ });
78
+ }
79
+ function y({ className: r, ...i }) {
80
+ return /* @__PURE__ */ t(n.Group, {
81
+ className: e(r),
82
+ ...i
83
+ });
84
+ }
85
+ function b({ className: r, ...i }) {
86
+ return /* @__PURE__ */ t(n.GroupLabel, {
87
+ className: e("px-4 pt-3 pb-1 text-label-medium text-on-surface-variant", r),
88
+ ...i
89
+ });
90
+ }
91
+ function x({ className: r, ...i }) {
92
+ return /* @__PURE__ */ t(n.Item, {
93
+ className: e("flex min-h-12 cursor-pointer items-center gap-3 px-4 text-label-large text-on-surface", "outline-none transition-colors data-[highlighted]:bg-on-surface/[0.08]", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-[0.38]", r),
94
+ ...i
95
+ });
96
+ }
97
+ function S({ className: r, ...i }) {
98
+ return /* @__PURE__ */ t(n.Row, {
99
+ className: e("flex", r),
100
+ ...i
101
+ });
102
+ }
103
+ function C({ className: r, ...i }) {
104
+ return /* @__PURE__ */ t(n.Separator, {
105
+ className: e("my-2 h-px bg-outline-variant", r),
106
+ ...i
107
+ });
108
+ }
109
+ var w = n.useFilter, T = n.useFilteredItems, E = {
110
+ Root: r,
111
+ Value: i,
112
+ Trigger: u,
113
+ Input: c,
114
+ InputGroup: s,
115
+ Icon: l,
116
+ Clear: d,
117
+ List: g,
118
+ Status: _,
119
+ Portal: a,
120
+ Backdrop: f,
121
+ Positioner: p,
122
+ Popup: m,
123
+ Arrow: h,
124
+ Group: y,
125
+ GroupLabel: b,
126
+ Item: x,
127
+ Row: S,
128
+ Collection: o,
129
+ Empty: v,
130
+ Separator: C,
131
+ useFilter: w,
132
+ useFilteredItems: T
133
+ };
134
+ //#endregion
135
+ export { h as Arrow, E as Autocomplete, f as Backdrop, d as Clear, o as Collection, v as Empty, y as Group, b as GroupLabel, l as Icon, c as Input, s as InputGroup, x as Item, g as List, m as Popup, a as Portal, p as Positioner, r as Root, S as Row, C as Separator, _ as Status, u as Trigger, i as Value, w as useFilter, T as useFilteredItems };
136
+
137
+ //# sourceMappingURL=Autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Autocomplete.js","names":[],"sources":["../../../src/components/autocomplete/Autocomplete.tsx"],"sourcesContent":["import { Autocomplete as BaseAutocomplete } from '@base-ui/react/autocomplete'\nimport { cn } from '#/lib/cn'\n\nimport type { ComponentProps } from 'react'\n\n/**\n * Autocomplete — Material 3 styled wrapper over Base UI's headless Autocomplete.\n * Behaviour/accessibility (combobox pattern, filtering, list navigation):\n * Base UI (https://base-ui.com/react/components/autocomplete).\n * Visuals: M3 search-bar anatomy for the field (surface-container-low pill,\n * leading icon, trailing clear) and M3 menu anatomy for the suggestion popup\n * (surface-container, small elevation, 48dp label-large items).\n * Design refs: port/core/ui/components/search, text-field, dropdown (see CLAUDE.md).\n *\n * Compound API mirrors Base UI:\n * <Autocomplete.Root items={items}>\n * <Autocomplete.InputGroup>\n * <Autocomplete.Icon><Search /></Autocomplete.Icon>\n * <Autocomplete.Input placeholder=\"Search\" />\n * <Autocomplete.Clear><X /></Autocomplete.Clear>\n * </Autocomplete.InputGroup>\n * <Autocomplete.Portal>\n * <Autocomplete.Positioner>\n * <Autocomplete.Popup>\n * <Autocomplete.Empty>No results.</Autocomplete.Empty>\n * <Autocomplete.List>\n * {(item) => <Autocomplete.Item key={item} value={item}>{item}</Autocomplete.Item>}\n * </Autocomplete.List>\n * </Autocomplete.Popup>\n * </Autocomplete.Positioner>\n * </Autocomplete.Portal>\n * </Autocomplete.Root>\n */\n\n// These parts render no HTML element of their own (or only portal plumbing),\n// so they pass through unstyled. Root stays an alias to preserve its generics.\nconst Root = BaseAutocomplete.Root\nconst Value = BaseAutocomplete.Value\nconst Portal = BaseAutocomplete.Portal\nconst Collection = BaseAutocomplete.Collection\n\n/** Field container — M3 search bar: 56dp pill on surface-container-low. */\nfunction InputGroup({ className, ...props }: ComponentProps<typeof BaseAutocomplete.InputGroup>) {\n return (\n <BaseAutocomplete.InputGroup\n className={cn(\n 'flex h-14 w-full min-w-0 items-center gap-1 rounded-full bg-surface-container-low px-2',\n 'text-on-surface transition-colors',\n 'focus-within:outline-2 focus-within:-outline-offset-2 focus-within:outline-primary',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Text input — bare body-large field; pair inside <InputGroup> for the chrome. */\nfunction Input({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Input>) {\n return (\n <BaseAutocomplete.Input\n className={cn(\n 'h-full w-full min-w-0 flex-1 bg-transparent px-2 text-body-large text-on-surface',\n 'outline-none placeholder:text-on-surface-variant',\n 'disabled:cursor-not-allowed disabled:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Leading icon slot (decorative; M3 search bar leading icon). */\nfunction Icon({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Icon>) {\n return (\n <BaseAutocomplete.Icon\n className={cn(\n 'flex size-10 shrink-0 items-center justify-center text-on-surface-variant',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Opens the popup — 40dp icon button (chevron rotates via group-data-[popup-open]). */\nfunction Trigger({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Trigger>) {\n return (\n <BaseAutocomplete.Trigger\n className={cn(\n 'group flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-full',\n 'text-on-surface-variant transition-colors hover:bg-on-surface/[0.08]',\n 'focus-visible:outline-2 focus-visible:outline-primary',\n 'disabled:cursor-not-allowed disabled:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Clears the input — trailing 40dp icon button; unmounts while the field is empty. */\nfunction Clear({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Clear>) {\n return (\n <BaseAutocomplete.Clear\n className={cn(\n 'flex size-10 shrink-0 cursor-pointer items-center justify-center rounded-full',\n 'text-on-surface-variant transition-colors hover:bg-on-surface/[0.08]',\n 'focus-visible:outline-2 focus-visible:outline-primary',\n 'disabled:cursor-not-allowed disabled:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Backdrop({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Backdrop>) {\n return <BaseAutocomplete.Backdrop className={cn('fixed inset-0 z-40', className)} {...props} />\n}\n\nfunction Positioner({\n className,\n sideOffset = 4,\n ...props\n}: ComponentProps<typeof BaseAutocomplete.Positioner>) {\n return (\n <BaseAutocomplete.Positioner\n className={cn('z-50 outline-none', className)}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\n/** Suggestion menu — M3 menu container: surface-container, 12dp corner, level-2 shadow. */\nfunction Popup({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Popup>) {\n return (\n <BaseAutocomplete.Popup\n className={cn(\n 'max-h-[min(var(--available-height),20rem)] w-(--anchor-width)',\n 'origin-(--transform-origin) overflow-y-auto overscroll-contain',\n 'rounded-medium bg-surface-container py-2 text-on-surface shadow-mm-2 outline-none',\n 'transition-[transform,scale,opacity] duration-150 ease-out',\n 'data-[starting-style]:scale-95 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-95 data-[ending-style]:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction Arrow({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Arrow>) {\n return <BaseAutocomplete.Arrow className={cn(className)} {...props} />\n}\n\nfunction List({ className, ...props }: ComponentProps<typeof BaseAutocomplete.List>) {\n return <BaseAutocomplete.List className={cn('outline-none', className)} {...props} />\n}\n\n/** Polite live region for async list status; collapses padding when childless. */\nfunction Status({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Status>) {\n return (\n <BaseAutocomplete.Status\n className={cn('px-4 py-2 text-body-small text-on-surface-variant empty:p-0', className)}\n {...props}\n />\n )\n}\n\n/** Shown only when the filtered list is empty; collapses padding otherwise. */\nfunction Empty({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Empty>) {\n return (\n <BaseAutocomplete.Empty\n className={cn('px-4 py-2 text-body-medium text-on-surface-variant empty:p-0', className)}\n {...props}\n />\n )\n}\n\nfunction Group({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Group>) {\n return <BaseAutocomplete.Group className={cn(className)} {...props} />\n}\n\n/** Group subheader — M3 list subheader: label-medium, on-surface-variant. */\nfunction GroupLabel({ className, ...props }: ComponentProps<typeof BaseAutocomplete.GroupLabel>) {\n return (\n <BaseAutocomplete.GroupLabel\n className={cn('px-4 pt-3 pb-1 text-label-medium text-on-surface-variant', className)}\n {...props}\n />\n )\n}\n\n/** Suggestion — M3 menu item: 48dp row, label-large, on-surface 8% highlight layer. */\nfunction Item({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Item>) {\n return (\n <BaseAutocomplete.Item\n className={cn(\n 'flex min-h-12 cursor-pointer items-center gap-3 px-4 text-label-large text-on-surface',\n 'outline-none transition-colors data-[highlighted]:bg-on-surface/[0.08]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-[0.38]',\n className,\n )}\n {...props}\n />\n )\n}\n\n/** Single row of items when the root list is a grid. */\nfunction Row({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Row>) {\n return <BaseAutocomplete.Row className={cn('flex', className)} {...props} />\n}\n\nfunction Separator({ className, ...props }: ComponentProps<typeof BaseAutocomplete.Separator>) {\n return (\n <BaseAutocomplete.Separator\n className={cn('my-2 h-px bg-outline-variant', className)}\n {...props}\n />\n )\n}\n\n// Filtering hook re-exports (not parts; mirror the Base UI package surface).\nconst useFilter = BaseAutocomplete.useFilter\nconst useFilteredItems = BaseAutocomplete.useFilteredItems\n\nexport const Autocomplete = {\n Root,\n Value,\n Trigger,\n Input,\n InputGroup,\n Icon,\n Clear,\n List,\n Status,\n Portal,\n Backdrop,\n Positioner,\n Popup,\n Arrow,\n Group,\n GroupLabel,\n Item,\n Row,\n Collection,\n Empty,\n Separator,\n useFilter,\n useFilteredItems,\n}\nexport {\n Root,\n Value,\n Trigger,\n Input,\n InputGroup,\n Icon,\n Clear,\n List,\n Status,\n Portal,\n Backdrop,\n Positioner,\n Popup,\n Arrow,\n Group,\n GroupLabel,\n Item,\n Row,\n Collection,\n Empty,\n Separator,\n useFilter,\n useFilteredItems,\n}\n"],"mappings":";;;;AAoCA,IAAM,IAAO,EAAiB,MACxB,IAAQ,EAAiB,OACzB,IAAS,EAAiB,QAC1B,IAAa,EAAiB;AAGpC,SAAS,EAAW,EAAE,cAAW,GAAG,KAA6D;CAC/F,OACE,kBAAC,EAAiB,YAAlB;EACE,WAAW,EACT,0FACA,qCACA,sFACA,qEACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OACE,kBAAC,EAAiB,OAAlB;EACE,WAAW,EACT,oFACA,oDACA,uDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAK,EAAE,cAAW,GAAG,KAAuD;CACnF,OACE,kBAAC,EAAiB,MAAlB;EACE,WAAW,EACT,6EACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAQ,EAAE,cAAW,GAAG,KAA0D;CACzF,OACE,kBAAC,EAAiB,SAAlB;EACE,WAAW,EACT,uFACA,wEACA,yDACA,uDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OACE,kBAAC,EAAiB,OAAlB;EACE,WAAW,EACT,iFACA,wEACA,yDACA,uDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA2D;CAC3F,OAAO,kBAAC,EAAiB,UAAlB;EAA2B,WAAW,EAAG,sBAAsB,CAAS;EAAG,GAAI;CAAQ,CAAA;AAChG;AAEA,SAAS,EAAW,EAClB,cACA,gBAAa,GACb,GAAG,KACkD;CACrD,OACE,kBAAC,EAAiB,YAAlB;EACE,WAAW,EAAG,qBAAqB,CAAS;EAChC;EACZ,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OACE,kBAAC,EAAiB,OAAlB;EACE,WAAW,EACT,iEACA,kEACA,qFACA,8DACA,kEACA,8DACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OAAO,kBAAC,EAAiB,OAAlB;EAAwB,WAAW,EAAG,CAAS;EAAG,GAAI;CAAQ,CAAA;AACvE;AAEA,SAAS,EAAK,EAAE,cAAW,GAAG,KAAuD;CACnF,OAAO,kBAAC,EAAiB,MAAlB;EAAuB,WAAW,EAAG,gBAAgB,CAAS;EAAG,GAAI;CAAQ,CAAA;AACtF;AAGA,SAAS,EAAO,EAAE,cAAW,GAAG,KAAyD;CACvF,OACE,kBAAC,EAAiB,QAAlB;EACE,WAAW,EAAG,+DAA+D,CAAS;EACtF,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OACE,kBAAC,EAAiB,OAAlB;EACE,WAAW,EAAG,gEAAgE,CAAS;EACvF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwD;CACrF,OAAO,kBAAC,EAAiB,OAAlB;EAAwB,WAAW,EAAG,CAAS;EAAG,GAAI;CAAQ,CAAA;AACvE;AAGA,SAAS,EAAW,EAAE,cAAW,GAAG,KAA6D;CAC/F,OACE,kBAAC,EAAiB,YAAlB;EACE,WAAW,EAAG,4DAA4D,CAAS;EACnF,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAK,EAAE,cAAW,GAAG,KAAuD;CACnF,OACE,kBAAC,EAAiB,MAAlB;EACE,WAAW,EACT,yFACA,0EACA,qEACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAGA,SAAS,EAAI,EAAE,cAAW,GAAG,KAAsD;CACjF,OAAO,kBAAC,EAAiB,KAAlB;EAAsB,WAAW,EAAG,QAAQ,CAAS;EAAG,GAAI;CAAQ,CAAA;AAC7E;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAA4D;CAC7F,OACE,kBAAC,EAAiB,WAAlB;EACE,WAAW,EAAG,gCAAgC,CAAS;EACvD,GAAI;CACL,CAAA;AAEL;AAGA,IAAM,IAAY,EAAiB,WAC7B,IAAmB,EAAiB,kBAE7B,IAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -0,0 +1 @@
1
+ export { Autocomplete, Root, Value, Trigger, Input, InputGroup, Icon, Clear, List, Status, Portal, Backdrop, Positioner, Popup, Arrow, Group, GroupLabel, Item, Row, Collection, Empty, Separator, useFilter, useFilteredItems, } from './Autocomplete';
@@ -0,0 +1,2 @@
1
+ import { Arrow as e, Autocomplete as t, Backdrop as n, Clear as r, Collection as i, Empty as a, Group as o, GroupLabel as s, Icon as c, Input as l, InputGroup as u, Item as d, List as f, Popup as p, Portal as m, Positioner as h, Root as g, Row as _, Separator as v, Status as y, Trigger as b, Value as x, useFilter as S, useFilteredItems as C } from "./Autocomplete.js";
2
+ export { e as Arrow, t as Autocomplete, n as Backdrop, r as Clear, i as Collection, a as Empty, o as Group, s as GroupLabel, c as Icon, l as Input, u as InputGroup, d as Item, f as List, p as Popup, m as Portal, h as Positioner, g as Root, _ as Row, v as Separator, y as Status, b as Trigger, x as Value, S as useFilter, C as useFilteredItems };