@alfadocs/ui-kit-debug 0.17.0 → 0.17.2

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 (212) hide show
  1. package/dist/_chunks/{accordion-DOmxGEWU.js → accordion-CNcodXuO.js} +6 -6
  2. package/dist/_chunks/{accordion-DOmxGEWU.js.map → accordion-CNcodXuO.js.map} +1 -1
  3. package/dist/_chunks/{ai-prompt-input-DEiQwIMn.js → ai-prompt-input-B-w5Rx3V.js} +184 -181
  4. package/dist/_chunks/ai-prompt-input-B-w5Rx3V.js.map +1 -0
  5. package/dist/_chunks/{alert-pgdXrEO5.js → alert-DBnawbmf.js} +64 -59
  6. package/dist/_chunks/alert-DBnawbmf.js.map +1 -0
  7. package/dist/_chunks/{audio-recorder-CRh4uyFL.js → audio-recorder-DNkQLW1G.js} +3 -3
  8. package/dist/_chunks/{audio-recorder-CRh4uyFL.js.map → audio-recorder-DNkQLW1G.js.map} +1 -1
  9. package/dist/_chunks/{autocomplete-mOg7WLOh.js → autocomplete-BxfabhZ8.js} +167 -164
  10. package/dist/_chunks/autocomplete-BxfabhZ8.js.map +1 -0
  11. package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js → balance-cell-renderer-DJB6WDPe.js} +2 -2
  12. package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js.map → balance-cell-renderer-DJB6WDPe.js.map} +1 -1
  13. package/dist/_chunks/{carousel.agent-OTn-kMQg.js → carousel.agent-Xuw9LPZN.js} +14 -7
  14. package/dist/_chunks/{carousel.agent-OTn-kMQg.js.map → carousel.agent-Xuw9LPZN.js.map} +1 -1
  15. package/dist/_chunks/{chat-input-UK-bXU7u.js → chat-input-B3XmFGDw.js} +123 -122
  16. package/dist/_chunks/chat-input-B3XmFGDw.js.map +1 -0
  17. package/dist/_chunks/checkbox-group-Bwmt1ovQ.js +213 -0
  18. package/dist/_chunks/checkbox-group-Bwmt1ovQ.js.map +1 -0
  19. package/dist/_chunks/{checkbox-D5EHnB14.js → checkbox-mwbrPZDY.js} +75 -70
  20. package/dist/_chunks/checkbox-mwbrPZDY.js.map +1 -0
  21. package/dist/_chunks/{collapsible-CuxUBoHJ.js → collapsible-hHiyZp0b.js} +61 -63
  22. package/dist/_chunks/collapsible-hHiyZp0b.js.map +1 -0
  23. package/dist/_chunks/{color-picker-BPfcByHH.js → color-picker-Bm-gzpsh.js} +2 -2
  24. package/dist/_chunks/{color-picker-BPfcByHH.js.map → color-picker-Bm-gzpsh.js.map} +1 -1
  25. package/dist/_chunks/{combobox-D5tWe0t_.js → combobox-Da9eq00i.js} +214 -211
  26. package/dist/_chunks/combobox-Da9eq00i.js.map +1 -0
  27. package/dist/_chunks/{copy-field-BCHAZ8QV.js → copy-field-BAF4mt9h.js} +95 -132
  28. package/dist/_chunks/copy-field-BAF4mt9h.js.map +1 -0
  29. package/dist/_chunks/{date-picker-BlhtBhPo.js → date-picker-BIoSLRly.js} +222 -219
  30. package/dist/_chunks/{date-picker-BlhtBhPo.js.map → date-picker-BIoSLRly.js.map} +1 -1
  31. package/dist/_chunks/{date-range-picker-C2hRu_Ke.js → date-range-picker-9gANFNG9.js} +81 -78
  32. package/dist/_chunks/date-range-picker-9gANFNG9.js.map +1 -0
  33. package/dist/_chunks/{date-time-picker-B67mPZmP.js → date-time-picker-DG7BiGdb.js} +98 -95
  34. package/dist/_chunks/date-time-picker-DG7BiGdb.js.map +1 -0
  35. package/dist/_chunks/{dialog-DRp6Dejy.js → dialog-DUomPCRS.js} +69 -71
  36. package/dist/_chunks/dialog-DUomPCRS.js.map +1 -0
  37. package/dist/_chunks/{dropdown-menu-dyV7gHh_.js → dropdown-menu-DZxwF23X.js} +108 -110
  38. package/dist/_chunks/dropdown-menu-DZxwF23X.js.map +1 -0
  39. package/dist/_chunks/{freemium-paywall-BTEiVkes.js → freemium-paywall-DXc7XlGE.js} +98 -97
  40. package/dist/_chunks/freemium-paywall-DXc7XlGE.js.map +1 -0
  41. package/dist/_chunks/{leo-sidebar-D3TuyH5_.js → leo-sidebar-DIsiTju3.js} +2 -2
  42. package/dist/_chunks/{leo-sidebar-D3TuyH5_.js.map → leo-sidebar-DIsiTju3.js.map} +1 -1
  43. package/dist/_chunks/{list-DcjV0m5B.js → list-BdvDctBz.js} +184 -180
  44. package/dist/_chunks/list-BdvDctBz.js.map +1 -0
  45. package/dist/_chunks/{message-tray-Fsend-du.js → message-tray-BNAS8al4.js} +111 -111
  46. package/dist/_chunks/message-tray-BNAS8al4.js.map +1 -0
  47. package/dist/_chunks/{multi-select-DooDzQIp.js → multi-select-CyspR5ZF.js} +157 -154
  48. package/dist/_chunks/multi-select-CyspR5ZF.js.map +1 -0
  49. package/dist/_chunks/{navigation-menu-DdufF-_4.js → navigation-menu-CyS1fBJ7.js} +85 -87
  50. package/dist/_chunks/navigation-menu-CyS1fBJ7.js.map +1 -0
  51. package/dist/_chunks/{notification-tray-C3dYdLAF.js → notification-tray-D_69dXFY.js} +114 -114
  52. package/dist/_chunks/notification-tray-D_69dXFY.js.map +1 -0
  53. package/dist/_chunks/{number-input-DH00o0DN.js → number-input-BZXu6bPY.js} +92 -89
  54. package/dist/_chunks/number-input-BZXu6bPY.js.map +1 -0
  55. package/dist/_chunks/{otp-input-BBXYvLx5.js → otp-input-BDF_iNpa.js} +92 -93
  56. package/dist/_chunks/otp-input-BDF_iNpa.js.map +1 -0
  57. package/dist/_chunks/{pagination-F1ei4khE.js → pagination-BWaXF7W0.js} +194 -211
  58. package/dist/_chunks/pagination-BWaXF7W0.js.map +1 -0
  59. package/dist/_chunks/{patient-shell-BE0CdPOJ.js → patient-shell-BOOaWZA9.js} +3 -3
  60. package/dist/_chunks/{patient-shell-BE0CdPOJ.js.map → patient-shell-BOOaWZA9.js.map} +1 -1
  61. package/dist/_chunks/{payment-form-CI77oIx1.js → payment-form-BjkuQeqR.js} +2 -2
  62. package/dist/_chunks/{payment-form-CI77oIx1.js.map → payment-form-BjkuQeqR.js.map} +1 -1
  63. package/dist/_chunks/{pdf-viewer-CnEJvmXC.js → pdf-viewer-BG_nsFT5.js} +2 -2
  64. package/dist/_chunks/{pdf-viewer-CnEJvmXC.js.map → pdf-viewer-BG_nsFT5.js.map} +1 -1
  65. package/dist/_chunks/{public-header.agent-sDi9N9su.js → public-header.agent-BIBQzkeV.js} +7 -12
  66. package/dist/_chunks/public-header.agent-BIBQzkeV.js.map +1 -0
  67. package/dist/_chunks/{radio-group-Cz1a4QCA.js → radio-group-BHZOxrIK.js} +4 -4
  68. package/dist/_chunks/{radio-group-Cz1a4QCA.js.map → radio-group-BHZOxrIK.js.map} +1 -1
  69. package/dist/_chunks/{select-Ca6ibiDL.js → select-C92AT_OZ.js} +7 -7
  70. package/dist/_chunks/{select-Ca6ibiDL.js.map → select-C92AT_OZ.js.map} +1 -1
  71. package/dist/_chunks/{sidebar-D8Lq065m.js → sidebar-BqzlRBvC.js} +271 -291
  72. package/dist/_chunks/sidebar-BqzlRBvC.js.map +1 -0
  73. package/dist/_chunks/{slider-CkR6CLun.js → slider-CfEzeseL.js} +4 -4
  74. package/dist/_chunks/{slider-CkR6CLun.js.map → slider-CfEzeseL.js.map} +1 -1
  75. package/dist/_chunks/{tabs-CRCyPpJo.js → tabs-aEQfQV3x.js} +8 -8
  76. package/dist/_chunks/{tabs-CRCyPpJo.js.map → tabs-aEQfQV3x.js.map} +1 -1
  77. package/dist/_chunks/{theme-toggle-B3meAb3y.js → theme-toggle-BswYl0Yp.js} +2 -2
  78. package/dist/_chunks/{theme-toggle-B3meAb3y.js.map → theme-toggle-BswYl0Yp.js.map} +1 -1
  79. package/dist/_chunks/use-controllable-state-BiY4xTzM.js +23 -0
  80. package/dist/_chunks/use-controllable-state-BiY4xTzM.js.map +1 -0
  81. package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js +43 -0
  82. package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js.map +1 -0
  83. package/dist/_chunks/use-debounced-callback-BisrB-Fq.js.map +1 -1
  84. package/dist/_chunks/use-direction-D6rvvG9G.js.map +1 -1
  85. package/dist/_chunks/use-persistent-state-i23OWy6G.js +24 -0
  86. package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +1 -0
  87. package/dist/_chunks/{warning-stack-CeRihME9.js → warning-stack-CDH9TudY.js} +2 -2
  88. package/dist/_chunks/{warning-stack-CeRihME9.js.map → warning-stack-CDH9TudY.js.map} +1 -1
  89. package/dist/_chunks/{workflow-map-D3MvrsZV.js → workflow-map-BeKe23uw.js} +3 -3
  90. package/dist/_chunks/{workflow-map-D3MvrsZV.js.map → workflow-map-BeKe23uw.js.map} +1 -1
  91. package/dist/agent-catalog.json +1 -1
  92. package/dist/components/_shared/use-debounced-callback.d.ts +1 -5
  93. package/dist/components/_shared/use-debounced-callback.d.ts.map +1 -1
  94. package/dist/components/_shared/use-direction.d.ts +1 -18
  95. package/dist/components/_shared/use-direction.d.ts.map +1 -1
  96. package/dist/components/_shared/use-focus-trap.d.ts +1 -31
  97. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
  98. package/dist/components/accordion/index.js +1 -1
  99. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  100. package/dist/components/ai-prompt-input/index.js +1 -1
  101. package/dist/components/alert/alert.d.ts.map +1 -1
  102. package/dist/components/alert/index.js +1 -1
  103. package/dist/components/audio-recorder/index.js +1 -1
  104. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  105. package/dist/components/autocomplete/index.js +1 -1
  106. package/dist/components/carousel/carousel.d.ts.map +1 -1
  107. package/dist/components/carousel/index.js +1 -1
  108. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  109. package/dist/components/chat-input/index.js +1 -1
  110. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  111. package/dist/components/checkbox/index.js +1 -1
  112. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  113. package/dist/components/checkbox-group/index.js +1 -1
  114. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  115. package/dist/components/collapsible/index.js +1 -1
  116. package/dist/components/color-picker/index.js +1 -1
  117. package/dist/components/combobox/combobox.d.ts.map +1 -1
  118. package/dist/components/combobox/index.js +1 -1
  119. package/dist/components/command-palette/command-palette.d.ts +1 -1
  120. package/dist/components/copy-field/index.js +1 -1
  121. package/dist/components/data-table/index.js +1 -1
  122. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  123. package/dist/components/date-picker/index.js +1 -1
  124. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  125. package/dist/components/date-range-picker/index.js +1 -1
  126. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  127. package/dist/components/date-time-picker/index.js +1 -1
  128. package/dist/components/dialog/dialog.d.ts.map +1 -1
  129. package/dist/components/dialog/index.js +1 -1
  130. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  131. package/dist/components/dropdown-menu/index.js +1 -1
  132. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  133. package/dist/components/freemium-paywall/index.js +1 -1
  134. package/dist/components/icon-button-group/icon-button-group.d.ts +14 -14
  135. package/dist/components/list/index.js +1 -1
  136. package/dist/components/list/list.d.ts.map +1 -1
  137. package/dist/components/message-tray/index.js +1 -1
  138. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  139. package/dist/components/multi-select/index.js +1 -1
  140. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  141. package/dist/components/navigation-menu/index.js +1 -1
  142. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  143. package/dist/components/notification-tray/index.js +1 -1
  144. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  145. package/dist/components/number-input/index.js +1 -1
  146. package/dist/components/number-input/number-input.d.ts.map +1 -1
  147. package/dist/components/otp-input/index.js +1 -1
  148. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  149. package/dist/components/pagination/index.js +1 -1
  150. package/dist/components/payment-form/index.js +1 -1
  151. package/dist/components/pdf-viewer/index.js +1 -1
  152. package/dist/components/public-header/index.js +1 -1
  153. package/dist/components/public-header/public-header.d.ts +1 -1
  154. package/dist/components/public-header/public-header.d.ts.map +1 -1
  155. package/dist/components/radio-group/index.js +1 -1
  156. package/dist/components/select/index.js +1 -1
  157. package/dist/components/sidebar/index.js +8 -7
  158. package/dist/components/sidebar/index.js.map +1 -1
  159. package/dist/components/sidebar/sidebar.d.ts +1 -1
  160. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  161. package/dist/components/slider/index.js +1 -1
  162. package/dist/components/tabs/index.js +1 -1
  163. package/dist/components/theme-toggle/index.js +1 -1
  164. package/dist/components/warning-stack/index.js +1 -1
  165. package/dist/components/workflow/index.js +1 -1
  166. package/dist/hooks/index.d.ts +8 -0
  167. package/dist/hooks/index.d.ts.map +1 -1
  168. package/dist/hooks/index.js +98 -15
  169. package/dist/hooks/index.js.map +1 -1
  170. package/dist/hooks/use-debounced-callback.d.ts +19 -0
  171. package/dist/hooks/use-debounced-callback.d.ts.map +1 -0
  172. package/dist/hooks/use-debounced-value.d.ts +16 -0
  173. package/dist/hooks/use-debounced-value.d.ts.map +1 -0
  174. package/dist/hooks/use-direction.d.ts +19 -0
  175. package/dist/hooks/use-direction.d.ts.map +1 -0
  176. package/dist/hooks/use-focus-trap.d.ts +32 -0
  177. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  178. package/dist/hooks/use-isomorphic-layout-effect.d.ts +13 -0
  179. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  180. package/dist/hooks/use-persistent-state.d.ts +16 -0
  181. package/dist/hooks/use-persistent-state.d.ts.map +1 -0
  182. package/dist/index.js +493 -492
  183. package/dist/index.js.map +1 -1
  184. package/dist/patterns/leo-assistant/index.js +1 -1
  185. package/dist/patterns/patient-shell/index.js +1 -1
  186. package/dist/tokens.css +1 -1
  187. package/package.json +4 -2
  188. package/dist/_chunks/ai-prompt-input-DEiQwIMn.js.map +0 -1
  189. package/dist/_chunks/alert-pgdXrEO5.js.map +0 -1
  190. package/dist/_chunks/autocomplete-mOg7WLOh.js.map +0 -1
  191. package/dist/_chunks/chat-input-UK-bXU7u.js.map +0 -1
  192. package/dist/_chunks/checkbox-D5EHnB14.js.map +0 -1
  193. package/dist/_chunks/checkbox-group-Qkm3Rg1S.js +0 -208
  194. package/dist/_chunks/checkbox-group-Qkm3Rg1S.js.map +0 -1
  195. package/dist/_chunks/collapsible-CuxUBoHJ.js.map +0 -1
  196. package/dist/_chunks/combobox-D5tWe0t_.js.map +0 -1
  197. package/dist/_chunks/copy-field-BCHAZ8QV.js.map +0 -1
  198. package/dist/_chunks/date-range-picker-C2hRu_Ke.js.map +0 -1
  199. package/dist/_chunks/date-time-picker-B67mPZmP.js.map +0 -1
  200. package/dist/_chunks/dialog-DRp6Dejy.js.map +0 -1
  201. package/dist/_chunks/dropdown-menu-dyV7gHh_.js.map +0 -1
  202. package/dist/_chunks/freemium-paywall-BTEiVkes.js.map +0 -1
  203. package/dist/_chunks/list-DcjV0m5B.js.map +0 -1
  204. package/dist/_chunks/message-tray-Fsend-du.js.map +0 -1
  205. package/dist/_chunks/multi-select-DooDzQIp.js.map +0 -1
  206. package/dist/_chunks/navigation-menu-DdufF-_4.js.map +0 -1
  207. package/dist/_chunks/notification-tray-C3dYdLAF.js.map +0 -1
  208. package/dist/_chunks/number-input-DH00o0DN.js.map +0 -1
  209. package/dist/_chunks/otp-input-BBXYvLx5.js.map +0 -1
  210. package/dist/_chunks/pagination-F1ei4khE.js.map +0 -1
  211. package/dist/_chunks/public-header.agent-sDi9N9su.js.map +0 -1
  212. package/dist/_chunks/sidebar-D8Lq065m.js.map +0 -1
