@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,14 +1,15 @@
|
|
|
1
1
|
import { jsx as n, jsxs as x } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import * as
|
|
2
|
+
import { forwardRef as qe, useContext as Me, useState as K, useRef as I, useMemo as F, useEffect as U, useCallback as Pe, useLayoutEffect as je } from "react";
|
|
3
|
+
import * as D from "@radix-ui/react-popover";
|
|
4
4
|
import { _ as u } from "./index-4xgbg-sn.js";
|
|
5
|
-
import { c as
|
|
6
|
-
import { useTranslation as
|
|
7
|
-
import { u as
|
|
8
|
-
import { T as
|
|
9
|
-
import { c as
|
|
5
|
+
import { c as de } from "./index-D2ZczOXr.js";
|
|
6
|
+
import { useTranslation as $e } from "react-i18next";
|
|
7
|
+
import { u as Be, F as Ke } from "./form-field-context-B3APVHKx.js";
|
|
8
|
+
import { T as oe } from "./tooltip-DHik5yRI.js";
|
|
9
|
+
import { c as Ue } from "./compose-refs-C0k0tdqF.js";
|
|
10
|
+
import { u as Qe } from "./use-controllable-state-BiY4xTzM.js";
|
|
10
11
|
import { g as Ye } from "./group-options-BvKhQ3xb.js";
|
|
11
|
-
import { b as
|
|
12
|
+
import { b as Q, c as Ge } from "./input-surface-xyERuLU_.js";
|
|
12
13
|
import { u as He } from "./registry-C9nwlNyL.js";
|
|
13
14
|
import { X as Xe } from "./x-CCcI3eJp.js";
|
|
14
15
|
import { C as Je } from "./check-DPdL_Sm7.js";
|
|
@@ -83,7 +84,7 @@ const We = {
|
|
|
83
84
|
description: "Each option emits its value as data-option-id."
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
|
-
}, Ze =
|
|
87
|
+
}, Ze = de(
|
|
87
88
|
[
|
|
88
89
|
"ds:inline-flex ds:flex-wrap ds:items-center ds:gap-1 ds:w-full",
|
|
89
90
|
Ge,
|
|
@@ -93,14 +94,14 @@ const We = {
|
|
|
93
94
|
{
|
|
94
95
|
variants: {
|
|
95
96
|
size: {
|
|
96
|
-
sm: `ds:min-h-8 ds:ps-2 ds:pe-2 ds:py-1 ${
|
|
97
|
-
md: `ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:py-1.5 ${
|
|
98
|
-
lg: `ds:min-h-12 ds:ps-4 ds:pe-4 ds:py-2 ${
|
|
97
|
+
sm: `ds:min-h-8 ds:ps-2 ds:pe-2 ds:py-1 ${Q.sm}`,
|
|
98
|
+
md: `ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:py-1.5 ${Q.md}`,
|
|
99
|
+
lg: `ds:min-h-12 ds:ps-4 ds:pe-4 ds:py-2 ${Q.lg}`
|
|
99
100
|
}
|
|
100
101
|
},
|
|
101
102
|
defaultVariants: { size: "md" }
|
|
102
103
|
}
|
|
103
|
-
),
|
|
104
|
+
), ie = de(
|
|
104
105
|
[
|
|
105
106
|
"ds:inline-flex ds:items-center ds:gap-1",
|
|
106
107
|
"ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-muted",
|
|
@@ -147,98 +148,100 @@ const We = {
|
|
|
147
148
|
"ds:data-[selected=true]:bg-muted ds:data-[selected=true]:text-foreground",
|
|
148
149
|
"ds:aria-[disabled=true]:pointer-events-none ds:aria-[disabled=true]:opacity-50",
|
|
149
150
|
"ds:data-[disabled=true]:pointer-events-none ds:data-[disabled=true]:opacity-50"
|
|
150
|
-
].join(" "),
|
|
151
|
+
].join(" "), ae = [
|
|
151
152
|
"ds:relative ds:flex ds:cursor-pointer ds:items-center",
|
|
152
153
|
"ds:rounded-[var(--radius-sm)] ds:ps-2 ds:pe-2 ds:py-1.5",
|
|
153
154
|
"ds:text-[var(--font-size-sm)] ds:font-medium ds:text-primary ds:outline-none ds:select-none",
|
|
154
155
|
"ds:data-[selected=true]:bg-muted"
|
|
155
|
-
].join(" "), rt = "__ui-multiselect-select-all__", nt = "__ui-multiselect-clear-all__",
|
|
156
|
+
].join(" "), rt = "__ui-multiselect-select-all__", nt = "__ui-multiselect-clear-all__", le = qe(
|
|
156
157
|
function({
|
|
157
158
|
options: c,
|
|
158
|
-
value:
|
|
159
|
-
defaultValue:
|
|
160
|
-
onChange:
|
|
161
|
-
onComplete:
|
|
162
|
-
placeholder:
|
|
163
|
-
maxSelections:
|
|
164
|
-
allowSelectAll:
|
|
165
|
-
allowClear:
|
|
166
|
-
filter:
|
|
167
|
-
size:
|
|
168
|
-
disabled:
|
|
169
|
-
className:
|
|
170
|
-
id:
|
|
159
|
+
value: ce,
|
|
160
|
+
defaultValue: ue,
|
|
161
|
+
onChange: fe,
|
|
162
|
+
onComplete: L,
|
|
163
|
+
placeholder: me,
|
|
164
|
+
maxSelections: v,
|
|
165
|
+
allowSelectAll: Y = !1,
|
|
166
|
+
allowClear: G = !1,
|
|
167
|
+
filter: O,
|
|
168
|
+
size: R = "md",
|
|
169
|
+
disabled: pe,
|
|
170
|
+
className: he,
|
|
171
|
+
id: z,
|
|
171
172
|
...ge
|
|
172
|
-
},
|
|
173
|
-
const { t: f } =
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
}, ve) {
|
|
174
|
+
const { t: f } = $e(), b = Be(), k = Me(Ke) !== null, [be, q] = Qe({
|
|
175
|
+
value: ce,
|
|
176
|
+
defaultValue: ue ?? [],
|
|
177
|
+
onChange: fe
|
|
178
|
+
}), r = be ?? [], [C, m] = K(!1), [p, M] = K(""), y = I(null), w = I([]), H = I(null), ye = Ue(ve, H), g = k && b.disabled || !!pe, we = k && b.required, X = k && b.invalid, xe = k && b.describedBy ? b.describedBy : void 0, Ie = z ?? (k ? b.id : void 0), ke = F(() => {
|
|
176
179
|
const e = /* @__PURE__ */ new Map();
|
|
177
180
|
for (const t of c) e.set(t.value, t.label);
|
|
178
181
|
return e;
|
|
179
|
-
}, [c]),
|
|
180
|
-
|
|
181
|
-
},
|
|
182
|
+
}, [c]), J = typeof v == "number" && r.length >= v, S = (e) => {
|
|
183
|
+
q(e);
|
|
184
|
+
}, Ce = (e) => {
|
|
182
185
|
if (r.includes(e)) {
|
|
183
|
-
|
|
186
|
+
S(r.filter((t) => t !== e));
|
|
184
187
|
return;
|
|
185
188
|
}
|
|
186
|
-
|
|
187
|
-
},
|
|
189
|
+
J || S([...r, e]);
|
|
190
|
+
}, P = (e) => {
|
|
188
191
|
const t = r.filter((s, o) => o !== e);
|
|
189
|
-
return
|
|
190
|
-
},
|
|
191
|
-
const e = c.filter((s) => !s.disabled).map((s) => s.value), t = typeof
|
|
192
|
-
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
},
|
|
196
|
-
|
|
197
|
-
|
|
192
|
+
return S(t), t;
|
|
193
|
+
}, Se = () => {
|
|
194
|
+
const e = c.filter((s) => !s.disabled).map((s) => s.value), t = typeof v == "number" ? v : e.length;
|
|
195
|
+
S(e.slice(0, t));
|
|
196
|
+
}, Ae = () => {
|
|
197
|
+
S([]);
|
|
198
|
+
}, W = I(r);
|
|
199
|
+
U(() => {
|
|
200
|
+
W.current = r;
|
|
198
201
|
}, [r]);
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
+
const Z = I(p);
|
|
203
|
+
U(() => {
|
|
204
|
+
Z.current = p;
|
|
202
205
|
}, [p]);
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}, [
|
|
207
|
-
const
|
|
206
|
+
const ee = I(C);
|
|
207
|
+
U(() => {
|
|
208
|
+
ee.current = C;
|
|
209
|
+
}, [C]);
|
|
210
|
+
const j = Pe(
|
|
208
211
|
(e) => {
|
|
209
|
-
|
|
212
|
+
q(e);
|
|
210
213
|
},
|
|
211
|
-
[
|
|
212
|
-
),
|
|
214
|
+
[q]
|
|
215
|
+
), Ne = F(
|
|
213
216
|
() => ({
|
|
214
|
-
getSelection: () => [...
|
|
215
|
-
getQuery: () =>
|
|
216
|
-
getIsOpen: () =>
|
|
217
|
-
setSelection: (e) =>
|
|
218
|
-
clearSelection: () =>
|
|
219
|
-
setQuery: (e) =>
|
|
217
|
+
getSelection: () => [...W.current],
|
|
218
|
+
getQuery: () => Z.current,
|
|
219
|
+
getIsOpen: () => ee.current,
|
|
220
|
+
setSelection: (e) => j(e),
|
|
221
|
+
clearSelection: () => j([]),
|
|
222
|
+
setQuery: (e) => M(e),
|
|
220
223
|
open: () => m(!0),
|
|
221
224
|
close: () => m(!1)
|
|
222
225
|
}),
|
|
223
|
-
[
|
|
226
|
+
[j]
|
|
224
227
|
);
|
|
225
|
-
He(We,
|
|
226
|
-
const
|
|
228
|
+
He(We, Ne, z);
|
|
229
|
+
const te = me ?? f("inputs.multiSelect.placeholder", "Select…"), se = F(() => {
|
|
227
230
|
if (!p) return c;
|
|
228
231
|
const e = p.toLowerCase();
|
|
229
|
-
return c.filter((t) =>
|
|
230
|
-
}, [c, p,
|
|
231
|
-
() => Ye(
|
|
232
|
-
[
|
|
233
|
-
),
|
|
232
|
+
return c.filter((t) => O ? O(p, t) : t.label.toLowerCase().includes(e));
|
|
233
|
+
}, [c, p, O]), _e = F(
|
|
234
|
+
() => Ye(se),
|
|
235
|
+
[se]
|
|
236
|
+
), Re = (e) => {
|
|
234
237
|
var o;
|
|
235
238
|
const t = e.currentTarget;
|
|
236
239
|
if (e.key === "Backspace" && p === "" && r.length > 0) {
|
|
237
240
|
e.preventDefault();
|
|
238
|
-
const a = r.length - 1, l =
|
|
241
|
+
const a = r.length - 1, l = P(a).length - 1;
|
|
239
242
|
l >= 0 && requestAnimationFrame(() => {
|
|
240
243
|
var h;
|
|
241
|
-
(h =
|
|
244
|
+
(h = w.current[l]) == null || h.focus();
|
|
242
245
|
});
|
|
243
246
|
return;
|
|
244
247
|
}
|
|
@@ -248,7 +251,7 @@ const We = {
|
|
|
248
251
|
if (a && e.key === "ArrowRight" || !a && e.key === "ArrowLeft") {
|
|
249
252
|
e.preventDefault();
|
|
250
253
|
const l = r.length - 1;
|
|
251
|
-
(o =
|
|
254
|
+
(o = w.current[l]) == null || o.focus();
|
|
252
255
|
}
|
|
253
256
|
return;
|
|
254
257
|
}
|
|
@@ -256,50 +259,50 @@ const We = {
|
|
|
256
259
|
m(!1);
|
|
257
260
|
return;
|
|
258
261
|
}
|
|
259
|
-
!
|
|
260
|
-
},
|
|
261
|
-
var d, l, h,
|
|
262
|
+
!C && (e.key === "ArrowDown" || e.key === "Enter") && m(!0);
|
|
263
|
+
}, Te = (e) => (t) => {
|
|
264
|
+
var d, l, h, N;
|
|
262
265
|
if (t.key === "Backspace" || t.key === "Delete" || t.key === "Enter" || t.key === " ") {
|
|
263
266
|
t.preventDefault(), t.stopPropagation();
|
|
264
|
-
const
|
|
265
|
-
if (
|
|
267
|
+
const V = P(e);
|
|
268
|
+
if (V.length === 0) {
|
|
266
269
|
requestAnimationFrame(() => {
|
|
267
|
-
var
|
|
268
|
-
return (
|
|
270
|
+
var _;
|
|
271
|
+
return (_ = y.current) == null ? void 0 : _.focus();
|
|
269
272
|
});
|
|
270
273
|
return;
|
|
271
274
|
}
|
|
272
|
-
const
|
|
275
|
+
const ze = Math.min(e, V.length - 1);
|
|
273
276
|
requestAnimationFrame(() => {
|
|
274
|
-
var
|
|
275
|
-
(
|
|
277
|
+
var _;
|
|
278
|
+
(_ = w.current[ze]) == null || _.focus();
|
|
276
279
|
});
|
|
277
280
|
return;
|
|
278
281
|
}
|
|
279
282
|
const s = document.dir === "rtl", o = s ? "ArrowRight" : "ArrowLeft", a = s ? "ArrowLeft" : "ArrowRight";
|
|
280
283
|
if (t.key === o) {
|
|
281
284
|
t.preventDefault();
|
|
282
|
-
const
|
|
283
|
-
(d =
|
|
285
|
+
const V = Math.max(0, e - 1);
|
|
286
|
+
(d = w.current[V]) == null || d.focus();
|
|
284
287
|
return;
|
|
285
288
|
}
|
|
286
289
|
if (t.key === a) {
|
|
287
|
-
t.preventDefault(), e < r.length - 1 ? (l =
|
|
290
|
+
t.preventDefault(), e < r.length - 1 ? (l = w.current[e + 1]) == null || l.focus() : (h = y.current) == null || h.focus();
|
|
288
291
|
return;
|
|
289
292
|
}
|
|
290
|
-
t.key === "Escape" && (m(!1), (
|
|
291
|
-
}, [
|
|
293
|
+
t.key === "Escape" && (m(!1), (N = y.current) == null || N.focus());
|
|
294
|
+
}, [T, $] = K(
|
|
292
295
|
Number.POSITIVE_INFINITY
|
|
293
296
|
);
|
|
294
|
-
|
|
295
|
-
const e =
|
|
297
|
+
je(() => {
|
|
298
|
+
const e = H.current;
|
|
296
299
|
if (!e) return;
|
|
297
300
|
const t = () => {
|
|
298
301
|
const o = Array.from(
|
|
299
302
|
e.querySelectorAll('[data-ui-chip="true"]')
|
|
300
303
|
);
|
|
301
304
|
if (o.length === 0) {
|
|
302
|
-
|
|
305
|
+
$(Number.POSITIVE_INFINITY);
|
|
303
306
|
return;
|
|
304
307
|
}
|
|
305
308
|
const a = o[0].offsetTop;
|
|
@@ -307,57 +310,57 @@ const We = {
|
|
|
307
310
|
for (const l of o)
|
|
308
311
|
if (l.offsetTop === a) d++;
|
|
309
312
|
else break;
|
|
310
|
-
d === o.length ?
|
|
313
|
+
d === o.length ? $(Number.POSITIVE_INFINITY) : $(Math.max(1, d - 1));
|
|
311
314
|
};
|
|
312
315
|
t();
|
|
313
316
|
const s = new ResizeObserver(t);
|
|
314
317
|
return s.observe(e), () => s.disconnect();
|
|
315
|
-
}, [r.length,
|
|
316
|
-
const
|
|
318
|
+
}, [r.length, R]);
|
|
319
|
+
const E = r.map((e) => ({
|
|
317
320
|
value: e,
|
|
318
|
-
label:
|
|
319
|
-
})),
|
|
321
|
+
label: ke.get(e) ?? e
|
|
322
|
+
})), re = T === Number.POSITIVE_INFINITY || T >= E.length, Ee = re ? E : E.slice(0, T), ne = re ? [] : E.slice(T), A = ne.length, Ve = (e) => {
|
|
320
323
|
var s;
|
|
321
324
|
if (g) return;
|
|
322
325
|
const t = e.target;
|
|
323
|
-
t.closest('[data-ui-chip="true"]') || t.closest('[data-ui-chip-dismiss="true"]') || (m(!0), (s =
|
|
324
|
-
},
|
|
326
|
+
t.closest('[data-ui-chip="true"]') || t.closest('[data-ui-chip-dismiss="true"]') || (m(!0), (s = y.current) == null || s.focus());
|
|
327
|
+
}, Fe = (e) => {
|
|
325
328
|
if (g) {
|
|
326
329
|
m(!1);
|
|
327
330
|
return;
|
|
328
331
|
}
|
|
329
|
-
m(e), e || (
|
|
330
|
-
},
|
|
332
|
+
m(e), e || (M(""), L == null || L(r));
|
|
333
|
+
}, De = Y || G, Le = f("inputs.multiSelect.selected", {
|
|
331
334
|
count: r.length,
|
|
332
335
|
defaultValue: `${r.length} selected`
|
|
333
|
-
}), { onClick:
|
|
334
|
-
return /* @__PURE__ */ n(u, { shouldFilter: !1, label:
|
|
335
|
-
/* @__PURE__ */ n(
|
|
336
|
+
}), { onClick: B, ...Oe } = ge;
|
|
337
|
+
return /* @__PURE__ */ n(u, { shouldFilter: !1, label: Le, children: /* @__PURE__ */ x(D.Root, { open: C, onOpenChange: Fe, children: [
|
|
338
|
+
/* @__PURE__ */ n(D.Anchor, { asChild: !0, children: /* @__PURE__ */ x(
|
|
336
339
|
"div",
|
|
337
340
|
{
|
|
338
|
-
ref:
|
|
339
|
-
className: Ze({ size:
|
|
341
|
+
ref: ye,
|
|
342
|
+
className: Ze({ size: R, className: he }),
|
|
340
343
|
"aria-disabled": g || void 0,
|
|
341
|
-
"aria-invalid":
|
|
344
|
+
"aria-invalid": X || void 0,
|
|
342
345
|
"data-component": "multi-select",
|
|
343
|
-
"data-component-id":
|
|
346
|
+
"data-component-id": z,
|
|
344
347
|
onClick: (e) => {
|
|
345
|
-
|
|
348
|
+
B == null || B(e), Ve(e);
|
|
346
349
|
},
|
|
347
|
-
...
|
|
350
|
+
...Oe,
|
|
348
351
|
children: [
|
|
349
|
-
|
|
352
|
+
Ee.map((e, t) => (
|
|
350
353
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions -- chip pill receives focus via roving tabindex; chip removal uses an inner button
|
|
351
354
|
/* @__PURE__ */ x(
|
|
352
355
|
"span",
|
|
353
356
|
{
|
|
354
357
|
ref: (s) => {
|
|
355
|
-
|
|
358
|
+
w.current[t] = s;
|
|
356
359
|
},
|
|
357
360
|
tabIndex: g ? -1 : 0,
|
|
358
361
|
"data-ui-chip": "true",
|
|
359
|
-
className:
|
|
360
|
-
onKeyDown:
|
|
362
|
+
className: ie({ size: R }),
|
|
363
|
+
onKeyDown: Te(t),
|
|
361
364
|
"aria-label": e.label,
|
|
362
365
|
children: [
|
|
363
366
|
/* @__PURE__ */ n("span", { children: e.label }),
|
|
@@ -373,9 +376,9 @@ const We = {
|
|
|
373
376
|
}),
|
|
374
377
|
disabled: g,
|
|
375
378
|
onClick: (s) => {
|
|
376
|
-
s.stopPropagation(),
|
|
379
|
+
s.stopPropagation(), P(t), requestAnimationFrame(() => {
|
|
377
380
|
var o;
|
|
378
|
-
return (o =
|
|
381
|
+
return (o = y.current) == null ? void 0 : o.focus();
|
|
379
382
|
});
|
|
380
383
|
},
|
|
381
384
|
className: et,
|
|
@@ -387,24 +390,24 @@ const We = {
|
|
|
387
390
|
e.value
|
|
388
391
|
)
|
|
389
392
|
)),
|
|
390
|
-
|
|
391
|
-
|
|
393
|
+
A > 0 ? /* @__PURE__ */ n(
|
|
394
|
+
oe,
|
|
392
395
|
{
|
|
393
|
-
label:
|
|
396
|
+
label: ne.map((e) => e.label).join(", "),
|
|
394
397
|
delayDuration: 200,
|
|
395
398
|
children: /* @__PURE__ */ n(
|
|
396
399
|
"span",
|
|
397
400
|
{
|
|
398
|
-
className:
|
|
401
|
+
className: ie({ size: R }),
|
|
399
402
|
tabIndex: 0,
|
|
400
403
|
role: "button",
|
|
401
404
|
"aria-label": f("inputs.multiSelect.overflow", {
|
|
402
|
-
count:
|
|
403
|
-
defaultValue: `+${
|
|
405
|
+
count: A,
|
|
406
|
+
defaultValue: `+${A} more`
|
|
404
407
|
}),
|
|
405
408
|
children: /* @__PURE__ */ n("span", { children: f("inputs.multiSelect.overflow", {
|
|
406
|
-
count:
|
|
407
|
-
defaultValue: `+${
|
|
409
|
+
count: A,
|
|
410
|
+
defaultValue: `+${A} more`
|
|
408
411
|
}) })
|
|
409
412
|
}
|
|
410
413
|
)
|
|
@@ -413,18 +416,18 @@ const We = {
|
|
|
413
416
|
/* @__PURE__ */ n(
|
|
414
417
|
u.Input,
|
|
415
418
|
{
|
|
416
|
-
ref:
|
|
419
|
+
ref: y,
|
|
417
420
|
value: p,
|
|
418
|
-
onValueChange:
|
|
419
|
-
onKeyDown:
|
|
421
|
+
onValueChange: M,
|
|
422
|
+
onKeyDown: Re,
|
|
420
423
|
onFocus: () => {
|
|
421
424
|
g || m(!0);
|
|
422
425
|
},
|
|
423
|
-
placeholder: r.length === 0 ?
|
|
424
|
-
id:
|
|
426
|
+
placeholder: r.length === 0 ? te : "",
|
|
427
|
+
id: Ie,
|
|
425
428
|
"aria-describedby": xe,
|
|
426
|
-
"aria-invalid":
|
|
427
|
-
"aria-required":
|
|
429
|
+
"aria-invalid": X || void 0,
|
|
430
|
+
"aria-required": we || void 0,
|
|
428
431
|
disabled: g,
|
|
429
432
|
className: [
|
|
430
433
|
"ds:flex-1 ds:min-w-[6rem] ds:bg-transparent ds:outline-none",
|
|
@@ -436,8 +439,8 @@ const We = {
|
|
|
436
439
|
]
|
|
437
440
|
}
|
|
438
441
|
) }),
|
|
439
|
-
/* @__PURE__ */ n(
|
|
440
|
-
|
|
442
|
+
/* @__PURE__ */ n(D.Portal, { children: /* @__PURE__ */ n(
|
|
443
|
+
D.Content,
|
|
441
444
|
{
|
|
442
445
|
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
443
446
|
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
@@ -449,39 +452,39 @@ const We = {
|
|
|
449
452
|
{
|
|
450
453
|
role: "listbox",
|
|
451
454
|
"aria-multiselectable": "true",
|
|
452
|
-
"aria-label":
|
|
455
|
+
"aria-label": te,
|
|
453
456
|
className: "ds:max-h-[20rem] ds:overflow-y-auto ds:p-1",
|
|
454
457
|
children: [
|
|
455
|
-
|
|
456
|
-
|
|
458
|
+
De ? /* @__PURE__ */ x(u.Group, { children: [
|
|
459
|
+
Y ? /* @__PURE__ */ n(
|
|
457
460
|
u.Item,
|
|
458
461
|
{
|
|
459
462
|
value: rt,
|
|
460
|
-
onSelect:
|
|
461
|
-
className:
|
|
463
|
+
onSelect: Se,
|
|
464
|
+
className: ae,
|
|
462
465
|
children: f("inputs.multiSelect.selectAll", "Select all")
|
|
463
466
|
}
|
|
464
467
|
) : null,
|
|
465
|
-
|
|
468
|
+
G ? /* @__PURE__ */ n(
|
|
466
469
|
u.Item,
|
|
467
470
|
{
|
|
468
471
|
value: nt,
|
|
469
|
-
onSelect:
|
|
470
|
-
className:
|
|
472
|
+
onSelect: Ae,
|
|
473
|
+
className: ae,
|
|
471
474
|
children: f("inputs.multiSelect.clearAll", "Clear all")
|
|
472
475
|
}
|
|
473
476
|
) : null
|
|
474
477
|
] }) : null,
|
|
475
478
|
/* @__PURE__ */ n(u.Empty, { className: "ds:ps-2 ds:pe-2 ds:py-2 type-body-sm ds:text-muted-foreground", children: f("inputs.multiSelect.noOptions", "No options found") }),
|
|
476
|
-
|
|
479
|
+
_e.map(({ group: e, items: t }, s) => {
|
|
477
480
|
const o = t.map((a) => {
|
|
478
|
-
const d = r.includes(a.value), l = !d &&
|
|
481
|
+
const d = r.includes(a.value), l = !d && J, h = !!a.disabled || l, N = /* @__PURE__ */ x(
|
|
479
482
|
u.Item,
|
|
480
483
|
{
|
|
481
484
|
value: a.value,
|
|
482
485
|
disabled: h,
|
|
483
486
|
onSelect: () => {
|
|
484
|
-
h ||
|
|
487
|
+
h || Ce(a.value);
|
|
485
488
|
},
|
|
486
489
|
"aria-selected": d,
|
|
487
490
|
"aria-disabled": h || void 0,
|
|
@@ -505,17 +508,17 @@ const We = {
|
|
|
505
508
|
a.value
|
|
506
509
|
);
|
|
507
510
|
return l ? /* @__PURE__ */ n(
|
|
508
|
-
|
|
511
|
+
oe,
|
|
509
512
|
{
|
|
510
513
|
label: f("inputs.multiSelect.maxReached", {
|
|
511
|
-
count:
|
|
512
|
-
defaultValue: `Maximum ${
|
|
514
|
+
count: v,
|
|
515
|
+
defaultValue: `Maximum ${v} selections`
|
|
513
516
|
}),
|
|
514
517
|
delayDuration: 200,
|
|
515
|
-
children:
|
|
518
|
+
children: N
|
|
516
519
|
},
|
|
517
520
|
a.value
|
|
518
|
-
) :
|
|
521
|
+
) : N;
|
|
519
522
|
});
|
|
520
523
|
return e ? /* @__PURE__ */ n(
|
|
521
524
|
u.Group,
|
|
@@ -535,11 +538,11 @@ const We = {
|
|
|
535
538
|
] }) });
|
|
536
539
|
}
|
|
537
540
|
);
|
|
538
|
-
|
|
539
|
-
const
|
|
541
|
+
le.displayName = "MultiSelect";
|
|
542
|
+
const yt = le;
|
|
540
543
|
export {
|
|
541
|
-
|
|
544
|
+
yt as M,
|
|
542
545
|
Ze as a,
|
|
543
546
|
We as m
|
|
544
547
|
};
|
|
545
|
-
//# sourceMappingURL=multi-select-
|
|
548
|
+
//# sourceMappingURL=multi-select-CyspR5ZF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-select-CyspR5ZF.js","sources":["../../src/components/multi-select/multi-select.agent.ts","../../src/components/multi-select/multi-select.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { MultiSelectHandle } from './multi-select';\n\nexport const multiSelectAgent: AgentAdapter<MultiSelectHandle> = {\n id: 'multi-select',\n capabilities: ['select_multiple', 'filter', 'open', 'close'],\n state: {\n selection: {\n type: 'string[]',\n description: 'Values of currently-selected options.',\n read: (handle) => handle.getSelection(),\n },\n query: {\n type: 'string',\n description: 'Current filter query.',\n read: (handle) => handle.getQuery(),\n },\n isOpen: {\n type: 'boolean',\n description: 'True when the option list is visible.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n set_selection: {\n safety: 'read',\n argsType: '{ values: string[] }',\n description:\n 'Replace the current selection with the given list of values.',\n invoke: (handle, args: { values: string[] }) => {\n handle.setSelection(args.values);\n },\n },\n clear_selection: {\n safety: 'read',\n description: 'Clear the current selection.',\n invoke: (handle) => {\n handle.clearSelection();\n },\n },\n apply_filter: {\n safety: 'read',\n argsType: '{ query: string }',\n description: 'Set the filter query for the option list.',\n invoke: (handle, args: { query: string }) => {\n handle.setQuery(args.query);\n },\n },\n open: {\n safety: 'read',\n description: 'Open the option list.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n description: 'Close the option list.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'multi-select' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-option-id',\n description: 'Each option emits its value as data-option-id.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type Ref,\n} from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Check, X } from 'lucide-react';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport { Tooltip } from '../tooltip';\nimport type { OptionShape } from '../_shared/option';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { groupOptions } from '../_shared/group-options';\nimport {\n INPUT_SURFACE_CHROME,\n INPUT_SURFACE_TEXT,\n} from '../_shared/input-surface';\nimport { useAgentRegistration } from '../../agent';\nimport { multiSelectAgent } from './multi-select.agent';\n\n// MultiSelect uses `min-h-*` (not `h-*`) because the wrapper grows vertically\n// as chips wrap to additional lines. The height floor per size mirrors the\n// other inputs' fixed heights in _shared/input-surface.ts.\nconst multiSelectVariants = cva(\n [\n 'ds:inline-flex ds:flex-wrap ds:items-center ds:gap-1 ds:w-full',\n INPUT_SURFACE_CHROME,\n 'ds:aria-[invalid=true]:border-destructive',\n 'ds:aria-disabled:cursor-not-allowed ds:aria-disabled:opacity-50',\n ],\n {\n variants: {\n size: {\n sm: `ds:min-h-8 ds:ps-2 ds:pe-2 ds:py-1 ${INPUT_SURFACE_TEXT.sm}`,\n md: `ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:py-1.5 ${INPUT_SURFACE_TEXT.md}`,\n lg: `ds:min-h-12 ds:ps-4 ds:pe-4 ds:py-2 ${INPUT_SURFACE_TEXT.lg}`,\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst chipVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-1',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-muted',\n 'ds:text-foreground ds:select-none',\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-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ],\n {\n variants: {\n size: {\n sm: 'ds:ps-2 ds:pe-1 ds:py-0.5 ds:text-[length:var(--font-size-xs)]',\n md: 'ds:ps-2 ds:pe-1 ds:py-0.5 ds:text-[length:var(--font-size-sm)]',\n lg: 'ds:ps-3 ds:pe-1.5 ds:py-1 ds:text-[length:var(--font-size-base)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst chipDismissClasses = [\n 'ds:inline-flex ds:items-center ds:justify-center ds:shrink-0',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-muted-foreground ds:hover:text-foreground',\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-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:size-4',\n 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"]',\n].join(' ');\n\nconst popoverContentClasses = [\n 'ds:z-[var(--z-dropdown)] ds:overflow-hidden',\n 'ds:min-w-[var(--radix-popover-trigger-width)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2',\n 'ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:animate-none',\n].join(' ');\n\nconst commandItemClasses = [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center',\n 'ds:rounded-[var(--radius-sm)] ds:ps-2 ds:pe-2 ds:py-1.5',\n 'ds:text-[var(--font-size-sm)] ds:text-foreground ds:outline-none ds:select-none',\n 'ds:data-[selected=true]:bg-muted ds:data-[selected=true]:text-foreground',\n 'ds:aria-[disabled=true]:pointer-events-none ds:aria-[disabled=true]:opacity-50',\n 'ds:data-[disabled=true]:pointer-events-none ds:data-[disabled=true]:opacity-50',\n].join(' ');\n\nconst actionItemClasses = [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center',\n 'ds:rounded-[var(--radius-sm)] ds:ps-2 ds:pe-2 ds:py-1.5',\n 'ds:text-[var(--font-size-sm)] ds:font-medium ds:text-primary ds:outline-none ds:select-none',\n 'ds:data-[selected=true]:bg-muted',\n].join(' ');\n\nconst SELECT_ALL_VALUE = '__ui-multiselect-select-all__';\nconst CLEAR_ALL_VALUE = '__ui-multiselect-clear-all__';\n\ntype HTMLDivAttributes = HTMLAttributes<HTMLDivElement>;\n\n// Curated agent-readiness handle — see multi-select.agent.ts.\nexport interface MultiSelectHandle {\n getSelection: () => string[];\n getQuery: () => string;\n getIsOpen: () => boolean;\n setSelection: (values: string[]) => void;\n clearSelection: () => void;\n setQuery: (query: string) => void;\n open: () => void;\n close: () => void;\n}\n\nexport interface MultiSelectProps<T extends string = string>\n extends\n Omit<HTMLDivAttributes, 'onChange'>,\n VariantProps<typeof multiSelectVariants> {\n options: OptionShape<T>[];\n value?: T[];\n defaultValue?: T[];\n onChange?: (next: T[]) => void;\n onComplete?: (values: T[]) => void;\n placeholder?: string;\n maxSelections?: number;\n allowSelectAll?: boolean;\n allowClear?: boolean;\n filter?: (query: string, option: OptionShape<T>) => boolean;\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n}\n\nconst MultiSelectImpl = forwardRef<HTMLDivElement, MultiSelectProps>(\n function MultiSelect(\n {\n options,\n value,\n defaultValue,\n onChange,\n onComplete,\n placeholder,\n maxSelections,\n allowSelectAll = false,\n allowClear = false,\n filter,\n size = 'md',\n disabled,\n className,\n id,\n ...divProps\n },\n ref,\n ) {\n const { t } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const [currentValueRaw, setMultiSelectValue] = useControllableState<\n string[]\n >({\n value,\n defaultValue: defaultValue ?? [],\n onChange,\n });\n const currentValue = currentValueRaw ?? [];\n\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const chipRefs = useRef<Array<HTMLSpanElement | null>>([]);\n const triggerRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs<HTMLDivElement>(ref, triggerRef);\n\n const effectiveDisabled =\n (inFormField && ctx.disabled) || Boolean(disabled);\n const effectiveRequired = inFormField && ctx.required;\n const effectiveInvalid = inFormField && ctx.invalid;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n const triggerId = id ?? (inFormField ? ctx.id : undefined);\n\n const labelByValue = useMemo(() => {\n const map = new Map<string, string>();\n for (const option of options) map.set(option.value, option.label);\n return map;\n }, [options]);\n\n const atCap =\n typeof maxSelections === 'number' && currentValue.length >= maxSelections;\n\n const commit = (next: string[]): void => {\n setMultiSelectValue(next);\n };\n\n const toggle = (val: string): void => {\n if (currentValue.includes(val)) {\n commit(currentValue.filter((v) => v !== val));\n return;\n }\n if (atCap) return;\n commit([...currentValue, val]);\n };\n\n const removeAt = (index: number): string[] => {\n const next = currentValue.filter((_, i) => i !== index);\n commit(next);\n return next;\n };\n\n const handleSelectAll = (): void => {\n const selectable = options.filter((o) => !o.disabled).map((o) => o.value);\n const cap =\n typeof maxSelections === 'number' ? maxSelections : selectable.length;\n commit(selectable.slice(0, cap));\n };\n\n const handleClearAll = (): void => {\n commit([]);\n };\n\n // Agent handle — refs for fresh reads from the memoized handle.\n const valueRef = useRef<string[]>(currentValue);\n useEffect(() => {\n valueRef.current = currentValue;\n }, [currentValue]);\n const queryRef = useRef<string>(query);\n useEffect(() => {\n queryRef.current = query;\n }, [query]);\n const openRef = useRef<boolean>(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const commitStable = useCallback(\n (next: string[]) => {\n setMultiSelectValue(next);\n },\n [setMultiSelectValue],\n );\n\n const agentHandle = useMemo<MultiSelectHandle>(\n () => ({\n getSelection: () => [...valueRef.current],\n getQuery: () => queryRef.current,\n getIsOpen: () => openRef.current,\n setSelection: (values) => commitStable(values),\n clearSelection: () => commitStable([]),\n setQuery: (next) => setQuery(next),\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [commitStable],\n );\n useAgentRegistration(multiSelectAgent, agentHandle, id);\n\n const resolvedPlaceholder =\n placeholder ?? t('inputs.multiSelect.placeholder', 'Select…');\n\n const filteredOptions = useMemo(() => {\n if (!query) return options;\n const needle = query.toLowerCase();\n return options.filter((option) => {\n if (filter) return filter(query, option);\n return option.label.toLowerCase().includes(needle);\n });\n }, [options, query, filter]);\n\n const groups = useMemo(\n () => groupOptions(filteredOptions),\n [filteredOptions],\n );\n\n const handleInputKeyDown = (e: KeyboardEvent<HTMLInputElement>): void => {\n const target = e.currentTarget;\n if (e.key === 'Backspace' && query === '' && currentValue.length > 0) {\n e.preventDefault();\n const removedIndex = currentValue.length - 1;\n const next = removeAt(removedIndex);\n const newLast = next.length - 1;\n if (newLast >= 0) {\n requestAnimationFrame(() => {\n chipRefs.current[newLast]?.focus();\n });\n }\n return;\n }\n const caretAtStart =\n target.selectionStart === 0 && target.selectionEnd === 0;\n if (\n (e.key === 'ArrowLeft' || e.key === 'ArrowRight') &&\n caretAtStart &&\n currentValue.length > 0\n ) {\n const isRTL = document.dir === 'rtl' || target.dir === 'rtl';\n const shouldNavigate =\n (isRTL && e.key === 'ArrowRight') ||\n (!isRTL && e.key === 'ArrowLeft');\n if (shouldNavigate) {\n e.preventDefault();\n const lastIdx = currentValue.length - 1;\n chipRefs.current[lastIdx]?.focus();\n }\n return;\n }\n if (e.key === 'Escape') {\n setOpen(false);\n return;\n }\n if (!open && (e.key === 'ArrowDown' || e.key === 'Enter')) {\n setOpen(true);\n }\n };\n\n const handleChipKeyDown =\n (index: number) =>\n (e: KeyboardEvent<HTMLSpanElement>): void => {\n if (\n e.key === 'Backspace' ||\n e.key === 'Delete' ||\n e.key === 'Enter' ||\n e.key === ' '\n ) {\n e.preventDefault();\n e.stopPropagation();\n const next = removeAt(index);\n if (next.length === 0) {\n requestAnimationFrame(() => inputRef.current?.focus());\n return;\n }\n const focusIdx = Math.min(index, next.length - 1);\n requestAnimationFrame(() => {\n chipRefs.current[focusIdx]?.focus();\n });\n return;\n }\n const isRTL = document.dir === 'rtl';\n const prevKey = isRTL ? 'ArrowRight' : 'ArrowLeft';\n const nextKey = isRTL ? 'ArrowLeft' : 'ArrowRight';\n if (e.key === prevKey) {\n e.preventDefault();\n const newIdx = Math.max(0, index - 1);\n chipRefs.current[newIdx]?.focus();\n return;\n }\n if (e.key === nextKey) {\n e.preventDefault();\n if (index < currentValue.length - 1) {\n chipRefs.current[index + 1]?.focus();\n } else {\n inputRef.current?.focus();\n }\n return;\n }\n if (e.key === 'Escape') {\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n // ----- Chip overflow measurement -----\n const [visibleCount, setVisibleCount] = useState<number>(\n Number.POSITIVE_INFINITY,\n );\n\n useLayoutEffect(() => {\n const el = triggerRef.current;\n if (!el) return;\n\n const measure = (): void => {\n const chipEls = Array.from(\n el.querySelectorAll<HTMLElement>('[data-ui-chip=\"true\"]'),\n );\n if (chipEls.length === 0) {\n setVisibleCount(Number.POSITIVE_INFINITY);\n return;\n }\n const firstTop = chipEls[0].offsetTop;\n let firstRowCount = 0;\n for (const chip of chipEls) {\n if (chip.offsetTop === firstTop) firstRowCount++;\n else break;\n }\n if (firstRowCount === chipEls.length) {\n setVisibleCount(Number.POSITIVE_INFINITY);\n } else {\n setVisibleCount(Math.max(1, firstRowCount - 1));\n }\n };\n\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n return () => ro.disconnect();\n }, [currentValue.length, size]);\n\n const chips = currentValue.map((val) => ({\n value: val,\n label: labelByValue.get(val) ?? val,\n }));\n\n const showAllChips =\n visibleCount === Number.POSITIVE_INFINITY || visibleCount >= chips.length;\n const visibleChips = showAllChips ? chips : chips.slice(0, visibleCount);\n const overflowChips = showAllChips ? [] : chips.slice(visibleCount);\n const overflowCount = overflowChips.length;\n\n const handleTriggerClick = (event: MouseEvent<HTMLDivElement>): void => {\n if (effectiveDisabled) return;\n // Ignore clicks on chips/buttons so they can manage their own focus.\n const target = event.target as HTMLElement;\n if (target.closest('[data-ui-chip=\"true\"]')) return;\n if (target.closest('[data-ui-chip-dismiss=\"true\"]')) return;\n setOpen(true);\n inputRef.current?.focus();\n };\n\n const handleOpenChange = (next: boolean): void => {\n if (effectiveDisabled) {\n setOpen(false);\n return;\n }\n setOpen(next);\n if (!next) {\n setQuery('');\n onComplete?.(currentValue);\n }\n };\n\n const hasActionRow = allowSelectAll || allowClear;\n\n const counterMessage = t('inputs.multiSelect.selected', {\n count: currentValue.length,\n defaultValue: `${currentValue.length} selected`,\n });\n\n const { onClick: onClickProp, ...restDivProps } = divProps;\n\n return (\n <Command shouldFilter={false} label={counterMessage}>\n <Popover.Root open={open} onOpenChange={handleOpenChange}>\n <Popover.Anchor asChild>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- compound input shell; keyboard handling lives on the inner searchable input which is always rendered */}\n <div\n ref={composedRef}\n className={multiSelectVariants({ size, className })}\n aria-disabled={effectiveDisabled || undefined}\n aria-invalid={effectiveInvalid || undefined}\n data-component=\"multi-select\"\n data-component-id={id}\n onClick={(event) => {\n onClickProp?.(event);\n handleTriggerClick(event);\n }}\n {...restDivProps}\n >\n {visibleChips.map((chip, idx) => (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- chip pill receives focus via roving tabindex; chip removal uses an inner button\n <span\n key={chip.value}\n ref={(el) => {\n chipRefs.current[idx] = el;\n }}\n tabIndex={effectiveDisabled ? -1 : 0}\n data-ui-chip=\"true\"\n className={chipVariants({ size })}\n onKeyDown={handleChipKeyDown(idx)}\n aria-label={chip.label}\n >\n <span>{chip.label}</span>\n <button\n type=\"button\"\n tabIndex={-1}\n data-ui-chip-dismiss=\"true\"\n aria-label={t('inputs.multiSelect.remove', {\n label: chip.label,\n defaultValue: `Remove ${chip.label}`,\n })}\n disabled={effectiveDisabled}\n onClick={(event) => {\n event.stopPropagation();\n removeAt(idx);\n requestAnimationFrame(() => inputRef.current?.focus());\n }}\n className={chipDismissClasses}\n >\n <X aria-hidden=\"true\" className=\"ds:size-3.5\" />\n </button>\n </span>\n ))}\n {overflowCount > 0 ? (\n <Tooltip\n label={overflowChips.map((c) => c.label).join(', ')}\n delayDuration={200}\n >\n <span\n className={chipVariants({ size })}\n tabIndex={0}\n role=\"button\"\n aria-label={t('inputs.multiSelect.overflow', {\n count: overflowCount,\n defaultValue: `+${overflowCount} more`,\n })}\n >\n <span>\n {t('inputs.multiSelect.overflow', {\n count: overflowCount,\n defaultValue: `+${overflowCount} more`,\n })}\n </span>\n </span>\n </Tooltip>\n ) : null}\n <Command.Input\n ref={inputRef}\n value={query}\n onValueChange={setQuery}\n onKeyDown={handleInputKeyDown}\n onFocus={() => {\n if (!effectiveDisabled) setOpen(true);\n }}\n placeholder={\n currentValue.length === 0 ? resolvedPlaceholder : ''\n }\n id={triggerId}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n aria-required={effectiveRequired || undefined}\n disabled={effectiveDisabled}\n className={[\n 'ds:flex-1 ds:min-w-[6rem] ds:bg-transparent ds:outline-none',\n 'ds:placeholder:text-muted-foreground ds:text-start',\n 'ds:disabled:cursor-not-allowed',\n ].join(' ')}\n />\n </div>\n </Popover.Anchor>\n <Popover.Portal>\n <Popover.Content\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n align=\"start\"\n sideOffset={4}\n className={popoverContentClasses}\n >\n <Command.List\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={resolvedPlaceholder}\n className=\"ds:max-h-[20rem] ds:overflow-y-auto ds:p-1\"\n >\n {hasActionRow ? (\n <Command.Group>\n {allowSelectAll ? (\n <Command.Item\n value={SELECT_ALL_VALUE}\n onSelect={handleSelectAll}\n className={actionItemClasses}\n >\n {t('inputs.multiSelect.selectAll', 'Select all')}\n </Command.Item>\n ) : null}\n {allowClear ? (\n <Command.Item\n value={CLEAR_ALL_VALUE}\n onSelect={handleClearAll}\n className={actionItemClasses}\n >\n {t('inputs.multiSelect.clearAll', 'Clear all')}\n </Command.Item>\n ) : null}\n </Command.Group>\n ) : null}\n <Command.Empty className=\"ds:ps-2 ds:pe-2 ds:py-2 type-body-sm ds:text-muted-foreground\">\n {t('inputs.multiSelect.noOptions', 'No options found')}\n </Command.Empty>\n {groups.map(({ group, items }, gi) => {\n const body = items.map((option) => {\n const isSelected = currentValue.includes(option.value);\n const isCapped = !isSelected && atCap;\n const isDisabled = Boolean(option.disabled) || isCapped;\n const item = (\n <Command.Item\n key={option.value}\n value={option.value}\n disabled={isDisabled}\n onSelect={() => {\n if (isDisabled) return;\n toggle(option.value);\n }}\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n className={commandItemClasses}\n >\n <span\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center ds:me-2 ds:shrink-0',\n 'ds:size-4 ds:rounded-[var(--radius-sm)] ds:border ds:border-border',\n isSelected\n ? 'ds:bg-primary ds:border-primary ds:text-primary-foreground'\n : 'ds:bg-background',\n ].join(' ')}\n aria-hidden=\"true\"\n >\n {isSelected ? (\n <Check className=\"ds:size-3.5\" />\n ) : null}\n </span>\n <span className=\"ds:flex-1 ds:text-start\">\n {option.label}\n </span>\n </Command.Item>\n );\n if (isCapped) {\n return (\n <Tooltip\n key={option.value}\n label={t('inputs.multiSelect.maxReached', {\n count: maxSelections,\n defaultValue: `Maximum ${maxSelections} selections`,\n })}\n delayDuration={200}\n >\n {item}\n </Tooltip>\n );\n }\n return item;\n });\n if (!group) {\n return (\n <Command.Group key={`group-${gi}`}>{body}</Command.Group>\n );\n }\n return (\n <Command.Group\n key={`group-${group}`}\n heading={group}\n className=\"ds:[&_[cmdk-group-heading]]:ps-2 ds:[&_[cmdk-group-heading]]:pe-2 ds:[&_[cmdk-group-heading]]:py-1 ds:[&_[cmdk-group-heading]]:type-eyebrow ds:[&_[cmdk-group-heading]]:text-muted-foreground\"\n >\n {body}\n </Command.Group>\n );\n })}\n </Command.List>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Command>\n );\n },\n);\nMultiSelectImpl.displayName = 'MultiSelect';\n\ninterface MultiSelectComponent {\n <T extends string = string>(\n props: MultiSelectProps<T> & { ref?: Ref<HTMLDivElement> },\n ): ReactElement | null;\n displayName?: string;\n}\n\nexport const MultiSelect = MultiSelectImpl as unknown as MultiSelectComponent;\n\nexport { multiSelectVariants };\n"],"names":["multiSelectAgent","handle","args","multiSelectVariants","cva","INPUT_SURFACE_CHROME","INPUT_SURFACE_TEXT","chipVariants","chipDismissClasses","popoverContentClasses","commandItemClasses","actionItemClasses","SELECT_ALL_VALUE","CLEAR_ALL_VALUE","MultiSelectImpl","forwardRef","options","value","defaultValue","onChange","onComplete","placeholder","maxSelections","allowSelectAll","allowClear","filter","size","disabled","className","id","divProps","ref","t","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","currentValueRaw","setMultiSelectValue","useControllableState","currentValue","open","setOpen","useState","query","setQuery","inputRef","useRef","chipRefs","triggerRef","composedRef","composeRefs","effectiveDisabled","effectiveRequired","effectiveInvalid","describedBy","triggerId","labelByValue","useMemo","map","option","atCap","commit","next","toggle","val","v","removeAt","index","_","i","handleSelectAll","selectable","o","cap","handleClearAll","valueRef","useEffect","queryRef","openRef","commitStable","useCallback","agentHandle","values","useAgentRegistration","resolvedPlaceholder","filteredOptions","needle","groups","groupOptions","handleInputKeyDown","target","removedIndex","newLast","_a","caretAtStart","isRTL","lastIdx","handleChipKeyDown","e","focusIdx","prevKey","nextKey","newIdx","_b","_c","_d","visibleCount","setVisibleCount","useLayoutEffect","el","measure","chipEls","firstTop","firstRowCount","chip","ro","chips","showAllChips","visibleChips","overflowChips","overflowCount","handleTriggerClick","event","handleOpenChange","hasActionRow","counterMessage","onClickProp","restDivProps","jsx","Command","jsxs","Popover","idx","X","Tooltip","c","group","items","gi","body","isSelected","isCapped","isDisabled","item","Check","MultiSelect"],"mappings":"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"}
|