@ecopages/radiant-ui 0.1.0-rc.1 → 0.1.0-rc.10

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 (277) hide show
  1. package/README.md +4 -4
  2. package/dist/components/ui/alert/alert.d.ts +9 -13
  3. package/dist/components/ui/alert/alert.script.d.ts +26 -23
  4. package/dist/components/ui/autocomplete/autocomplete.d.ts +18 -19
  5. package/dist/components/ui/autocomplete/autocomplete.script.d.ts +33 -12
  6. package/dist/components/ui/autocomplete/index.js +1 -1
  7. package/dist/components/ui/autocomplete/index.js.map +3 -3
  8. package/dist/components/ui/avatar/avatar.d.ts +4 -4
  9. package/dist/components/ui/badge/badge.css +55 -0
  10. package/dist/components/ui/badge/badge.d.ts +19 -0
  11. package/dist/components/ui/badge/index.d.ts +1 -0
  12. package/dist/components/ui/badge/index.js +2 -0
  13. package/dist/components/ui/badge/index.js.map +7 -0
  14. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +24 -28
  15. package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +11 -20
  16. package/dist/components/ui/breadcrumb/index.js +1 -1
  17. package/dist/components/ui/breadcrumb/index.js.map +3 -3
  18. package/dist/components/ui/button/button.css +4 -5
  19. package/dist/components/ui/button/button.d.ts +13 -15
  20. package/dist/components/ui/button/index.js +1 -1
  21. package/dist/components/ui/button/index.js.map +3 -3
  22. package/dist/components/ui/button-group/button-group.d.ts +4 -6
  23. package/dist/components/ui/calendar/calendar.d.ts +3 -5
  24. package/dist/components/ui/calendar/calendar.script.d.ts +24 -22
  25. package/dist/components/ui/calendar/index.js +1 -1
  26. package/dist/components/ui/calendar/index.js.map +2 -2
  27. package/dist/components/ui/carousel/carousel.d.ts +22 -35
  28. package/dist/components/ui/carousel/carousel.script.d.ts +43 -54
  29. package/dist/components/ui/carousel/index.js +1 -1
  30. package/dist/components/ui/carousel/index.js.map +3 -3
  31. package/dist/components/ui/checkbox/checkbox.d.ts +14 -5
  32. package/dist/components/ui/checkbox/checkbox.script.d.ts +48 -19
  33. package/dist/components/ui/checkbox/index.js +1 -1
  34. package/dist/components/ui/checkbox/index.js.map +3 -3
  35. package/dist/components/ui/checkbox-group/checkbox-group.css +15 -0
  36. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +24 -0
  37. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +80 -0
  38. package/dist/components/ui/checkbox-group/index.d.ts +2 -0
  39. package/dist/components/ui/checkbox-group/index.js +2 -0
  40. package/dist/components/ui/checkbox-group/index.js.map +7 -0
  41. package/dist/components/ui/chip/chip.d.ts +3 -3
  42. package/dist/components/ui/chip-list/chip-list.d.ts +4 -7
  43. package/dist/components/ui/combobox/combobox.css +10 -68
  44. package/dist/components/ui/combobox/combobox.d.ts +27 -26
  45. package/dist/components/ui/combobox/combobox.script.d.ts +63 -25
  46. package/dist/components/ui/combobox/index.d.ts +2 -2
  47. package/dist/components/ui/combobox/index.js +1 -1
  48. package/dist/components/ui/combobox/index.js.map +4 -4
  49. package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +13 -13
  50. package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +36 -4
  51. package/dist/components/ui/cycle-toggle/index.js +1 -1
  52. package/dist/components/ui/cycle-toggle/index.js.map +2 -2
  53. package/dist/components/ui/date-field/date-field.css +0 -67
  54. package/dist/components/ui/date-field/date-field.d.ts +14 -18
  55. package/dist/components/ui/date-field/date-field.script.d.ts +29 -25
  56. package/dist/components/ui/date-field/index.js +1 -1
  57. package/dist/components/ui/date-field/index.js.map +3 -3
  58. package/dist/components/ui/date-range-picker/date-range-picker.css +0 -67
  59. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +19 -22
  60. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +31 -22
  61. package/dist/components/ui/date-range-picker/index.js +1 -1
  62. package/dist/components/ui/date-range-picker/index.js.map +2 -2
  63. package/dist/components/ui/dialog/dialog.d.ts +24 -27
  64. package/dist/components/ui/dialog/dialog.script.d.ts +36 -21
  65. package/dist/components/ui/dialog/index.js +1 -1
  66. package/dist/components/ui/dialog/index.js.map +4 -4
  67. package/dist/components/ui/disclosure/disclosure-group.script.d.ts +20 -6
  68. package/dist/components/ui/disclosure/disclosure.d.ts +19 -17
  69. package/dist/components/ui/disclosure/disclosure.script.d.ts +30 -9
  70. package/dist/components/ui/disclosure/index.js +1 -1
  71. package/dist/components/ui/disclosure/index.js.map +3 -3
  72. package/dist/components/ui/feed/feed.d.ts +13 -23
  73. package/dist/components/ui/field/field-description.d.ts +3 -2
  74. package/dist/components/ui/field/field-error.d.ts +4 -4
  75. package/dist/components/ui/field/field.d.ts +7 -7
  76. package/dist/components/ui/field/field.script.d.ts +48 -26
  77. package/dist/components/ui/field/index.js +1 -1
  78. package/dist/components/ui/field/index.js.map +4 -4
  79. package/dist/components/ui/form/control-protocol.d.ts +14 -0
  80. package/dist/components/ui/form/form-context.d.ts +3 -1
  81. package/dist/components/ui/form/form.d.ts +9 -3
  82. package/dist/components/ui/form/form.script.d.ts +37 -15
  83. package/dist/components/ui/form/index.js +1 -1
  84. package/dist/components/ui/form/index.js.map +3 -3
  85. package/dist/components/ui/grid/grid.d.ts +8 -8
  86. package/dist/components/ui/grid/grid.script.d.ts +20 -21
  87. package/dist/components/ui/grid/index.js +1 -1
  88. package/dist/components/ui/grid/index.js.map +3 -3
  89. package/dist/components/ui/heading/heading.css +0 -1
  90. package/dist/components/ui/heading/heading.d.ts +10 -14
  91. package/dist/components/ui/heading/index.js +1 -1
  92. package/dist/components/ui/heading/index.js.map +3 -3
  93. package/dist/components/ui/headline/headline.css +1 -1
  94. package/dist/components/ui/headline/headline.d.ts +7 -7
  95. package/dist/components/ui/headline/index.js +1 -1
  96. package/dist/components/ui/headline/index.js.map +3 -3
  97. package/dist/components/ui/hover-card/hover-card.css +121 -0
  98. package/dist/components/ui/hover-card/hover-card.d.ts +15 -0
  99. package/dist/components/ui/hover-card/hover-card.script.d.ts +110 -0
  100. package/dist/components/ui/hover-card/index.d.ts +3 -0
  101. package/dist/components/ui/hover-card/index.js +2 -0
  102. package/dist/components/ui/hover-card/index.js.map +7 -0
  103. package/dist/components/ui/input/index.js +1 -1
  104. package/dist/components/ui/input/index.js.map +3 -3
  105. package/dist/components/ui/input/input.d.ts +3 -8
  106. package/dist/components/ui/input-group/index.d.ts +1 -0
  107. package/dist/components/ui/input-group/index.js +2 -0
  108. package/dist/components/ui/input-group/index.js.map +7 -0
  109. package/dist/components/ui/input-group/input-group.css +161 -0
  110. package/dist/components/ui/input-group/input-group.d.ts +31 -0
  111. package/dist/components/ui/knob/index.d.ts +2 -0
  112. package/dist/components/ui/knob/index.js +2 -0
  113. package/dist/components/ui/knob/index.js.map +7 -0
  114. package/dist/components/ui/knob/knob-geometry.d.ts +21 -0
  115. package/dist/components/ui/knob/knob.css +139 -0
  116. package/dist/components/ui/knob/knob.d.ts +16 -0
  117. package/dist/components/ui/knob/knob.script.d.ts +138 -0
  118. package/dist/components/ui/label/index.js +1 -1
  119. package/dist/components/ui/label/index.js.map +3 -3
  120. package/dist/components/ui/label/label.d.ts +5 -4
  121. package/dist/components/ui/listbox/index.d.ts +2 -2
  122. package/dist/components/ui/listbox/index.js +1 -1
  123. package/dist/components/ui/listbox/index.js.map +4 -4
  124. package/dist/components/ui/listbox/listbox.css +14 -0
  125. package/dist/components/ui/listbox/listbox.d.ts +21 -7
  126. package/dist/components/ui/listbox/listbox.script.d.ts +51 -20
  127. package/dist/components/ui/menu-button/index.d.ts +1 -1
  128. package/dist/components/ui/menu-button/index.js +1 -1
  129. package/dist/components/ui/menu-button/index.js.map +4 -4
  130. package/dist/components/ui/menu-button/menu-button.css +30 -118
  131. package/dist/components/ui/menu-button/menu-button.d.ts +24 -19
  132. package/dist/components/ui/menu-button/menu-button.script.d.ts +39 -20
  133. package/dist/components/ui/menubar/index.d.ts +1 -1
  134. package/dist/components/ui/menubar/index.js +1 -1
  135. package/dist/components/ui/menubar/index.js.map +4 -4
  136. package/dist/components/ui/menubar/menubar.css +36 -59
  137. package/dist/components/ui/menubar/menubar.d.ts +31 -10
  138. package/dist/components/ui/menubar/menubar.script.d.ts +53 -22
  139. package/dist/components/ui/meter/meter.d.ts +3 -5
  140. package/dist/components/ui/meter/meter.script.d.ts +8 -13
  141. package/dist/components/ui/navigation-menu/index.d.ts +1 -1
  142. package/dist/components/ui/navigation-menu/index.js +1 -1
  143. package/dist/components/ui/navigation-menu/index.js.map +3 -3
  144. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +21 -20
  145. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +32 -19
  146. package/dist/components/ui/number-field/index.js +1 -1
  147. package/dist/components/ui/number-field/index.js.map +3 -3
  148. package/dist/components/ui/number-field/number-field.d.ts +22 -42
  149. package/dist/components/ui/number-field/number-field.script.d.ts +27 -26
  150. package/dist/components/ui/pagination/index.d.ts +2 -0
  151. package/dist/components/ui/pagination/index.js +2 -0
  152. package/dist/components/ui/pagination/index.js.map +7 -0
  153. package/dist/components/ui/pagination/pagination.css +76 -0
  154. package/dist/components/ui/pagination/pagination.d.ts +31 -0
  155. package/dist/components/ui/pagination/pagination.script.d.ts +69 -0
  156. package/dist/components/ui/popover/index.js +1 -1
  157. package/dist/components/ui/popover/index.js.map +3 -3
  158. package/dist/components/ui/popover/popover.css +0 -122
  159. package/dist/components/ui/popover/popover.d.ts +23 -11
  160. package/dist/components/ui/popover/popover.script.d.ts +54 -16
  161. package/dist/components/ui/radio-group/index.js +1 -1
  162. package/dist/components/ui/radio-group/index.js.map +2 -2
  163. package/dist/components/ui/radio-group/radio-group.d.ts +8 -9
  164. package/dist/components/ui/radio-group/radio-group.script.d.ts +34 -16
  165. package/dist/components/ui/select/index.d.ts +1 -1
  166. package/dist/components/ui/select/index.js +1 -1
  167. package/dist/components/ui/select/index.js.map +4 -4
  168. package/dist/components/ui/select/select.css +5 -73
  169. package/dist/components/ui/select/select.d.ts +34 -39
  170. package/dist/components/ui/select/select.script.d.ts +52 -27
  171. package/dist/components/ui/separator/index.d.ts +1 -0
  172. package/dist/components/ui/separator/index.js +2 -0
  173. package/dist/components/ui/separator/index.js.map +7 -0
  174. package/dist/components/ui/separator/separator.css +32 -0
  175. package/dist/components/ui/separator/separator.d.ts +12 -0
  176. package/dist/components/ui/shared/control-toggle.css +8 -13
  177. package/dist/components/ui/shared/field-label.d.ts +5 -0
  178. package/dist/components/ui/shared/listbox-host-controller.d.ts +40 -0
  179. package/dist/components/ui/shared/listbox-option.d.ts +4 -0
  180. package/dist/components/ui/shared/listbox-popover-behavior.d.ts +7 -0
  181. package/dist/components/ui/shared/menu-entry.d.ts +32 -0
  182. package/dist/components/ui/shared/menu-tree.d.ts +57 -0
  183. package/dist/components/ui/shared/multi-value.d.ts +14 -2
  184. package/dist/components/ui/shared/numeric-range.d.ts +35 -0
  185. package/dist/components/ui/shared/popover.css +0 -4
  186. package/dist/components/ui/shared/preview-timing.d.ts +11 -0
  187. package/dist/components/ui/sidebar/index.d.ts +1 -1
  188. package/dist/components/ui/sidebar/index.js +1 -1
  189. package/dist/components/ui/sidebar/index.js.map +4 -4
  190. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +28 -13
  191. package/dist/components/ui/sidebar/sidebar.css +38 -0
  192. package/dist/components/ui/sidebar/sidebar.d.ts +56 -92
  193. package/dist/components/ui/sidebar/sidebar.script.d.ts +40 -42
  194. package/dist/components/ui/slider/index.d.ts +2 -2
  195. package/dist/components/ui/slider/index.js +1 -1
  196. package/dist/components/ui/slider/index.js.map +4 -4
  197. package/dist/components/ui/slider/slider.css +118 -120
  198. package/dist/components/ui/slider/slider.d.ts +28 -5
  199. package/dist/components/ui/slider/slider.script.d.ts +134 -61
  200. package/dist/components/ui/spinner/index.d.ts +1 -0
  201. package/dist/components/ui/spinner/index.js +2 -0
  202. package/dist/components/ui/spinner/index.js.map +7 -0
  203. package/dist/components/ui/spinner/spinner.css +46 -0
  204. package/dist/components/ui/spinner/spinner.d.ts +19 -0
  205. package/dist/components/ui/switch/index.js +1 -1
  206. package/dist/components/ui/switch/index.js.map +3 -3
  207. package/dist/components/ui/switch/switch.d.ts +13 -10
  208. package/dist/components/ui/switch/switch.script.d.ts +28 -15
  209. package/dist/components/ui/table/index.d.ts +2 -0
  210. package/dist/components/ui/table/index.js +2 -0
  211. package/dist/components/ui/table/index.js.map +7 -0
  212. package/dist/components/ui/table/table.css +250 -0
  213. package/dist/components/ui/table/table.d.ts +52 -0
  214. package/dist/components/ui/table/table.script.d.ts +111 -0
  215. package/dist/components/ui/tabs/index.js +1 -1
  216. package/dist/components/ui/tabs/index.js.map +3 -3
  217. package/dist/components/ui/tabs/tabs.d.ts +18 -23
  218. package/dist/components/ui/tabs/tabs.script.d.ts +33 -9
  219. package/dist/components/ui/tag-group/index.js +1 -1
  220. package/dist/components/ui/tag-group/index.js.map +4 -4
  221. package/dist/components/ui/tag-group/tag-group.d.ts +23 -16
  222. package/dist/components/ui/tag-group/tag-group.script.d.ts +57 -7
  223. package/dist/components/ui/textarea/index.js +1 -1
  224. package/dist/components/ui/textarea/index.js.map +3 -3
  225. package/dist/components/ui/textarea/textarea.d.ts +3 -8
  226. package/dist/components/ui/toast/index.js +1 -1
  227. package/dist/components/ui/toast/index.js.map +4 -4
  228. package/dist/components/ui/toast/toast.d.ts +7 -11
  229. package/dist/components/ui/toast/toast.script.d.ts +26 -32
  230. package/dist/components/ui/toast/toaster.script.d.ts +20 -19
  231. package/dist/components/ui/toc/index.js +1 -1
  232. package/dist/components/ui/toc/index.js.map +2 -2
  233. package/dist/components/ui/toc/toc.d.ts +4 -4
  234. package/dist/components/ui/toc/toc.script.d.ts +20 -12
  235. package/dist/components/ui/toolbar/index.js +1 -1
  236. package/dist/components/ui/toolbar/index.js.map +3 -3
  237. package/dist/components/ui/toolbar/toolbar.d.ts +8 -5
  238. package/dist/components/ui/toolbar/toolbar.script.d.ts +26 -13
  239. package/dist/components/ui/tooltip/index.js +1 -1
  240. package/dist/components/ui/tooltip/index.js.map +3 -3
  241. package/dist/components/ui/tooltip/tooltip.css +0 -6
  242. package/dist/components/ui/tooltip/tooltip.d.ts +10 -5
  243. package/dist/components/ui/tooltip/tooltip.script.d.ts +27 -5
  244. package/dist/components/ui/tree/index.js +1 -1
  245. package/dist/components/ui/tree/index.js.map +3 -3
  246. package/dist/components/ui/tree/tree.d.ts +8 -8
  247. package/dist/components/ui/tree/tree.script.d.ts +38 -25
  248. package/dist/components/ui/treegrid/index.js +1 -1
  249. package/dist/components/ui/treegrid/index.js.map +3 -3
  250. package/dist/components/ui/treegrid/treegrid.d.ts +10 -9
  251. package/dist/components/ui/treegrid/treegrid.script.d.ts +48 -24
  252. package/dist/components/ui/window-splitter/index.js +1 -1
  253. package/dist/components/ui/window-splitter/index.js.map +4 -4
  254. package/dist/components/ui/window-splitter/window-splitter.d.ts +13 -5
  255. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +24 -25
  256. package/dist/index.d.ts +11 -0
  257. package/dist/index.js +1 -1
  258. package/dist/index.js.map +4 -4
  259. package/dist/lib/icons/check.d.ts +3 -0
  260. package/dist/lib/icons/chevron-left.d.ts +3 -0
  261. package/dist/lib/icons/chevron-right.d.ts +3 -0
  262. package/dist/lib/icons/index.d.ts +4 -0
  263. package/dist/lib/icons/types.d.ts +3 -3
  264. package/dist/lib/icons/x.d.ts +5 -0
  265. package/dist/lib/intrinsic.d.ts +3 -3
  266. package/dist/lib/mask/date-mask.d.ts +0 -2
  267. package/dist/lib/mask/index.d.ts +2 -2
  268. package/dist/lib/mask/input-mask.d.ts +0 -4
  269. package/dist/styles/primitives.css +160 -0
  270. package/dist/styles/radiant-ui-core.css +85 -9
  271. package/dist/styles/radiant-ui.css +90 -20
  272. package/dist/styles/style-dependencies.json +425 -0
  273. package/dist/styles/styles.css +791 -520
  274. package/dist/styles/tailwind.css +90 -25
  275. package/dist/styles/tokens/system.css +6 -3
  276. package/dist/styles/tokens/typography/default.css +2 -0
  277. package/package.json +101 -14
