@alfadocs/ui-kit-debug 0.17.1 → 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.
- package/dist/_chunks/{accordion-DOmxGEWU.js → accordion-CNcodXuO.js} +6 -6
- package/dist/_chunks/{accordion-DOmxGEWU.js.map → accordion-CNcodXuO.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-DEiQwIMn.js → ai-prompt-input-B-w5Rx3V.js} +184 -181
- package/dist/_chunks/ai-prompt-input-B-w5Rx3V.js.map +1 -0
- package/dist/_chunks/{alert-pgdXrEO5.js → alert-DBnawbmf.js} +64 -59
- package/dist/_chunks/alert-DBnawbmf.js.map +1 -0
- package/dist/_chunks/{audio-recorder-CRh4uyFL.js → audio-recorder-DNkQLW1G.js} +3 -3
- package/dist/_chunks/{audio-recorder-CRh4uyFL.js.map → audio-recorder-DNkQLW1G.js.map} +1 -1
- package/dist/_chunks/{autocomplete-mOg7WLOh.js → autocomplete-BxfabhZ8.js} +167 -164
- package/dist/_chunks/autocomplete-BxfabhZ8.js.map +1 -0
- package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js → balance-cell-renderer-DJB6WDPe.js} +2 -2
- package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js.map → balance-cell-renderer-DJB6WDPe.js.map} +1 -1
- package/dist/_chunks/{chat-input-UK-bXU7u.js → chat-input-B3XmFGDw.js} +123 -122
- package/dist/_chunks/chat-input-B3XmFGDw.js.map +1 -0
- package/dist/_chunks/checkbox-group-Bwmt1ovQ.js +213 -0
- package/dist/_chunks/checkbox-group-Bwmt1ovQ.js.map +1 -0
- package/dist/_chunks/{checkbox-D5EHnB14.js → checkbox-mwbrPZDY.js} +75 -70
- package/dist/_chunks/checkbox-mwbrPZDY.js.map +1 -0
- package/dist/_chunks/{collapsible-CuxUBoHJ.js → collapsible-hHiyZp0b.js} +61 -63
- package/dist/_chunks/collapsible-hHiyZp0b.js.map +1 -0
- package/dist/_chunks/{color-picker-BPfcByHH.js → color-picker-Bm-gzpsh.js} +2 -2
- package/dist/_chunks/{color-picker-BPfcByHH.js.map → color-picker-Bm-gzpsh.js.map} +1 -1
- package/dist/_chunks/{combobox-D5tWe0t_.js → combobox-Da9eq00i.js} +214 -211
- package/dist/_chunks/combobox-Da9eq00i.js.map +1 -0
- package/dist/_chunks/{copy-field-BCHAZ8QV.js → copy-field-BAF4mt9h.js} +95 -132
- package/dist/_chunks/copy-field-BAF4mt9h.js.map +1 -0
- package/dist/_chunks/{date-picker-BlhtBhPo.js → date-picker-BIoSLRly.js} +222 -219
- package/dist/_chunks/{date-picker-BlhtBhPo.js.map → date-picker-BIoSLRly.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-C2hRu_Ke.js → date-range-picker-9gANFNG9.js} +81 -78
- package/dist/_chunks/date-range-picker-9gANFNG9.js.map +1 -0
- package/dist/_chunks/{date-time-picker-B67mPZmP.js → date-time-picker-DG7BiGdb.js} +98 -95
- package/dist/_chunks/date-time-picker-DG7BiGdb.js.map +1 -0
- package/dist/_chunks/{dialog-DRp6Dejy.js → dialog-DUomPCRS.js} +69 -71
- package/dist/_chunks/dialog-DUomPCRS.js.map +1 -0
- package/dist/_chunks/{dropdown-menu-dyV7gHh_.js → dropdown-menu-DZxwF23X.js} +108 -110
- package/dist/_chunks/dropdown-menu-DZxwF23X.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-BTEiVkes.js → freemium-paywall-DXc7XlGE.js} +98 -97
- package/dist/_chunks/freemium-paywall-DXc7XlGE.js.map +1 -0
- package/dist/_chunks/{leo-sidebar-D3TuyH5_.js → leo-sidebar-DIsiTju3.js} +2 -2
- package/dist/_chunks/{leo-sidebar-D3TuyH5_.js.map → leo-sidebar-DIsiTju3.js.map} +1 -1
- package/dist/_chunks/{list-DcjV0m5B.js → list-BdvDctBz.js} +184 -180
- package/dist/_chunks/list-BdvDctBz.js.map +1 -0
- package/dist/_chunks/{message-tray-Fsend-du.js → message-tray-BNAS8al4.js} +111 -111
- package/dist/_chunks/message-tray-BNAS8al4.js.map +1 -0
- package/dist/_chunks/{multi-select-DooDzQIp.js → multi-select-CyspR5ZF.js} +157 -154
- package/dist/_chunks/multi-select-CyspR5ZF.js.map +1 -0
- package/dist/_chunks/{navigation-menu-DdufF-_4.js → navigation-menu-CyS1fBJ7.js} +85 -87
- package/dist/_chunks/navigation-menu-CyS1fBJ7.js.map +1 -0
- package/dist/_chunks/{notification-tray-C3dYdLAF.js → notification-tray-D_69dXFY.js} +114 -114
- package/dist/_chunks/notification-tray-D_69dXFY.js.map +1 -0
- package/dist/_chunks/{number-input-DH00o0DN.js → number-input-BZXu6bPY.js} +92 -89
- package/dist/_chunks/number-input-BZXu6bPY.js.map +1 -0
- package/dist/_chunks/{otp-input-BBXYvLx5.js → otp-input-BDF_iNpa.js} +92 -93
- package/dist/_chunks/otp-input-BDF_iNpa.js.map +1 -0
- package/dist/_chunks/{pagination-F1ei4khE.js → pagination-BWaXF7W0.js} +194 -211
- package/dist/_chunks/pagination-BWaXF7W0.js.map +1 -0
- package/dist/_chunks/{patient-shell-BE0CdPOJ.js → patient-shell-BOOaWZA9.js} +3 -3
- package/dist/_chunks/{patient-shell-BE0CdPOJ.js.map → patient-shell-BOOaWZA9.js.map} +1 -1
- package/dist/_chunks/{payment-form-CI77oIx1.js → payment-form-BjkuQeqR.js} +2 -2
- package/dist/_chunks/{payment-form-CI77oIx1.js.map → payment-form-BjkuQeqR.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-CnEJvmXC.js → pdf-viewer-BG_nsFT5.js} +2 -2
- package/dist/_chunks/{pdf-viewer-CnEJvmXC.js.map → pdf-viewer-BG_nsFT5.js.map} +1 -1
- package/dist/_chunks/{radio-group-Cz1a4QCA.js → radio-group-BHZOxrIK.js} +4 -4
- package/dist/_chunks/{radio-group-Cz1a4QCA.js.map → radio-group-BHZOxrIK.js.map} +1 -1
- package/dist/_chunks/{select-Ca6ibiDL.js → select-C92AT_OZ.js} +7 -7
- package/dist/_chunks/{select-Ca6ibiDL.js.map → select-C92AT_OZ.js.map} +1 -1
- package/dist/_chunks/{sidebar-D8Lq065m.js → sidebar-BqzlRBvC.js} +271 -291
- package/dist/_chunks/sidebar-BqzlRBvC.js.map +1 -0
- package/dist/_chunks/{slider-CkR6CLun.js → slider-CfEzeseL.js} +4 -4
- package/dist/_chunks/{slider-CkR6CLun.js.map → slider-CfEzeseL.js.map} +1 -1
- package/dist/_chunks/{tabs-CRCyPpJo.js → tabs-aEQfQV3x.js} +8 -8
- package/dist/_chunks/{tabs-CRCyPpJo.js.map → tabs-aEQfQV3x.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-B3meAb3y.js → theme-toggle-BswYl0Yp.js} +2 -2
- package/dist/_chunks/{theme-toggle-B3meAb3y.js.map → theme-toggle-BswYl0Yp.js.map} +1 -1
- package/dist/_chunks/use-controllable-state-BiY4xTzM.js +23 -0
- package/dist/_chunks/use-controllable-state-BiY4xTzM.js.map +1 -0
- package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js +43 -0
- package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js.map +1 -0
- package/dist/_chunks/use-debounced-callback-BisrB-Fq.js.map +1 -1
- package/dist/_chunks/use-direction-D6rvvG9G.js.map +1 -1
- package/dist/_chunks/use-persistent-state-i23OWy6G.js +24 -0
- package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +1 -0
- package/dist/_chunks/{warning-stack-CeRihME9.js → warning-stack-CDH9TudY.js} +2 -2
- package/dist/_chunks/{warning-stack-CeRihME9.js.map → warning-stack-CDH9TudY.js.map} +1 -1
- package/dist/_chunks/{workflow-map-D3MvrsZV.js → workflow-map-BeKe23uw.js} +3 -3
- package/dist/_chunks/{workflow-map-D3MvrsZV.js.map → workflow-map-BeKe23uw.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/use-debounced-callback.d.ts +1 -5
- package/dist/components/_shared/use-debounced-callback.d.ts.map +1 -1
- package/dist/components/_shared/use-direction.d.ts +1 -18
- package/dist/components/_shared/use-direction.d.ts.map +1 -1
- package/dist/components/_shared/use-focus-trap.d.ts +1 -31
- package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/chat-input/chat-input.d.ts.map +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/collapsible/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/command-palette.d.ts +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/icon-button-group/icon-button-group.d.ts +14 -14
- package/dist/components/list/index.js +1 -1
- package/dist/components/list/list.d.ts.map +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/message-tray/message-tray.d.ts.map +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/multi-select/multi-select.d.ts.map +1 -1
- package/dist/components/navigation-menu/index.js +1 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/number-input/number-input.d.ts.map +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/sidebar/index.js +8 -7
- package/dist/components/sidebar/index.js.map +1 -1
- package/dist/components/sidebar/sidebar.d.ts +1 -1
- package/dist/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +98 -15
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-debounced-callback.d.ts +19 -0
- package/dist/hooks/use-debounced-callback.d.ts.map +1 -0
- package/dist/hooks/use-debounced-value.d.ts +16 -0
- package/dist/hooks/use-debounced-value.d.ts.map +1 -0
- package/dist/hooks/use-direction.d.ts +19 -0
- package/dist/hooks/use-direction.d.ts.map +1 -0
- package/dist/hooks/use-focus-trap.d.ts +32 -0
- package/dist/hooks/use-focus-trap.d.ts.map +1 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +13 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/hooks/use-persistent-state.d.ts +16 -0
- package/dist/hooks/use-persistent-state.d.ts.map +1 -0
- package/dist/index.js +493 -492
- package/dist/index.js.map +1 -1
- package/dist/patterns/leo-assistant/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +4 -2
- package/dist/_chunks/ai-prompt-input-DEiQwIMn.js.map +0 -1
- package/dist/_chunks/alert-pgdXrEO5.js.map +0 -1
- package/dist/_chunks/autocomplete-mOg7WLOh.js.map +0 -1
- package/dist/_chunks/chat-input-UK-bXU7u.js.map +0 -1
- package/dist/_chunks/checkbox-D5EHnB14.js.map +0 -1
- package/dist/_chunks/checkbox-group-Qkm3Rg1S.js +0 -208
- package/dist/_chunks/checkbox-group-Qkm3Rg1S.js.map +0 -1
- package/dist/_chunks/collapsible-CuxUBoHJ.js.map +0 -1
- package/dist/_chunks/combobox-D5tWe0t_.js.map +0 -1
- package/dist/_chunks/copy-field-BCHAZ8QV.js.map +0 -1
- package/dist/_chunks/date-range-picker-C2hRu_Ke.js.map +0 -1
- package/dist/_chunks/date-time-picker-B67mPZmP.js.map +0 -1
- package/dist/_chunks/dialog-DRp6Dejy.js.map +0 -1
- package/dist/_chunks/dropdown-menu-dyV7gHh_.js.map +0 -1
- package/dist/_chunks/freemium-paywall-BTEiVkes.js.map +0 -1
- package/dist/_chunks/list-DcjV0m5B.js.map +0 -1
- package/dist/_chunks/message-tray-Fsend-du.js.map +0 -1
- package/dist/_chunks/multi-select-DooDzQIp.js.map +0 -1
- package/dist/_chunks/navigation-menu-DdufF-_4.js.map +0 -1
- package/dist/_chunks/notification-tray-C3dYdLAF.js.map +0 -1
- package/dist/_chunks/number-input-DH00o0DN.js.map +0 -1
- package/dist/_chunks/otp-input-BBXYvLx5.js.map +0 -1
- package/dist/_chunks/pagination-F1ei4khE.js.map +0 -1
- package/dist/_chunks/sidebar-D8Lq065m.js.map +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as X,
|
|
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
|
|
5
|
-
import { u as
|
|
6
|
-
|
|
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,
|
|
24
|
-
t.setSelection(
|
|
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 =
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
|
147
|
-
const
|
|
148
|
-
return
|
|
149
|
-
if (!
|
|
150
|
-
const
|
|
151
|
-
typeof
|
|
152
|
-
}),
|
|
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
|
|
155
|
+
const Q = X(
|
|
155
156
|
({
|
|
156
157
|
as: t = "ul",
|
|
157
|
-
start:
|
|
158
|
-
divider:
|
|
159
|
-
density:
|
|
158
|
+
start: v,
|
|
159
|
+
divider: x = "spaced",
|
|
160
|
+
density: y = "default",
|
|
160
161
|
selection: w = "none",
|
|
161
|
-
value:
|
|
162
|
+
value: f,
|
|
162
163
|
defaultValue: S,
|
|
163
|
-
onValueChange:
|
|
164
|
-
disabled:
|
|
164
|
+
onValueChange: b,
|
|
165
|
+
disabled: a = !1,
|
|
165
166
|
className: N,
|
|
166
|
-
children:
|
|
167
|
+
children: m,
|
|
167
168
|
"aria-label": P,
|
|
168
|
-
...
|
|
169
|
+
...r
|
|
169
170
|
}, B) => {
|
|
170
|
-
const { t: T } =
|
|
171
|
-
if (
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
() =>
|
|
178
|
-
[
|
|
179
|
-
),
|
|
180
|
-
(e
|
|
181
|
-
|
|
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 =
|
|
185
|
-
|
|
186
|
-
var
|
|
187
|
-
(
|
|
188
|
+
), I = p((e) => {
|
|
189
|
+
j(e), requestAnimationFrame(() => {
|
|
190
|
+
var l;
|
|
191
|
+
(l = F.current.get(e)) == null || l.focus();
|
|
188
192
|
});
|
|
189
|
-
}, []),
|
|
193
|
+
}, []), d = p(
|
|
190
194
|
(e) => {
|
|
191
|
-
|
|
195
|
+
_(e), g ? b == null || b(e) : b == null || b(e[0] ?? "");
|
|
192
196
|
},
|
|
193
|
-
[
|
|
194
|
-
),
|
|
197
|
+
[_, g, b]
|
|
198
|
+
), k = p(
|
|
195
199
|
(e) => {
|
|
196
|
-
if (!
|
|
197
|
-
if (
|
|
198
|
-
const
|
|
199
|
-
|
|
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
|
-
|
|
205
|
+
u.has(e) ? d([]) : d([e]);
|
|
202
206
|
},
|
|
203
|
-
[
|
|
204
|
-
),
|
|
205
|
-
|
|
206
|
-
}, []),
|
|
207
|
-
(e,
|
|
208
|
-
if (!
|
|
209
|
-
const
|
|
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
|
|
214
|
-
|
|
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
|
|
220
|
-
|
|
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
|
|
226
|
-
|
|
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
|
|
232
|
-
|
|
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(),
|
|
241
|
+
e.preventDefault(), k(l);
|
|
238
242
|
break;
|
|
239
243
|
}
|
|
240
244
|
}
|
|
241
245
|
},
|
|
242
|
-
[
|
|
246
|
+
[o, i, I, k]
|
|
243
247
|
), A = {
|
|
244
248
|
selection: w,
|
|
245
|
-
selectedValues:
|
|
246
|
-
focusedValue:
|
|
247
|
-
disabled:
|
|
248
|
-
enabledItemValues:
|
|
249
|
-
onItemSelect:
|
|
250
|
-
onItemFocus:
|
|
251
|
-
onItemKeyDown:
|
|
252
|
-
registerItemRef:
|
|
253
|
-
divider:
|
|
254
|
-
},
|
|
255
|
-
divider:
|
|
256
|
-
density:
|
|
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
|
-
}),
|
|
263
|
+
}), L = J(null), s = D(
|
|
260
264
|
() => ({
|
|
261
|
-
getSelection: () => Array.from(
|
|
265
|
+
getSelection: () => Array.from(u),
|
|
262
266
|
setSelection: (e) => {
|
|
263
|
-
|
|
267
|
+
o && d(g ? e : e.slice(0, 1));
|
|
264
268
|
},
|
|
265
269
|
clearSelection: () => {
|
|
266
|
-
|
|
270
|
+
o && d([]);
|
|
267
271
|
}
|
|
268
272
|
}),
|
|
269
|
-
[
|
|
273
|
+
[u, o, g, d]
|
|
270
274
|
);
|
|
271
|
-
if (
|
|
275
|
+
if (C(B, () => s, [s]), oe(de, s, r.id), o) {
|
|
272
276
|
const e = P ?? T("list.label", "List");
|
|
273
|
-
return /* @__PURE__ */
|
|
277
|
+
return /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
|
|
274
278
|
"div",
|
|
275
279
|
{
|
|
276
|
-
ref:
|
|
280
|
+
ref: L,
|
|
277
281
|
role: "listbox",
|
|
278
282
|
"aria-label": e,
|
|
279
|
-
"aria-multiselectable":
|
|
280
|
-
"aria-disabled":
|
|
281
|
-
className:
|
|
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":
|
|
284
|
-
...
|
|
285
|
-
children:
|
|
287
|
+
"data-component-id": r.id,
|
|
288
|
+
...r,
|
|
289
|
+
children: m
|
|
286
290
|
}
|
|
287
291
|
) });
|
|
288
292
|
}
|
|
289
|
-
return t === "ol" ? /* @__PURE__ */
|
|
293
|
+
return t === "ol" ? /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
|
|
290
294
|
"ol",
|
|
291
295
|
{
|
|
292
|
-
ref:
|
|
293
|
-
start:
|
|
296
|
+
ref: L,
|
|
297
|
+
start: v,
|
|
294
298
|
role: "list",
|
|
295
|
-
className:
|
|
299
|
+
className: R,
|
|
296
300
|
"data-component": "list",
|
|
297
|
-
"data-component-id":
|
|
298
|
-
...
|
|
299
|
-
children:
|
|
301
|
+
"data-component-id": r.id,
|
|
302
|
+
...r,
|
|
303
|
+
children: m
|
|
300
304
|
}
|
|
301
|
-
) }) : /* @__PURE__ */
|
|
305
|
+
) }) : /* @__PURE__ */ n(q.Provider, { value: A, children: /* @__PURE__ */ n(
|
|
302
306
|
"ul",
|
|
303
307
|
{
|
|
304
|
-
ref:
|
|
308
|
+
ref: L,
|
|
305
309
|
role: "list",
|
|
306
|
-
className:
|
|
310
|
+
className: R,
|
|
307
311
|
"data-component": "list",
|
|
308
|
-
"data-component-id":
|
|
309
|
-
...
|
|
310
|
-
children:
|
|
312
|
+
"data-component-id": r.id,
|
|
313
|
+
...r,
|
|
314
|
+
children: m
|
|
311
315
|
}
|
|
312
316
|
) });
|
|
313
317
|
}
|
|
314
318
|
);
|
|
315
|
-
|
|
319
|
+
Q.displayName = "List";
|
|
316
320
|
const Z = X(
|
|
317
321
|
({
|
|
318
322
|
value: t,
|
|
319
|
-
leading:
|
|
320
|
-
title:
|
|
321
|
-
description:
|
|
323
|
+
leading: v,
|
|
324
|
+
title: x,
|
|
325
|
+
description: y,
|
|
322
326
|
trailing: w,
|
|
323
|
-
lineClamp:
|
|
327
|
+
lineClamp: f,
|
|
324
328
|
disabled: S = !1,
|
|
325
|
-
className:
|
|
326
|
-
onClick:
|
|
329
|
+
className: b,
|
|
330
|
+
onClick: a,
|
|
327
331
|
onFocus: N,
|
|
328
|
-
onKeyDown:
|
|
332
|
+
onKeyDown: m,
|
|
329
333
|
...P
|
|
330
|
-
},
|
|
334
|
+
}, r) => {
|
|
331
335
|
const {
|
|
332
336
|
selection: B,
|
|
333
337
|
selectedValues: T,
|
|
334
|
-
focusedValue:
|
|
335
|
-
disabled:
|
|
336
|
-
enabledItemValues:
|
|
337
|
-
onItemSelect:
|
|
338
|
-
onItemFocus:
|
|
339
|
-
onItemKeyDown:
|
|
340
|
-
registerItemRef:
|
|
341
|
-
divider:
|
|
342
|
-
} =
|
|
343
|
-
|
|
344
|
-
const
|
|
345
|
-
|
|
346
|
-
}, [
|
|
347
|
-
const
|
|
348
|
-
(
|
|
349
|
-
t &&
|
|
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,
|
|
352
|
-
), M =
|
|
353
|
-
(
|
|
354
|
-
|
|
355
|
+
[t, u, r]
|
|
356
|
+
), M = p(
|
|
357
|
+
(s) => {
|
|
358
|
+
i && t && !h && K(t), a == null || a(s);
|
|
355
359
|
},
|
|
356
|
-
[
|
|
357
|
-
),
|
|
358
|
-
(
|
|
359
|
-
t &&
|
|
360
|
+
[i, t, h, K, a]
|
|
361
|
+
), z = p(
|
|
362
|
+
(s) => {
|
|
363
|
+
t && E(t), N == null || N(s);
|
|
360
364
|
},
|
|
361
|
-
[t,
|
|
362
|
-
),
|
|
363
|
-
(
|
|
364
|
-
t &&
|
|
365
|
+
[t, E, N]
|
|
366
|
+
), A = p(
|
|
367
|
+
(s) => {
|
|
368
|
+
t && _(s, t), m == null || m(s);
|
|
365
369
|
},
|
|
366
|
-
[t,
|
|
367
|
-
),
|
|
368
|
-
divider:
|
|
369
|
-
interactive:
|
|
370
|
-
selected:
|
|
371
|
-
disabled:
|
|
372
|
-
className:
|
|
373
|
-
}),
|
|
374
|
-
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
389
|
+
children: y
|
|
386
390
|
}
|
|
387
391
|
)
|
|
388
392
|
] }),
|
|
389
|
-
w && /* @__PURE__ */
|
|
393
|
+
w && /* @__PURE__ */ n("span", { className: "ds:shrink-0 ds:flex ds:items-center ds:justify-center", children: w })
|
|
390
394
|
] });
|
|
391
|
-
return
|
|
395
|
+
return i ? /* @__PURE__ */ n(
|
|
392
396
|
"div",
|
|
393
397
|
{
|
|
394
|
-
ref:
|
|
398
|
+
ref: k,
|
|
395
399
|
role: "option",
|
|
396
|
-
"aria-selected":
|
|
397
|
-
"aria-disabled":
|
|
398
|
-
tabIndex:
|
|
400
|
+
"aria-selected": j,
|
|
401
|
+
"aria-disabled": h ? !0 : void 0,
|
|
402
|
+
tabIndex: I,
|
|
399
403
|
onClick: M,
|
|
400
|
-
onFocus:
|
|
401
|
-
onKeyDown:
|
|
402
|
-
className:
|
|
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__ */
|
|
413
|
+
/* @__PURE__ */ n(
|
|
410
414
|
"li",
|
|
411
415
|
{
|
|
412
|
-
ref:
|
|
416
|
+
ref: k,
|
|
413
417
|
onClick: M,
|
|
414
|
-
onFocus:
|
|
415
|
-
onKeyDown:
|
|
416
|
-
className:
|
|
418
|
+
onFocus: z,
|
|
419
|
+
onKeyDown: A,
|
|
420
|
+
className: R,
|
|
417
421
|
"data-item-id": t,
|
|
418
422
|
...P,
|
|
419
|
-
children: /* @__PURE__ */
|
|
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
|
|
427
|
-
Root:
|
|
430
|
+
const ye = Object.assign(Q, {
|
|
431
|
+
Root: Q,
|
|
428
432
|
Item: Z
|
|
429
433
|
});
|
|
430
434
|
export {
|
|
431
|
-
|
|
432
|
-
|
|
435
|
+
ye as L,
|
|
436
|
+
de as l
|
|
433
437
|
};
|
|
434
|
-
//# sourceMappingURL=list-
|
|
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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"}
|