@@ -1,9 +1,10 @@
1
- import { jsx as i, jsxs as Q, Fragment as $ } from "react/jsx-runtime";
2
- import { forwardRef as X, useState as W, useMemo as O, useRef as G, useCallback as m, useImperativeHandle as V, useContext as C, useLayoutEffect as ee, Children as te, isValidElement as se, createContext as ie } from "react";
1
+ import { jsx as n, jsxs as W, Fragment as $ } from "react/jsx-runtime";
2
+ import { forwardRef as X, useMemo as D, useState as V, useRef as J, useCallback as p, useImperativeHandle as C, useContext as ee, useLayoutEffect as te, Children as se, isValidElement as ie, createContext as re } from "react";
3
3
  import { c as Y } from "./index-D2ZczOXr.js";
4
- import { useTranslation as re } from "react-i18next";
5
- import { u as ne } from "./registry-C9nwlNyL.js";
6
- const oe = {
4
+ import { useTranslation as ne } from "react-i18next";
5
+ import { u as ae } from "./use-controllable-state-BiY4xTzM.js";
6
+ import { u as oe } from "./registry-C9nwlNyL.js";
7
+ const de = {
7
8
  id: "list",
8
9
  capabilities: ["select_single", "select_multiple"],
9
10
  state: {
@@ -20,8 +21,8 @@ const oe = {
20
21
  argsType: "{ ids: string[] }",
21
22
  descriptionKey: "ui.agent.list.actions.setSelection",
22
23
  description: "Replace the current selection with the given item ids. No-op on presentational lists.",
23
- invoke: (t, u) => {
24
- t.setSelection(u.ids);
24
+ invoke: (t, v) => {
25
+ t.setSelection(v.ids);
25
26
  }
26
27
  },
27
28
  clear_selection: {
@@ -49,7 +50,7 @@ const oe = {
49
50
  description: "Opaque item id; sourced from each ListItem `value` prop. Emitted only when `value` is set."
50
51
  }
51
52
  }
52
- }, q = ie({
53
+ }, q = re({
53
54
  selection: "none",
54
55
  selectedValues: /* @__PURE__ */ new Set(),
55
56
  focusedValue: null,
@@ -64,7 +65,7 @@ const oe = {
64
65
  registerItemRef: () => {
65
66
  },
66
67
  divider: "spaced"
67
- }), ae = Y("ds:flex ds:flex-col ds:p-0 ds:m-0", {
68
+ }), le = Y("ds:flex ds:flex-col ds:p-0 ds:m-0", {
68
69
  variants: {
69
70
  divider: {
70
71
  spaced: "",
@@ -86,7 +87,7 @@ const oe = {
86
87
  density: "default",
87
88
  ordered: !1
88
89
  }
89
- }), de = Y(
90
+ }), ce = Y(
90
91
  "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]",
91
92
  {
92
93
  variants: {
@@ -143,292 +144,295 @@ const oe = {
143
144
  }
144
145
  }
145
146
  );
146
- function le(t) {
147
- const u = [];
148
- return te.forEach(t, (y) => {
149
- if (!se(y)) return;
150
- const g = y.props;
151
- typeof g.value == "string" && u.push({ value: g.value, disabled: !!g.disabled });
152
- }), u;
147
+ function fe(t) {
148
+ const v = [];
149
+ return se.forEach(t, (x) => {
150
+ if (!ie(x)) return;
151
+ const y = x.props;
152
+ typeof y.value == "string" && v.push({ value: y.value, disabled: !!y.disabled });
153
+ }), v;
153
154
  }
154
- const J = X(
155
+ const Q = X(
155
156
  ({
156
157
  as: t = "ul",
157
- start: u,
158
- divider: y = "spaced",
159
- density: g = "default",
158
+ start: v,
159
+ divider: x = "spaced",
160
+ density: y = "default",
160
161
  selection: w = "none",
161
- value: h,
162
+ value: f,
162
163
  defaultValue: S,
163
- onValueChange: p,
164
- disabled: r = !1,
164
+ onValueChange: b,
165
+ disabled: a = !1,
165
166
  className: N,
166
- children: d,
167
+ children: m,
167
168
  "aria-label": P,
168
- ...s
169
+ ...r
169
170
  }, B) => {
170
- const { t: T } = re(), n = w !== "none", v = w === "multiple", k = h !== void 0, [j, K] = W(() => S === void 0 ? [] : Array.isArray(S) ? S : [S]), l = O(() => {
171
- if (k) {
172
- const e = h;
173
- return new Set(Array.isArray(e) ? e : [e]);
174
- }
175
- return new Set(j);
176
- }, [k, h, j]), F = O(() => le(d), [d]), c = O(
177
- () => F.filter((e) => !e.disabled && !r).map((e) => e.value),
178
- [F, r]
179
- ), [x, b] = W(null), R = G(/* @__PURE__ */ new Map()), U = m(
180
- (e, o) => {
181
- o ? R.current.set(e, o) : R.current.delete(e);
171
+ const { t: T } = ne(), o = w !== "none", g = w === "multiple", U = D(() => {
172
+ if (f !== void 0)
173
+ return Array.isArray(f) ? f : [f];
174
+ }, [f]), K = D(() => S === void 0 ? [] : Array.isArray(S) ? S : [S], []), [E, _] = ae({
175
+ value: U,
176
+ defaultValue: K
177
+ }), u = D(
178
+ () => new Set(E ?? []),
179
+ [E]
180
+ ), H = D(() => fe(m), [m]), i = D(
181
+ () => H.filter((e) => !e.disabled && !a).map((e) => e.value),
182
+ [H, a]
183
+ ), [h, j] = V(null), F = J(/* @__PURE__ */ new Map()), G = p(
184
+ (e, l) => {
185
+ l ? F.current.set(e, l) : F.current.delete(e);
182
186
  },
183
187
  []
184
- ), I = m((e) => {
185
- b(e), requestAnimationFrame(() => {
186
- var o;
187
- (o = R.current.get(e)) == null || o.focus();
188
+ ), I = p((e) => {
189
+ j(e), requestAnimationFrame(() => {
190
+ var l;
191
+ (l = F.current.get(e)) == null || l.focus();
188
192
  });
189
- }, []), f = m(
193
+ }, []), d = p(
190
194
  (e) => {
191
- k || K(e), v ? p == null || p(e) : p == null || p(e[0] ?? "");
195
+ _(e), g ? b == null || b(e) : b == null || b(e[0] ?? "");
192
196
  },
193
- [k, v, p]
194
- ), L = m(
197
+ [_, g, b]
198
+ ), k = p(
195
199
  (e) => {
196
- if (!r && n)
197
- if (v) {
198
- const o = [...l];
199
- l.has(e) ? f(o.filter((z) => z !== e)) : f([...o, e]);
200
+ if (!a && o)
201
+ if (g) {
202
+ const l = [...u];
203
+ u.has(e) ? d(l.filter((O) => O !== e)) : d([...l, e]);
200
204
  } else
201
- l.has(e) ? f([]) : f([e]);
205
+ u.has(e) ? d([]) : d([e]);
202
206
  },
203
- [r, n, v, l, f]
204
- ), H = m((e) => {
205
- b(e);
206
- }, []), M = m(
207
- (e, o) => {
208
- if (!n) return;
209
- const z = c.indexOf(o);
207
+ [a, o, g, u, d]
208
+ ), M = p((e) => {
209
+ j(e);
210
+ }, []), z = p(
211
+ (e, l) => {
212
+ if (!o) return;
213
+ const O = i.indexOf(l);
210
214
  switch (e.key) {
211
215
  case "ArrowDown": {
212
216
  e.preventDefault();
213
- const a = c[z + 1];
214
- a !== void 0 && I(a);
217
+ const c = i[O + 1];
218
+ c !== void 0 && I(c);
215
219
  break;
216
220
  }
217
221
  case "ArrowUp": {
218
222
  e.preventDefault();
219
- const a = c[z - 1];
220
- a !== void 0 && I(a);
223
+ const c = i[O - 1];
224
+ c !== void 0 && I(c);
221
225
  break;
222
226
  }
223
227
  case "Home": {
224
228
  e.preventDefault();
225
- const a = c[0];
226
- a !== void 0 && I(a);
229
+ const c = i[0];
230
+ c !== void 0 && I(c);
227
231
  break;
228
232
  }
229
233
  case "End": {
230
234
  e.preventDefault();
231
- const a = c[c.length - 1];
232
- a !== void 0 && I(a);
235
+ const c = i[i.length - 1];
236
+ c !== void 0 && I(c);
233
237
  break;
234
238
  }
235
239
  case " ":
236
240
  case "Enter": {
237
- e.preventDefault(), L(o);
241
+ e.preventDefault(), k(l);
238
242
  break;
239
243
  }
240
244
  }
241
245
  },
242
- [n, c, I, L]
246
+ [o, i, I, k]
243
247
  ), A = {
244
248
  selection: w,
245
- selectedValues: l,
246
- focusedValue: x,
247
- disabled: r,
248
- enabledItemValues: c,
249
- onItemSelect: L,
250
- onItemFocus: H,
251
- onItemKeyDown: M,
252
- registerItemRef: U,
253
- divider: y
254
- }, D = ae({
255
- divider: y,
256
- density: g,
249
+ selectedValues: u,
250
+ focusedValue: h,
251
+ disabled: a,
252
+ enabledItemValues: i,
253
+ onItemSelect: k,
254
+ onItemFocus: M,
255
+ onItemKeyDown: z,
256
+ registerItemRef: G,
257
+ divider: x
258
+ }, R = le({
259
+ divider: x,
260
+ density: y,
257
261
  ordered: t === "ol",
258
262
  className: N
259
- }), E = G(null), _ = O(
263
+ }), L = J(null), s = D(
260
264
  () => ({
261
- getSelection: () => Array.from(l),
265
+ getSelection: () => Array.from(u),
262
266
  setSelection: (e) => {
263
- n && f(v ? e : e.slice(0, 1));
267
+ o && d(g ? e : e.slice(0, 1));
264
268
  },
265
269
  clearSelection: () => {
266
- n && f([]);
270
+ o && d([]);
267
271
  }
268
272
  }),
269
- [l, n, v, f]
273
+ [u, o, g, d]
270
274
  );
271
- if (V(B, () => _, [_]), ne(oe, _, s.id), n) {
275
+ if (C(B, () => s, [s]), oe(de, s, r.id), o) {
272
276
  const e = P ?? T("list.label", "List");
273
- return /* @__PURE__ */ i(q.Provider, { value: A, children: /* @__PURE__ */ i(
277
+ return /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
274
278
  "div",
275
279
  {
276
- ref: E,
280
+ ref: L,
277
281
  role: "listbox",
278
282
  "aria-label": e,
279
- "aria-multiselectable": v ? !0 : void 0,
280
- "aria-disabled": r ? !0 : void 0,
281
- className: D,
283
+ "aria-multiselectable": g ? !0 : void 0,
284
+ "aria-disabled": a ? !0 : void 0,
285
+ className: R,
282
286
  "data-component": "list",
283
- "data-component-id": s.id,
284
- ...s,
285
- children: d
287
+ "data-component-id": r.id,
288
+ ...r,
289
+ children: m
286
290
  }
287
291
  ) });
288
292
  }
289
- return t === "ol" ? /* @__PURE__ */ i(q.Provider, { value: A, children: /* @__PURE__ */ i(
293
+ return t === "ol" ? /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
290
294
  "ol",
291
295
  {
292
- ref: E,
293
- start: u,
296
+ ref: L,
297
+ start: v,
294
298
  role: "list",
295
- className: D,
299
+ className: R,
296
300
  "data-component": "list",
297
- "data-component-id": s.id,
298
- ...s,
299
- children: d
301
+ "data-component-id": r.id,
302
+ ...r,
303
+ children: m
300
304
  }
301
- ) }) : /* @__PURE__ */ i(q.Provider, { value: A, children: /* @__PURE__ */ i(
305
+ ) }) : /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
302
306
  "ul",
303
307
  {
304
- ref: E,
308
+ ref: L,
305
309
  role: "list",
306
- className: D,
310
+ className: R,
307
311
  "data-component": "list",
308
- "data-component-id": s.id,
309
- ...s,
310
- children: d
312
+ "data-component-id": r.id,
313
+ ...r,
314
+ children: m
311
315
  }
312
316
  ) });
313
317
  }
314
318
  );
315
- J.displayName = "List";
319
+ Q.displayName = "List";
316
320
  const Z = X(
317
321
  ({
318
322
  value: t,
319
- leading: u,
320
- title: y,
321
- description: g,
323
+ leading: v,
324
+ title: x,
325
+ description: y,
322
326
  trailing: w,
323
- lineClamp: h,
327
+ lineClamp: f,
324
328
  disabled: S = !1,
325
- className: p,
326
- onClick: r,
329
+ className: b,
330
+ onClick: a,
327
331
  onFocus: N,
328
- onKeyDown: d,
332
+ onKeyDown: m,
329
333
  ...P
330
- }, s) => {
334
+ }, r) => {
331
335
  const {
332
336
  selection: B,
333
337
  selectedValues: T,
334
- focusedValue: n,
335
- disabled: v,
336
- enabledItemValues: k,
337
- onItemSelect: j,
338
- onItemFocus: K,
339
- onItemKeyDown: l,
340
- registerItemRef: F,
341
- divider: c
342
- } = C(q), x = B !== "none", b = v || S, R = t !== void 0 ? T.has(t) : !1, U = t !== void 0 && n === t, I = t !== void 0 && k[0] === t, f = x ? n !== null ? U && !b ? 0 : -1 : I && !b ? 0 : -1 : void 0, L = G(null);
343
- ee(() => {
344
- const e = L.current;
345
- e && (h != null ? e.style.setProperty("--list-item-clamp", String(h)) : e.style.removeProperty("--list-item-clamp"));
346
- }, [h]);
347
- const H = m(
348
- (e) => {
349
- t && F(t, e), typeof s == "function" ? s(e) : s && (s.current = e);
338
+ focusedValue: o,
339
+ disabled: g,
340
+ enabledItemValues: U,
341
+ onItemSelect: K,
342
+ onItemFocus: E,
343
+ onItemKeyDown: _,
344
+ registerItemRef: u,
345
+ divider: H
346
+ } = ee(q), i = B !== "none", h = g || S, j = t !== void 0 ? T.has(t) : !1, F = t !== void 0 && o === t, G = t !== void 0 && U[0] === t, I = i ? o !== null ? F && !h ? 0 : -1 : G && !h ? 0 : -1 : void 0, d = J(null);
347
+ te(() => {
348
+ const s = d.current;
349
+ s && (f != null ? s.style.setProperty("--list-item-clamp", String(f)) : s.style.removeProperty("--list-item-clamp"));
350
+ }, [f]);
351
+ const k = p(
352
+ (s) => {
353
+ t && u(t, s), typeof r == "function" ? r(s) : r && (r.current = s);
350
354
  },
351
- [t, F, s]
352
- ), M = m(
353
- (e) => {
354
- x && t && !b && j(t), r == null || r(e);
355
+ [t, u, r]
356
+ ), M = p(
357
+ (s) => {
358
+ i && t && !h && K(t), a == null || a(s);
355
359
  },
356
- [x, t, b, j, r]
357
- ), A = m(
358
- (e) => {
359
- t && K(t), N == null || N(e);
360
+ [i, t, h, K, a]
361
+ ), z = p(
362
+ (s) => {
363
+ t && E(t), N == null || N(s);
360
364
  },
361
- [t, K, N]
362
- ), D = m(
363
- (e) => {
364
- t && l(e, t), d == null || d(e);
365
+ [t, E, N]
366
+ ), A = p(
367
+ (s) => {
368
+ t && _(s, t), m == null || m(s);
365
369
  },
366
- [t, l, d]
367
- ), E = de({
368
- divider: c,
369
- interactive: x,
370
- selected: R,
371
- disabled: b,
372
- className: p
373
- }), _ = /* @__PURE__ */ Q($, { children: [
374
- u && /* @__PURE__ */ i("span", { className: "ds:shrink-0 ds:flex ds:items-center ds:justify-center", children: u }),
375
- /* @__PURE__ */ Q("div", { className: "ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0", children: [
376
- /* @__PURE__ */ i("span", { className: "ds:text-[color:var(--foreground)] ds:text-[length:var(--font-size-sm)] ds:font-medium ds:leading-[var(--line-height-base)] ds:[overflow-wrap:anywhere]", children: y }),
377
- g && /* @__PURE__ */ i(
370
+ [t, _, m]
371
+ ), R = ce({
372
+ divider: H,
373
+ interactive: i,
374
+ selected: j,
375
+ disabled: h,
376
+ className: b
377
+ }), L = /* @__PURE__ */ W($, { children: [
378
+ v && /* @__PURE__ */ n("span", { className: "ds:shrink-0 ds:flex ds:items-center ds:justify-center", children: v }),
379
+ /* @__PURE__ */ W("div", { className: "ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0", children: [
380
+ /* @__PURE__ */ n("span", { className: "ds:text-[color:var(--foreground)] ds:text-[length:var(--font-size-sm)] ds:font-medium ds:leading-[var(--line-height-base)] ds:[overflow-wrap:anywhere]", children: x }),
381
+ y && /* @__PURE__ */ n(
378
382
  "span",
379
383
  {
380
- ref: L,
384
+ ref: d,
381
385
  className: [
382
386
  "ds:text-[color:var(--muted-foreground)] ds:text-[length:var(--font-size-xs)] ds:leading-[var(--line-height-base)]",
383
- h != null ? "ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:var(--list-item-clamp)]" : ""
387
+ f != null ? "ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:var(--list-item-clamp)]" : ""
384
388
  ].filter(Boolean).join(" "),
385
- children: g
389
+ children: y
386
390
  }
387
391
  )
388
392
  ] }),
389
- w && /* @__PURE__ */ i("span", { className: "ds:shrink-0 ds:flex ds:items-center ds:justify-center", children: w })
393
+ w && /* @__PURE__ */ n("span", { className: "ds:shrink-0 ds:flex ds:items-center ds:justify-center", children: w })
390
394
  ] });
391
- return x ? /* @__PURE__ */ i(
395
+ return i ? /* @__PURE__ */ n(
392
396
  "div",
393
397
  {
394
- ref: H,
398
+ ref: k,
395
399
  role: "option",
396
- "aria-selected": R,
397
- "aria-disabled": b ? !0 : void 0,
398
- tabIndex: f,
400
+ "aria-selected": j,
401
+ "aria-disabled": h ? !0 : void 0,
402
+ tabIndex: I,
399
403
  onClick: M,
400
- onFocus: A,
401
- onKeyDown: D,
402
- className: E,
404
+ onFocus: z,
405
+ onKeyDown: A,
406
+ className: R,
403
407
  "data-item-id": t,
404
408
  ...P,
405
- children: _
409
+ children: L
406
410
  }
407
411
  ) : (
408
412
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- non-interactive list items still surface click/keyboard handlers when selection mode is enabled (handlers no-op when selection==='none')
409
- /* @__PURE__ */ i(
413
+ /* @__PURE__ */ n(
410
414
  "li",
411
415
  {
412
- ref: H,
416
+ ref: k,
413
417
  onClick: M,
414
- onFocus: A,
415
- onKeyDown: D,
416
- className: E,
418
+ onFocus: z,
419
+ onKeyDown: A,
420
+ className: R,
417
421
  "data-item-id": t,
418
422
  ...P,
419
- children: /* @__PURE__ */ i("div", { className: "ds:flex ds:items-center ds:gap-x-[var(--spacing-sm)]", children: _ })
423
+ children: /* @__PURE__ */ n("div", { className: "ds:flex ds:items-center ds:gap-x-[var(--spacing-sm)]", children: L })
420
424
  }
421
425
  )
422
426
  );
423
427
  }
424
428
  );
425
429
  Z.displayName = "List.Item";
426
- const ve = Object.assign(J, {
427
- Root: J,
430
+ const ye = Object.assign(Q, {
431
+ Root: Q,
428
432
  Item: Z
429
433
  });
430
434
  export {
431
- ve as L,
432
- oe as l
435
+ ye as L,
436
+ de as l
433
437
  };
434
- //# sourceMappingURL=list-DcjV0m5B.js.map
438
+ //# sourceMappingURL=list-BdvDctBz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-BdvDctBz.js","sources":["../../src/components/list/list.agent.ts","../../src/components/list/list.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — List. */\n/* */\n/* The agent surface is only meaningful for selectable lists (`selection` */\n/* prop set to `single` or `multiple`). Presentational lists still emit */\n/* the root + item DOM hooks so the registry can address them, but the */\n/* state and actions are no-ops when selection is `none`. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ListHandle } from './list';\n\nexport const listAgent: AgentAdapter<ListHandle> = {\n id: 'list',\n capabilities: ['select_single', 'select_multiple'],\n state: {\n selection: {\n type: 'string[]',\n descriptionKey: 'ui.agent.list.state.selection',\n description:\n 'Ids of currently-selected list items. Empty array when none selected or list is presentational.',\n read: (handle) => handle.getSelection(),\n },\n },\n actions: {\n set_selection: {\n safety: 'read',\n argsType: '{ ids: string[] }',\n descriptionKey: 'ui.agent.list.actions.setSelection',\n description:\n 'Replace the current selection with the given item ids. No-op on presentational lists.',\n invoke: (handle, args: { ids: string[] }) => {\n handle.setSelection(args.ids);\n },\n },\n clear_selection: {\n safety: 'read',\n descriptionKey: 'ui.agent.list.actions.clearSelection',\n description: 'Deselect all items.',\n invoke: (handle) => {\n handle.clearSelection();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'list',\n description: 'Marks the List root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-item-id',\n description:\n 'Opaque item id; sourced from each ListItem `value` prop. Emitted only when `value` is set.',\n },\n },\n};\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { listAgent } from './list.agent';\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface ListContextValue {\n selection: 'none' | 'single' | 'multiple';\n selectedValues: Set<string>;\n focusedValue: string | null;\n disabled: boolean;\n enabledItemValues: string[];\n onItemSelect: (value: string) => void;\n onItemFocus: (value: string) => void;\n onItemKeyDown: (e: KeyboardEvent<HTMLElement>, value: string) => void;\n registerItemRef: (value: string, el: HTMLElement | null) => void;\n divider: 'spaced' | 'divided' | 'bordered';\n}\n\nconst ListContext = createContext<ListContextValue>({\n selection: 'none',\n selectedValues: new Set(),\n focusedValue: null,\n disabled: false,\n enabledItemValues: [],\n onItemSelect: () => {},\n onItemFocus: () => {},\n onItemKeyDown: () => {},\n registerItemRef: () => {},\n divider: 'spaced',\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA variants */\n/* ------------------------------------------------------------------ */\n\nconst listVariants = cva('ds:flex ds:flex-col ds:p-0 ds:m-0', {\n variants: {\n divider: {\n spaced: '',\n divided: '',\n bordered:\n 'ds:border ds:border-[color:var(--border)] ds:rounded-[var(--radius-md)] ds:overflow-hidden',\n },\n density: {\n compact: 'ds:gap-[var(--spacing-xs)]',\n default: 'ds:gap-[var(--spacing-sm)]',\n relaxed: 'ds:gap-[var(--spacing-md)]',\n },\n ordered: {\n true: 'ds:list-decimal ds:ps-[var(--spacing-lg)]',\n false: 'ds:list-none',\n },\n },\n defaultVariants: {\n divider: 'spaced',\n density: 'default',\n ordered: false,\n },\n});\n\nconst listItemVariants = cva(\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n {\n variants: {\n divider: {\n spaced: '',\n divided:\n 'ds:[&:not(:last-child)]:[border-block-end:1px_solid_var(--border)]',\n bordered:\n 'ds:[&:not(:last-child)]:[border-block-end:1px_solid_var(--border)]',\n },\n interactive: {\n // flex lives on the outer <div role=\"option\"> so it doesn't suppress ::marker on <li>\n true: [\n 'ds:flex ds:items-center ds:gap-x-[var(--spacing-sm)]',\n 'ds:min-h-[var(--min-target-size)] ds:cursor-pointer ds:select-none',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n ].join(' '),\n // no flex here — <li> keeps display:list-item so ::marker renders correctly\n false: '',\n },\n selected: {\n true: '',\n false: '',\n },\n disabled: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n interactive: true,\n selected: false,\n disabled: false,\n className: 'ds:hover:bg-[color:var(--muted)]/20',\n },\n {\n interactive: true,\n selected: true,\n className: 'ds:bg-[color:var(--primary)]/10',\n },\n {\n interactive: true,\n disabled: true,\n className: 'ds:opacity-50 ds:cursor-not-allowed ds:pointer-events-none',\n },\n ],\n defaultVariants: {\n divider: 'spaced',\n interactive: false,\n selected: false,\n disabled: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/** Curated imperative handle for agent / external automation. */\nexport interface ListHandle {\n getSelection: () => string[];\n setSelection: (ids: string[]) => void;\n clearSelection: () => void;\n}\n\nexport interface ListProps extends HTMLAttributes<HTMLElement> {\n as?: 'ul' | 'ol';\n start?: number;\n divider?: 'spaced' | 'divided' | 'bordered';\n density?: 'compact' | 'default' | 'relaxed';\n selection?: 'none' | 'single' | 'multiple';\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n disabled?: boolean;\n children: ReactNode;\n className?: string;\n}\n\nexport interface ListItemProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n value?: string;\n leading?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n trailing?: ReactNode;\n lineClamp?: number;\n disabled?: boolean;\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction collectItemInfo(\n children: ReactNode,\n): Array<{ value: string; disabled: boolean }> {\n const items: Array<{ value: string; disabled: boolean }> = [];\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n const props = child.props as { value?: unknown; disabled?: unknown };\n if (typeof props.value === 'string') {\n items.push({ value: props.value, disabled: Boolean(props.disabled) });\n }\n });\n return items;\n}\n\n/* ------------------------------------------------------------------ */\n/* ListRoot */\n/* ------------------------------------------------------------------ */\n\nconst ListRoot = forwardRef<ListHandle, ListProps>(\n (\n {\n as = 'ul',\n start,\n divider = 'spaced',\n density = 'default',\n selection = 'none',\n value: controlledValue,\n defaultValue,\n onValueChange,\n disabled = false,\n className,\n children,\n 'aria-label': ariaLabel,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const isSelectable = selection !== 'none';\n const isMultiple = selection === 'multiple';\n\n // Normalize the array of selected values onto the canonical `string[]`\n // shape that the rest of the component renders against. The hook owns\n // state in both modes; the consumer-facing `onValueChange` is invoked\n // with either a single string or the array, depending on `selection`.\n const controlledArray = useMemo<string[] | undefined>(() => {\n if (controlledValue === undefined) return undefined;\n return Array.isArray(controlledValue) ? controlledValue : [controlledValue];\n }, [controlledValue]);\n\n const initialArray = useMemo<string[]>(() => {\n if (defaultValue === undefined) return [];\n return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n // Default value is read once at mount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [internalArray, setInternalArray] = useControllableState<string[]>({\n value: controlledArray,\n defaultValue: initialArray,\n });\n\n const selectedValues = useMemo<Set<string>>(\n () => new Set(internalArray ?? []),\n [internalArray],\n );\n\n const allItemInfo = useMemo(() => collectItemInfo(children), [children]);\n const enabledItemValues = useMemo(\n () =>\n allItemInfo.filter((i) => !i.disabled && !disabled).map((i) => i.value),\n [allItemInfo, disabled],\n );\n\n const [focusedValue, setFocusedValue] = useState<string | null>(null);\n\n const itemRefs = useRef<Map<string, HTMLElement>>(new Map());\n\n const registerItemRef = useCallback(\n (value: string, el: HTMLElement | null) => {\n if (el) {\n itemRefs.current.set(value, el);\n } else {\n itemRefs.current.delete(value);\n }\n },\n [],\n );\n\n const focusItem = useCallback((value: string) => {\n setFocusedValue(value);\n requestAnimationFrame(() => {\n itemRefs.current.get(value)?.focus();\n });\n }, []);\n\n const commit = useCallback(\n (next: string[]) => {\n setInternalArray(next);\n if (isMultiple) {\n onValueChange?.(next);\n } else {\n onValueChange?.(next[0] ?? '');\n }\n },\n [setInternalArray, isMultiple, onValueChange],\n );\n\n const handleItemSelect = useCallback(\n (itemValue: string) => {\n if (disabled) return;\n if (!isSelectable) return;\n if (isMultiple) {\n const current = [...selectedValues];\n if (selectedValues.has(itemValue)) {\n commit(current.filter((v) => v !== itemValue));\n } else {\n commit([...current, itemValue]);\n }\n } else {\n if (selectedValues.has(itemValue)) {\n commit([]);\n } else {\n commit([itemValue]);\n }\n }\n },\n [disabled, isSelectable, isMultiple, selectedValues, commit],\n );\n\n const handleItemFocus = useCallback((value: string) => {\n setFocusedValue(value);\n }, []);\n\n const handleItemKeyDown = useCallback(\n (e: KeyboardEvent<HTMLElement>, itemValue: string) => {\n if (!isSelectable) return;\n const currentIndex = enabledItemValues.indexOf(itemValue);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n const next = enabledItemValues[currentIndex + 1];\n if (next !== undefined) focusItem(next);\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n const prev = enabledItemValues[currentIndex - 1];\n if (prev !== undefined) focusItem(prev);\n break;\n }\n case 'Home': {\n e.preventDefault();\n const first = enabledItemValues[0];\n if (first !== undefined) focusItem(first);\n break;\n }\n case 'End': {\n e.preventDefault();\n const last = enabledItemValues[enabledItemValues.length - 1];\n if (last !== undefined) focusItem(last);\n break;\n }\n case ' ':\n case 'Enter': {\n e.preventDefault();\n handleItemSelect(itemValue);\n break;\n }\n }\n },\n [isSelectable, enabledItemValues, focusItem, handleItemSelect],\n );\n\n const ctxValue: ListContextValue = {\n selection,\n selectedValues,\n focusedValue,\n disabled,\n enabledItemValues,\n onItemSelect: handleItemSelect,\n onItemFocus: handleItemFocus,\n onItemKeyDown: handleItemKeyDown,\n registerItemRef,\n divider,\n };\n\n const classes = listVariants({\n divider,\n density,\n ordered: as === 'ol',\n className,\n });\n\n const rootRef = useRef<HTMLElement>(null);\n\n const agentHandle = useMemo<ListHandle>(\n () => ({\n getSelection: () => Array.from(selectedValues),\n setSelection: (ids: string[]) => {\n if (!isSelectable) return;\n commit(isMultiple ? ids : ids.slice(0, 1));\n },\n clearSelection: () => {\n if (!isSelectable) return;\n commit([]);\n },\n }),\n [selectedValues, isSelectable, isMultiple, commit],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(listAgent, agentHandle, props.id);\n\n if (isSelectable) {\n if (import.meta.env.DEV && !ariaLabel && !props['aria-labelledby']) {\n console.warn(\n 'List: a selectable list (role=\"listbox\") should have an accessible name. ' +\n 'Pass aria-label or aria-labelledby to satisfy WCAG 4.1.2.',\n );\n }\n const resolvedAriaLabel = ariaLabel ?? t('list.label', 'List');\n return (\n <ListContext.Provider value={ctxValue}>\n <div\n ref={rootRef as Ref<HTMLDivElement>}\n role=\"listbox\"\n aria-label={resolvedAriaLabel}\n aria-multiselectable={isMultiple ? true : undefined}\n aria-disabled={disabled ? true : undefined}\n className={classes}\n data-component=\"list\"\n data-component-id={props.id}\n {...props}\n >\n {children}\n </div>\n </ListContext.Provider>\n );\n }\n\n if (as === 'ol') {\n return (\n <ListContext.Provider value={ctxValue}>\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- Safari strips the implicit list role on <ol>/<ul> with list-style:none; this guard puts it back in the accessibility tree */}\n <ol\n ref={rootRef as Ref<HTMLOListElement>}\n start={start}\n role=\"list\"\n className={classes}\n data-component=\"list\"\n data-component-id={props.id}\n {...(props as HTMLAttributes<HTMLOListElement>)}\n >\n {children}\n </ol>\n </ListContext.Provider>\n );\n }\n\n return (\n <ListContext.Provider value={ctxValue}>\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- Safari strips the implicit list role on <ol>/<ul> with list-style:none; this guard puts it back in the accessibility tree */}\n <ul\n ref={rootRef as Ref<HTMLUListElement>}\n role=\"list\"\n className={classes}\n data-component=\"list\"\n data-component-id={props.id}\n {...(props as HTMLAttributes<HTMLUListElement>)}\n >\n {children}\n </ul>\n </ListContext.Provider>\n );\n },\n);\nListRoot.displayName = 'List';\n\n/* ------------------------------------------------------------------ */\n/* ListItem */\n/* ------------------------------------------------------------------ */\n\nconst ListItem = forwardRef<HTMLElement, ListItemProps>(\n (\n {\n value,\n leading,\n title,\n description,\n trailing,\n lineClamp,\n disabled: itemDisabled = false,\n className,\n onClick,\n onFocus,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const {\n selection,\n selectedValues,\n focusedValue,\n disabled: groupDisabled,\n enabledItemValues,\n onItemSelect,\n onItemFocus,\n onItemKeyDown,\n registerItemRef,\n divider,\n } = useContext(ListContext);\n\n const isSelectable = selection !== 'none';\n const isDisabled = groupDisabled || itemDisabled;\n const isSelected = value !== undefined ? selectedValues.has(value) : false;\n const isFocused = value !== undefined && focusedValue === value;\n const isFirstEnabled =\n value !== undefined && enabledItemValues[0] === value;\n const tabIndex = isSelectable\n ? focusedValue !== null\n ? isFocused && !isDisabled\n ? 0\n : -1\n : isFirstEnabled && !isDisabled\n ? 0\n : -1\n : undefined;\n\n const descRef = useRef<HTMLSpanElement>(null);\n useLayoutEffect(() => {\n const el = descRef.current;\n if (!el) return;\n if (lineClamp != null) {\n el.style.setProperty('--list-item-clamp', String(lineClamp));\n } else {\n el.style.removeProperty('--list-item-clamp');\n }\n }, [lineClamp]);\n\n const internalRef = useCallback(\n (el: HTMLElement | null) => {\n if (value) registerItemRef(value, el);\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = el;\n }\n },\n [value, registerItemRef, ref],\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n if (isSelectable && value && !isDisabled) {\n onItemSelect(value);\n }\n (onClick as React.MouseEventHandler<HTMLElement> | undefined)?.(e);\n },\n [isSelectable, value, isDisabled, onItemSelect, onClick],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLElement>) => {\n if (value) onItemFocus(value);\n (onFocus as React.FocusEventHandler<HTMLElement> | undefined)?.(e);\n },\n [value, onItemFocus, onFocus],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLElement>) => {\n if (value) onItemKeyDown(e, value);\n (onKeyDown as React.KeyboardEventHandler<HTMLElement> | undefined)?.(e);\n },\n [value, onItemKeyDown, onKeyDown],\n );\n\n const itemClasses = listItemVariants({\n divider,\n interactive: isSelectable,\n selected: isSelected,\n disabled: isDisabled,\n className,\n });\n\n const content = (\n <>\n {leading && (\n <span className=\"ds:shrink-0 ds:flex ds:items-center ds:justify-center\">\n {leading}\n </span>\n )}\n <div className=\"ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0\">\n <span className=\"ds:text-[color:var(--foreground)] ds:text-[length:var(--font-size-sm)] ds:font-medium ds:leading-[var(--line-height-base)] ds:[overflow-wrap:anywhere]\">\n {title}\n </span>\n {description && (\n <span\n ref={descRef}\n className={[\n 'ds:text-[color:var(--muted-foreground)] ds:text-[length:var(--font-size-xs)] ds:leading-[var(--line-height-base)]',\n lineClamp != null\n ? 'ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:var(--list-item-clamp)]'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {description}\n </span>\n )}\n </div>\n {trailing && (\n <span className=\"ds:shrink-0 ds:flex ds:items-center ds:justify-center\">\n {trailing}\n </span>\n )}\n </>\n );\n\n if (isSelectable) {\n return (\n <div\n ref={internalRef as React.Ref<HTMLDivElement>}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled ? true : undefined}\n tabIndex={tabIndex}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n className={itemClasses}\n data-item-id={value}\n {...props}\n >\n {content}\n </div>\n );\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- non-interactive list items still surface click/keyboard handlers when selection mode is enabled (handlers no-op when selection==='none')\n <li\n ref={internalRef as React.Ref<HTMLLIElement>}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n className={itemClasses}\n data-item-id={value}\n {...props}\n >\n {/* Inner flex wrapper keeps <li> as display:list-item so ::marker renders */}\n <div className=\"ds:flex ds:items-center ds:gap-x-[var(--spacing-sm)]\">\n {content}\n </div>\n </li>\n );\n },\n);\nListItem.displayName = 'List.Item';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const List = Object.assign(ListRoot, {\n Root: ListRoot,\n Item: ListItem,\n});\n\nexport type { ListContextValue };\n"],"names":["listAgent","handle","args","ListContext","createContext","listVariants","cva","listItemVariants","collectItemInfo","children","items","Children","child","isValidElement","props","ListRoot","forwardRef","as","start","divider","density","selection","controlledValue","defaultValue","onValueChange","disabled","className","ariaLabel","ref","t","useTranslation","isSelectable","isMultiple","controlledArray","useMemo","initialArray","internalArray","setInternalArray","useControllableState","selectedValues","allItemInfo","enabledItemValues","i","focusedValue","setFocusedValue","useState","itemRefs","useRef","registerItemRef","useCallback","value","el","focusItem","_a","commit","next","handleItemSelect","itemValue","current","v","handleItemFocus","handleItemKeyDown","currentIndex","prev","first","last","ctxValue","classes","rootRef","agentHandle","ids","useImperativeHandle","useAgentRegistration","resolvedAriaLabel","jsx","ListItem","leading","title","description","trailing","lineClamp","itemDisabled","onClick","onFocus","onKeyDown","groupDisabled","onItemSelect","onItemFocus","onItemKeyDown","useContext","isDisabled","isSelected","isFocused","isFirstEnabled","tabIndex","descRef","useLayoutEffect","internalRef","handleClick","e","handleFocus","handleKeyDown","itemClasses","content","jsxs","Fragment","List"],"mappings":"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"}