package/README.md CHANGED
@@ -17,7 +17,7 @@ This project is **not a React app**. JSX compiles through `@ecopages/jsx`.
17
17
  Framework documentation (API, SSR contract, Vitest, limitations):
18
18
  **[../storybook-radiant-vite/README.md](../storybook-radiant-vite/README.md)**
19
19
 
20
- Library overview and conventions: Storybook **Introduction** (`src/Introduction.mdx`).
20
+ Library overview and conventions: Storybook **Introduction** (`src/Introduction.mdx`). Component authoring: [`src/components/ui/README.md`](./src/components/ui/README.md).
21
21
 
22
22
  ## Develop
23
23
 
@@ -33,8 +33,8 @@ Useful scripts:
33
33
  ```bash
34
34
  pnpm run test # Vitest (storybook + unit browser projects)
35
35
  pnpm run test:storybook # Story interaction/render tests (CI)
36
- pnpm run test:ssr:smoke # Local SSR smoke (6 stories × client/ssr-static/ssr-hydrate)
37
- pnpm run test:ssr # Full Components/* SSR matrix (nightly)
36
+ pnpm run test:ssr:smoke # SSR smoke (6 stories × client/ssr-static/ssr-hydrate; runs on PRs)
37
+ pnpm run test:ssr # Full Components/* SSR matrix (run on demand)
38
38
  pnpm run typecheck
39
39
  pnpm run lint
40
40
  pnpm run build:lib # generate exports + build JS/types + compile CSS
@@ -68,7 +68,7 @@ Convenience bundle (default theme + core primitives):
68
68
  import '@ecopages/radiant-ui/radiant-ui.css';
69
69
  ```
70
70
 
71
- Design tokens and themes: see [`DESIGN.md`](./DESIGN.md). Component authoring: [`AGENTS.md`](./AGENTS.md).
71
+ Design tokens and themes: see [`DESIGN.md`](./DESIGN.md). Agent working rules: [`AGENTS.md`](./AGENTS.md).
72
72
 
73
73
  ## Story map
74
74
 
@@ -1,10 +1,10 @@
1
- import type { JsxHtmlPropsWithChildren } from '@ecopages/jsx';
1
+ import type { JsxElementProps } from '@ecopages/jsx';
2
2
  import type { RuiAlertProps, RuiAlertVariant } from './alert.script';
3
3
  /** Registers `<rui-alert>` when the JSX helpers are imported. */
4
4
  import './alert.script';
5
- export type RuiAlertIconProps = JsxHtmlPropsWithChildren<{
5
+ export type RuiAlertIconProps = JsxElementProps<HTMLSpanElement> & {
6
6
  variant?: RuiAlertVariant;
7
- }>;
7
+ };
8
8
  /**
9
9
  * Default variant icon for `layout="inline"`. Pass `children` to override.
10
10
  *
@@ -14,30 +14,26 @@ export type RuiAlertIconProps = JsxHtmlPropsWithChildren<{
14
14
  * text, not by icon alone.
15
15
  */
16
16
  export declare function RuiAlertIcon({ variant, class: className, children, ...props }: RuiAlertIconProps): import("@ecopages/jsx").JsxRenderable;
17
- export type RuiAlertTitleProps = JsxHtmlPropsWithChildren;
17
+ export type RuiAlertTitleProps = JsxElementProps<HTMLParagraphElement>;
18
18
  /**
19
19
  * Heading for `layout="banner"` alerts.
20
20
  *
21
21
  * @cssclass rui-alert__title - Banner headline.
22
22
  */
