@alfadocs/ui-kit 0.1.1 → 0.1.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/{agenda-card-Bld47Eul.js → agenda-card-DXOgg8IX.js} +3 -3
- package/dist/_chunks/{agenda-card-Bld47Eul.js.map → agenda-card-DXOgg8IX.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-D86cNIJ0.js → agenda-tray-DEO8XL8V.js} +4 -4
- package/dist/_chunks/{agenda-tray-D86cNIJ0.js.map → agenda-tray-DEO8XL8V.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-CdYwt2VP.js → ai-prompt-input-8IShJ-GX.js} +3 -3
- package/dist/_chunks/{ai-prompt-input-CdYwt2VP.js.map → ai-prompt-input-8IShJ-GX.js.map} +1 -1
- package/dist/_chunks/{audio-recorder-D2UEBF9B.js → audio-recorder-BvisG0Wt.js} +4 -4
- package/dist/_chunks/{audio-recorder-D2UEBF9B.js.map → audio-recorder-BvisG0Wt.js.map} +1 -1
- package/dist/_chunks/{autocomplete.agent-Bi6CiRKa.js → autocomplete.agent-BmrpzsfW.js} +2 -2
- package/dist/_chunks/autocomplete.agent-BmrpzsfW.js.map +1 -0
- package/dist/_chunks/{avatar-BAhxbDEu.js → avatar-DTQY5qIZ.js} +16 -16
- package/dist/_chunks/avatar-DTQY5qIZ.js.map +1 -0
- package/dist/_chunks/{badge-zDghajh8.js → badge-BbbBRweN.js} +2 -2
- package/dist/_chunks/badge-BbbBRweN.js.map +1 -0
- package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js → balance-cell-renderer-DjR0rPS6.js} +7 -7
- package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js.map → balance-cell-renderer-DjR0rPS6.js.map} +1 -1
- package/dist/_chunks/{button-DmiGFnNA.js → button-7dTew-IV.js} +4 -4
- package/dist/_chunks/button-7dTew-IV.js.map +1 -0
- package/dist/_chunks/{chat-container-Co8HpB64.js → chat-container-ChdJTH0J.js} +2 -2
- package/dist/_chunks/{chat-container-Co8HpB64.js.map → chat-container-ChdJTH0J.js.map} +1 -1
- package/dist/_chunks/{chat-input-3rstZhHR.js → chat-input-C-B4snVJ.js} +2 -2
- package/dist/_chunks/{chat-input-3rstZhHR.js.map → chat-input-C-B4snVJ.js.map} +1 -1
- package/dist/_chunks/{chat-message-dDMVSYBs.js → chat-message-cFNbQYRH.js} +3 -3
- package/dist/_chunks/{chat-message-dDMVSYBs.js.map → chat-message-cFNbQYRH.js.map} +1 -1
- package/dist/_chunks/{color-picker-OKKF3Dww.js → color-picker-DkMFcK2m.js} +74 -74
- package/dist/_chunks/color-picker-DkMFcK2m.js.map +1 -0
- package/dist/_chunks/{combobox.agent-CfeB-IZ1.js → combobox.agent-9w6W1Jct.js} +20 -20
- package/dist/_chunks/combobox.agent-9w6W1Jct.js.map +1 -0
- package/dist/_chunks/{command-palette.agent-XLfSGHCL.js → command-palette.agent-Dg7jhOIc.js} +2 -2
- package/dist/_chunks/command-palette.agent-Dg7jhOIc.js.map +1 -0
- package/dist/_chunks/{date-picker-DXx8oSJb.js → date-picker-0WQ98ZC0.js} +2 -2
- package/dist/_chunks/{date-picker-DXx8oSJb.js.map → date-picker-0WQ98ZC0.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-C3CbY__H.js → date-range-picker-CtwEwoyr.js} +2 -2
- package/dist/_chunks/{date-range-picker-C3CbY__H.js.map → date-range-picker-CtwEwoyr.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-Bn3FPeAc.js → date-time-picker-Df3OJ2_C.js} +6 -6
- package/dist/_chunks/date-time-picker-Df3OJ2_C.js.map +1 -0
- package/dist/_chunks/{description-list-B1CL3RTG.js → description-list-Bk3p71qY.js} +2 -2
- package/dist/_chunks/{description-list-B1CL3RTG.js.map → description-list-Bk3p71qY.js.map} +1 -1
- package/dist/_chunks/{dialog.agent-D9WeIWi2.js → dialog.agent-CtMkDinJ.js} +2 -2
- package/dist/_chunks/{dialog.agent-D9WeIWi2.js.map → dialog.agent-CtMkDinJ.js.map} +1 -1
- package/dist/_chunks/{empty-state-DV96gCnp.js → empty-state-DPUnQp0A.js} +2 -2
- package/dist/_chunks/{empty-state-DV96gCnp.js.map → empty-state-DPUnQp0A.js.map} +1 -1
- package/dist/_chunks/{file-upload.agent-DYFnqdxw.js → file-upload.agent-DVMxMeDA.js} +3 -3
- package/dist/_chunks/file-upload.agent-DVMxMeDA.js.map +1 -0
- package/dist/_chunks/{floating-action-button-RigP2E7o.js → floating-action-button-DjRhFQdd.js} +4 -4
- package/dist/_chunks/floating-action-button-DjRhFQdd.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-D0GiUFOe.js → freemium-paywall-CCsX3GhK.js} +3 -3
- package/dist/_chunks/{freemium-paywall-D0GiUFOe.js.map → freemium-paywall-CCsX3GhK.js.map} +1 -1
- package/dist/_chunks/{header-CW2oRd5H.js → header-CVQxeLc_.js} +2 -2
- package/dist/_chunks/{header-CW2oRd5H.js.map → header-CVQxeLc_.js.map} +1 -1
- package/dist/_chunks/{icon-button-C482ii4y.js → icon-button-SWpSs9S6.js} +2 -2
- package/dist/_chunks/{icon-button-C482ii4y.js.map → icon-button-SWpSs9S6.js.map} +1 -1
- package/dist/_chunks/{key-value-pair-DDhSYdDL.js → key-value-pair-Cm-pSE6k.js} +2 -2
- package/dist/_chunks/{key-value-pair-DDhSYdDL.js.map → key-value-pair-Cm-pSE6k.js.map} +1 -1
- package/dist/_chunks/{leo-sidebar-gXXcGPKk.js → leo-sidebar-SqGAp1vx.js} +9 -9
- package/dist/_chunks/{leo-sidebar-gXXcGPKk.js.map → leo-sidebar-SqGAp1vx.js.map} +1 -1
- package/dist/_chunks/{message-card-DID3cXUW.js → message-card-B0oGrI3i.js} +4 -4
- package/dist/_chunks/{message-card-DID3cXUW.js.map → message-card-B0oGrI3i.js.map} +1 -1
- package/dist/_chunks/{message-tray-CVMLBnVp.js → message-tray-DZ6oZ0cs.js} +4 -4
- package/dist/_chunks/{message-tray-CVMLBnVp.js.map → message-tray-DZ6oZ0cs.js.map} +1 -1
- package/dist/_chunks/{multi-select.agent-BUKYZJfp.js → multi-select.agent-BDEVGMmW.js} +19 -19
- package/dist/_chunks/multi-select.agent-BDEVGMmW.js.map +1 -0
- package/dist/_chunks/{notification-card-BZ33fq8H.js → notification-card-C73GqjHH.js} +3 -3
- package/dist/_chunks/{notification-card-BZ33fq8H.js.map → notification-card-C73GqjHH.js.map} +1 -1
- package/dist/_chunks/{notification-tray-CnEd7B2q.js → notification-tray-a8a_nut-.js} +4 -4
- package/dist/_chunks/{notification-tray-CnEd7B2q.js.map → notification-tray-a8a_nut-.js.map} +1 -1
- package/dist/_chunks/{number-input-D7rSa_ef.js → number-input-DFQtl5K2.js} +4 -4
- package/dist/_chunks/number-input-DFQtl5K2.js.map +1 -0
- package/dist/_chunks/{otp-input-C9R9sC74.js → otp-input-C2FdizHh.js} +14 -14
- package/dist/_chunks/otp-input-C2FdizHh.js.map +1 -0
- package/dist/_chunks/{pagination.agent-D75FB6XP.js → pagination.agent-sxokDphY.js} +15 -15
- package/dist/_chunks/pagination.agent-sxokDphY.js.map +1 -0
- package/dist/_chunks/{patient-shell-CGsmI5LJ.js → patient-shell-B4vKnuOf.js} +4 -4
- package/dist/_chunks/{patient-shell-CGsmI5LJ.js.map → patient-shell-B4vKnuOf.js.map} +1 -1
- package/dist/_chunks/{payment-form-l3j-gA-t.js → payment-form-175AzK-1.js} +20 -20
- package/dist/_chunks/payment-form-175AzK-1.js.map +1 -0
- package/dist/_chunks/{phone-input-ZWa_FU4R.js → phone-input-BavVyXxZ.js} +39 -39
- package/dist/_chunks/phone-input-BavVyXxZ.js.map +1 -0
- package/dist/_chunks/{popover-CMr1pTPO.js → popover-BWgOopjI.js} +3 -3
- package/dist/_chunks/popover-BWgOopjI.js.map +1 -0
- package/dist/_chunks/{privacy-lock-DdpkKNM2.js → privacy-lock-DWL7m_VT.js} +10 -11
- package/dist/_chunks/{privacy-lock-DdpkKNM2.js.map → privacy-lock-DWL7m_VT.js.map} +1 -1
- package/dist/_chunks/{react-day-picker-d0MHsyCj.js → react-day-picker-C04L_28V.js} +5 -5
- package/dist/_chunks/{react-day-picker-d0MHsyCj.js.map → react-day-picker-C04L_28V.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor.agent-C1_E7_7t.js → rich-text-editor.agent-COSb5_2D.js} +4 -4
- package/dist/_chunks/rich-text-editor.agent-COSb5_2D.js.map +1 -0
- package/dist/_chunks/{select-DbxWF3O_.js → select-CQxhOXVE.js} +7 -7
- package/dist/_chunks/select-CQxhOXVE.js.map +1 -0
- package/dist/_chunks/{sheet-DyWqluiS.js → sheet-CKsuHuHB.js} +2 -2
- package/dist/_chunks/{sheet-DyWqluiS.js.map → sheet-CKsuHuHB.js.map} +1 -1
- package/dist/_chunks/{sidebar-B52iGGNV.js → sidebar-CiEpSH9e.js} +6 -6
- package/dist/_chunks/sidebar-CiEpSH9e.js.map +1 -0
- package/dist/_chunks/{sign-in-with-alfadocs-button-BU7MP5Hg.js → sign-in-with-alfadocs-button-BDErAgG2.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-BU7MP5Hg.js.map → sign-in-with-alfadocs-button-BDErAgG2.js.map} +1 -1
- package/dist/_chunks/{signature-capture.agent-4htVctJ2.js → signature-capture.agent-C38VPXxg.js} +19 -19
- package/dist/_chunks/signature-capture.agent-C38VPXxg.js.map +1 -0
- package/dist/_chunks/{slider-n8JWpJvT.js → slider-BVBlOW_l.js} +2 -2
- package/dist/_chunks/slider-BVBlOW_l.js.map +1 -0
- package/dist/_chunks/{slot-grid-BRAkqChA.js → slot-grid-B4WvLEwT.js} +55 -55
- package/dist/_chunks/slot-grid-B4WvLEwT.js.map +1 -0
- package/dist/_chunks/{sparkline.agent-BLY1IMyW.js → sparkline.agent-C_xp3NRB.js} +2 -2
- package/dist/_chunks/{sparkline.agent-BLY1IMyW.js.map → sparkline.agent-C_xp3NRB.js.map} +1 -1
- package/dist/_chunks/{stepper-calendar-vtWwa2bY.js → stepper-calendar-BZUJpj8i.js} +6 -6
- package/dist/_chunks/stepper-calendar-BZUJpj8i.js.map +1 -0
- package/dist/_chunks/{tabs.agent-BDUlyPbJ.js → tabs.agent-sQAHxebC.js} +5 -5
- package/dist/_chunks/tabs.agent-sQAHxebC.js.map +1 -0
- package/dist/_chunks/{task-tray-BnpiodZ4.js → task-tray-CWvVxWM0.js} +3 -3
- package/dist/_chunks/{task-tray-BnpiodZ4.js.map → task-tray-CWvVxWM0.js.map} +1 -1
- package/dist/_chunks/{text-area-BqbruBWx.js → text-area-iPDv7Nah.js} +10 -10
- package/dist/_chunks/text-area-iPDv7Nah.js.map +1 -0
- package/dist/_chunks/{theme-toggle-BHKMiORD.js → theme-toggle-CEaPghpm.js} +2 -2
- package/dist/_chunks/{theme-toggle-BHKMiORD.js.map → theme-toggle-CEaPghpm.js.map} +1 -1
- package/dist/_chunks/{time-picker-DbpAmPux.js → time-picker-Crc87DU3.js} +67 -67
- package/dist/_chunks/time-picker-Crc87DU3.js.map +1 -0
- package/dist/_chunks/{timeline-vjsUeuq1.js → timeline-Ym2DRmtu.js} +2 -2
- package/dist/_chunks/{timeline-vjsUeuq1.js.map → timeline-Ym2DRmtu.js.map} +1 -1
- package/dist/_chunks/{toast-DllSITLf.js → toast-DoMNrzwm.js} +2 -2
- package/dist/_chunks/{toast-DllSITLf.js.map → toast-DoMNrzwm.js.map} +1 -1
- package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js → tooth-scheme.agent-BlDyu-Gx.js} +2 -2
- package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js.map → tooth-scheme.agent-BlDyu-Gx.js.map} +1 -1
- package/dist/_chunks/{warning-stack-B9N9yWet.js → warning-stack-5KROOw9M.js} +2 -2
- package/dist/_chunks/{warning-stack-B9N9yWet.js.map → warning-stack-5KROOw9M.js.map} +1 -1
- package/dist/_chunks/{workflow-map-gBhL_Wrs.js → workflow-map-D4sjYv2d.js} +6 -6
- package/dist/_chunks/{workflow-map-gBhL_Wrs.js.map → workflow-map-D4sjYv2d.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/floating-action-button/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/icon-button/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/phone-input/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/stepper-calendar/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/index.js +61 -61
- 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 +1 -1
- package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +0 -1
- package/dist/_chunks/avatar-BAhxbDEu.js.map +0 -1
- package/dist/_chunks/badge-zDghajh8.js.map +0 -1
- package/dist/_chunks/button-DmiGFnNA.js.map +0 -1
- package/dist/_chunks/color-picker-OKKF3Dww.js.map +0 -1
- package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +0 -1
- package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +0 -1
- package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +0 -1
- package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +0 -1
- package/dist/_chunks/floating-action-button-RigP2E7o.js.map +0 -1
- package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +0 -1
- package/dist/_chunks/number-input-D7rSa_ef.js.map +0 -1
- package/dist/_chunks/otp-input-C9R9sC74.js.map +0 -1
- package/dist/_chunks/pagination.agent-D75FB6XP.js.map +0 -1
- package/dist/_chunks/payment-form-l3j-gA-t.js.map +0 -1
- package/dist/_chunks/phone-input-ZWa_FU4R.js.map +0 -1
- package/dist/_chunks/popover-CMr1pTPO.js.map +0 -1
- package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +0 -1
- package/dist/_chunks/select-DbxWF3O_.js.map +0 -1
- package/dist/_chunks/sidebar-B52iGGNV.js.map +0 -1
- package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +0 -1
- package/dist/_chunks/slider-n8JWpJvT.js.map +0 -1
- package/dist/_chunks/slot-grid-BRAkqChA.js.map +0 -1
- package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +0 -1
- package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +0 -1
- package/dist/_chunks/text-area-BqbruBWx.js.map +0 -1
- package/dist/_chunks/time-picker-DbpAmPux.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as l, jsxs as h, Fragment as we } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as $e, useId as Ne, useState as P, useMemo as F, useCallback as ke, useRef as H, useEffect as ee } from "react";
|
|
3
3
|
import * as I from "@radix-ui/react-popover";
|
|
4
4
|
import { c as re } from "./index-D2ZczOXr.js";
|
|
5
5
|
import { useTranslation as ye } from "react-i18next";
|
|
6
6
|
import { u as Pe } from "./form-field-context-94LwgYTQ.js";
|
|
7
|
-
import { S as se } from "./slider-
|
|
7
|
+
import { S as se } from "./slider-BVBlOW_l.js";
|
|
8
8
|
import { C as ne } from "./check-DPdL_Sm7.js";
|
|
9
9
|
import { X as Ae } from "./x-CCcI3eJp.js";
|
|
10
10
|
function V(e) {
|
|
@@ -162,9 +162,9 @@ const Ie = [
|
|
|
162
162
|
{
|
|
163
163
|
variants: {
|
|
164
164
|
size: {
|
|
165
|
-
sm: "ds:h-8 ds:text-[var(--font-size-sm)] ds:ps-3 ds:pe-3",
|
|
166
|
-
md: "ds:h-[var(--min-target-size)] ds:text-[var(--font-size-base)] ds:ps-3 ds:pe-3",
|
|
167
|
-
lg: "ds:h-12 ds:text-[var(--font-size-lg)] ds:ps-4 ds:pe-4"
|
|
165
|
+
sm: "ds:h-8 ds:text-[length:var(--font-size-sm)] ds:ps-3 ds:pe-3",
|
|
166
|
+
md: "ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)] ds:ps-3 ds:pe-3",
|
|
167
|
+
lg: "ds:h-12 ds:text-[length:var(--font-size-lg)] ds:ps-4 ds:pe-4"
|
|
168
168
|
}
|
|
169
169
|
},
|
|
170
170
|
defaultVariants: { size: "md" }
|
|
@@ -227,15 +227,15 @@ const Ie = [
|
|
|
227
227
|
palette: m,
|
|
228
228
|
against: b,
|
|
229
229
|
size: p = "md",
|
|
230
|
-
disabled:
|
|
231
|
-
variant:
|
|
230
|
+
disabled: le = !1,
|
|
231
|
+
variant: de = "inline",
|
|
232
232
|
compact: A = !0,
|
|
233
233
|
className: D
|
|
234
|
-
} = e, { t:
|
|
234
|
+
} = e, { t: g } = ye(), N = Pe(), ce = Ne(), M = N.id || ce, v = N.disabled || le, S = s !== void 0, [j, fe] = P(() => {
|
|
235
235
|
const t = s ?? r;
|
|
236
236
|
if (t) {
|
|
237
|
-
const
|
|
238
|
-
if (
|
|
237
|
+
const d = L(t);
|
|
238
|
+
if (d) return d;
|
|
239
239
|
}
|
|
240
240
|
return { h: 0, s: 100, l: 50, a: 1 };
|
|
241
241
|
}), o = F(() => {
|
|
@@ -246,8 +246,8 @@ const Ie = [
|
|
|
246
246
|
return j;
|
|
247
247
|
}, [S, s, j]), C = ke(
|
|
248
248
|
(t) => {
|
|
249
|
-
const
|
|
250
|
-
S || fe(
|
|
249
|
+
const d = c ? t : { ...t, a: 1 };
|
|
250
|
+
S || fe(d), n == null || n(B(d, i));
|
|
251
251
|
},
|
|
252
252
|
[c, i, S, n]
|
|
253
253
|
), [W, E] = P(() => $(o)), [ue, T] = P(!1), w = H(void 0), U = H(o);
|
|
@@ -265,92 +265,92 @@ const Ie = [
|
|
|
265
265
|
(t) => typeof t == "string" ? { name: t.toUpperCase(), hex: t } : t
|
|
266
266
|
) : Ie, [m]), K = $(o), X = y.findIndex(
|
|
267
267
|
(t) => t.hex.toLowerCase() === K.toLowerCase()
|
|
268
|
-
), Y = H(null), [
|
|
268
|
+
), Y = H(null), [x, q] = P(
|
|
269
269
|
X >= 0 ? X : 0
|
|
270
270
|
), me = (t) => {
|
|
271
271
|
var f;
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
},
|
|
272
|
+
const d = (f = Y.current) == null ? void 0 : f.querySelectorAll('[role="gridcell"]');
|
|
273
|
+
d != null && d[t] && (d[t].focus(), q(t));
|
|
274
|
+
}, ge = (t) => {
|
|
275
275
|
if (v) return;
|
|
276
|
-
const
|
|
277
|
-
let f =
|
|
276
|
+
const d = y.length;
|
|
277
|
+
let f = x;
|
|
278
278
|
switch (t.key) {
|
|
279
279
|
case "ArrowRight":
|
|
280
|
-
f = (
|
|
280
|
+
f = (x + 1) % d;
|
|
281
281
|
break;
|
|
282
282
|
case "ArrowLeft":
|
|
283
|
-
f = (
|
|
283
|
+
f = (x - 1 + d) % d;
|
|
284
284
|
break;
|
|
285
285
|
case "ArrowDown":
|
|
286
|
-
f = Math.min(
|
|
286
|
+
f = Math.min(x + u, d - 1);
|
|
287
287
|
break;
|
|
288
288
|
case "ArrowUp":
|
|
289
|
-
f = Math.max(
|
|
289
|
+
f = Math.max(x - u, 0);
|
|
290
290
|
break;
|
|
291
291
|
case "Home":
|
|
292
|
-
f = Math.floor(
|
|
292
|
+
f = Math.floor(x / u) * u;
|
|
293
293
|
break;
|
|
294
294
|
case "End":
|
|
295
|
-
f = Math.min(Math.floor(
|
|
295
|
+
f = Math.min(Math.floor(x / u) * u + u - 1, d - 1);
|
|
296
296
|
break;
|
|
297
297
|
case "PageUp":
|
|
298
|
-
f =
|
|
298
|
+
f = x % u;
|
|
299
299
|
break;
|
|
300
300
|
case "PageDown": {
|
|
301
|
-
const Q = Math.floor((
|
|
302
|
-
f = Math.min(Q +
|
|
301
|
+
const Q = Math.floor((d - 1) / u) * u;
|
|
302
|
+
f = Math.min(Q + x % u, d - 1);
|
|
303
303
|
break;
|
|
304
304
|
}
|
|
305
305
|
case "Enter":
|
|
306
306
|
case " ":
|
|
307
|
-
t.preventDefault(), C(V(y[
|
|
307
|
+
t.preventDefault(), C(V(y[x].hex));
|
|
308
308
|
return;
|
|
309
309
|
default:
|
|
310
310
|
return;
|
|
311
311
|
}
|
|
312
312
|
t.preventDefault(), me(f);
|
|
313
|
-
}, [
|
|
313
|
+
}, [xe, ve] = P(!1), z = F(() => {
|
|
314
314
|
if (!b) return null;
|
|
315
315
|
const t = L(b);
|
|
316
316
|
if (!t) return null;
|
|
317
|
-
const
|
|
318
|
-
return { ratio:
|
|
319
|
-
}, [b, o]), be = /* @__PURE__ */
|
|
317
|
+
const d = Se(o, t);
|
|
318
|
+
return { ratio: d, aa: Te(d), aaa: ze(d) };
|
|
319
|
+
}, [b, o]), be = /* @__PURE__ */ l(
|
|
320
320
|
"div",
|
|
321
321
|
{
|
|
322
322
|
ref: Y,
|
|
323
323
|
role: "grid",
|
|
324
|
-
"aria-label":
|
|
325
|
-
onKeyDown:
|
|
324
|
+
"aria-label": g("ui.inputs.colorPicker.paletteLabel", "Colour swatches"),
|
|
325
|
+
onKeyDown: ge,
|
|
326
326
|
className: "ds:grid ds:grid-cols-6 ds:gap-[var(--spacing-xs)]",
|
|
327
|
-
children: y.map((t,
|
|
328
|
-
const f = Math.floor(
|
|
329
|
-
return
|
|
327
|
+
children: y.map((t, d) => {
|
|
328
|
+
const f = Math.floor(d / u) * u;
|
|
329
|
+
return d === f ? /* @__PURE__ */ l("div", { role: "row", className: "ds:contents", children: y.slice(f, f + u).map((k, Ce) => {
|
|
330
330
|
const Z = f + Ce, R = k.hex.toLowerCase() === K.toLowerCase();
|
|
331
|
-
return /* @__PURE__ */
|
|
331
|
+
return /* @__PURE__ */ l(
|
|
332
332
|
"div",
|
|
333
333
|
{
|
|
334
334
|
role: "gridcell",
|
|
335
335
|
"aria-selected": R,
|
|
336
|
-
"aria-label":
|
|
337
|
-
tabIndex: Z ===
|
|
336
|
+
"aria-label": g("ui.inputs.colorPicker.swatchLabel", { name: k.name, hex: k.hex }),
|
|
337
|
+
tabIndex: Z === x ? 0 : -1,
|
|
338
338
|
onClick: () => {
|
|
339
339
|
v || (C(V(k.hex)), q(Z));
|
|
340
340
|
},
|
|
341
341
|
className: Ee({ selected: R }),
|
|
342
342
|
style: { "--swatch-bg": k.hex },
|
|
343
|
-
children: R ? /* @__PURE__ */
|
|
343
|
+
children: R ? /* @__PURE__ */ l(ne, { "aria-hidden": "true", className: "ds:absolute ds:inset-0 ds:m-auto ds:size-4 ds:text-[var(--background)] ds:mix-blend-difference" }) : null
|
|
344
344
|
},
|
|
345
345
|
k.hex
|
|
346
346
|
);
|
|
347
|
-
}) },
|
|
347
|
+
}) }, d) : null;
|
|
348
348
|
})
|
|
349
349
|
}
|
|
350
350
|
), pe = A ? null : /* @__PURE__ */ h(we, { children: [
|
|
351
351
|
/* @__PURE__ */ h("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
352
|
-
/* @__PURE__ */
|
|
353
|
-
/* @__PURE__ */
|
|
352
|
+
/* @__PURE__ */ l("label", { htmlFor: `${M}-hex`, className: "ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: g("ui.inputs.colorPicker.hex", "Hex") }),
|
|
353
|
+
/* @__PURE__ */ l("bdi", { dir: "ltr", children: /* @__PURE__ */ l(
|
|
354
354
|
"input",
|
|
355
355
|
{
|
|
356
356
|
id: `${M}-hex`,
|
|
@@ -364,10 +364,10 @@ const Ie = [
|
|
|
364
364
|
) })
|
|
365
365
|
] }),
|
|
366
366
|
/* @__PURE__ */ h("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
|
|
367
|
-
/* @__PURE__ */
|
|
367
|
+
/* @__PURE__ */ l(
|
|
368
368
|
O,
|
|
369
369
|
{
|
|
370
|
-
label:
|
|
370
|
+
label: g("ui.inputs.colorPicker.hue", "Hue"),
|
|
371
371
|
gradient: "linear-gradient(to right, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))",
|
|
372
372
|
min: 0,
|
|
373
373
|
max: 360,
|
|
@@ -377,10 +377,10 @@ const Ie = [
|
|
|
377
377
|
disabled: v
|
|
378
378
|
}
|
|
379
379
|
),
|
|
380
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ l(
|
|
381
381
|
O,
|
|
382
382
|
{
|
|
383
|
-
label:
|
|
383
|
+
label: g("ui.inputs.colorPicker.saturation", "Saturation"),
|
|
384
384
|
gradient: `linear-gradient(to right, hsl(${o.h},0%,${o.l}%), hsl(${o.h},100%,${o.l}%))`,
|
|
385
385
|
min: 0,
|
|
386
386
|
max: 100,
|
|
@@ -390,10 +390,10 @@ const Ie = [
|
|
|
390
390
|
disabled: v
|
|
391
391
|
}
|
|
392
392
|
),
|
|
393
|
-
/* @__PURE__ */
|
|
393
|
+
/* @__PURE__ */ l(
|
|
394
394
|
O,
|
|
395
395
|
{
|
|
396
|
-
label:
|
|
396
|
+
label: g("ui.inputs.colorPicker.lightness", "Lightness"),
|
|
397
397
|
gradient: `linear-gradient(to right, hsl(${o.h},${o.s}%,0%), hsl(${o.h},${o.s}%,50%), hsl(${o.h},${o.s}%,100%))`,
|
|
398
398
|
min: 0,
|
|
399
399
|
max: 100,
|
|
@@ -404,16 +404,16 @@ const Ie = [
|
|
|
404
404
|
}
|
|
405
405
|
),
|
|
406
406
|
c ? /* @__PURE__ */ h("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
407
|
-
/* @__PURE__ */
|
|
407
|
+
/* @__PURE__ */ l("label", { className: "ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: g("ui.inputs.colorPicker.opacity", "Opacity") }),
|
|
408
408
|
/* @__PURE__ */ h("div", { className: "ds:relative", children: [
|
|
409
|
-
/* @__PURE__ */
|
|
409
|
+
/* @__PURE__ */ l(
|
|
410
410
|
"div",
|
|
411
411
|
{
|
|
412
412
|
className: `ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ${Fe}`,
|
|
413
413
|
"aria-hidden": "true"
|
|
414
414
|
}
|
|
415
415
|
),
|
|
416
|
-
/* @__PURE__ */
|
|
416
|
+
/* @__PURE__ */ l(
|
|
417
417
|
"div",
|
|
418
418
|
{
|
|
419
419
|
className: "ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ds:bg-[image:var(--opacity-gradient)]",
|
|
@@ -423,7 +423,7 @@ const Ie = [
|
|
|
423
423
|
"aria-hidden": "true"
|
|
424
424
|
}
|
|
425
425
|
),
|
|
426
|
-
/* @__PURE__ */
|
|
426
|
+
/* @__PURE__ */ l(
|
|
427
427
|
se,
|
|
428
428
|
{
|
|
429
429
|
min: 0,
|
|
@@ -431,7 +431,7 @@ const Ie = [
|
|
|
431
431
|
step: 1,
|
|
432
432
|
value: [Math.round(o.a * 100)],
|
|
433
433
|
onValueChange: ([t]) => C({ ...o, a: t / 100 }),
|
|
434
|
-
"aria-label":
|
|
434
|
+
"aria-label": g("ui.inputs.colorPicker.opacity", "Opacity"),
|
|
435
435
|
formatValue: (t) => `${t}%`,
|
|
436
436
|
disabled: v,
|
|
437
437
|
className: ie
|
|
@@ -440,13 +440,13 @@ const Ie = [
|
|
|
440
440
|
] })
|
|
441
441
|
] }) : null
|
|
442
442
|
] }),
|
|
443
|
-
z ? /* @__PURE__ */ h("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:text-[var(--font-size-sm)]", role: "status", "aria-live": "polite", children: [
|
|
444
|
-
/* @__PURE__ */
|
|
445
|
-
/* @__PURE__ */
|
|
446
|
-
/* @__PURE__ */
|
|
443
|
+
z ? /* @__PURE__ */ h("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]", role: "status", "aria-live": "polite", children: [
|
|
444
|
+
/* @__PURE__ */ l("span", { className: "ds:tabular-nums", children: g("ui.inputs.colorPicker.contrastRatio", { ratio: z.ratio.toFixed(1) }) }),
|
|
445
|
+
/* @__PURE__ */ l(te, { level: "AA", passes: z.aa, t: g }),
|
|
446
|
+
/* @__PURE__ */ l(te, { level: "AAA", passes: z.aaa, t: g })
|
|
447
447
|
] }) : null,
|
|
448
448
|
/* @__PURE__ */ h("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
|
|
449
|
-
/* @__PURE__ */
|
|
449
|
+
/* @__PURE__ */ l(
|
|
450
450
|
"div",
|
|
451
451
|
{
|
|
452
452
|
className: "ds:size-8 ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--swatch-bg)]",
|
|
@@ -454,13 +454,13 @@ const Ie = [
|
|
|
454
454
|
"aria-hidden": "true"
|
|
455
455
|
}
|
|
456
456
|
),
|
|
457
|
-
/* @__PURE__ */
|
|
457
|
+
/* @__PURE__ */ l("span", { className: "ds:text-[length:var(--font-size-sm)] ds:text-[var(--muted-foreground)] ds:tabular-nums", children: B(o, i) })
|
|
458
458
|
] })
|
|
459
459
|
] }), J = /* @__PURE__ */ h("div", { className: A ? He : Re, children: [
|
|
460
460
|
be,
|
|
461
461
|
pe
|
|
462
462
|
] });
|
|
463
|
-
return
|
|
463
|
+
return de === "inline" ? /* @__PURE__ */ l(
|
|
464
464
|
"div",
|
|
465
465
|
{
|
|
466
466
|
ref: a,
|
|
@@ -472,8 +472,8 @@ const Ie = [
|
|
|
472
472
|
"data-testid": "color-picker",
|
|
473
473
|
children: J
|
|
474
474
|
}
|
|
475
|
-
) : /* @__PURE__ */ h(I.Root, { open:
|
|
476
|
-
/* @__PURE__ */
|
|
475
|
+
) : /* @__PURE__ */ h(I.Root, { open: xe, onOpenChange: ve, children: [
|
|
476
|
+
/* @__PURE__ */ l(I.Trigger, { asChild: !0, disabled: v, children: /* @__PURE__ */ h(
|
|
477
477
|
"button",
|
|
478
478
|
{
|
|
479
479
|
ref: a,
|
|
@@ -484,7 +484,7 @@ const Ie = [
|
|
|
484
484
|
className: Le({ size: p, className: D }),
|
|
485
485
|
"data-testid": "color-picker-trigger",
|
|
486
486
|
children: [
|
|
487
|
-
/* @__PURE__ */
|
|
487
|
+
/* @__PURE__ */ l(
|
|
488
488
|
"span",
|
|
489
489
|
{
|
|
490
490
|
className: `ds:inline-block ds:size-5 ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:shrink-0 ds:bg-[var(--swatch-bg)]${A ? "" : " me-[var(--spacing-sm)]"}`,
|
|
@@ -492,20 +492,20 @@ const Ie = [
|
|
|
492
492
|
style: { "--swatch-bg": $(o) }
|
|
493
493
|
}
|
|
494
494
|
),
|
|
495
|
-
A ? null : /* @__PURE__ */
|
|
495
|
+
A ? null : /* @__PURE__ */ l("span", { className: "ds:text-start ds:truncate ds:tabular-nums", children: B(o, i) })
|
|
496
496
|
]
|
|
497
497
|
}
|
|
498
498
|
) }),
|
|
499
|
-
/* @__PURE__ */
|
|
499
|
+
/* @__PURE__ */ l(I.Portal, { children: /* @__PURE__ */ l(I.Content, { sideOffset: 4, align: "start", className: _e, children: J }) })
|
|
500
500
|
] });
|
|
501
501
|
}
|
|
502
502
|
);
|
|
503
503
|
Oe.displayName = "ColorPicker";
|
|
504
504
|
function te({ level: e, passes: a, t: s }) {
|
|
505
505
|
return /* @__PURE__ */ h("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
|
|
506
|
-
/* @__PURE__ */
|
|
507
|
-
a ? /* @__PURE__ */
|
|
508
|
-
/* @__PURE__ */
|
|
506
|
+
/* @__PURE__ */ l("abbr", { title: `Web Content Accessibility Guidelines Level ${e}`, className: "ds:no-underline ds:font-medium", children: e }),
|
|
507
|
+
a ? /* @__PURE__ */ l(ne, { "aria-hidden": "true", className: "ds:size-4 ds:text-[var(--success)]" }) : /* @__PURE__ */ l(Ae, { "aria-hidden": "true", className: "ds:size-4 ds:text-[var(--destructive)]" }),
|
|
508
|
+
/* @__PURE__ */ l("span", { className: "ds:sr-only", children: a ? s("ui.inputs.colorPicker.contrastPass", "Pass") : s("ui.inputs.colorPicker.contrastFail", "Fail") })
|
|
509
509
|
] });
|
|
510
510
|
}
|
|
511
511
|
function O({
|
|
@@ -519,9 +519,9 @@ function O({
|
|
|
519
519
|
disabled: m
|
|
520
520
|
}) {
|
|
521
521
|
return /* @__PURE__ */ h("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
522
|
-
/* @__PURE__ */
|
|
522
|
+
/* @__PURE__ */ l("label", { className: "ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: e }),
|
|
523
523
|
/* @__PURE__ */ h("div", { className: "ds:relative", children: [
|
|
524
|
-
/* @__PURE__ */
|
|
524
|
+
/* @__PURE__ */ l(
|
|
525
525
|
"div",
|
|
526
526
|
{
|
|
527
527
|
className: "ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ds:bg-[image:var(--slider-gradient)]",
|
|
@@ -529,7 +529,7 @@ function O({
|
|
|
529
529
|
"aria-hidden": "true"
|
|
530
530
|
}
|
|
531
531
|
),
|
|
532
|
-
/* @__PURE__ */
|
|
532
|
+
/* @__PURE__ */ l(
|
|
533
533
|
se,
|
|
534
534
|
{
|
|
535
535
|
min: s,
|
|
@@ -551,4 +551,4 @@ export {
|
|
|
551
551
|
Ye as B,
|
|
552
552
|
Oe as C
|
|
553
553
|
};
|
|
554
|
-
//# sourceMappingURL=color-picker-
|
|
554
|
+
//# sourceMappingURL=color-picker-DkMFcK2m.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker-DkMFcK2m.js","sources":["../../src/components/color-picker/color-utils.ts","../../src/components/color-picker/palettes.ts","../../src/components/color-picker/color-picker.tsx"],"sourcesContent":["/**\n * Pure colour-conversion utilities for the ColorPicker component.\n *\n * This is the ONLY file where hex/rgb literals are permitted (for conversion\n * math). The component file (`color-picker.tsx`) must not contain hex/rgb\n * literals — it references `var(--…)` tokens for its own UI.\n */\n\nexport interface HSLA {\n h: number; // 0–360\n s: number; // 0–100\n l: number; // 0–100\n a: number; // 0–1\n}\n\n/* ------------------------------------------------------------------ */\n/* Hex ↔ HSL */\n/* ------------------------------------------------------------------ */\n\n/** Parse a hex string (#rgb, #rrggbb, #rrggbbaa) into HSLA. */\nexport function hexToHsl(hex: string): HSLA {\n let h = hex.startsWith('#') ? hex.slice(1) : hex;\n\n // Expand shorthand (#rgb → #rrggbb, #rgba → #rrggbbaa)\n if (h.length === 3 || h.length === 4) {\n h = h\n .split('')\n .map((c) => c + c)\n .join('');\n }\n\n const r = parseInt(h.slice(0, 2), 16) / 255;\n const g = parseInt(h.slice(2, 4), 16) / 255;\n const b = parseInt(h.slice(4, 6), 16) / 255;\n const a = h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1;\n\n return rgbToHsl(r, g, b, a);\n}\n\n/** Convert normalised RGB (0–1) + alpha to HSLA. */\nfunction rgbToHsl(r: number, g: number, b: number, a: number): HSLA {\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let hue = 0;\n let sat = 0;\n\n if (max !== min) {\n const d = max - min;\n sat = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n if (max === r) {\n hue = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n } else if (max === g) {\n hue = ((b - r) / d + 2) / 6;\n } else {\n hue = ((r - g) / d + 4) / 6;\n }\n }\n\n return {\n h: Math.round(hue * 360),\n s: Math.round(sat * 100),\n l: Math.round(l * 100),\n a: Math.round(a * 100) / 100,\n };\n}\n\n/** Convert HSLA to a hex string (#rrggbb or #rrggbbaa when a < 1). */\nexport function hslToHex(hsl: HSLA): string {\n const { r, g, b } = hslToRgbComponents(hsl);\n const toHex = (n: number) =>\n Math.round(n * 255)\n .toString(16)\n .padStart(2, '0');\n\n const base = `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n if (hsl.a < 1) {\n return `${base}${toHex(hsl.a)}`;\n }\n return base;\n}\n\n/** Convert HSLA to an rgba() string. */\nexport function hslToRgba(hsl: HSLA): string {\n const { r, g, b } = hslToRgbComponents(hsl);\n const ri = Math.round(r * 255);\n const gi = Math.round(g * 255);\n const bi = Math.round(b * 255);\n\n if (hsl.a < 1) {\n return `rgba(${ri}, ${gi}, ${bi}, ${hsl.a})`;\n }\n return `rgba(${ri}, ${gi}, ${bi}, 1)`;\n}\n\n/** Internal: convert HSLA to normalised RGB components (0–1). */\nfunction hslToRgbComponents(hsl: HSLA): {\n r: number;\n g: number;\n b: number;\n} {\n const h = hsl.h / 360;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n\n if (s === 0) {\n return { r: l, g: l, b: l };\n }\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n return {\n r: hueToRgb(p, q, h + 1 / 3),\n g: hueToRgb(p, q, h),\n b: hueToRgb(p, q, h - 1 / 3),\n };\n}\n\nfunction hueToRgb(p: number, q: number, t: number): number {\n let tt = t;\n if (tt < 0) tt += 1;\n if (tt > 1) tt -= 1;\n if (tt < 1 / 6) return p + (q - p) * 6 * tt;\n if (tt < 1 / 2) return q;\n if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;\n return p;\n}\n\n/* ------------------------------------------------------------------ */\n/* Format / Parse */\n/* ------------------------------------------------------------------ */\n\n/** Format an HSLA value to the specified output format. */\nexport function formatOutput(\n hsl: HSLA,\n format: 'hex' | 'hsl' | 'rgba',\n): string {\n switch (format) {\n case 'hex':\n return hslToHex(hsl);\n case 'hsl':\n if (hsl.a < 1) {\n return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${hsl.a})`;\n }\n return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n case 'rgba':\n return hslToRgba(hsl);\n }\n}\n\n/** Parse any supported colour string into HSLA. Returns null on failure. */\nexport function parseInput(value: string): HSLA | null {\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n // Hex: #rgb, #rrggbb, #rrggbbaa\n if (trimmed.startsWith('#')) {\n const body = trimmed.slice(1);\n if (!/^[0-9a-fA-F]{3,8}$/.test(body)) return null;\n if (![3, 4, 6, 8].includes(body.length)) return null;\n return hexToHsl(trimmed);\n }\n\n // hsla(h, s%, l%, a) or hsl(h, s%, l%)\n const hslaMatch = trimmed.match(\n /^hsla?\\(\\s*([\\d.]+)\\s*[,/]\\s*([\\d.]+)%?\\s*[,/]\\s*([\\d.]+)%?\\s*(?:[,/]\\s*([\\d.]+))?\\s*\\)$/,\n );\n if (hslaMatch) {\n return {\n h: Math.round(parseFloat(hslaMatch[1])) % 360,\n s: Math.round(parseFloat(hslaMatch[2])),\n l: Math.round(parseFloat(hslaMatch[3])),\n a: hslaMatch[4] !== undefined ? parseFloat(hslaMatch[4]) : 1,\n };\n }\n\n // rgba(r, g, b, a) or rgb(r, g, b)\n const rgbaMatch = trimmed.match(\n /^rgba?\\(\\s*([\\d.]+)\\s*[,/]\\s*([\\d.]+)\\s*[,/]\\s*([\\d.]+)\\s*(?:[,/]\\s*([\\d.]+))?\\s*\\)$/,\n );\n if (rgbaMatch) {\n const r = parseFloat(rgbaMatch[1]) / 255;\n const g = parseFloat(rgbaMatch[2]) / 255;\n const b = parseFloat(rgbaMatch[3]) / 255;\n const a = rgbaMatch[4] !== undefined ? parseFloat(rgbaMatch[4]) : 1;\n return rgbToHsl(r, g, b, a);\n }\n\n return null;\n}\n\n/* ------------------------------------------------------------------ */\n/* Contrast — WCAG 2.x relative luminance */\n/* ------------------------------------------------------------------ */\n\n/** Relative luminance per WCAG 2.x (0 = black, 1 = white). */\nexport function relativeLuminance(hsl: HSLA): number {\n const { r, g, b } = hslToRgbComponents(hsl);\n const linearise = (c: number) =>\n c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n return 0.2126 * linearise(r) + 0.7152 * linearise(g) + 0.0722 * linearise(b);\n}\n\n/** WCAG 2.x contrast ratio between two colours. */\nexport function contrastRatio(fg: HSLA, bg: HSLA): number {\n const lum1 = relativeLuminance(fg);\n const lum2 = relativeLuminance(bg);\n const lighter = Math.max(lum1, lum2);\n const darker = Math.min(lum1, lum2);\n return Math.round(((lighter + 0.05) / (darker + 0.05)) * 100) / 100;\n}\n\n/** Meets WCAG AA for normal text (≥ 4.5:1). */\nexport function meetsAA(ratio: number): boolean {\n return ratio >= 4.5;\n}\n\n/** Meets WCAG AAA for normal text (≥ 7:1). */\nexport function meetsAAA(ratio: number): boolean {\n return ratio >= 7;\n}\n","export interface PaletteSwatch {\n name: string;\n hex: string;\n /** Recommended text colour for contrast. */\n textColor?: '#000000' | '#ffffff';\n}\n\n/**\n * Material Design appointment colours — mirrors the platform's `DoctorColor`\n * entity. Pink 500 is first because it's the default appointment colour;\n * remaining dark (white-text) colours follow alphabetically, then light\n * (black-text) colours alphabetically.\n */\nexport const APPOINTMENT_PALETTE: PaletteSwatch[] = [\n { name: 'Pink 500', hex: '#e91e63', textColor: '#ffffff' },\n { name: 'Black', hex: '#000000', textColor: '#ffffff' },\n { name: 'Blue 500', hex: '#2196f3', textColor: '#ffffff' },\n { name: 'Blue 900', hex: '#0d47a1', textColor: '#ffffff' },\n { name: 'Blue Grey 500', hex: '#607d8b', textColor: '#ffffff' },\n { name: 'Blue Grey 800', hex: '#37474f', textColor: '#ffffff' },\n { name: 'Brown 500', hex: '#795548', textColor: '#ffffff' },\n { name: 'Deep Orange 500', hex: '#ff5722', textColor: '#ffffff' },\n { name: 'Deep Purple 500', hex: '#673ab7', textColor: '#ffffff' },\n { name: 'Green 500', hex: '#4caf50', textColor: '#ffffff' },\n { name: 'Green 900', hex: '#1b5e20', textColor: '#ffffff' },\n { name: 'Indigo 500', hex: '#3f51b5', textColor: '#ffffff' },\n { name: 'Indigo 900', hex: '#1a237e', textColor: '#ffffff' },\n { name: 'Pink 900', hex: '#880e4f', textColor: '#ffffff' },\n { name: 'Purple 500', hex: '#9c27b0', textColor: '#ffffff' },\n { name: 'Purple 900', hex: '#4a148c', textColor: '#ffffff' },\n { name: 'Red 500', hex: '#f44336', textColor: '#ffffff' },\n { name: 'Red 900', hex: '#b71c1c', textColor: '#ffffff' },\n { name: 'Teal 500', hex: '#009688', textColor: '#ffffff' },\n { name: 'Teal 900', hex: '#004d40', textColor: '#ffffff' },\n { name: 'Amber 500', hex: '#ffc107', textColor: '#000000' },\n { name: 'Cyan 500', hex: '#00bcd4', textColor: '#000000' },\n { name: 'Grey 500', hex: '#9e9e9e', textColor: '#000000' },\n { name: 'Light Blue 500', hex: '#03a9f4', textColor: '#000000' },\n { name: 'Light Green 500', hex: '#8bc34a', textColor: '#000000' },\n { name: 'Lime 500', hex: '#cddc39', textColor: '#000000' },\n { name: 'Orange 500', hex: '#ff9800', textColor: '#000000' },\n { name: 'Orange 900', hex: '#e65100', textColor: '#000000' },\n { name: 'White', hex: '#ffffff', textColor: '#000000' },\n { name: 'Yellow 500', hex: '#ffeb3b', textColor: '#000000' },\n];\n\n/** Alfadocs brand palette — the six brand families × 3 shades (300/500/700). */\nexport const BRAND_PALETTE: PaletteSwatch[] = [\n { name: 'Blue 300', hex: '#70738c' },\n { name: 'Blue 500', hex: '#292e53' },\n { name: 'Blue 700', hex: '#1d213b' },\n { name: 'Violet 300', hex: '#9995ee' },\n { name: 'Violet 500', hex: '#6761e5' },\n { name: 'Violet 700', hex: '#4945a3' },\n { name: 'Purple 300', hex: '#ccaafa' },\n { name: 'Purple 500', hex: '#b380f8' },\n { name: 'Purple 700', hex: '#7f5bb0' },\n { name: 'Magenta 300', hex: '#ea7ffc' },\n { name: 'Magenta 500', hex: '#e040fb' },\n { name: 'Magenta 700', hex: '#9f2db2' },\n { name: 'Fuchsia 300', hex: '#fa76fc' },\n { name: 'Fuchsia 500', hex: '#f732fb' },\n { name: 'Fuchsia 700', hex: '#af24b2' },\n { name: 'Grey 300', hex: '#f9f6f3' },\n { name: 'Grey 500', hex: '#f6f1ed' },\n { name: 'Grey 700', hex: '#afaba8' },\n];\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n} from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { cva } from 'class-variance-authority';\nimport { Check, X } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport { Slider } from '../slider/slider';\nimport {\n contrastRatio,\n formatOutput,\n hexToHsl,\n hslToHex,\n meetsAA,\n meetsAAA,\n parseInput,\n type HSLA,\n} from './color-utils';\nimport { APPOINTMENT_PALETTE, type PaletteSwatch } from './palettes';\n\nconst COLS = 6;\n\nconst triggerVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:w-full',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--background)] ds:text-[var(--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-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)] ds:ps-3 ds:pe-3',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)] ds:ps-3 ds:pe-3',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)] ds:ps-4 ds:pe-4',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst swatchVariants = cva(\n [\n 'ds:relative ds:rounded-[var(--radius-sm)] ds:border-2 ds:cursor-pointer',\n 'ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]',\n 'ds:transition-[transform,box-shadow] 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 'ds:hover:scale-110',\n // The swatch background is the user-picked colour — set as a CSS custom\n // property via inline `style` per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter; the bg rule lives on the class).\n 'ds:bg-[var(--swatch-bg)]',\n ].join(' '),\n {\n variants: {\n selected: {\n true: 'ds:border-[var(--primary)] ds:shadow-[var(--shadow-md)]',\n false: 'ds:border-transparent',\n },\n },\n defaultVariants: { selected: false },\n },\n);\n\nconst PANEL_CLASSES = [\n 'flex flex-col gap-[var(--spacing-md)]',\n 'rounded-[var(--radius-md)] bg-[var(--background)] text-[var(--foreground)]',\n 'p-[var(--spacing-md)]',\n].join(' ');\n\n// Checkerboard under the opacity track — static geometry, so expressed as\n// Tailwind arbitrary values rather than inline `style`. `grey-700` comes\n// from the closed palette so the tile colour still tracks the token ramp.\nconst OPACITY_CHECKER_CLASSES = [\n 'bg-[image:repeating-conic-gradient(var(--color-grey-700)_0%_25%,transparent_0%_50%)]',\n 'bg-[size:8px_8px]',\n].join(' ');\n\nconst PANEL_COMPACT_CLASSES = [\n 'rounded-[var(--radius-md)] bg-[var(--background)] text-[var(--foreground)]',\n 'p-[var(--spacing-sm)]',\n].join(' ');\n\nconst POPOVER_CONTENT_CLASSES = [\n 'z-[var(--z-popover)] rounded-[var(--radius-md)]',\n 'border border-[color:var(--border)] bg-[var(--background)] shadow-[var(--shadow-lg)]',\n 'w-72',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n].join(' ');\n\nconst HEX_INPUT_CLASSES = [\n 'w-full rounded-[var(--radius-sm)] border bg-[var(--background)] text-[var(--foreground)]',\n 'ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] py-[var(--spacing-xs)] text-[var(--font-size-sm)]',\n 'focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid',\n 'focus-visible:outline-[color:var(--ring)] focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none',\n].join(' ');\n\n// Makes the Slider track/range transparent so the gradient behind shows through\nconst TRANSPARENT_SLIDER = '[&>span:first-child]:bg-transparent [&>span:first-child>span]:bg-transparent';\n\nexport interface ColorPickerProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n format?: 'hex' | 'hsl' | 'rgba';\n allowOpacity?: boolean;\n palette?: (string | PaletteSwatch)[];\n against?: string;\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n variant?: 'inline' | 'popover';\n /** Show only the swatch grid without sliders, hex input, or contrast readout */\n compact?: boolean;\n className?: string;\n}\n\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(\n (props, ref) => {\n const {\n value,\n defaultValue,\n onChange,\n format = 'hex',\n allowOpacity = false,\n palette,\n against,\n size = 'md',\n disabled = false,\n variant = 'inline',\n compact = true,\n className,\n } = props;\n\n const { t } = useTranslation();\n const ctx = useFormField();\n const generatedId = useId();\n const pickerId = ctx.id || generatedId;\n const effectiveDisabled = ctx.disabled || disabled;\n\n const isControlled = value !== undefined;\n const [internalHsl, setInternalHsl] = useState<HSLA>(() => {\n const initial = value ?? defaultValue;\n if (initial) {\n const parsed = parseInput(initial);\n if (parsed) return parsed;\n }\n return { h: 0, s: 100, l: 50, a: 1 };\n });\n\n const currentHsl: HSLA = useMemo(() => {\n if (isControlled && value) {\n const parsed = parseInput(value);\n if (parsed) return parsed;\n }\n return internalHsl;\n }, [isControlled, value, internalHsl]);\n\n const emitChange = useCallback(\n (hsl: HSLA) => {\n const finalHsl = allowOpacity ? hsl : { ...hsl, a: 1 };\n if (!isControlled) setInternalHsl(finalHsl);\n onChange?.(formatOutput(finalHsl, format));\n },\n [allowOpacity, format, isControlled, onChange],\n );\n\n const [hexInput, setHexInput] = useState(() => hslToHex(currentHsl));\n const [hexError, setHexError] = useState(false);\n const revertTimerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n const currentHslRef = useRef(currentHsl);\n currentHslRef.current = currentHsl;\n\n useEffect(() => {\n setHexInput(hslToHex(currentHsl));\n setHexError(false);\n if (revertTimerRef.current !== undefined) {\n clearTimeout(revertTimerRef.current);\n revertTimerRef.current = undefined;\n }\n }, [currentHsl]);\n\n useEffect(() => {\n return () => {\n if (revertTimerRef.current !== undefined) {\n clearTimeout(revertTimerRef.current);\n }\n };\n }, []);\n\n const handleHexBlur = () => {\n const parsed = parseInput(hexInput);\n if (parsed) {\n setHexError(false);\n emitChange(parsed);\n } else {\n setHexError(true);\n revertTimerRef.current = setTimeout(() => {\n revertTimerRef.current = undefined;\n setHexError(false);\n setHexInput(hslToHex(currentHslRef.current));\n }, 800);\n }\n };\n\n const swatches: PaletteSwatch[] = useMemo(() => {\n if (!palette) return APPOINTMENT_PALETTE;\n return palette.map((item) =>\n typeof item === 'string'\n ? { name: item.toUpperCase(), hex: item }\n : item,\n );\n }, [palette]);\n\n const currentHex = hslToHex(currentHsl);\n const selectedSwatchIndex = swatches.findIndex(\n (s) => s.hex.toLowerCase() === currentHex.toLowerCase(),\n );\n\n const gridRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState(\n selectedSwatchIndex >= 0 ? selectedSwatchIndex : 0,\n );\n\n const focusSwatch = (index: number) => {\n const cells = gridRef.current?.querySelectorAll<HTMLElement>('[role=\"gridcell\"]');\n if (cells?.[index]) {\n cells[index].focus();\n setFocusedIndex(index);\n }\n };\n\n const handleGridKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (effectiveDisabled) return;\n const total = swatches.length;\n let next = focusedIndex;\n\n switch (event.key) {\n case 'ArrowRight':\n next = (focusedIndex + 1) % total;\n break;\n case 'ArrowLeft':\n next = (focusedIndex - 1 + total) % total;\n break;\n case 'ArrowDown':\n next = Math.min(focusedIndex + COLS, total - 1);\n break;\n case 'ArrowUp':\n next = Math.max(focusedIndex - COLS, 0);\n break;\n case 'Home':\n next = Math.floor(focusedIndex / COLS) * COLS;\n break;\n case 'End':\n next = Math.min(Math.floor(focusedIndex / COLS) * COLS + COLS - 1, total - 1);\n break;\n case 'PageUp':\n next = focusedIndex % COLS;\n break;\n case 'PageDown': {\n const lastRowStart = Math.floor((total - 1) / COLS) * COLS;\n next = Math.min(lastRowStart + (focusedIndex % COLS), total - 1);\n break;\n }\n case 'Enter':\n case ' ':\n event.preventDefault();\n emitChange(hexToHsl(swatches[focusedIndex].hex));\n return;\n default:\n return;\n }\n\n event.preventDefault();\n focusSwatch(next);\n };\n\n const [open, setOpen] = useState(false);\n\n const contrastInfo = useMemo(() => {\n if (!against) return null;\n const bgHsl = parseInput(against);\n if (!bgHsl) return null;\n const ratio = contrastRatio(currentHsl, bgHsl);\n return { ratio, aa: meetsAA(ratio), aaa: meetsAAA(ratio) };\n }, [against, currentHsl]);\n\n const swatchGrid = (\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={t('ui.inputs.colorPicker.paletteLabel', 'Colour swatches')}\n onKeyDown={handleGridKeyDown}\n className=\"ds:grid ds:grid-cols-6 ds:gap-[var(--spacing-xs)]\"\n >\n {swatches.map((_swatch, i) => {\n const rowStart = Math.floor(i / COLS) * COLS;\n const isFirstInRow = i === rowStart;\n return isFirstInRow ? (\n <div key={i} role=\"row\" className=\"ds:contents\">\n {swatches.slice(rowStart, rowStart + COLS).map((s, j) => {\n const idx = rowStart + j;\n const sel = s.hex.toLowerCase() === currentHex.toLowerCase();\n return (\n <div\n key={s.hex}\n role=\"gridcell\"\n aria-selected={sel}\n aria-label={t('ui.inputs.colorPicker.swatchLabel', { name: s.name, hex: s.hex })}\n tabIndex={idx === focusedIndex ? 0 : -1}\n onClick={() => {\n if (effectiveDisabled) return;\n emitChange(hexToHsl(s.hex));\n setFocusedIndex(idx);\n }}\n className={swatchVariants({ selected: sel })}\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter for user-picked\n // palette swatch colour; the `bg-[var(--swatch-bg)]` rule\n // lives in `swatchVariants`).\n style={{ ['--swatch-bg' as string]: s.hex }}\n >\n {sel ? (\n <Check aria-hidden=\"true\" className=\"ds:absolute ds:inset-0 ds:m-auto ds:size-4 ds:text-[var(--background)] ds:mix-blend-difference\" />\n ) : null}\n </div>\n );\n })}\n </div>\n ) : null;\n })}\n </div>\n );\n\n const fullControls = compact ? null : (\n <>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <label htmlFor={`${pickerId}-hex`} className=\"ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]\">\n {t('ui.inputs.colorPicker.hex', 'Hex')}\n </label>\n <bdi dir=\"ltr\">\n <input\n id={`${pickerId}-hex`}\n type=\"text\"\n value={hexInput}\n disabled={effectiveDisabled}\n onChange={(e) => setHexInput(e.target.value)}\n onBlur={handleHexBlur}\n className={`${HEX_INPUT_CLASSES} ${hexError ? 'border-[var(--destructive)]' : 'border-[color:var(--border)]'}`}\n />\n </bdi>\n </div>\n\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <SliderWithGradient\n label={t('ui.inputs.colorPicker.hue', 'Hue')}\n gradient=\"linear-gradient(to right, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))\"\n min={0} max={360}\n value={currentHsl.h}\n onChange={(h) => emitChange({ ...currentHsl, h })}\n formatValue={(v) => `H ${v}°`}\n disabled={effectiveDisabled}\n />\n <SliderWithGradient\n label={t('ui.inputs.colorPicker.saturation', 'Saturation')}\n gradient={`linear-gradient(to right, hsl(${currentHsl.h},0%,${currentHsl.l}%), hsl(${currentHsl.h},100%,${currentHsl.l}%))`}\n min={0} max={100}\n value={currentHsl.s}\n onChange={(s) => emitChange({ ...currentHsl, s })}\n formatValue={(v) => `S ${v}%`}\n disabled={effectiveDisabled}\n />\n <SliderWithGradient\n label={t('ui.inputs.colorPicker.lightness', 'Lightness')}\n gradient={`linear-gradient(to right, hsl(${currentHsl.h},${currentHsl.s}%,0%), hsl(${currentHsl.h},${currentHsl.s}%,50%), hsl(${currentHsl.h},${currentHsl.s}%,100%))`}\n min={0} max={100}\n value={currentHsl.l}\n onChange={(l) => emitChange({ ...currentHsl, l })}\n formatValue={(v) => `L ${v}%`}\n disabled={effectiveDisabled}\n />\n {allowOpacity ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <label className=\"ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]\">\n {t('ui.inputs.colorPicker.opacity', 'Opacity')}\n </label>\n <div className=\"ds:relative\">\n <div\n className={`ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ${OPACITY_CHECKER_CLASSES}`}\n aria-hidden=\"true\"\n />\n <div\n className=\"ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ds:bg-[image:var(--opacity-gradient)]\"\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter; the opacity-track\n // gradient is derived from the live HSL and has no token\n // equivalent. The `bg-[image:var(--opacity-gradient)]` rule\n // lives on the class above.)\n style={{\n ['--opacity-gradient' as string]: `linear-gradient(to right, hsla(${currentHsl.h},${currentHsl.s}%,${currentHsl.l}%,0), hsl(${currentHsl.h},${currentHsl.s}%,${currentHsl.l}%))`,\n }}\n aria-hidden=\"true\"\n />\n <Slider\n min={0} max={100} step={1}\n value={[Math.round(currentHsl.a * 100)]}\n onValueChange={([v]) => emitChange({ ...currentHsl, a: v / 100 })}\n aria-label={t('ui.inputs.colorPicker.opacity', 'Opacity')}\n formatValue={(v) => `${v}%`}\n disabled={effectiveDisabled}\n className={TRANSPARENT_SLIDER}\n />\n </div>\n </div>\n ) : null}\n </div>\n\n {contrastInfo ? (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]\" role=\"status\" aria-live=\"polite\">\n <span className=\"ds:tabular-nums\">\n {t('ui.inputs.colorPicker.contrastRatio', { ratio: contrastInfo.ratio.toFixed(1) })}\n </span>\n <ContrastBadge level=\"AA\" passes={contrastInfo.aa} t={t} />\n <ContrastBadge level=\"AAA\" passes={contrastInfo.aaa} t={t} />\n </div>\n ) : null}\n\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <div\n className=\"ds:size-8 ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--swatch-bg)]\"\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter for the live picked\n // colour; the `bg-[var(--swatch-bg)]` rule lives on the class).\n style={{ ['--swatch-bg' as string]: hslToHex(currentHsl) }}\n aria-hidden=\"true\"\n />\n <span className=\"ds:text-[length:var(--font-size-sm)] ds:text-[var(--muted-foreground)] ds:tabular-nums\">\n {formatOutput(currentHsl, format)}\n </span>\n </div>\n </>\n );\n\n const panelContent = (\n <div className={compact ? PANEL_COMPACT_CLASSES : PANEL_CLASSES}>\n {swatchGrid}\n {fullControls}\n </div>\n );\n\n if (variant === 'inline') {\n return (\n <div\n ref={ref}\n id={pickerId}\n className={className}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n aria-disabled={effectiveDisabled || undefined}\n data-testid=\"color-picker\"\n >\n {panelContent}\n </div>\n );\n }\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild disabled={effectiveDisabled}>\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n id={pickerId}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n className={triggerVariants({ size, className })}\n data-testid=\"color-picker-trigger\"\n >\n <span\n className={`ds:inline-block ds:size-5 ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:shrink-0 ds:bg-[var(--swatch-bg)]${compact ? '' : ' me-[var(--spacing-sm)]'}`}\n aria-hidden=\"true\"\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter; the trigger preview\n // swatch shows the current picked colour).\n style={{ ['--swatch-bg' as string]: hslToHex(currentHsl) }}\n />\n {compact ? null : (\n <span className=\"ds:text-start ds:truncate ds:tabular-nums\">\n {formatOutput(currentHsl, format)}\n </span>\n )}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content sideOffset={4} align=\"start\" className={POPOVER_CONTENT_CLASSES}>\n {panelContent}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n },\n);\n\nColorPicker.displayName = 'ColorPicker';\n\nfunction ContrastBadge({ level, passes, t }: { level: string; passes: boolean; t: (key: string, fallback: string) => string }) {\n return (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <abbr title={`Web Content Accessibility Guidelines Level ${level}`} className=\"ds:no-underline ds:font-medium\">\n {level}\n </abbr>\n {passes ? (\n <Check aria-hidden=\"true\" className=\"ds:size-4 ds:text-[var(--success)]\" />\n ) : (\n <X aria-hidden=\"true\" className=\"ds:size-4 ds:text-[var(--destructive)]\" />\n )}\n <span className=\"ds:sr-only\">\n {passes ? t('ui.inputs.colorPicker.contrastPass', 'Pass') : t('ui.inputs.colorPicker.contrastFail', 'Fail')}\n </span>\n </span>\n );\n}\n\nfunction SliderWithGradient({\n label,\n gradient,\n min,\n max,\n value,\n onChange,\n formatValue,\n disabled,\n}: {\n label: string;\n gradient: string;\n min: number;\n max: number;\n value: number;\n onChange: (v: number) => void;\n formatValue: (v: number) => string;\n disabled: boolean;\n}) {\n return (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <label className=\"ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]\">{label}</label>\n <div className=\"ds:relative\">\n <div\n className=\"ds:absolute ds:inset-0 ds:rounded-[var(--radius-full)] ds:pointer-events-none ds:bg-[image:var(--slider-gradient)]\"\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter; the hue / saturation /\n // lightness tracks are derived from the live HSL so the gradient\n // string has no token equivalent. The\n // `bg-[image:var(--slider-gradient)]` rule lives on the class.)\n style={{ ['--slider-gradient' as string]: gradient }}\n aria-hidden=\"true\"\n />\n <Slider\n min={min} max={max} step={1}\n value={[value]}\n onValueChange={([v]) => onChange(v)}\n aria-label={label}\n formatValue={formatValue}\n disabled={disabled}\n className={TRANSPARENT_SLIDER}\n />\n </div>\n </div>\n );\n}\n"],"names":["hexToHsl","hex","h","r","g","b","a","rgbToHsl","max","min","l","hue","sat","d","hslToHex","hsl","hslToRgbComponents","toHex","n","base","hslToRgba","ri","gi","bi","q","p","hueToRgb","t","tt","formatOutput","format","parseInput","value","trimmed","body","hslaMatch","rgbaMatch","relativeLuminance","linearise","c","contrastRatio","fg","bg","lum1","lum2","lighter","darker","meetsAA","ratio","meetsAAA","APPOINTMENT_PALETTE","BRAND_PALETTE","COLS","triggerVariants","cva","swatchVariants","PANEL_CLASSES","OPACITY_CHECKER_CLASSES","PANEL_COMPACT_CLASSES","POPOVER_CONTENT_CLASSES","HEX_INPUT_CLASSES","TRANSPARENT_SLIDER","ColorPicker","forwardRef","props","ref","defaultValue","onChange","allowOpacity","palette","against","size","disabled","variant","compact","className","useTranslation","ctx","useFormField","generatedId","useId","pickerId","effectiveDisabled","isControlled","internalHsl","setInternalHsl","useState","initial","parsed","currentHsl","useMemo","emitChange","useCallback","finalHsl","hexInput","setHexInput","hexError","setHexError","revertTimerRef","useRef","currentHslRef","useEffect","handleHexBlur","swatches","item","currentHex","selectedSwatchIndex","s","gridRef","focusedIndex","setFocusedIndex","focusSwatch","index","cells","_a","handleGridKeyDown","event","total","next","lastRowStart","open","setOpen","contrastInfo","bgHsl","swatchGrid","jsx","_swatch","i","rowStart","j","idx","sel","Check","fullControls","jsxs","Fragment","e","SliderWithGradient","v","Slider","ContrastBadge","panelContent","Popover","level","passes","X","label","gradient","formatValue"],"mappings":";;;;;;;;;AAoBO,SAASA,EAASC,GAAmB;AAC1C,MAAIC,IAAID,EAAI,WAAW,GAAG,IAAIA,EAAI,MAAM,CAAC,IAAIA;AAG7C,GAAIC,EAAE,WAAW,KAAKA,EAAE,WAAW,OACjCA,IAAIA,EACD,MAAM,EAAE,EACR,IAAI,CAAC,MAAM,IAAI,CAAC,EAChB,KAAK,EAAE;AAGZ,QAAMC,IAAI,SAASD,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,KAClCE,IAAI,SAASF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,KAClCG,IAAI,SAASH,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,KAClCI,IAAIJ,EAAE,WAAW,IAAI,SAASA,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,MAAM;AAE/D,SAAOK,GAASJ,GAAGC,GAAGC,GAAGC,CAAC;AAC5B;AAGA,SAASC,GAASJ,GAAWC,GAAWC,GAAWC,GAAiB;AAClE,QAAME,IAAM,KAAK,IAAIL,GAAGC,GAAGC,CAAC,GACtBI,IAAM,KAAK,IAAIN,GAAGC,GAAGC,CAAC,GACtBK,KAAKF,IAAMC,KAAO;AACxB,MAAIE,IAAM,GACNC,IAAM;AAEV,MAAIJ,MAAQC,GAAK;AACf,UAAMI,IAAIL,IAAMC;AAChB,IAAAG,IAAMF,IAAI,MAAMG,KAAK,IAAIL,IAAMC,KAAOI,KAAKL,IAAMC,IAE7CD,MAAQL,IACVQ,MAAQP,IAAIC,KAAKQ,KAAKT,IAAIC,IAAI,IAAI,MAAM,IAC/BG,MAAQJ,IACjBO,MAAQN,IAAIF,KAAKU,IAAI,KAAK,IAE1BF,MAAQR,IAAIC,KAAKS,IAAI,KAAK;AAAA,EAE9B;AAEA,SAAO;AAAA,IACL,GAAG,KAAK,MAAMF,IAAM,GAAG;AAAA,IACvB,GAAG,KAAK,MAAMC,IAAM,GAAG;AAAA,IACvB,GAAG,KAAK,MAAMF,IAAI,GAAG;AAAA,IACrB,GAAG,KAAK,MAAMJ,IAAI,GAAG,IAAI;AAAA,EAAA;AAE7B;AAGO,SAASQ,EAASC,GAAmB;AAC1C,QAAM,EAAE,GAAAZ,GAAG,GAAAC,GAAG,GAAAC,EAAA,IAAMW,EAAmBD,CAAG,GACpCE,IAAQ,CAACC,MACb,KAAK,MAAMA,IAAI,GAAG,EACf,SAAS,EAAE,EACX,SAAS,GAAG,GAAG,GAEdC,IAAO,IAAIF,EAAMd,CAAC,CAAC,GAAGc,EAAMb,CAAC,CAAC,GAAGa,EAAMZ,CAAC,CAAC;AAC/C,SAAIU,EAAI,IAAI,IACH,GAAGI,CAAI,GAAGF,EAAMF,EAAI,CAAC,CAAC,KAExBI;AACT;AAGO,SAASC,GAAUL,GAAmB;AAC3C,QAAM,EAAE,GAAAZ,GAAG,GAAAC,GAAG,GAAAC,EAAA,IAAMW,EAAmBD,CAAG,GACpCM,IAAK,KAAK,MAAMlB,IAAI,GAAG,GACvBmB,IAAK,KAAK,MAAMlB,IAAI,GAAG,GACvBmB,IAAK,KAAK,MAAMlB,IAAI,GAAG;AAE7B,SAAIU,EAAI,IAAI,IACH,QAAQM,CAAE,KAAKC,CAAE,KAAKC,CAAE,KAAKR,EAAI,CAAC,MAEpC,QAAQM,CAAE,KAAKC,CAAE,KAAKC,CAAE;AACjC;AAGA,SAASP,EAAmBD,GAI1B;AACA,QAAMb,IAAIa,EAAI,IAAI,KACZ,IAAIA,EAAI,IAAI,KACZL,IAAIK,EAAI,IAAI;AAElB,MAAI,MAAM;AACR,WAAO,EAAEL,GAAM,GAAGA,GAAG,GAAGA,EAAA;AAG1B,QAAMc,IAAId,IAAI,MAAMA,KAAK,IAAI,KAAKA,IAAI,IAAIA,IAAI,GACxCe,IAAI,IAAIf,IAAIc;AAElB,SAAO;AAAA,IACL,GAAGE,EAASD,GAAGD,GAAGtB,IAAI,IAAI,CAAC;AAAA,IAC3B,GAAGwB,EAASD,GAAGD,GAAGtB,CAAC;AAAA,IACnB,GAAGwB,EAASD,GAAGD,GAAGtB,IAAI,IAAI,CAAC;AAAA,EAAA;AAE/B;AAEA,SAASwB,EAASD,GAAWD,GAAWG,GAAmB;AACzD,MAAIC,IAAKD;AAGT,SAFIC,IAAK,MAAGA,KAAM,IACdA,IAAK,MAAGA,KAAM,IACdA,IAAK,IAAI,IAAUH,KAAKD,IAAIC,KAAK,IAAIG,IACrCA,IAAK,IAAI,IAAUJ,IACnBI,IAAK,IAAI,IAAUH,KAAKD,IAAIC,MAAM,IAAI,IAAIG,KAAM,IAC7CH;AACT;AAOO,SAASI,EACdd,GACAe,GACQ;AACR,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAOhB,EAASC,CAAG;AAAA,IACrB,KAAK;AACH,aAAIA,EAAI,IAAI,IACH,QAAQA,EAAI,CAAC,KAAKA,EAAI,CAAC,MAAMA,EAAI,CAAC,MAAMA,EAAI,CAAC,MAE/C,OAAOA,EAAI,CAAC,KAAKA,EAAI,CAAC,MAAMA,EAAI,CAAC;AAAA,IAC1C,KAAK;AACH,aAAOK,GAAUL,CAAG;AAAA,EAAA;AAE1B;AAGO,SAASgB,EAAWC,GAA4B;AACrD,QAAMC,IAAUD,EAAM,KAAA;AACtB,MAAI,CAACC,EAAS,QAAO;AAGrB,MAAIA,EAAQ,WAAW,GAAG,GAAG;AAC3B,UAAMC,IAAOD,EAAQ,MAAM,CAAC;AAE5B,WADI,CAAC,qBAAqB,KAAKC,CAAI,KAC/B,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,SAASA,EAAK,MAAM,IAAU,OACzClC,EAASiC,CAAO;AAAA,EACzB;AAGA,QAAME,IAAYF,EAAQ;AAAA,IACxB;AAAA,EAAA;AAEF,MAAIE;AACF,WAAO;AAAA,MACL,GAAG,KAAK,MAAM,WAAWA,EAAU,CAAC,CAAC,CAAC,IAAI;AAAA,MAC1C,GAAG,KAAK,MAAM,WAAWA,EAAU,CAAC,CAAC,CAAC;AAAA,MACtC,GAAG,KAAK,MAAM,WAAWA,EAAU,CAAC,CAAC,CAAC;AAAA,MACtC,GAAGA,EAAU,CAAC,MAAM,SAAY,WAAWA,EAAU,CAAC,CAAC,IAAI;AAAA,IAAA;AAK/D,QAAMC,IAAYH,EAAQ;AAAA,IACxB;AAAA,EAAA;AAEF,MAAIG,GAAW;AACb,UAAMjC,IAAI,WAAWiC,EAAU,CAAC,CAAC,IAAI,KAC/BhC,IAAI,WAAWgC,EAAU,CAAC,CAAC,IAAI,KAC/B/B,IAAI,WAAW+B,EAAU,CAAC,CAAC,IAAI,KAC/B9B,IAAI8B,EAAU,CAAC,MAAM,SAAY,WAAWA,EAAU,CAAC,CAAC,IAAI;AAClE,WAAO7B,GAASJ,GAAGC,GAAGC,GAAGC,CAAC;AAAA,EAC5B;AAEA,SAAO;AACT;AAOO,SAAS+B,GAAkBtB,GAAmB;AACnD,QAAM,EAAE,GAAAZ,GAAG,GAAAC,GAAG,GAAAC,EAAA,IAAMW,EAAmBD,CAAG,GACpCuB,IAAY,CAACC,MACjBA,KAAK,UAAUA,IAAI,QAAQ,KAAK,KAAKA,IAAI,SAAS,OAAO,GAAG;AAC9D,SAAO,SAASD,EAAUnC,CAAC,IAAI,SAASmC,EAAUlC,CAAC,IAAI,SAASkC,EAAUjC,CAAC;AAC7E;AAGO,SAASmC,GAAcC,GAAUC,GAAkB;AACxD,QAAMC,IAAON,GAAkBI,CAAE,GAC3BG,IAAOP,GAAkBK,CAAE,GAC3BG,IAAU,KAAK,IAAIF,GAAMC,CAAI,GAC7BE,IAAS,KAAK,IAAIH,GAAMC,CAAI;AAClC,SAAO,KAAK,OAAQC,IAAU,SAASC,IAAS,QAAS,GAAG,IAAI;AAClE;AAGO,SAASC,GAAQC,GAAwB;AAC9C,SAAOA,KAAS;AAClB;AAGO,SAASC,GAASD,GAAwB;AAC/C,SAAOA,KAAS;AAClB;ACjNO,MAAME,KAAuC;AAAA,EAClD,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,SAAS,KAAK,WAAW,WAAW,UAAA;AAAA,EAC5C,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,iBAAiB,KAAK,WAAW,WAAW,UAAA;AAAA,EACpD,EAAE,MAAM,iBAAiB,KAAK,WAAW,WAAW,UAAA;AAAA,EACpD,EAAE,MAAM,aAAa,KAAK,WAAW,WAAW,UAAA;AAAA,EAChD,EAAE,MAAM,mBAAmB,KAAK,WAAW,WAAW,UAAA;AAAA,EACtD,EAAE,MAAM,mBAAmB,KAAK,WAAW,WAAW,UAAA;AAAA,EACtD,EAAE,MAAM,aAAa,KAAK,WAAW,WAAW,UAAA;AAAA,EAChD,EAAE,MAAM,aAAa,KAAK,WAAW,WAAW,UAAA;AAAA,EAChD,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,WAAW,KAAK,WAAW,WAAW,UAAA;AAAA,EAC9C,EAAE,MAAM,WAAW,KAAK,WAAW,WAAW,UAAA;AAAA,EAC9C,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,aAAa,KAAK,WAAW,WAAW,UAAA;AAAA,EAChD,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,kBAAkB,KAAK,WAAW,WAAW,UAAA;AAAA,EACrD,EAAE,MAAM,mBAAmB,KAAK,WAAW,WAAW,UAAA;AAAA,EACtD,EAAE,MAAM,YAAY,KAAK,WAAW,WAAW,UAAA;AAAA,EAC/C,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AAAA,EACjD,EAAE,MAAM,SAAS,KAAK,WAAW,WAAW,UAAA;AAAA,EAC5C,EAAE,MAAM,cAAc,KAAK,WAAW,WAAW,UAAA;AACnD,GAGaC,KAAiC;AAAA,EAC5C,EAAE,MAAM,YAAY,KAAK,UAAA;AAAA,EACzB,EAAE,MAAM,YAAY,KAAK,UAAA;AAAA,EACzB,EAAE,MAAM,YAAY,KAAK,UAAA;AAAA,EACzB,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,KAAK,UAAA;AAAA,EAC3B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,eAAe,KAAK,UAAA;AAAA,EAC5B,EAAE,MAAM,YAAY,KAAK,UAAA;AAAA,EACzB,EAAE,MAAM,YAAY,KAAK,UAAA;AAAA,EACzB,EAAE,MAAM,YAAY,KAAK,UAAA;AAC3B,GCtCMC,IAAO,GAEPC,KAAkBC;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GAEMC,KAAiBD;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB,EAAE,UAAU,GAAA;AAAA,EAAM;AAEvC,GAEME,KAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAKJC,KAA0B;AAAA,EAC9B;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,KAAwB;AAAA,EAC5B;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,KAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,KAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAGJC,KAAqB,gFAkBdC,KAAcC;AAAA,EACzB,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,OAAAjC;AAAA,MACA,cAAAkC;AAAA,MACA,UAAAC;AAAA,MACA,QAAArC,IAAS;AAAA,MACT,cAAAsC,IAAe;AAAA,MACf,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,MAAAC,IAAO;AAAA,MACP,UAAAC,KAAW;AAAA,MACX,SAAAC,KAAU;AAAA,MACV,SAAAC,IAAU;AAAA,MACV,WAAAC;AAAA,IAAA,IACEX,GAEE,EAAE,GAAArC,EAAA,IAAMiD,GAAA,GACRC,IAAMC,GAAA,GACNC,KAAcC,GAAA,GACdC,IAAWJ,EAAI,MAAME,IACrBG,IAAoBL,EAAI,YAAYL,IAEpCW,IAAenD,MAAU,QACzB,CAACoD,GAAaC,EAAc,IAAIC,EAAe,MAAM;AACzD,YAAMC,IAAUvD,KAASkC;AACzB,UAAIqB,GAAS;AACX,cAAMC,IAASzD,EAAWwD,CAAO;AACjC,YAAIC,EAAQ,QAAOA;AAAA,MACrB;AACA,aAAO,EAAE,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,EAAA;AAAA,IACnC,CAAC,GAEKC,IAAmBC,EAAQ,MAAM;AACrC,UAAIP,KAAgBnD,GAAO;AACzB,cAAMwD,IAASzD,EAAWC,CAAK;AAC/B,YAAIwD,EAAQ,QAAOA;AAAA,MACrB;AACA,aAAOJ;AAAA,IACT,GAAG,CAACD,GAAcnD,GAAOoD,CAAW,CAAC,GAE/BO,IAAaC;AAAA,MACjB,CAAC7E,MAAc;AACb,cAAM8E,IAAWzB,IAAerD,IAAM,EAAE,GAAGA,GAAK,GAAG,EAAA;AACnD,QAAKoE,KAAcE,GAAeQ,CAAQ,GAC1C1B,KAAA,QAAAA,EAAWtC,EAAagE,GAAU/D,CAAM;AAAA,MAC1C;AAAA,MACA,CAACsC,GAActC,GAAQqD,GAAchB,CAAQ;AAAA,IAAA,GAGzC,CAAC2B,GAAUC,CAAW,IAAIT,EAAS,MAAMxE,EAAS2E,CAAU,CAAC,GAC7D,CAACO,IAAUC,CAAW,IAAIX,EAAS,EAAK,GACxCY,IAAiBC,EAAsC,MAAS,GAChEC,IAAgBD,EAAOV,CAAU;AACvC,IAAAW,EAAc,UAAUX,GAExBY,GAAU,MAAM;AACd,MAAAN,EAAYjF,EAAS2E,CAAU,CAAC,GAChCQ,EAAY,EAAK,GACbC,EAAe,YAAY,WAC7B,aAAaA,EAAe,OAAO,GACnCA,EAAe,UAAU;AAAA,IAE7B,GAAG,CAACT,CAAU,CAAC,GAEfY,GAAU,MACD,MAAM;AACX,MAAIH,EAAe,YAAY,UAC7B,aAAaA,EAAe,OAAO;AAAA,IAEvC,GACC,CAAA,CAAE;AAEL,UAAMI,KAAgB,MAAM;AAC1B,YAAMd,IAASzD,EAAW+D,CAAQ;AAClC,MAAIN,KACFS,EAAY,EAAK,GACjBN,EAAWH,CAAM,MAEjBS,EAAY,EAAI,GAChBC,EAAe,UAAU,WAAW,MAAM;AACxC,QAAAA,EAAe,UAAU,QACzBD,EAAY,EAAK,GACjBF,EAAYjF,EAASsF,EAAc,OAAO,CAAC;AAAA,MAC7C,GAAG,GAAG;AAAA,IAEV,GAEMG,IAA4Bb,EAAQ,MACnCrB,IACEA,EAAQ;AAAA,MAAI,CAACmC,MAClB,OAAOA,KAAS,WACZ,EAAE,MAAMA,EAAK,YAAA,GAAe,KAAKA,MACjCA;AAAA,IAAA,IAJetD,IAMpB,CAACmB,CAAO,CAAC,GAENoC,IAAa3F,EAAS2E,CAAU,GAChCiB,IAAsBH,EAAS;AAAA,MACnC,CAACI,MAAMA,EAAE,IAAI,YAAA,MAAkBF,EAAW,YAAA;AAAA,IAAY,GAGlDG,IAAUT,EAAuB,IAAI,GACrC,CAACU,GAAcC,CAAe,IAAIxB;AAAA,MACtCoB,KAAuB,IAAIA,IAAsB;AAAA,IAAA,GAG7CK,KAAc,CAACC,MAAkB;;AACrC,YAAMC,KAAQC,IAAAN,EAAQ,YAAR,gBAAAM,EAAiB,iBAA8B;AAC7D,MAAID,KAAA,QAAAA,EAAQD,OACVC,EAAMD,CAAK,EAAE,MAAA,GACbF,EAAgBE,CAAK;AAAA,IAEzB,GAEMG,KAAoB,CAACC,MAAyC;AAClE,UAAIlC,EAAmB;AACvB,YAAMmC,IAAQd,EAAS;AACvB,UAAIe,IAAOT;AAEX,cAAQO,EAAM,KAAA;AAAA,QACZ,KAAK;AACH,UAAAE,KAAQT,IAAe,KAAKQ;AAC5B;AAAA,QACF,KAAK;AACH,UAAAC,KAAQT,IAAe,IAAIQ,KAASA;AACpC;AAAA,QACF,KAAK;AACH,UAAAC,IAAO,KAAK,IAAIT,IAAezD,GAAMiE,IAAQ,CAAC;AAC9C;AAAA,QACF,KAAK;AACH,UAAAC,IAAO,KAAK,IAAIT,IAAezD,GAAM,CAAC;AACtC;AAAA,QACF,KAAK;AACH,UAAAkE,IAAO,KAAK,MAAMT,IAAezD,CAAI,IAAIA;AACzC;AAAA,QACF,KAAK;AACH,UAAAkE,IAAO,KAAK,IAAI,KAAK,MAAMT,IAAezD,CAAI,IAAIA,IAAOA,IAAO,GAAGiE,IAAQ,CAAC;AAC5E;AAAA,QACF,KAAK;AACH,UAAAC,IAAOT,IAAezD;AACtB;AAAA,QACF,KAAK,YAAY;AACf,gBAAMmE,IAAe,KAAK,OAAOF,IAAQ,KAAKjE,CAAI,IAAIA;AACtD,UAAAkE,IAAO,KAAK,IAAIC,IAAgBV,IAAezD,GAAOiE,IAAQ,CAAC;AAC/D;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AACH,UAAAD,EAAM,eAAA,GACNzB,EAAW3F,EAASuG,EAASM,CAAY,EAAE,GAAG,CAAC;AAC/C;AAAA,QACF;AACE;AAAA,MAAA;AAGJ,MAAAO,EAAM,eAAA,GACNL,GAAYO,CAAI;AAAA,IAClB,GAEM,CAACE,IAAMC,EAAO,IAAInC,EAAS,EAAK,GAEhCoC,IAAehC,EAAQ,MAAM;AACjC,UAAI,CAACpB,EAAS,QAAO;AACrB,YAAMqD,IAAQ5F,EAAWuC,CAAO;AAChC,UAAI,CAACqD,EAAO,QAAO;AACnB,YAAM3E,IAAQR,GAAciD,GAAYkC,CAAK;AAC7C,aAAO,EAAE,OAAA3E,GAAO,IAAID,GAAQC,CAAK,GAAG,KAAKC,GAASD,CAAK,EAAA;AAAA,IACzD,GAAG,CAACsB,GAASmB,CAAU,CAAC,GAElBmC,KACJ,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKjB;AAAA,QACL,MAAK;AAAA,QACL,cAAYjF,EAAE,sCAAsC,iBAAiB;AAAA,QACrE,WAAWwF;AAAA,QACX,WAAU;AAAA,QAET,UAAAZ,EAAS,IAAI,CAACuB,GAASC,MAAM;AAC5B,gBAAMC,IAAW,KAAK,MAAMD,IAAI3E,CAAI,IAAIA;AAExC,iBADqB2E,MAAMC,IAEzB,gBAAAH,EAAC,OAAA,EAAY,MAAK,OAAM,WAAU,eAC/B,UAAAtB,EAAS,MAAMyB,GAAUA,IAAW5E,CAAI,EAAE,IAAI,CAACuD,GAAGsB,OAAM;AACvD,kBAAMC,IAAMF,IAAWC,IACjBE,IAAMxB,EAAE,IAAI,YAAA,MAAkBF,EAAW,YAAA;AAC/C,mBACE,gBAAAoB;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,iBAAeM;AAAA,gBACf,cAAYxG,EAAE,qCAAqC,EAAE,MAAMgF,EAAE,MAAM,KAAKA,EAAE,KAAK;AAAA,gBAC/E,UAAUuB,MAAQrB,IAAe,IAAI;AAAA,gBACrC,SAAS,MAAM;AACb,kBAAI3B,MACJS,EAAW3F,EAAS2G,EAAE,GAAG,CAAC,GAC1BG,EAAgBoB,CAAG;AAAA,gBACrB;AAAA,gBACA,WAAW3E,GAAe,EAAE,UAAU4E,GAAK;AAAA,gBAK3C,OAAO,EAAG,eAA0BxB,EAAE,IAAA;AAAA,gBAErC,cACC,gBAAAkB,EAACO,IAAA,EAAM,eAAY,QAAO,WAAU,kGAAiG,IACnI;AAAA,cAAA;AAAA,cAnBCzB,EAAE;AAAA,YAAA;AAAA,UAsBb,CAAC,EAAA,GA5BOoB,CA6BV,IACE;AAAA,QACN,CAAC;AAAA,MAAA;AAAA,IAAA,GAICM,KAAe3D,IAAU,OAC7B,gBAAA4D,EAAAC,IAAA,EACE,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,QAAA,gBAAAT,EAAC,SAAA,EAAM,SAAS,GAAG5C,CAAQ,QAAQ,WAAU,0EAC1C,UAAAtD,EAAE,6BAA6B,KAAK,EAAA,CACvC;AAAA,QACA,gBAAAkG,EAAC,OAAA,EAAI,KAAI,OACP,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI,GAAG5C,CAAQ;AAAA,YACf,MAAK;AAAA,YACL,OAAOa;AAAA,YACP,UAAUZ;AAAA,YACV,UAAU,CAACsD,MAAMzC,EAAYyC,EAAE,OAAO,KAAK;AAAA,YAC3C,QAAQlC;AAAA,YACR,WAAW,GAAG1C,EAAiB,IAAIoC,KAAW,gCAAgC,8BAA8B;AAAA,UAAA;AAAA,QAAA,EAC9G,CACF;AAAA,MAAA,GACF;AAAA,MAEA,gBAAAsC,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,OAAO9G,EAAE,6BAA6B,KAAK;AAAA,YAC3C,UAAS;AAAA,YACT,KAAK;AAAA,YAAG,KAAK;AAAA,YACb,OAAO8D,EAAW;AAAA,YAClB,UAAU,CAACvF,MAAMyF,EAAW,EAAE,GAAGF,GAAY,GAAAvF,GAAG;AAAA,YAChD,aAAa,CAACwI,MAAM,KAAKA,CAAC;AAAA,YAC1B,UAAUxD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,gBAAA2C;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,OAAO9G,EAAE,oCAAoC,YAAY;AAAA,YACzD,UAAU,iCAAiC8D,EAAW,CAAC,OAAOA,EAAW,CAAC,WAAWA,EAAW,CAAC,SAASA,EAAW,CAAC;AAAA,YACtH,KAAK;AAAA,YAAG,KAAK;AAAA,YACb,OAAOA,EAAW;AAAA,YAClB,UAAU,CAACkB,MAAMhB,EAAW,EAAE,GAAGF,GAAY,GAAAkB,GAAG;AAAA,YAChD,aAAa,CAAC+B,MAAM,KAAKA,CAAC;AAAA,YAC1B,UAAUxD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,gBAAA2C;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,OAAO9G,EAAE,mCAAmC,WAAW;AAAA,YACvD,UAAU,iCAAiC8D,EAAW,CAAC,IAAIA,EAAW,CAAC,cAAcA,EAAW,CAAC,IAAIA,EAAW,CAAC,eAAeA,EAAW,CAAC,IAAIA,EAAW,CAAC;AAAA,YAC5J,KAAK;AAAA,YAAG,KAAK;AAAA,YACb,OAAOA,EAAW;AAAA,YAClB,UAAU,CAAC/E,MAAMiF,EAAW,EAAE,GAAGF,GAAY,GAAA/E,GAAG;AAAA,YAChD,aAAa,CAACgI,MAAM,KAAKA,CAAC;AAAA,YAC1B,UAAUxD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEXd,IACC,gBAAAkE,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,UAAA,gBAAAT,EAAC,WAAM,WAAU,0EACd,UAAAlG,EAAE,iCAAiC,SAAS,GAC/C;AAAA,UACA,gBAAA2G,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,iFAAiFpE,EAAuB;AAAA,gBACnH,eAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAEd,gBAAAoE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBAMV,OAAO;AAAA,kBACJ,sBAAiC,kCAAkCpC,EAAW,CAAC,IAAIA,EAAW,CAAC,KAAKA,EAAW,CAAC,aAAaA,EAAW,CAAC,IAAIA,EAAW,CAAC,KAAKA,EAAW,CAAC;AAAA,gBAAA;AAAA,gBAE7K,eAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAEd,gBAAAoC;AAAA,cAACc;AAAA,cAAA;AAAA,gBACC,KAAK;AAAA,gBAAG,KAAK;AAAA,gBAAK,MAAM;AAAA,gBACxB,OAAO,CAAC,KAAK,MAAMlD,EAAW,IAAI,GAAG,CAAC;AAAA,gBACtC,eAAe,CAAC,CAACiD,CAAC,MAAM/C,EAAW,EAAE,GAAGF,GAAY,GAAGiD,IAAI,KAAK;AAAA,gBAChE,cAAY/G,EAAE,iCAAiC,SAAS;AAAA,gBACxD,aAAa,CAAC+G,MAAM,GAAGA,CAAC;AAAA,gBACxB,UAAUxD;AAAA,gBACV,WAAWrB;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IACE;AAAA,MAAA,GACN;AAAA,MAEC6D,sBACE,OAAA,EAAI,WAAU,2FAA0F,MAAK,UAAS,aAAU,UAC/H,UAAA;AAAA,QAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,mBACb,UAAAlG,EAAE,uCAAuC,EAAE,OAAO+F,EAAa,MAAM,QAAQ,CAAC,EAAA,CAAG,GACpF;AAAA,0BACCkB,IAAA,EAAc,OAAM,MAAK,QAAQlB,EAAa,IAAI,GAAA/F,GAAM;AAAA,0BACxDiH,IAAA,EAAc,OAAM,OAAM,QAAQlB,EAAa,KAAK,GAAA/F,EAAA,CAAM;AAAA,MAAA,EAAA,CAC7D,IACE;AAAA,MAEJ,gBAAA2G,EAAC,OAAA,EAAI,WAAU,sDACb,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YAIV,OAAO,EAAG,eAA0B/G,EAAS2E,CAAU,EAAA;AAAA,YACvD,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,0BAEb,QAAA,EAAK,WAAU,0FACb,UAAA5D,EAAa4D,GAAY3D,CAAM,EAAA,CAClC;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,GACF,GAGI+G,IACJ,gBAAAP,EAAC,OAAA,EAAI,WAAW5D,IAAUhB,KAAwBF,IAC/C,UAAA;AAAA,MAAAoE;AAAA,MACAS;AAAA,IAAA,GACH;AAGF,WAAI5D,OAAY,WAEZ,gBAAAoD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAA5D;AAAA,QACA,IAAIgB;AAAA,QACJ,WAAAN;AAAA,QACA,oBAAkBE,EAAI,eAAe;AAAA,QACrC,gBAAcA,EAAI,WAAW;AAAA,QAC7B,iBAAeK,KAAqB;AAAA,QACpC,eAAY;AAAA,QAEX,UAAA2D;AAAA,MAAA;AAAA,IAAA,sBAMJC,EAAQ,MAAR,EAAa,MAAAtB,IAAY,cAAcC,IACtC,UAAA;AAAA,MAAA,gBAAAI,EAACiB,EAAQ,SAAR,EAAgB,SAAO,IAAC,UAAU5D,GACjC,UAAA,gBAAAoD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAArE;AAAA,UACA,MAAK;AAAA,UACL,IAAIgB;AAAA,UACJ,oBAAkBJ,EAAI,eAAe;AAAA,UACrC,gBAAcA,EAAI,WAAW;AAAA,UAC7B,WAAWxB,GAAgB,EAAE,MAAAkB,GAAM,WAAAI,GAAW;AAAA,UAC9C,eAAY;AAAA,UAEZ,UAAA;AAAA,YAAA,gBAAAkD;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,yIAAyInD,IAAU,KAAK,yBAAyB;AAAA,gBAC5L,eAAY;AAAA,gBAIZ,OAAO,EAAG,eAA0B5D,EAAS2E,CAAU,EAAA;AAAA,cAAE;AAAA,YAAA;AAAA,YAE1Df,IAAU,OACT,gBAAAmD,EAAC,QAAA,EAAK,WAAU,6CACb,UAAAhG,EAAa4D,GAAY3D,CAAM,EAAA,CAClC;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,GAGN;AAAA,MACA,gBAAA+F,EAACiB,EAAQ,QAAR,EACC,4BAACA,EAAQ,SAAR,EAAgB,YAAY,GAAG,OAAM,SAAQ,WAAWnF,IACtD,aACH,EAAA,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAG,GAAY,cAAc;AAE1B,SAAS8E,GAAc,EAAE,OAAAG,GAAO,QAAAC,GAAQ,GAAArH,KAAuF;AAC7H,SACE,gBAAA2G,EAAC,QAAA,EAAK,WAAU,6DACd,UAAA;AAAA,IAAA,gBAAAT,EAAC,UAAK,OAAO,8CAA8CkB,CAAK,IAAI,WAAU,kCAC3E,UAAAA,EAAA,CACH;AAAA,IACCC,IACC,gBAAAnB,EAACO,IAAA,EAAM,eAAY,QAAO,WAAU,qCAAA,CAAqC,IAEzE,gBAAAP,EAACoB,IAAA,EAAE,eAAY,QAAO,WAAU,0CAAyC;AAAA,IAE3E,gBAAApB,EAAC,QAAA,EAAK,WAAU,cACb,UAAAmB,IAASrH,EAAE,sCAAsC,MAAM,IAAIA,EAAE,sCAAsC,MAAM,EAAA,CAC5G;AAAA,EAAA,GACF;AAEJ;AAEA,SAAS8G,EAAmB;AAAA,EAC1B,OAAAS;AAAA,EACA,UAAAC;AAAA,EACA,KAAA1I;AAAA,EACA,KAAAD;AAAA,EACA,OAAAwB;AAAA,EACA,UAAAmC;AAAA,EACA,aAAAiF;AAAA,EACA,UAAA5E;AACF,GASG;AACD,SACE,gBAAA8D,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,IAAA,gBAAAT,EAAC,SAAA,EAAM,WAAU,0EAA0E,UAAAqB,GAAM;AAAA,IACjG,gBAAAZ,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,MAAA,gBAAAT;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UAMV,OAAO,EAAG,qBAAgCsB,EAAA;AAAA,UAC1C,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,gBAAAtB;AAAA,QAACc;AAAA,QAAA;AAAA,UACC,KAAAlI;AAAA,UAAU,KAAAD;AAAA,UAAU,MAAM;AAAA,UAC1B,OAAO,CAACwB,CAAK;AAAA,UACb,eAAe,CAAC,CAAC0G,CAAC,MAAMvE,EAASuE,CAAC;AAAA,UAClC,cAAYQ;AAAA,UACZ,aAAAE;AAAA,UACA,UAAA5E;AAAA,UACA,WAAWX;AAAA,QAAA;AAAA,MAAA;AAAA,IACb,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as s, jsxs as
|
|
1
|
+
import { jsx as s, jsxs as g } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as Fe, useContext as De, useState as V, useMemo as J, useRef as B, useLayoutEffect as je, useEffect as Pe } from "react";
|
|
3
3
|
import * as z from "@radix-ui/react-popover";
|
|
4
4
|
import { R as $e, _ as r, P as Ae } from "./index-4xgbg-sn.js";
|
|
@@ -20,9 +20,9 @@ const Ke = S(
|
|
|
20
20
|
{
|
|
21
21
|
variants: {
|
|
22
22
|
size: {
|
|
23
|
-
sm: "ds:text-[var(--font-size-sm)]",
|
|
24
|
-
md: "ds:text-[var(--font-size-base)]",
|
|
25
|
-
lg: "ds:text-[var(--font-size-lg)]"
|
|
23
|
+
sm: "ds:text-[length:var(--font-size-sm)]",
|
|
24
|
+
md: "ds:text-[length:var(--font-size-base)]",
|
|
25
|
+
lg: "ds:text-[length:var(--font-size-lg)]"
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
defaultVariants: {
|
|
@@ -73,9 +73,9 @@ const Ke = S(
|
|
|
73
73
|
{
|
|
74
74
|
variants: {
|
|
75
75
|
size: {
|
|
76
|
-
sm: "ds:min-h-8 ds:ps-3 ds:pe-3 ds:text-[var(--font-size-sm)]",
|
|
77
|
-
md: "ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:text-[var(--font-size-base)]",
|
|
78
|
-
lg: "ds:min-h-12 ds:ps-4 ds:pe-4 ds:text-[var(--font-size-lg)]"
|
|
76
|
+
sm: "ds:min-h-8 ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-sm)]",
|
|
77
|
+
md: "ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-base)]",
|
|
78
|
+
lg: "ds:min-h-12 ds:ps-4 ds:pe-4 ds:text-[length:var(--font-size-lg)]"
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
81
|
defaultVariants: {
|
|
@@ -97,7 +97,7 @@ function Ye({
|
|
|
97
97
|
size: w,
|
|
98
98
|
onSelect: R
|
|
99
99
|
}) {
|
|
100
|
-
return Ae((E) => E.filtered.count) > 0 ? null : /* @__PURE__ */
|
|
100
|
+
return Ae((E) => E.filtered.count) > 0 ? null : /* @__PURE__ */ g(
|
|
101
101
|
r.Item,
|
|
102
102
|
{
|
|
103
103
|
value: `__combobox-create__${I}`,
|
|
@@ -141,7 +141,7 @@ const Y = Fe(function({
|
|
|
141
141
|
className: de,
|
|
142
142
|
"aria-label": q
|
|
143
143
|
}, ie) {
|
|
144
|
-
const { t:
|
|
144
|
+
const { t: v } = Oe(), l = Ve(), p = De(Be) !== null, [le, ce] = V(
|
|
145
145
|
m ?? w ?? ""
|
|
146
146
|
), K = m !== void 0, x = K ? m : le, j = J(
|
|
147
147
|
() => i.find((e) => e.value === x),
|
|
@@ -153,7 +153,7 @@ const Y = Fe(function({
|
|
|
153
153
|
}), Pe(() => {
|
|
154
154
|
c || d(b);
|
|
155
155
|
}, [b, c]);
|
|
156
|
-
const fe = oe ?? (p ? l.id : void 0), P = (p ? l.disabled : !1) || !!Z, u = !!ee, pe = (p ? l.required : !1) || !!se, X = p ? l.invalid : !1, be = X ? "error" : ne, he = p && l.describedBy ? l.describedBy : void 0,
|
|
156
|
+
const fe = oe ?? (p ? l.id : void 0), P = (p ? l.disabled : !1) || !!Z, u = !!ee, pe = (p ? l.required : !1) || !!se, X = p ? l.invalid : !1, be = X ? "error" : ne, he = p && l.describedBy ? l.describedBy : void 0, ge = H ?? v("ui.inputs.combobox.placeholder", "Search…"), ve = J(
|
|
157
157
|
() => (e, t, n) => {
|
|
158
158
|
if (y.current) return 1;
|
|
159
159
|
const h = T(e), o = T(t), O = n == null ? void 0 : n.map(T);
|
|
@@ -192,16 +192,16 @@ const Y = Fe(function({
|
|
|
192
192
|
}, Re = (e) => {
|
|
193
193
|
u && e || (a(e), e || d(b));
|
|
194
194
|
}, Ee = E && !!x && !P && !u, _e = Ue(i), A = Qe[f];
|
|
195
|
-
return /* @__PURE__ */ s(z.Root, { open: c, onOpenChange: Re, children: /* @__PURE__ */
|
|
195
|
+
return /* @__PURE__ */ s(z.Root, { open: c, onOpenChange: Re, children: /* @__PURE__ */ g(
|
|
196
196
|
r,
|
|
197
197
|
{
|
|
198
|
-
filter:
|
|
198
|
+
filter: ve,
|
|
199
199
|
shouldFilter: !0,
|
|
200
200
|
loop: !0,
|
|
201
201
|
label: q,
|
|
202
202
|
className: "ds:w-full",
|
|
203
203
|
children: [
|
|
204
|
-
/* @__PURE__ */ s(z.Anchor, { asChild: !0, children: /* @__PURE__ */
|
|
204
|
+
/* @__PURE__ */ s(z.Anchor, { asChild: !0, children: /* @__PURE__ */ g(
|
|
205
205
|
"div",
|
|
206
206
|
{
|
|
207
207
|
ref: M,
|
|
@@ -219,7 +219,7 @@ const Y = Fe(function({
|
|
|
219
219
|
onValueChange: ye,
|
|
220
220
|
id: fe,
|
|
221
221
|
name: te,
|
|
222
|
-
placeholder:
|
|
222
|
+
placeholder: ge,
|
|
223
223
|
disabled: P,
|
|
224
224
|
readOnly: u,
|
|
225
225
|
required: pe,
|
|
@@ -237,7 +237,7 @@ const Y = Fe(function({
|
|
|
237
237
|
"button",
|
|
238
238
|
{
|
|
239
239
|
type: "button",
|
|
240
|
-
"aria-label":
|
|
240
|
+
"aria-label": v("ui.inputs.combobox.clear", "Clear selection"),
|
|
241
241
|
onClick: we,
|
|
242
242
|
onPointerDown: (e) => e.stopPropagation(),
|
|
243
243
|
className: [
|
|
@@ -267,12 +267,12 @@ const Y = Fe(function({
|
|
|
267
267
|
sideOffset: 4,
|
|
268
268
|
align: "start",
|
|
269
269
|
className: Me(),
|
|
270
|
-
children: /* @__PURE__ */
|
|
271
|
-
/* @__PURE__ */ s(r.Empty, { className: Je, children: re ??
|
|
270
|
+
children: /* @__PURE__ */ g(r.List, { className: We, children: [
|
|
271
|
+
/* @__PURE__ */ s(r.Empty, { className: Je, children: re ?? v("ui.inputs.combobox.empty", "No results found") }),
|
|
272
272
|
_e.map(({ group: e, items: t }, n) => {
|
|
273
273
|
const h = t.map((o) => {
|
|
274
274
|
const O = o.value === x;
|
|
275
|
-
return /* @__PURE__ */
|
|
275
|
+
return /* @__PURE__ */ g(
|
|
276
276
|
r.Item,
|
|
277
277
|
{
|
|
278
278
|
value: o.value,
|
|
@@ -309,7 +309,7 @@ const Y = Fe(function({
|
|
|
309
309
|
Ye,
|
|
310
310
|
{
|
|
311
311
|
search: C,
|
|
312
|
-
label:
|
|
312
|
+
label: v("ui.inputs.combobox.create", 'Create "{{value}}"', {
|
|
313
313
|
value: C
|
|
314
314
|
}),
|
|
315
315
|
iconClass: A,
|
|
@@ -346,4 +346,4 @@ export {
|
|
|
346
346
|
Q as d,
|
|
347
347
|
Le as e
|
|
348
348
|
};
|
|
349
|
-
//# sourceMappingURL=combobox.agent-
|
|
349
|
+
//# sourceMappingURL=combobox.agent-9w6W1Jct.js.map
|