23
23
  export declare function RuiAlertTitle({ children, class: className, ...props }: RuiAlertTitleProps): import("@ecopages/jsx").JsxRenderable;
24
- export type RuiAlertDescriptionProps = JsxHtmlPropsWithChildren;
24
+ export type RuiAlertDescriptionProps = JsxElementProps<HTMLDivElement>;
25
25
  /**
26
26
  * Body copy for `layout="banner"` alerts.
27
27
  *
28
28
  * @cssclass rui-alert__description - Banner body.
29
29
  */
30
30
  export declare function RuiAlertDescription({ children, class: className, ...props }: RuiAlertDescriptionProps): import("@ecopages/jsx").JsxRenderable;
31
- export type RuiAlertComponentProps = JsxHtmlPropsWithChildren<RuiAlertProps & {
32
- slot?: string;
33
- }>;
31
+ export type RuiAlertComponentProps = JsxElementProps<HTMLDivElement> & RuiAlertProps;
34
32
  /**
35
- * Status alert with optional dismiss control.
33
+ * Status alert with optional dismiss control. Stamps `<rui-alert>` and the inner
34
+ * `role="alert"` surface; appends `[data-alert-close]` when `dismissible`.
36
35
  *
37
36
  * @remarks
38
- * Importable JSX helper around `<rui-alert>`. Owns the `role="alert"` surface and
39
- * BEM classes; the host owns dismiss (`rui-close` / `dismiss()`).
40
- *
41
37
  * Variant tones map to semantic theme roles (`info`, `success`, `warning`, `error`)
42
38
  * via `.rui-alert--*` — not palette steps. See `alert.css` and DESIGN.md status roles.
43
39
  *
@@ -51,4 +47,4 @@ export type RuiAlertComponentProps = JsxHtmlPropsWithChildren<RuiAlertProps & {
51
47
  * @cssclass rui-alert--dismissible - Layout adjustments for the dismiss control.
52
48
  * @cssclass rui-alert__close - Dismiss button when `dismissible` is set.
53
49
  */
54
- export declare function RuiAlert({ children, variant, layout, dismissible, closeLabel, class: className, ...props }: RuiAlertComponentProps): import("@ecopages/jsx").JsxRenderable;
50
+ export declare function RuiAlert({ children, variant, layout, dismissible, closeLabel, class: className, slot, ...props }: RuiAlertComponentProps): import("@ecopages/jsx").JsxRenderable;
@@ -22,23 +22,26 @@ export type RuiAlertProps = {
22
22
  export type RuiAlertCloseDetail = {
23
23
  reason: 'dismiss';
24
24
  };
25
- type RuiAlertBindings = {
26
- variant: RuiAlertVariant;
27
- layout: RuiAlertLayout;
28
- dismissible: boolean;
29
- closeLabel: string;
30
- };
31
25
  /**
32
- * `<rui-alert>` — a brief, important message that attracts attention
33
- * without interrupting the user's task.
26
+ * `<rui-alert>` — status message host with optional dismiss.
34
27
  *
35
- * Compose with the `RuiAlert` view (surface + optional dismiss control) and
36
- * `RuiAlertIcon` / `RuiAlertTitle` / `RuiAlertDescription` as needed.
28
+ * The custom element is a behavior host: it does not render the composed tree.
29
+ * Import the script and place light-DOM children that match the contract below,
30
+ * or use the `RuiAlert` view helpers which stamp the same targets.
37
31
  *
38
32
  * Prefer injecting or revealing alerts at the moment they become relevant;
39
33
  * static copy that is always present should not use `role="alert"`.
40
34
  *
41
- * @summary Status message host; optional dismiss removes the element.
35
+ * ## Light-DOM contract
36
+ *
37
+ * Optional:
38
+ * - `[data-alert-close]` — dismiss control. Click calls `dismiss()` when `dismissible` is set.
39
+ *
40
+ * The host does not query alert content or the `role="alert"` surface. Authors own
41
+ * that markup (or use `RuiAlert`, which stamps it). Do not rely on BEM class names
42
+ * for behavior.
43
+ *
44
+ * Nested hosts: none.
42
45
  *
43
46
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/alert/
44
47
  *
@@ -46,24 +49,25 @@ type RuiAlertBindings = {
46
49
  *
47
50
  * @attr {('info'|'success'|'warning'|'error')} variant - Visual tone. Default: `info`.
48
51
  * @attr {('inline'|'banner')} layout - Layout mode. Default: `inline`.
49
- * @attr {boolean} dismissible - Show dismiss control (via the view). Default: `false`.
52
+ * @attr {boolean} dismissible - Show dismiss control. Default: `false`.
50
53
  * @attr {string} close-label - Accessible name for dismiss. Default: `Dismiss`.
51
54
  *
52
- * @slot - Alert content. Prefer the `RuiAlert` view so the `role="alert"` surface
53
- * and BEM classes stay in sync with `variant` / `layout` / `dismissible`.
54
- *
55
55
  * @fires rui-close - Emitted when the alert is dismissed; then the host is removed.
56
56
  *
57
57
  * @remarks
58
- * Styling classes live on the JSX view helpers (`@cssclass`). This element owns
59
- * dismiss behavior — default `render()` is a passthrough slot so prop updates do
60
- * not rebuild the composed light-DOM surface.
58
+ * Minimum headless tree with dismiss:
59
+ *
60
+ * ```html
61
+ * <rui-alert dismissible close-label="Dismiss">
62
+ * <div role="alert">Your session will expire soon.</div>
63
+ * <button type="button" data-alert-close aria-label="Dismiss"></button>
64
+ * </rui-alert>
65
+ * ```
61
66
  *
62
- * **Why a custom element?** Dismiss emits `rui-close` and removes the host from
63
- * the DOM without re-projecting slot content. A presentational-only wrapper would
64
- * need equivalent lifecycle wiring; the CE keeps that behavior self-contained.
67
+ * BEM classes are presentation-only; see view `@cssclass`. Dismiss emits `rui-close`
68
+ * and removes the host without re-building the composed surface.
65
69
  */
66
- export declare class RuiAlert extends RadiantElement<RuiAlertBindings> {
70
+ export declare class RuiAlert extends RadiantElement {
67
71
  variant: RuiAlertVariant;
68
72
  layout: RuiAlertLayout;
69
73
  dismissible: boolean;
@@ -73,4 +77,3 @@ export declare class RuiAlert extends RadiantElement<RuiAlertBindings> {
73
77
  dismiss(): void;
74
78
  onCloseClick(event: Event): void;
75
79
  }
76
- export {};
@@ -1,31 +1,30 @@
1
- import type { JsxHtmlProps, JsxHtmlPropsWithChildren } from '@ecopages/jsx';
2
- import type { RuiAutocompleteProps } from './autocomplete.script';
1
+ import type { JsxCustomElementAttributes, JsxElementProps, JsxRenderable } from '@ecopages/jsx';
2
+ import type { RuiAutocomplete as RuiAutocompleteElement, RuiAutocompleteProps } from './autocomplete.script';
3
3
  import './autocomplete.script';
4
- export type RuiAutocompleteInputProps = JsxHtmlProps<{
5
- slot?: string;
4
+ export type RuiAutocompleteInputProps = JsxElementProps<HTMLInputElement> & {
6
5
  placeholder?: string;
7
- 'aria-label'?: string;
8
6
  disabled?: boolean;
9
- }>;
10
- /** Search field slotted into `RuiAutocomplete`. Also pairs with combobox inputs via `data-autocomplete-input`.
7
+ };
8
+ /** Search field paired with `RuiAutocomplete`. Stamps `[data-autocomplete-input]`.
11
9
  *
12
10
  * @cssclass rui-autocomplete__input - Bordered search input.
13
11
  */
14
- export declare function RuiAutocompleteInput({ placeholder, slot, class: className, disabled, ...props }: RuiAutocompleteInputProps): import("@ecopages/jsx").JsxRenderable;
15
- export type RuiAutocompleteCollectionProps = JsxHtmlPropsWithChildren<{
16
- slot?: string;
17
- }>;
18
- /** Wrapper around the filterable collection inside `RuiAutocomplete`.
12
+ export declare function RuiAutocompleteInput({ placeholder, class: className, disabled, ...props }: RuiAutocompleteInputProps): JsxRenderable;
13
+ export type RuiAutocompleteCollectionProps = JsxElementProps<HTMLDivElement>;
14
+ /** Wrapper around the filterable collection. Stamps `[data-autocomplete-collection]`.
19
15
  *
20
16
  * @cssclass rui-autocomplete__collection - Scrollable filterable region.
21
17
  */
22
- export declare function RuiAutocompleteCollection({ children, class: className, ...props }: RuiAutocompleteCollectionProps): import("@ecopages/jsx").JsxRenderable;
23
- export type RuiAutocompleteEmptyProps = JsxHtmlPropsWithChildren;
24
- /** Shown when filtering yields no visible items.
18
+ export declare function RuiAutocompleteCollection({ children, class: className, ...props }: RuiAutocompleteCollectionProps): JsxRenderable;
19
+ export type RuiAutocompleteEmptyProps = JsxElementProps<HTMLDivElement>;
20
+ /** No-results state. Stamps `[data-autocomplete-empty]`; host toggles `hidden`.
25
21
  *
26
22
  * @cssclass rui-autocomplete__empty - No-results state.
27
23
  */
28
- export declare function RuiAutocompleteEmpty({ children, class: className, ...props }: RuiAutocompleteEmptyProps): import("@ecopages/jsx").JsxRenderable;
29
- export declare function RuiAutocomplete({ children, ...props }: JsxHtmlPropsWithChildren<RuiAutocompleteProps & {
30
- slot?: string;
31
- }>): import("@ecopages/jsx").JsxRenderable;
24
+ export declare function RuiAutocompleteEmpty({ children, class: className, ...props }: RuiAutocompleteEmptyProps): JsxRenderable;
25
+ /**
26
+ * Filter host view. Wraps children in `[data-ref="root"]` (presentation only).
27
+ *
28
+ * @cssclass rui-autocomplete - Filter host root.
29
+ */
30
+ export declare function RuiAutocomplete({ children, ...props }: JsxCustomElementAttributes<RuiAutocompleteElement, RuiAutocompleteProps>): JsxRenderable;
@@ -3,15 +3,38 @@ import { type TextFilterSensitivity } from '@/lib/text-filter';
3
3
  export type RuiAutocompleteProps = {
4
4
  /** Filter sensitivity. Default: `base` (case-insensitive contains). */
5
5
  sensitivity?: TextFilterSensitivity;
6
- /** Controlled filter query. When unset, reads from the slotted input. */
6
+ /** Controlled filter query. When unset, reads from the composed input. */
7
7
  inputValue?: string;
8
8
  };
9
9
  /**
10
- * `<rui-autocomplete>` — filters a slotted collection from a text input.
10
+ * `<rui-autocomplete>` — filters a composed collection from a text input.
11
11
  *
12
- * Wrap a search field (`data-autocomplete-input`) and a collection
13
- * (`data-autocomplete-collection` or default slot) containing `[role="option"]`,
14
- * `[role="menuitem"]`, or `[data-tag]` items.
12
+ * The custom element is a behavior host: it does not render filter markup.
13
+ * Import the script and place light-DOM children that match the contract below,
14
+ * or use `RuiAutocomplete` and its helpers, which stamp the same targets.
15
+ *
16
+ * ## Light-DOM contract
17
+ *
18
+ * Required (one of):
19
+ * - `[data-autocomplete-input]` — search field inside this host. Host listens for `input`.
20
+ * - External `[data-autocomplete-input]` on an ancestor `rui-combobox` or `rui-select`
21
+ * when this host does not contain the input.
22
+ *
23
+ * Collection (one of):
24
+ * - `[data-autocomplete-collection]` — wrapper around filterable items.
25
+ * - The host element itself — when no collection wrapper is provided.
26
+ *
27
+ * Per item inside the collection:
28
+ * - `[role="option"]`, `[role="menuitem"]`, or `[data-tag]` — filterable rows. Host
29
+ * toggles `hidden` based on the query. Text match uses `data-label` or trimmed
30
+ * `textContent`.
31
+ *
32
+ * Optional:
33
+ * - `[data-autocomplete-empty]` — no-results state. Host toggles `hidden` when matches exist.
34
+ * - `[data-label]` on items — filter text; falls back to trimmed `textContent`.
35
+ *
36
+ * Nested hosts: filterable items are often `rui-listbox` options or `rui-tag` chips;
37
+ * this host only queries the role / data-tag selectors above, not listbox internals.
15
38
  *
16
39
  * @remarks When nested in `rui-combobox`, the combobox input acts as the filter
17
40
  * field. `rui-select` uses a dedicated search input inside the popup instead.
@@ -21,12 +44,11 @@ export type RuiAutocompleteProps = {
21
44
  * @element rui-autocomplete
22
45
  *
23
46
  * @attr {string} sensitivity - Filter sensitivity: `base` (case-insensitive contains), `case`, or `accent`. Default: `base`.
24
- * @attr {string} input-value - Controlled filter query; when unset, reads from the slotted input. Default: `''`.
25
- *
26
- * @slot input - Search field (`RuiAutocompleteInput`).
27
- * @slot - Filterable collection of `[role="option"]`, `[role="menuitem"]`, or `[data-tag]` items.
47
+ * @attr {string} input-value - Controlled filter query; when unset, reads from the composed input. Default: `''`.
28
48
  *
29
- * @cssclass rui-autocomplete - Filter host.
49
+ * @remarks
50
+ * `[data-ref="root"]` on the view is presentation only; the host does not query it.
51
+ * BEM classes live on the view; the host never queries them.
30
52
  */
31
53
  export declare class RuiAutocomplete extends RadiantElement {
32
54
  sensitivity: TextFilterSensitivity;
@@ -43,9 +65,8 @@ export declare class RuiAutocomplete extends RadiantElement {
43
65
  private getQuery;
44
66
  private applyFilter;
45
67
  private initialize;
46
- connectedCallback(): void;
68
+ protected onConnected(): void;
47
69
  disconnectedCallback(): void;
48
70
  onPropsUpdated(): void;
49
71
  onInput(): void;
50
- render(): import("@ecopages/jsx").JsxRenderable;
51
72
  }
@@ -1,2 +1,2 @@
1
- import{jsx as ft,jsxs as It}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as mt,customElement as Et,onEvent as _t,onUpdated as wt,prop as dt}from"@ecopages/radiant";function ot(e,t,o="base"){if(!t)return!0;if(o==="case")return e.includes(t);let l=new Intl.Collator(void 0,{sensitivity:o==="accent"?"accent":"base",usage:"search"});for(let p=0;p<=e.length-t.length;p+=1){let I=e.slice(p,p+t.length);if(l.compare(I,t)===0)return!0}return!1}var rt,ut,at,lt,st,ct;function vt(e,t,o,l,p,I){var y,u,q,F,S,O,w,G=Symbol.metadata||Symbol.for("Symbol.metadata"),J=Object.defineProperty,U=Object.create,W=[U(null),U(null)],X=t.length;function C(n,d,f){return function(i,r){d&&(r=i,i=e);for(var h=0;h<n.length;h++)r=n[h].apply(i,f?[r]:[]);return f?r:i}}function g(n,d,f,i){if(typeof n!="function"&&(i||n!==void 0))throw new TypeError(d+" must "+(f||"be")+" a function"+(i?"":" or undefined"));return n}function Y(n,d,f,i,r,h,E,m,v,b,$){function L(s){if(!$(s))throw new TypeError("Attempted to access private element on non-instance")}var Q=[].concat(d[0]),H=d[3],B=!E,j=r===1,P=r===3,N=r===4,R=r===2;function V(s,_,nt){return function(k,it){return _&&(it=k,k=n),nt&&nt(k),a[s].call(k,it)}}if(!B){var a={},K=[],x=P?"get":N||j?"set":"value";if(v?(b||j?a={get:pt(function(){return H(this)},i,"get"),set:function(s){d[4](this,s)}}:a[x]=H,b||pt(a[x],i,R?"":x)):b||(a=Object.getOwnPropertyDescriptor(n,i)),!b&&!v){if((u=W[+m][i])&&(u^r)!==7)throw Error("Decorating two elements with the same name ("+a[x].name+") is not supported yet");W[+m][i]=r<3?1:r}}for(var c=n,T=Q.length-1;T>=0;T-=f?2:1){var tt=g(Q[T],"A decorator","be",!0),et=f?Q[T-1]:void 0,M={},A={kind:["field","accessor","method","getter","setter","class"][r],name:i,metadata:y,addInitializer:function(s,_){if(s.v)throw new TypeError("attempted to call addInitializer after decoration was finished");g(_,"An initializer","be",!0),h.push(_)}.bind(null,M)};if(B)u=tt.call(et,c,A),M.v=1,g(u,"class decorators","return")&&(c=u);else if(A.static=m,A.private=v,u=A.access={has:v?$.bind():function(s){return i in s}},N||(u.get=v?R?function(s){return L(s),a.value}:V("get",0,L):function(s){return s[i]}),R||P||(u.set=v?V("set",0,L):function(s,_){s[i]=_}),c=tt.call(et,j?{get:a.get,set:a.set}:a[x],A),M.v=1,j){if(typeof c=="object"&&c)(u=g(c.get,"accessor.get"))&&(a.get=u),(u=g(c.set,"accessor.set"))&&(a.set=u),(u=g(c.init,"accessor.init"))&&K.unshift(u);else if(c!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else g(c,(b?"field":"method")+" decorators","return")&&(b?K.unshift(c):a[x]=c)}return r<2&&E.push(C(K,m,1),C(h,m,0)),b||B||(v?j?E.splice(-1,0,V("get",m),V("set",m)):E.push(R?a[x]:g.call.bind(a[x])):J(n,i,a)),c}function Z(n){return J(n,G,{configurable:!0,enumerable:!0,value:y})}return I!==void 0&&(y=I[G]),y=U(y??null),S=[],O=function(n){n&&S.push(C(n))},w=function(n,d){for(var f=0;f<o.length;f++){var i=o[f],r=i[1],h=7&r;if((8&r)==n&&!h==d){var E=i[2],m=!!i[3],v=16&r;Y(n?e:e.prototype,i,v,m?"#"+E:bt(E),h,h<2?[]:n?F=F||[]:q=q||[],S,!!n,m,d,n&&m?function(b){return xt(b)===e}:p)}}},w(8,0),w(0,0),w(8,1),w(0,1),O(q),O(F),u=S,X||Z(e),{e:u,get c(){var n=[];return X&&[Z(e=Y(e,[t],l,e.name,5,n)),C(n,1)]}}}function bt(e){var t=gt(e,"string");return typeof t=="symbol"?t:t+""}function gt(e,t){if(typeof e!="object"||!e)return e;var o=e[Symbol.toPrimitive];if(o!==void 0){var l=o.call(e,t||"default");if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pt(e,t,o){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:o?o+" "+t:t})}catch{}return e}function xt(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var yt,ht=class extends mt{static{({e:[at,lt,st,ct,rt],c:[yt,ut]}=vt(this,[Et("rui-autocomplete")],[[dt({type:String,defaultValue:"base"}),0,"sensitivity"],[dt({type:String,attribute:"input-value",defaultValue:""}),0,"inputValue"],[wt(["sensitivity","inputValue"]),2,"onPropsUpdated"],[_t({selector:"[data-autocomplete-input]",type:"input"}),2,"onInput"]],0,void 0,mt))}sensitivity=(rt(this),at(this));inputValue=(lt(this),st(this));externalInput=(ct(this),null);onExternalInput=()=>{this.applyFilter()};getInput(){let t=this.querySelector("[data-autocomplete-input]");return t||(this.closest("rui-combobox, rui-select")?.querySelector("[data-autocomplete-input]")??null)}bindExternalInput(){this.unbindExternalInput();let t=this.getInput();!t||this.contains(t)||(this.externalInput=t,t.addEventListener("input",this.onExternalInput))}unbindExternalInput(){this.externalInput?.removeEventListener("input",this.onExternalInput),this.externalInput=null}syncFilter(){this.applyFilter()}getCollection(){return this.querySelector("[data-autocomplete-collection]")??this}getFilterableItems(){let t=this.getCollection();return t?Array.from(t.querySelectorAll('[role="option"], [data-tag], [role="menuitem"]')).filter(l=>this.contains(l)||t.contains(l)):[]}getItemText(t){return t.getAttribute("data-label")||t.textContent?.trim()||""}getQuery(){return this.inputValue?this.inputValue:this.getInput()?.value??""}applyFilter(){let t=this.getQuery(),o=this.getFilterableItems(),l=0;for(let I of o){let y=ot(this.getItemText(I),t,this.sensitivity);I.hidden=!y,y&&(l+=1)}let p=this.querySelector("[data-autocomplete-empty]");p&&(p.hidden=l>0)}initialize(){this.applyFilter()}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>{this.bindExternalInput(),this.initialize()})}disconnectedCallback(){this.unbindExternalInput(),super.disconnectedCallback()}onPropsUpdated(){this.applyFilter()}onInput(){this.applyFilter()}render(){return It("div",{class:"rui-autocomplete","data-ref":"root",children:[ft("slot",{name:"input"}),ft("slot",{})]})}static{ut()}};import{jsx as z}from"@ecopages/jsx/jsx-runtime";function D(...e){return e.filter(Boolean).join(" ")}function jt({placeholder:e,slot:t="input",class:o,disabled:l,...p}){return z("input",{...p,type:"search",slot:t,"data-autocomplete-input":!0,class:D("rui-autocomplete__input",o),placeholder:e,disabled:l,autocomplete:"off"})}function At({children:e,class:t,...o}){return z("div",{...o,"data-autocomplete-collection":!0,class:D("rui-autocomplete__collection",t),children:e})}function St({children:e,class:t,...o}){return z("div",{...o,"data-autocomplete-empty":!0,class:D("rui-autocomplete__empty",t),hidden:!0,children:e})}function Ct({children:e,...t}){return z("rui-autocomplete",{...t,children:e})}export{Ct as RuiAutocomplete,At as RuiAutocompleteCollection,yt as RuiAutocompleteElement,St as RuiAutocompleteEmpty,jt as RuiAutocompleteInput};
1
+ import{RadiantElement as ft,customElement as xt,onEvent as It,onUpdated as Et,prop as mt}from"@ecopages/radiant";function ot(e,t,o="base"){if(!t)return!0;if(o==="case")return e.includes(t);let a=new Intl.Collator(void 0,{sensitivity:o==="accent"?"accent":"base",usage:"search"});for(let h=0;h<=e.length-t.length;h+=1){let I=e.slice(h,h+t.length);if(a.compare(I,t)===0)return!0}return!1}var rt,ut,lt,at,ct,st;function yt(e,t,o,a,h,I){var y,u,O,U,C,k,A,J=Symbol.metadata||Symbol.for("Symbol.metadata"),M=Object.defineProperty,q=Object.create,W=[q(null),q(null)],X=t.length;function R(n,m,p){return function(i,r){m&&(r=i,i=e);for(var d=0;d<n.length;d++)r=n[d].apply(i,p?[r]:[]);return p?r:i}}function b(n,m,p,i){if(typeof n!="function"&&(i||n!==void 0))throw new TypeError(m+" must "+(p||"be")+" a function"+(i?"":" or undefined"));return n}function Y(n,m,p,i,r,d,E,f,v,g,$){function L(c){if(!$(c))throw new TypeError("Attempted to access private element on non-instance")}var Q=[].concat(m[0]),H=m[3],B=!E,S=r===1,P=r===3,N=r===4,V=r===2;function T(c,_,nt){return function(z,it){return _&&(it=z,z=n),nt&&nt(z),l[c].call(z,it)}}if(!B){var l={},K=[],x=P?"get":N||S?"set":"value";if(v?(g||S?l={get:pt(function(){return H(this)},i,"get"),set:function(c){m[4](this,c)}}:l[x]=H,g||pt(l[x],i,V?"":x)):g||(l=Object.getOwnPropertyDescriptor(n,i)),!g&&!v){if((u=W[+f][i])&&(u^r)!==7)throw Error("Decorating two elements with the same name ("+l[x].name+") is not supported yet");W[+f][i]=r<3?1:r}}for(var s=n,D=Q.length-1;D>=0;D-=p?2:1){var tt=b(Q[D],"A decorator","be",!0),et=p?Q[D-1]:void 0,G={},j={kind:["field","accessor","method","getter","setter","class"][r],name:i,metadata:y,addInitializer:function(c,_){if(c.v)throw new TypeError("attempted to call addInitializer after decoration was finished");b(_,"An initializer","be",!0),d.push(_)}.bind(null,G)};if(B)u=tt.call(et,s,j),G.v=1,b(u,"class decorators","return")&&(s=u);else if(j.static=f,j.private=v,u=j.access={has:v?$.bind():function(c){return i in c}},N||(u.get=v?V?function(c){return L(c),l.value}:T("get",0,L):function(c){return c[i]}),V||P||(u.set=v?T("set",0,L):function(c,_){c[i]=_}),s=tt.call(et,S?{get:l.get,set:l.set}:l[x],j),G.v=1,S){if(typeof s=="object"&&s)(u=b(s.get,"accessor.get"))&&(l.get=u),(u=b(s.set,"accessor.set"))&&(l.set=u),(u=b(s.init,"accessor.init"))&&K.unshift(u);else if(s!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else b(s,(g?"field":"method")+" decorators","return")&&(g?K.unshift(s):l[x]=s)}return r<2&&E.push(R(K,f,1),R(d,f,0)),g||B||(v?S?E.splice(-1,0,T("get",f),T("set",f)):E.push(V?l[x]:b.call.bind(l[x])):M(n,i,l)),s}function Z(n){return M(n,J,{configurable:!0,enumerable:!0,value:y})}return I!==void 0&&(y=I[J]),y=q(y??null),C=[],k=function(n){n&&C.push(R(n))},A=function(n,m){for(var p=0;p<o.length;p++){var i=o[p],r=i[1],d=7&r;if((8&r)==n&&!d==m){var E=i[2],f=!!i[3],v=16&r;Y(n?e:e.prototype,i,v,f?"#"+E:vt(E),d,d<2?[]:n?U=U||[]:O=O||[],C,!!n,f,m,n&&f?function(g){return bt(g)===e}:h)}}},A(8,0),A(0,0),A(8,1),A(0,1),k(O),k(U),u=C,X||Z(e),{e:u,get c(){var n=[];return X&&[Z(e=Y(e,[t],a,e.name,5,n)),R(n,1)]}}}function vt(e){var t=gt(e,"string");return typeof t=="symbol"?t:t+""}function gt(e,t){if(typeof e!="object"||!e)return e;var o=e[Symbol.toPrimitive];if(o!==void 0){var a=o.call(e,t||"default");if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pt(e,t,o){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:o?o+" "+t:t})}catch{}return e}function bt(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var ht,dt=class extends ft{static{({e:[lt,at,ct,st,rt],c:[ht,ut]}=yt(this,[xt("rui-autocomplete")],[[mt({type:String,defaultValue:"base"}),0,"sensitivity"],[mt({type:String,attribute:"input-value",defaultValue:""}),0,"inputValue"],[Et(["sensitivity","inputValue"]),2,"onPropsUpdated"],[It({selector:"[data-autocomplete-input]",type:"input"}),2,"onInput"]],0,void 0,ft))}sensitivity=(rt(this),lt(this));inputValue=(at(this),ct(this));externalInput=(st(this),null);onExternalInput=()=>{this.applyFilter()};getInput(){let t=this.querySelector("[data-autocomplete-input]");return t||(this.closest("rui-combobox, rui-select")?.querySelector("[data-autocomplete-input]")??null)}bindExternalInput(){this.unbindExternalInput();let t=this.getInput();!t||this.contains(t)||(this.externalInput=t,t.addEventListener("input",this.onExternalInput))}unbindExternalInput(){this.externalInput?.removeEventListener("input",this.onExternalInput),this.externalInput=null}syncFilter(){this.applyFilter()}getCollection(){return this.querySelector("[data-autocomplete-collection]")??this}getFilterableItems(){let t=this.getCollection();return t?Array.from(t.querySelectorAll('[role="option"], [data-tag], [role="menuitem"]')).filter(a=>this.contains(a)||t.contains(a)):[]}getItemText(t){return t.getAttribute("data-label")||t.textContent?.trim()||""}getQuery(){return this.inputValue?this.inputValue:this.getInput()?.value??""}applyFilter(){let t=this.getQuery(),o=this.getFilterableItems(),a=0;for(let I of o){let y=ot(this.getItemText(I),t,this.sensitivity);I.hidden=!y,y&&(a+=1)}let h=this.querySelector("[data-autocomplete-empty]");h&&h.toggleAttribute("hidden",a>0)}initialize(){this.applyFilter()}onConnected(){this.bindExternalInput(),this.initialize()}disconnectedCallback(){this.unbindExternalInput(),super.disconnectedCallback()}onPropsUpdated(){this.applyFilter()}onInput(){this.applyFilter()}static{ut()}};import{jsx as w}from"@ecopages/jsx/jsx-runtime";function F(...e){return e.filter(Boolean).join(" ")}function _t({placeholder:e,class:t,disabled:o,...a}){return w("input",{...a,type:"search","data-autocomplete-input":!0,class:F("rui-autocomplete__input",t),placeholder:e,disabled:o,autocomplete:"off"})}function wt({children:e,class:t,...o}){return w("div",{...o,"data-autocomplete-collection":!0,class:F("rui-autocomplete__collection",t),children:e})}function At({children:e,class:t,...o}){return w("div",{...o,"data-autocomplete-empty":!0,class:F("rui-autocomplete__empty",t),children:e})}function St({children:e}){return w("div",{class:"rui-autocomplete","data-ref":"root",children:e})}function jt({children:e,...t}){return w("rui-autocomplete",{...t,children:w(St,{children:e})})}export{jt as RuiAutocomplete,wt as RuiAutocompleteCollection,ht as RuiAutocompleteElement,At as RuiAutocompleteEmpty,_t as RuiAutocompleteInput};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/ui/autocomplete/autocomplete.script.tsx", "../../../../src/lib/text-filter.ts", "../../../../src/components/ui/autocomplete/autocomplete.tsx", "../../../../src/lib/cx.ts"],
4
- "sourcesContent": ["let _initProto, _initClass, _init_sensitivity, _init_extra_sensitivity, _init_inputValue, _init_extra_inputValue;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, customElement, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { textContains } from \"@/lib/text-filter\";\nlet _RuiAutocomplete;\nclass RuiAutocomplete extends RadiantElement {\n static {\n ({\n e: [_init_sensitivity, _init_extra_sensitivity, _init_inputValue, _init_extra_inputValue, _initProto],\n c: [_RuiAutocomplete, _initClass]\n } = _applyDecs(this, [customElement(\"rui-autocomplete\")], [[prop({\n type: String,\n defaultValue: \"base\"\n }), 0, \"sensitivity\"], [prop({\n type: String,\n attribute: \"input-value\",\n defaultValue: \"\"\n }), 0, \"inputValue\"], [onUpdated([\"sensitivity\", \"inputValue\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-autocomplete-input]\",\n type: \"input\"\n }), 2, \"onInput\"]], 0, void 0, RadiantElement));\n }\n sensitivity = (_initProto(this), _init_sensitivity(this));\n inputValue = (_init_extra_sensitivity(this), _init_inputValue(this));\n externalInput = (_init_extra_inputValue(this), null);\n onExternalInput = () => {\n this.applyFilter();\n };\n getInput() {\n const local = this.querySelector(\"[data-autocomplete-input]\");\n if (local) {\n return local;\n }\n const host = this.closest(\"rui-combobox, rui-select\");\n return host?.querySelector(\"[data-autocomplete-input]\") ?? null;\n }\n bindExternalInput() {\n this.unbindExternalInput();\n const input = this.getInput();\n if (!input || this.contains(input)) {\n return;\n }\n this.externalInput = input;\n input.addEventListener(\"input\", this.onExternalInput);\n }\n unbindExternalInput() {\n this.externalInput?.removeEventListener(\"input\", this.onExternalInput);\n this.externalInput = null;\n }\n syncFilter() {\n this.applyFilter();\n }\n getCollection() {\n return this.querySelector(\"[data-autocomplete-collection]\") ?? this;\n }\n getFilterableItems() {\n const collection = this.getCollection();\n if (!collection) {\n return [];\n }\n const options = Array.from(collection.querySelectorAll('[role=\"option\"], [data-tag], [role=\"menuitem\"]'));\n return options.filter(item => this.contains(item) || collection.contains(item));\n }\n getItemText(item) {\n return item.getAttribute(\"data-label\") || item.textContent?.trim() || \"\";\n }\n getQuery() {\n if (this.inputValue) {\n return this.inputValue;\n }\n return this.getInput()?.value ?? \"\";\n }\n applyFilter() {\n const query = this.getQuery();\n const items = this.getFilterableItems();\n let visibleCount = 0;\n for (const item of items) {\n const matches = textContains(this.getItemText(item), query, this.sensitivity);\n item.hidden = !matches;\n if (matches) {\n visibleCount += 1;\n }\n }\n const emptyState = this.querySelector(\"[data-autocomplete-empty]\");\n if (emptyState) {\n emptyState.hidden = visibleCount > 0;\n }\n }\n initialize() {\n this.applyFilter();\n }\n connectedCallback() {\n super.connectedCallback();\n queueMicrotask(() => {\n this.bindExternalInput();\n this.initialize();\n });\n }\n disconnectedCallback() {\n this.unbindExternalInput();\n super.disconnectedCallback();\n }\n onPropsUpdated() {\n this.applyFilter();\n }\n onInput() {\n this.applyFilter();\n }\n render() {\n return /* @__PURE__ */jsxs(\"div\", {\n class: \"rui-autocomplete\",\n \"data-ref\": \"root\",\n children: [/* @__PURE__ */jsx(\"slot\", {\n name: \"input\"\n }), /* @__PURE__ */jsx(\"slot\", {})]\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiAutocomplete as RuiAutocomplete };", "export function textContains(text, query, sensitivity = \"base\") {\n if (!query) {\n return true;\n }\n if (sensitivity === \"case\") {\n return text.includes(query);\n }\n const collator = new Intl.Collator(void 0, {\n sensitivity: sensitivity === \"accent\" ? \"accent\" : \"base\",\n usage: \"search\"\n });\n for (let index = 0; index <= text.length - query.length; index += 1) {\n const slice = text.slice(index, index + query.length);\n if (collator.compare(slice, query) === 0) {\n return true;\n }\n }\n return false;\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport \"./autocomplete.script\";\nexport function RuiAutocompleteInput({\n placeholder,\n slot = \"input\",\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"input\", {\n ...props,\n type: \"search\",\n slot,\n \"data-autocomplete-input\": true,\n class: cx(\"rui-autocomplete__input\", className),\n placeholder,\n disabled,\n autocomplete: \"off\"\n });\n}\nexport function RuiAutocompleteCollection({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-autocomplete-collection\": true,\n class: cx(\"rui-autocomplete__collection\", className),\n children\n });\n}\nexport function RuiAutocompleteEmpty({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-autocomplete-empty\": true,\n class: cx(\"rui-autocomplete__empty\", className),\n hidden: true,\n children\n });\n}\nexport function RuiAutocomplete({\n children,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-autocomplete\", {\n ...props,\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}"],
5
- "mappings": "AAMA,OAAS,OAAAA,GAAK,QAAAC,OAAY,4BAC1B,OAAS,kBAAAC,GAAgB,iBAAAC,GAAe,WAAAC,GAAS,aAAAC,GAAW,QAAAC,OAAY,oBCPjE,SAASC,GAAaC,EAAMC,EAAOC,EAAc,OAAQ,CAC9D,GAAI,CAACD,EACH,MAAO,GAET,GAAIC,IAAgB,OAClB,OAAOF,EAAK,SAASC,CAAK,EAE5B,IAAME,EAAW,IAAI,KAAK,SAAS,OAAQ,CACzC,YAAaD,IAAgB,SAAW,SAAW,OACnD,MAAO,QACT,CAAC,EACD,QAASE,EAAQ,EAAGA,GAASJ,EAAK,OAASC,EAAM,OAAQG,GAAS,EAAG,CACnE,IAAMC,EAAQL,EAAK,MAAMI,EAAOA,EAAQH,EAAM,MAAM,EACpD,GAAIE,EAAS,QAAQE,EAAOJ,CAAK,IAAM,EACrC,MAAO,EAEX,CACA,MAAO,EACT,CDlBA,IAAIK,GAAYC,GAAYC,GAAmBC,GAAyBC,GAAkBC,GAC1F,SAASC,GAAW,EAAG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,IAAIC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAI,OAAO,UAAY,OAAO,IAAI,iBAAiB,EAAGC,EAAI,OAAO,eAAgBC,EAAI,OAAO,OAAQC,EAAI,CAACD,EAAE,IAAI,EAAGA,EAAE,IAAI,CAAC,EAAGE,EAAI,EAAE,OAAQ,SAASC,EAAEC,EAAGjB,EAAGC,EAAG,CAAE,OAAO,SAAUC,EAAGC,EAAG,CAAEH,IAAMG,EAAID,EAAGA,EAAI,GAAI,QAASE,EAAI,EAAGA,EAAIa,EAAE,OAAQb,IAAKD,EAAIc,EAAEb,CAAC,EAAE,MAAMF,EAAGD,EAAI,CAACE,CAAC,EAAI,CAAC,CAAC,EAAG,OAAOF,EAAIE,EAAID,CAAG,CAAG,CAAE,SAASgB,EAAEC,EAAGF,EAAGjB,EAAGC,EAAG,CAAE,GAAkB,OAAOkB,GAArB,aAA2BlB,GAAgBkB,IAAX,QAAe,MAAM,IAAI,UAAUF,EAAI,UAAYjB,GAAK,MAAQ,eAAiBC,EAAI,GAAK,gBAAgB,EAAG,OAAOkB,CAAG,CAAE,SAASC,EAASD,EAAGF,EAAGjB,EAAGC,EAAGC,EAAGC,EAAGG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,SAASC,EAAEQ,EAAG,CAAE,GAAI,CAACT,EAAES,CAAC,EAAG,MAAM,IAAI,UAAU,qDAAqD,CAAG,CAAE,IAAIN,EAAI,CAAC,EAAE,OAAOI,EAAE,CAAC,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAGI,EAAI,CAACf,EAAGgB,EAAUpB,IAAN,EAASqB,EAAUrB,IAAN,EAASsB,EAAUtB,IAAN,EAASuB,EAAUvB,IAAN,EAAS,SAASwB,EAAET,EAAGjB,EAAGC,GAAG,CAAE,OAAO,SAAUC,EAAGC,GAAG,CAAE,OAAOH,IAAMG,GAAID,EAAGA,EAAIiB,GAAIlB,IAAKA,GAAEC,CAAC,EAAGyB,EAAEV,CAAC,EAAE,KAAKf,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACkB,EAAG,CAAE,IAAIM,EAAI,CAAC,EAAGC,EAAI,CAAC,EAAGC,EAAIN,EAAI,MAAQC,GAAKF,EAAI,MAAQ,QAAS,GAAId,GAAKC,GAAKa,EAAIK,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOf,EAAE,IAAI,CAAG,EAAGd,EAAG,KAAK,EAAG,IAAK,SAAUkB,EAAG,CAAEF,EAAE,CAAC,EAAE,KAAME,CAAC,CAAG,CAAE,EAAIQ,EAAEE,CAAC,EAAId,EAAGN,GAAKqB,GAAiBH,EAAEE,CAAC,EAAG5B,EAAGwB,EAAI,GAAKI,CAAC,GAAKpB,IAAMkB,EAAI,OAAO,yBAAyBR,EAAGlB,CAAC,GAAI,CAACQ,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,EAAE,CAACP,CAAC,EAAEN,CAAC,KAAaI,EAAIH,KAAX,EAAe,MAAM,MAAM,+CAAiDyB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGf,EAAE,CAACP,CAAC,EAAEN,CAAC,EAAIC,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS6B,EAAIZ,EAAGa,EAAInB,EAAE,OAAS,EAAGmB,GAAK,EAAGA,GAAKhC,EAAI,EAAI,EAAG,CAAE,IAAIiC,GAAIf,EAAEL,EAAEmB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAIlC,EAAIa,EAAEmB,EAAI,CAAC,EAAI,OAAQG,EAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAElC,CAAC,EAAG,KAAMD,EAAG,SAAUG,EAAG,eAAgB,SAAUe,EAAGF,EAAG,CAAE,GAAIE,EAAE,EAAG,MAAM,IAAI,UAAU,gEAAgE,EAAGD,EAAED,EAAG,iBAAkB,KAAM,EAAE,EAAGd,EAAE,KAAKc,CAAC,CAAG,EAAE,KAAK,KAAMkB,CAAC,CAAE,EAAG,GAAId,EAAGhB,EAAI4B,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,EAAE,EAAI,EAAGjB,EAAEb,EAAG,mBAAoB,QAAQ,IAAM0B,EAAI1B,WAAY+B,EAAE,OAAS7B,EAAG6B,EAAE,QAAU5B,EAAGH,EAAI+B,EAAE,OAAS,CAAE,IAAK5B,EAAIE,EAAE,KAAK,EAAI,SAAUS,EAAG,CAAE,OAAOlB,KAAKkB,CAAG,CAAE,EAAGK,IAAMnB,EAAE,IAAMG,EAAIiB,EAAI,SAAUN,EAAG,CAAE,OAAOR,EAAEQ,CAAC,EAAGQ,EAAE,KAAO,EAAID,EAAE,MAAO,EAAGf,CAAC,EAAI,SAAUQ,EAAG,CAAE,OAAOA,EAAElB,CAAC,CAAG,GAAIwB,GAAKF,IAAMlB,EAAE,IAAMG,EAAIkB,EAAE,MAAO,EAAGf,CAAC,EAAI,SAAUQ,EAAGF,EAAG,CAAEE,EAAElB,CAAC,EAAIgB,CAAG,GAAIc,EAAIE,GAAE,KAAKC,GAAGZ,EAAI,CAAE,IAAKK,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,EAAE,EAAI,EAAGb,GAAK,GAAgB,OAAOS,GAAnB,UAAwBA,GAAI1B,EAAIa,EAAEa,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMtB,IAAKA,EAAIa,EAAEa,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMtB,IAAKA,EAAIa,EAAEa,EAAE,KAAM,eAAe,IAAMH,EAAE,QAAQvB,CAAC,UAAsB0B,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAUb,EAAEa,GAAItB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAImB,EAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO7B,EAAI,GAAKI,EAAE,KAAKU,EAAEY,EAAGrB,EAAG,CAAC,EAAGS,EAAEb,EAAGI,EAAG,CAAC,CAAC,EAAGE,GAAKY,IAAMb,EAAIc,EAAIhB,EAAE,OAAO,GAAI,EAAGoB,EAAE,MAAOnB,CAAC,EAAGmB,EAAE,MAAOnB,CAAC,CAAC,EAAID,EAAE,KAAKmB,EAAIE,EAAEE,CAAC,EAAIX,EAAE,KAAK,KAAKS,EAAEE,CAAC,CAAC,CAAC,EAAIjB,EAAEO,EAAGlB,EAAG0B,CAAC,GAAII,CAAG,CAAE,SAASV,EAAEF,EAAG,CAAE,OAAOP,EAAEO,EAAGR,EAAG,CAAE,aAAc,GAAI,WAAY,GAAI,MAAOP,CAAE,CAAC,CAAG,CAAE,OAAkBD,IAAX,SAAiBC,EAAID,EAAEQ,CAAC,GAAIP,EAAIS,EAAUT,GAAI,IAAQ,EAAGI,EAAI,CAAC,EAAGC,EAAI,SAAUU,EAAG,CAAEA,GAAKX,EAAE,KAAKQ,EAAEG,CAAC,CAAC,CAAG,EAAGT,EAAI,SAAUO,EAAGhB,EAAG,CAAE,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAAK,CAAE,IAAIC,EAAIJ,EAAEG,CAAC,EAAGE,EAAID,EAAE,CAAC,EAAGK,EAAI,EAAIJ,EAAG,IAAK,EAAIA,IAAMY,GAAK,CAACR,GAAKR,EAAG,CAAE,IAAIS,EAAIN,EAAE,CAAC,EAAGO,EAAI,CAAC,CAACP,EAAE,CAAC,EAAGQ,EAAI,GAAKP,EAAGe,EAASH,EAAI,EAAI,EAAE,UAAWb,EAAGQ,EAAGD,EAAI,IAAMD,EAAI2B,GAAe3B,CAAC,EAAGD,EAAGA,EAAI,EAAI,CAAC,EAAIQ,EAAIV,EAAIA,GAAK,CAAC,EAAID,EAAIA,GAAK,CAAC,EAAGE,EAAG,CAAC,CAACS,EAAGN,EAAGV,EAAGgB,GAAKN,EAAI,SAAUM,EAAG,CAAE,OAAOqB,GAAYrB,CAAC,IAAM,CAAG,EAAIf,CAAC,CAAG,CAAE,CAAE,EAAGQ,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGD,EAAEH,CAAC,EAAGG,EAAEF,CAAC,EAAGF,EAAIG,EAAGO,GAAKM,EAAE,CAAC,EAAG,CAAE,EAAGhB,EAAG,IAAI,GAAI,CAAE,IAAI,EAAI,CAAC,EAAG,OAAOU,GAAK,CAACM,EAAE,EAAID,EAAS,EAAG,CAAC,CAAC,EAAGnB,EAAG,EAAE,KAAM,EAAG,CAAC,CAAC,EAAGe,EAAE,EAAG,CAAC,CAAC,CAAG,CAAE,CAAG,CACn/G,SAASqB,GAAepB,EAAG,CAAE,IAAId,EAAIoC,GAAatB,EAAG,QAAQ,EAAG,OAAmB,OAAOd,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASoC,GAAatB,EAAGhB,EAAG,CAAE,GAAgB,OAAOgB,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIE,EAAIF,EAAE,OAAO,WAAW,EAAG,GAAeE,IAAX,OAAc,CAAE,IAAIhB,EAAIgB,EAAE,KAAKF,EAAGhB,GAAK,SAAS,EAAG,GAAgB,OAAOE,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBF,IAAb,SAAiB,OAAS,QAAQgB,CAAC,CAAG,CACvT,SAASa,GAAiB,EAAG,EAAG9B,EAAG,CAAc,OAAO,GAAnB,WAAyB,GAAK,EAAI,EAAE,aAAe,IAAM,EAAI,IAAM,IAAK,GAAI,CAAE,OAAO,eAAe,EAAG,OAAQ,CAAE,aAAc,GAAI,MAAOA,EAAIA,EAAI,IAAM,EAAI,CAAE,CAAC,CAAG,MAAY,CAAC,CAAE,OAAO,CAAG,CAChO,SAASsC,GAAY,EAAG,CAAE,GAAI,OAAO,CAAC,IAAM,EAAG,MAAM,UAAU,qDAAgE,IAAT,KAAa,OAAO,EAAI,OAAO,EAAG,OAAO,CAAG,CAIlK,IAAIE,GACEC,GAAN,cAA8BC,EAAe,CAC3C,MAAO,EACJ,CACC,EAAG,CAAC/C,GAAmBC,GAAyBC,GAAkBC,GAAwBL,EAAU,EACpG,EAAG,CAAC+C,GAAkB9C,EAAU,CAClC,EAAIK,GAAW,KAAM,CAAC4C,GAAc,kBAAkB,CAAC,EAAG,CAAC,CAACC,GAAK,CAC/D,KAAM,OACN,aAAc,MAChB,CAAC,EAAG,EAAG,aAAa,EAAG,CAACA,GAAK,CAC3B,KAAM,OACN,UAAW,cACX,aAAc,EAChB,CAAC,EAAG,EAAG,YAAY,EAAG,CAACC,GAAU,CAAC,cAAe,YAAY,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACC,GAAQ,CAC9F,SAAU,4BACV,KAAM,OACR,CAAC,EAAG,EAAG,SAAS,CAAC,EAAG,EAAG,OAAQJ,EAAc,EAC/C,CACA,aAAejD,GAAW,IAAI,EAAGE,GAAkB,IAAI,GACvD,YAAcC,GAAwB,IAAI,EAAGC,GAAiB,IAAI,GAClE,eAAiBC,GAAuB,IAAI,EAAG,MAC/C,gBAAkB,IAAM,CACtB,KAAK,YAAY,CACnB,EACA,UAAW,CACT,IAAMiD,EAAQ,KAAK,cAAc,2BAA2B,EAC5D,OAAIA,IAGS,KAAK,QAAQ,0BAA0B,GACvC,cAAc,2BAA2B,GAAK,KAC7D,CACA,mBAAoB,CAClB,KAAK,oBAAoB,EACzB,IAAMC,EAAQ,KAAK,SAAS,EACxB,CAACA,GAAS,KAAK,SAASA,CAAK,IAGjC,KAAK,cAAgBA,EACrBA,EAAM,iBAAiB,QAAS,KAAK,eAAe,EACtD,CACA,qBAAsB,CACpB,KAAK,eAAe,oBAAoB,QAAS,KAAK,eAAe,EACrE,KAAK,cAAgB,IACvB,CACA,YAAa,CACX,KAAK,YAAY,CACnB,CACA,eAAgB,CACd,OAAO,KAAK,cAAc,gCAAgC,GAAK,IACjE,CACA,oBAAqB,CACnB,IAAMC,EAAa,KAAK,cAAc,EACtC,OAAKA,EAGW,MAAM,KAAKA,EAAW,iBAAiB,gDAAgD,CAAC,EACzF,OAAOC,GAAQ,KAAK,SAASA,CAAI,GAAKD,EAAW,SAASC,CAAI,CAAC,EAHrE,CAAC,CAIZ,CACA,YAAYA,EAAM,CAChB,OAAOA,EAAK,aAAa,YAAY,GAAKA,EAAK,aAAa,KAAK,GAAK,EACxE,CACA,UAAW,CACT,OAAI,KAAK,WACA,KAAK,WAEP,KAAK,SAAS,GAAG,OAAS,EACnC,CACA,aAAc,CACZ,IAAMC,EAAQ,KAAK,SAAS,EACtBC,EAAQ,KAAK,mBAAmB,EAClCC,EAAe,EACnB,QAAWH,KAAQE,EAAO,CACxB,IAAME,EAAUC,GAAa,KAAK,YAAYL,CAAI,EAAGC,EAAO,KAAK,WAAW,EAC5ED,EAAK,OAAS,CAACI,EACXA,IACFD,GAAgB,EAEpB,CACA,IAAMG,EAAa,KAAK,cAAc,2BAA2B,EAC7DA,IACFA,EAAW,OAASH,EAAe,EAEvC,CACA,YAAa,CACX,KAAK,YAAY,CACnB,CACA,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,eAAe,IAAM,CACnB,KAAK,kBAAkB,EACvB,KAAK,WAAW,CAClB,CAAC,CACH,CACA,sBAAuB,CACrB,KAAK,oBAAoB,EACzB,MAAM,qBAAqB,CAC7B,CACA,gBAAiB,CACf,KAAK,YAAY,CACnB,CACA,SAAU,CACR,KAAK,YAAY,CACnB,CACA,QAAS,CACP,OAAsBI,GAAK,MAAO,CAChC,MAAO,mBACP,WAAY,OACZ,SAAU,CAAgBC,GAAI,OAAQ,CACpC,KAAM,OACR,CAAC,EAAkBA,GAAI,OAAQ,CAAC,CAAC,CAAC,CACpC,CAAC,CACH,CACA,MAAO,CACLhE,GAAW,CACb,CACF,EE7HA,OAAS,OAAAiE,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CDCO,SAASC,GAAqB,CACnC,YAAAC,EACA,KAAAC,EAAO,QACP,MAAOC,EACP,SAAAC,EACA,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,QAAS,CACjC,GAAGD,EACH,KAAM,SACN,KAAAH,EACA,0BAA2B,GAC3B,MAAOK,EAAG,0BAA2BJ,CAAS,EAC9C,YAAAF,EACA,SAAAG,EACA,aAAc,KAChB,CAAC,CACH,CACO,SAASI,GAA0B,CACxC,SAAAC,EACA,MAAON,EACP,GAAGE,CACL,EAAG,CACD,OAAsBC,EAAI,MAAO,CAC/B,GAAGD,EACH,+BAAgC,GAChC,MAAOE,EAAG,+BAAgCJ,CAAS,EACnD,SAAAM,CACF,CAAC,CACH,CACO,SAASC,GAAqB,CACnC,SAAAD,EACA,MAAON,EACP,GAAGE,CACL,EAAG,CACD,OAAsBC,EAAI,MAAO,CAC/B,GAAGD,EACH,0BAA2B,GAC3B,MAAOE,EAAG,0BAA2BJ,CAAS,EAC9C,OAAQ,GACR,SAAAM,CACF,CAAC,CACH,CACO,SAASE,GAAgB,CAC9B,SAAAF,EACA,GAAGJ,CACL,EAAG,CACD,OAAsBC,EAAI,mBAAoB,CAC5C,GAAGD,EACH,SAAAI,CACF,CAAC,CACH",
6
- "names": ["jsx", "jsxs", "RadiantElement", "customElement", "onEvent", "onUpdated", "prop", "textContains", "text", "query", "sensitivity", "collator", "index", "slice", "_initProto", "_initClass", "_init_sensitivity", "_init_extra_sensitivity", "_init_inputValue", "_init_extra_inputValue", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiAutocomplete", "RuiAutocomplete", "RadiantElement", "customElement", "prop", "onUpdated", "onEvent", "local", "input", "collection", "item", "query", "items", "visibleCount", "matches", "textContains", "emptyState", "jsxs", "jsx", "jsx", "cx", "parts", "RuiAutocompleteInput", "placeholder", "slot", "className", "disabled", "props", "jsx", "cx", "RuiAutocompleteCollection", "children", "RuiAutocompleteEmpty", "RuiAutocomplete"]
4
+ "sourcesContent": ["let _initProto, _initClass, _init_sensitivity, _init_extra_sensitivity, _init_inputValue, _init_extra_inputValue;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { textContains } from \"@/lib/text-filter\";\nlet _RuiAutocomplete;\nclass RuiAutocomplete extends RadiantElement {\n static {\n ({\n e: [_init_sensitivity, _init_extra_sensitivity, _init_inputValue, _init_extra_inputValue, _initProto],\n c: [_RuiAutocomplete, _initClass]\n } = _applyDecs(this, [customElement(\"rui-autocomplete\")], [[prop({\n type: String,\n defaultValue: \"base\"\n }), 0, \"sensitivity\"], [prop({\n type: String,\n attribute: \"input-value\",\n defaultValue: \"\"\n }), 0, \"inputValue\"], [onUpdated([\"sensitivity\", \"inputValue\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-autocomplete-input]\",\n type: \"input\"\n }), 2, \"onInput\"]], 0, void 0, RadiantElement));\n }\n sensitivity = (_initProto(this), _init_sensitivity(this));\n inputValue = (_init_extra_sensitivity(this), _init_inputValue(this));\n externalInput = (_init_extra_inputValue(this), null);\n onExternalInput = () => {\n this.applyFilter();\n };\n getInput() {\n const local = this.querySelector(\"[data-autocomplete-input]\");\n if (local) {\n return local;\n }\n const host = this.closest(\"rui-combobox, rui-select\");\n return host?.querySelector(\"[data-autocomplete-input]\") ?? null;\n }\n bindExternalInput() {\n this.unbindExternalInput();\n const input = this.getInput();\n if (!input || this.contains(input)) {\n return;\n }\n this.externalInput = input;\n input.addEventListener(\"input\", this.onExternalInput);\n }\n unbindExternalInput() {\n this.externalInput?.removeEventListener(\"input\", this.onExternalInput);\n this.externalInput = null;\n }\n syncFilter() {\n this.applyFilter();\n }\n getCollection() {\n return this.querySelector(\"[data-autocomplete-collection]\") ?? this;\n }\n getFilterableItems() {\n const collection = this.getCollection();\n if (!collection) {\n return [];\n }\n const options = Array.from(collection.querySelectorAll('[role=\"option\"], [data-tag], [role=\"menuitem\"]'));\n return options.filter(item => this.contains(item) || collection.contains(item));\n }\n getItemText(item) {\n return item.getAttribute(\"data-label\") || item.textContent?.trim() || \"\";\n }\n getQuery() {\n if (this.inputValue) {\n return this.inputValue;\n }\n return this.getInput()?.value ?? \"\";\n }\n applyFilter() {\n const query = this.getQuery();\n const items = this.getFilterableItems();\n let visibleCount = 0;\n for (const item of items) {\n const matches = textContains(this.getItemText(item), query, this.sensitivity);\n item.hidden = !matches;\n if (matches) {\n visibleCount += 1;\n }\n }\n const emptyState = this.querySelector(\"[data-autocomplete-empty]\");\n if (emptyState) {\n emptyState.toggleAttribute(\"hidden\", visibleCount > 0);\n }\n }\n initialize() {\n this.applyFilter();\n }\n onConnected() {\n this.bindExternalInput();\n this.initialize();\n }\n disconnectedCallback() {\n this.unbindExternalInput();\n super.disconnectedCallback();\n }\n onPropsUpdated() {\n this.applyFilter();\n }\n onInput() {\n this.applyFilter();\n }\n static {\n _initClass();\n }\n}\nexport { _RuiAutocomplete as RuiAutocomplete };", "export function textContains(text, query, sensitivity = \"base\") {\n if (!query) {\n return true;\n }\n if (sensitivity === \"case\") {\n return text.includes(query);\n }\n const collator = new Intl.Collator(void 0, {\n sensitivity: sensitivity === \"accent\" ? \"accent\" : \"base\",\n usage: \"search\"\n });\n for (let index = 0; index <= text.length - query.length; index += 1) {\n const slice = text.slice(index, index + query.length);\n if (collator.compare(slice, query) === 0) {\n return true;\n }\n }\n return false;\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport \"./autocomplete.script\";\nexport function RuiAutocompleteInput({\n placeholder,\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"input\", {\n ...props,\n type: \"search\",\n \"data-autocomplete-input\": true,\n class: cx(\"rui-autocomplete__input\", className),\n placeholder,\n disabled,\n autocomplete: \"off\"\n });\n}\nexport function RuiAutocompleteCollection({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-autocomplete-collection\": true,\n class: cx(\"rui-autocomplete__collection\", className),\n children\n });\n}\nexport function RuiAutocompleteEmpty({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-autocomplete-empty\": true,\n class: cx(\"rui-autocomplete__empty\", className),\n children\n });\n}\nfunction AutocompleteShell({\n children\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: \"rui-autocomplete\",\n \"data-ref\": \"root\",\n children\n });\n}\nexport function RuiAutocomplete({\n children,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"rui-autocomplete\", {\n ...props,\n children: /* @__PURE__ */jsx(AutocompleteShell, {\n children\n })\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}"],
5
+ "mappings": "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",
6
+ "names": ["RadiantElement", "customElement", "onEvent", "onUpdated", "prop", "textContains", "text", "query", "sensitivity", "collator", "index", "slice", "_initProto", "_initClass", "_init_sensitivity", "_init_extra_sensitivity", "_init_inputValue", "_init_extra_inputValue", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiAutocomplete", "RuiAutocomplete", "RadiantElement", "customElement", "prop", "onUpdated", "onEvent", "local", "input", "collection", "item", "query", "items", "visibleCount", "matches", "textContains", "emptyState", "jsx", "cx", "parts", "RuiAutocompleteInput", "placeholder", "className", "disabled", "props", "jsx", "cx", "RuiAutocompleteCollection", "children", "RuiAutocompleteEmpty", "AutocompleteShell", "RuiAutocomplete"]
7
7
  }
@@ -1,6 +1,6 @@
1
- import type { JsxHtmlPropsWithChildren } from '@ecopages/jsx';
1
+ import type { JsxElementProps } from '@ecopages/jsx';
2
2
  export type RuiAvatarSize = 'sm' | 'md' | 'lg';
3
- export type RuiAvatarProps = JsxHtmlPropsWithChildren<{
3
+ export type RuiAvatarProps = JsxElementProps<HTMLSpanElement> & {
4
4
  /** Image URL. When omitted or broken, initials from `alt` / `fallback` are shown. */
5
5
  src?: string;
6
6
  /** Accessible name for the image. Also used to derive initials when `fallback` is omitted. */
@@ -8,7 +8,7 @@ export type RuiAvatarProps = JsxHtmlPropsWithChildren<{
8
8
  /** Explicit fallback initials / text when there is no image. */
9
9
  fallback?: string;
10
10
  size?: RuiAvatarSize;
11
- }>;
11
+ };
12
12
  /**
13
13
  * Image avatar with initials fallback.
14
14
  *
@@ -24,4 +24,4 @@ export type RuiAvatarProps = JsxHtmlPropsWithChildren<{
24
24
  * @cssclass rui-avatar__image - `<img>` fill.
25
25
  * @cssclass rui-avatar__fallback - Initials / text fallback.
26
26
  */
27
- export declare function RuiAvatar({ src, alt, fallback, size, class: className, children, ...props }: RuiAvatarProps): import("@ecopages/jsx").JsxRenderable;
27
+ export declare function RuiAvatar({ src, alt, fallback, size, class: className, children, role, aria, ...props }: RuiAvatarProps): import("@ecopages/jsx").JsxRenderable;
@@ -0,0 +1,55 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties;
3
+ @layer components {
4
+ .rui-badge {
5
+ display: inline-flex;
6
+ align-items: center;
7
+ gap: var(--spacing-1, var(--space-1));
8
+ border-radius: var(--radius-control, var(--radius-control));
9
+ padding-inline: var(--spacing-2, var(--space-2));
10
+ padding-block: calc(var(--spacing, 0.25rem) * 0.5);
11
+ font-size: var(--text-xs, var(--text-xs));
12
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
13
+ --tw-font-weight: var(--font-weight-medium, var(--weight-medium));
14
+ font-weight: var(--font-weight-medium, var(--weight-medium));
15
+ }
16
+ .rui-badge--filled {
17
+ background-color: var(--color-primary-container, var(--primary-container));
18
+ color: var(--color-on-primary-container, var(--on-primary-container));
19
+ }
20
+ .rui-badge--outline {
21
+ border-style: var(--tw-border-style);
22
+ border-width: 1px;
23
+ border-color: var(--color-border, var(--border));
24
+ background-color: var(--color-background, var(--background));
25
+ color: var(--color-on-background, var(--on-background));
26
+ }
27
+ .rui-badge--destructive {
28
+ background-color: var(--color-error, var(--error));
29
+ color: var(--color-on-error, var(--on-error));
30
+ }
31
+ .rui-badge--ghost {
32
+ color: var(--color-on-surface, var(--on-surface));
33
+ }
34
+ .rui-badge--muted {
35
+ background-color: var(--color-surface-container, var(--surface-container));
36
+ color: var(--color-on-surface, var(--on-surface));
37
+ }
38
+ }
39
+ @property --tw-font-weight {
40
+ syntax: "*";
41
+ inherits: false;
42
+ }
43
+ @property --tw-border-style {
44
+ syntax: "*";
45
+ inherits: false;
46
+ initial-value: solid;
47
+ }
48
+ @layer properties {
49
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
50
+ *, ::before, ::after, ::backdrop {
51
+ --tw-font-weight: initial;
52
+ --tw-border-style: solid;
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,19 @@
1
+ import type { JsxElementProps } from '@ecopages/jsx';
2
+ export type RuiBadgeVariant = 'filled' | 'outline' | 'destructive' | 'ghost' | 'muted';
3
+ export type RuiBadgeProps = JsxElementProps<HTMLSpanElement> & {
4
+ /** Visual tone. Default: `filled`. */
5
+ variant?: RuiBadgeVariant;
6
+ };
7
+ /**
8
+ * Compact status or count label.
9
+ *
10
+ * @remarks For category chips and filter entities use `RuiChip` instead.
11
+ *
12
+ * @cssclass rui-badge - Badge root.
13
+ * @cssclass rui-badge--filled - Primary emphasis on `primary-container`.
14
+ * @cssclass rui-badge--outline - Bordered badge on `background`.
15
+ * @cssclass rui-badge--destructive - Error emphasis.
16
+ * @cssclass rui-badge--ghost - Subtle text-only badge.
17
+ * @cssclass rui-badge--muted - Muted surface badge.
18
+ */
19
+ export declare function RuiBadge({ children, variant, class: className, ...props }: RuiBadgeProps): import("@ecopages/jsx").JsxRenderable;
@@ -0,0 +1 @@
1
+ export { RuiBadge, type RuiBadgeProps, type RuiBadgeVariant } from './badge';
@@ -0,0 +1,2 @@
1
+ import{jsx as n}from"@ecopages/jsx/jsx-runtime";function o(...r){return r.filter(Boolean).join(" ")}function a({children:r,variant:e="filled",class:i,...t}){return n("span",{...t,class:o("rui-badge",`rui-badge--${e}`,i),children:r})}export{a as RuiBadge};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/ui/badge/badge.tsx", "../../../../src/lib/cx.ts"],
4
+ "sourcesContent": ["import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nexport function RuiBadge({\n children,\n variant = \"filled\",\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"span\", {\n ...props,\n class: cx(\"rui-badge\", `rui-badge--${variant}`, className),\n children\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}"],
5
+ "mappings": "AAAA,OAAS,OAAAA,MAAW,4BCAb,SAASC,KAAMC,EAAO,CAC3B,OAAOA,EAAM,OAAO,OAAO,EAAE,KAAK,GAAG,CACvC,CDAO,SAASC,EAAS,CACvB,SAAAC,EACA,QAAAC,EAAU,SACV,MAAOC,EACP,GAAGC,CACL,EAAG,CACD,OAAsBC,EAAI,OAAQ,CAChC,GAAGD,EACH,MAAOE,EAAG,YAAa,cAAcJ,CAAO,GAAIC,CAAS,EACzD,SAAAF,CACF,CAAC,CACH",
6
+ "names": ["jsx", "cx", "parts", "RuiBadge", "children", "variant", "className", "props", "jsx", "cx"]
7
+ }