@alfadocs/ui-kit 0.1.0 → 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.
Files changed (216) hide show
  1. package/dist/_chunks/{agenda-card-Bld47Eul.js → agenda-card-DXOgg8IX.js} +3 -3
  2. package/dist/_chunks/{agenda-card-Bld47Eul.js.map → agenda-card-DXOgg8IX.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-D86cNIJ0.js → agenda-tray-DEO8XL8V.js} +4 -4
  4. package/dist/_chunks/{agenda-tray-D86cNIJ0.js.map → agenda-tray-DEO8XL8V.js.map} +1 -1
  5. package/dist/_chunks/{ai-prompt-input-CdYwt2VP.js → ai-prompt-input-8IShJ-GX.js} +3 -3
  6. package/dist/_chunks/{ai-prompt-input-CdYwt2VP.js.map → ai-prompt-input-8IShJ-GX.js.map} +1 -1
  7. package/dist/_chunks/{audio-recorder-D2UEBF9B.js → audio-recorder-BvisG0Wt.js} +4 -4
  8. package/dist/_chunks/{audio-recorder-D2UEBF9B.js.map → audio-recorder-BvisG0Wt.js.map} +1 -1
  9. package/dist/_chunks/{autocomplete.agent-Bi6CiRKa.js → autocomplete.agent-BmrpzsfW.js} +2 -2
  10. package/dist/_chunks/autocomplete.agent-BmrpzsfW.js.map +1 -0
  11. package/dist/_chunks/{avatar-BAhxbDEu.js → avatar-DTQY5qIZ.js} +16 -16
  12. package/dist/_chunks/avatar-DTQY5qIZ.js.map +1 -0
  13. package/dist/_chunks/{badge-zDghajh8.js → badge-BbbBRweN.js} +2 -2
  14. package/dist/_chunks/badge-BbbBRweN.js.map +1 -0
  15. package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js → balance-cell-renderer-DjR0rPS6.js} +7 -7
  16. package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js.map → balance-cell-renderer-DjR0rPS6.js.map} +1 -1
  17. package/dist/_chunks/{button-DmiGFnNA.js → button-7dTew-IV.js} +4 -4
  18. package/dist/_chunks/button-7dTew-IV.js.map +1 -0
  19. package/dist/_chunks/{chat-container-Co8HpB64.js → chat-container-ChdJTH0J.js} +2 -2
  20. package/dist/_chunks/{chat-container-Co8HpB64.js.map → chat-container-ChdJTH0J.js.map} +1 -1
  21. package/dist/_chunks/{chat-input-3rstZhHR.js → chat-input-C-B4snVJ.js} +2 -2
  22. package/dist/_chunks/{chat-input-3rstZhHR.js.map → chat-input-C-B4snVJ.js.map} +1 -1
  23. package/dist/_chunks/{chat-message-dDMVSYBs.js → chat-message-cFNbQYRH.js} +3 -3
  24. package/dist/_chunks/{chat-message-dDMVSYBs.js.map → chat-message-cFNbQYRH.js.map} +1 -1
  25. package/dist/_chunks/{color-picker-OKKF3Dww.js → color-picker-DkMFcK2m.js} +74 -74
  26. package/dist/_chunks/color-picker-DkMFcK2m.js.map +1 -0
  27. package/dist/_chunks/{combobox.agent-CfeB-IZ1.js → combobox.agent-9w6W1Jct.js} +20 -20
  28. package/dist/_chunks/combobox.agent-9w6W1Jct.js.map +1 -0
  29. package/dist/_chunks/{command-palette.agent-XLfSGHCL.js → command-palette.agent-Dg7jhOIc.js} +2 -2
  30. package/dist/_chunks/command-palette.agent-Dg7jhOIc.js.map +1 -0
  31. package/dist/_chunks/{date-picker-DXx8oSJb.js → date-picker-0WQ98ZC0.js} +2 -2
  32. package/dist/_chunks/{date-picker-DXx8oSJb.js.map → date-picker-0WQ98ZC0.js.map} +1 -1
  33. package/dist/_chunks/{date-range-picker-C3CbY__H.js → date-range-picker-CtwEwoyr.js} +2 -2
  34. package/dist/_chunks/{date-range-picker-C3CbY__H.js.map → date-range-picker-CtwEwoyr.js.map} +1 -1
  35. package/dist/_chunks/{date-time-picker-Bn3FPeAc.js → date-time-picker-Df3OJ2_C.js} +6 -6
  36. package/dist/_chunks/date-time-picker-Df3OJ2_C.js.map +1 -0
  37. package/dist/_chunks/{description-list-B1CL3RTG.js → description-list-Bk3p71qY.js} +2 -2
  38. package/dist/_chunks/{description-list-B1CL3RTG.js.map → description-list-Bk3p71qY.js.map} +1 -1
  39. package/dist/_chunks/{dialog.agent-D9WeIWi2.js → dialog.agent-CtMkDinJ.js} +2 -2
  40. package/dist/_chunks/{dialog.agent-D9WeIWi2.js.map → dialog.agent-CtMkDinJ.js.map} +1 -1
  41. package/dist/_chunks/{empty-state-DV96gCnp.js → empty-state-DPUnQp0A.js} +2 -2
  42. package/dist/_chunks/{empty-state-DV96gCnp.js.map → empty-state-DPUnQp0A.js.map} +1 -1
  43. package/dist/_chunks/{file-upload.agent-DYFnqdxw.js → file-upload.agent-DVMxMeDA.js} +3 -3
  44. package/dist/_chunks/file-upload.agent-DVMxMeDA.js.map +1 -0
  45. package/dist/_chunks/{floating-action-button-RigP2E7o.js → floating-action-button-DjRhFQdd.js} +4 -4
  46. package/dist/_chunks/floating-action-button-DjRhFQdd.js.map +1 -0
  47. package/dist/_chunks/{freemium-paywall-D0GiUFOe.js → freemium-paywall-CCsX3GhK.js} +3 -3
  48. package/dist/_chunks/{freemium-paywall-D0GiUFOe.js.map → freemium-paywall-CCsX3GhK.js.map} +1 -1
  49. package/dist/_chunks/{header-CW2oRd5H.js → header-CVQxeLc_.js} +2 -2
  50. package/dist/_chunks/{header-CW2oRd5H.js.map → header-CVQxeLc_.js.map} +1 -1
  51. package/dist/_chunks/{icon-button-C482ii4y.js → icon-button-SWpSs9S6.js} +2 -2
  52. package/dist/_chunks/{icon-button-C482ii4y.js.map → icon-button-SWpSs9S6.js.map} +1 -1
  53. package/dist/_chunks/{key-value-pair-DDhSYdDL.js → key-value-pair-Cm-pSE6k.js} +2 -2
  54. package/dist/_chunks/{key-value-pair-DDhSYdDL.js.map → key-value-pair-Cm-pSE6k.js.map} +1 -1
  55. package/dist/_chunks/{leo-sidebar-gXXcGPKk.js → leo-sidebar-SqGAp1vx.js} +9 -9
  56. package/dist/_chunks/{leo-sidebar-gXXcGPKk.js.map → leo-sidebar-SqGAp1vx.js.map} +1 -1
  57. package/dist/_chunks/{message-card-DID3cXUW.js → message-card-B0oGrI3i.js} +4 -4
  58. package/dist/_chunks/{message-card-DID3cXUW.js.map → message-card-B0oGrI3i.js.map} +1 -1
  59. package/dist/_chunks/{message-tray-CVMLBnVp.js → message-tray-DZ6oZ0cs.js} +4 -4
  60. package/dist/_chunks/{message-tray-CVMLBnVp.js.map → message-tray-DZ6oZ0cs.js.map} +1 -1
  61. package/dist/_chunks/{multi-select.agent-BUKYZJfp.js → multi-select.agent-BDEVGMmW.js} +19 -19
  62. package/dist/_chunks/multi-select.agent-BDEVGMmW.js.map +1 -0
  63. package/dist/_chunks/{notification-card-BZ33fq8H.js → notification-card-C73GqjHH.js} +3 -3
  64. package/dist/_chunks/{notification-card-BZ33fq8H.js.map → notification-card-C73GqjHH.js.map} +1 -1
  65. package/dist/_chunks/{notification-tray-CnEd7B2q.js → notification-tray-a8a_nut-.js} +4 -4
  66. package/dist/_chunks/{notification-tray-CnEd7B2q.js.map → notification-tray-a8a_nut-.js.map} +1 -1
  67. package/dist/_chunks/{number-input-D7rSa_ef.js → number-input-DFQtl5K2.js} +4 -4
  68. package/dist/_chunks/number-input-DFQtl5K2.js.map +1 -0
  69. package/dist/_chunks/{otp-input-C9R9sC74.js → otp-input-C2FdizHh.js} +14 -14
  70. package/dist/_chunks/otp-input-C2FdizHh.js.map +1 -0
  71. package/dist/_chunks/{pagination.agent-D75FB6XP.js → pagination.agent-sxokDphY.js} +15 -15
  72. package/dist/_chunks/pagination.agent-sxokDphY.js.map +1 -0
  73. package/dist/_chunks/{patient-shell-CGsmI5LJ.js → patient-shell-B4vKnuOf.js} +4 -4
  74. package/dist/_chunks/{patient-shell-CGsmI5LJ.js.map → patient-shell-B4vKnuOf.js.map} +1 -1
  75. package/dist/_chunks/{payment-form-l3j-gA-t.js → payment-form-175AzK-1.js} +20 -20
  76. package/dist/_chunks/payment-form-175AzK-1.js.map +1 -0
  77. package/dist/_chunks/{phone-input-ZWa_FU4R.js → phone-input-BavVyXxZ.js} +39 -39
  78. package/dist/_chunks/phone-input-BavVyXxZ.js.map +1 -0
  79. package/dist/_chunks/{popover-CMr1pTPO.js → popover-BWgOopjI.js} +3 -3
  80. package/dist/_chunks/popover-BWgOopjI.js.map +1 -0
  81. package/dist/_chunks/{privacy-lock-Br5k7Rul.js → privacy-lock-DWL7m_VT.js} +3 -3
  82. package/dist/_chunks/{privacy-lock-Br5k7Rul.js.map → privacy-lock-DWL7m_VT.js.map} +1 -1
  83. package/dist/_chunks/{react-day-picker-d0MHsyCj.js → react-day-picker-C04L_28V.js} +5 -5
  84. package/dist/_chunks/{react-day-picker-d0MHsyCj.js.map → react-day-picker-C04L_28V.js.map} +1 -1
  85. package/dist/_chunks/{rich-text-editor.agent-C1_E7_7t.js → rich-text-editor.agent-COSb5_2D.js} +4 -4
  86. package/dist/_chunks/rich-text-editor.agent-COSb5_2D.js.map +1 -0
  87. package/dist/_chunks/{select-DbxWF3O_.js → select-CQxhOXVE.js} +7 -7
  88. package/dist/_chunks/select-CQxhOXVE.js.map +1 -0
  89. package/dist/_chunks/{sheet-DyWqluiS.js → sheet-CKsuHuHB.js} +2 -2
  90. package/dist/_chunks/{sheet-DyWqluiS.js.map → sheet-CKsuHuHB.js.map} +1 -1
  91. package/dist/_chunks/{sidebar-B52iGGNV.js → sidebar-CiEpSH9e.js} +6 -6
  92. package/dist/_chunks/sidebar-CiEpSH9e.js.map +1 -0
  93. package/dist/_chunks/{sign-in-with-alfadocs-button-BU7MP5Hg.js → sign-in-with-alfadocs-button-BDErAgG2.js} +2 -2
  94. package/dist/_chunks/{sign-in-with-alfadocs-button-BU7MP5Hg.js.map → sign-in-with-alfadocs-button-BDErAgG2.js.map} +1 -1
  95. package/dist/_chunks/{signature-capture.agent-4htVctJ2.js → signature-capture.agent-C38VPXxg.js} +19 -19
  96. package/dist/_chunks/signature-capture.agent-C38VPXxg.js.map +1 -0
  97. package/dist/_chunks/{slider-n8JWpJvT.js → slider-BVBlOW_l.js} +2 -2
  98. package/dist/_chunks/slider-BVBlOW_l.js.map +1 -0
  99. package/dist/_chunks/{slot-grid-BRAkqChA.js → slot-grid-B4WvLEwT.js} +55 -55
  100. package/dist/_chunks/slot-grid-B4WvLEwT.js.map +1 -0
  101. package/dist/_chunks/{sparkline.agent-BLY1IMyW.js → sparkline.agent-C_xp3NRB.js} +2 -2
  102. package/dist/_chunks/{sparkline.agent-BLY1IMyW.js.map → sparkline.agent-C_xp3NRB.js.map} +1 -1
  103. package/dist/_chunks/{stepper-calendar-vtWwa2bY.js → stepper-calendar-BZUJpj8i.js} +6 -6
  104. package/dist/_chunks/stepper-calendar-BZUJpj8i.js.map +1 -0
  105. package/dist/_chunks/{tabs.agent-BDUlyPbJ.js → tabs.agent-sQAHxebC.js} +5 -5
  106. package/dist/_chunks/tabs.agent-sQAHxebC.js.map +1 -0
  107. package/dist/_chunks/{task-tray-BnpiodZ4.js → task-tray-CWvVxWM0.js} +3 -3
  108. package/dist/_chunks/{task-tray-BnpiodZ4.js.map → task-tray-CWvVxWM0.js.map} +1 -1
  109. package/dist/_chunks/{text-area-BqbruBWx.js → text-area-iPDv7Nah.js} +10 -10
  110. package/dist/_chunks/text-area-iPDv7Nah.js.map +1 -0
  111. package/dist/_chunks/{theme-toggle-BHKMiORD.js → theme-toggle-CEaPghpm.js} +2 -2
  112. package/dist/_chunks/{theme-toggle-BHKMiORD.js.map → theme-toggle-CEaPghpm.js.map} +1 -1
  113. package/dist/_chunks/{time-picker-DbpAmPux.js → time-picker-Crc87DU3.js} +67 -67
  114. package/dist/_chunks/time-picker-Crc87DU3.js.map +1 -0
  115. package/dist/_chunks/{timeline-vjsUeuq1.js → timeline-Ym2DRmtu.js} +2 -2
  116. package/dist/_chunks/{timeline-vjsUeuq1.js.map → timeline-Ym2DRmtu.js.map} +1 -1
  117. package/dist/_chunks/{toast-DllSITLf.js → toast-DoMNrzwm.js} +2 -2
  118. package/dist/_chunks/{toast-DllSITLf.js.map → toast-DoMNrzwm.js.map} +1 -1
  119. package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js → tooth-scheme.agent-BlDyu-Gx.js} +2 -2
  120. package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js.map → tooth-scheme.agent-BlDyu-Gx.js.map} +1 -1
  121. package/dist/_chunks/{warning-stack-B9N9yWet.js → warning-stack-5KROOw9M.js} +2 -2
  122. package/dist/_chunks/{warning-stack-B9N9yWet.js.map → warning-stack-5KROOw9M.js.map} +1 -1
  123. package/dist/_chunks/{workflow-map-gBhL_Wrs.js → workflow-map-D4sjYv2d.js} +6 -6
  124. package/dist/_chunks/{workflow-map-gBhL_Wrs.js.map → workflow-map-D4sjYv2d.js.map} +1 -1
  125. package/dist/agent-catalog.json +1 -1
  126. package/dist/components/agenda-card/index.js +1 -1
  127. package/dist/components/agenda-tray/index.js +1 -1
  128. package/dist/components/ai-prompt-input/index.js +1 -1
  129. package/dist/components/audio-recorder/index.js +1 -1
  130. package/dist/components/autocomplete/index.js +1 -1
  131. package/dist/components/avatar/index.js +1 -1
  132. package/dist/components/badge/index.js +1 -1
  133. package/dist/components/button/index.js +2 -2
  134. package/dist/components/chat-container/index.js +1 -1
  135. package/dist/components/chat-input/index.js +1 -1
  136. package/dist/components/chat-message/index.js +1 -1
  137. package/dist/components/color-picker/index.js +1 -1
  138. package/dist/components/combobox/index.js +1 -1
  139. package/dist/components/command-palette/index.js +1 -1
  140. package/dist/components/data-table/index.js +1 -1
  141. package/dist/components/date-picker/index.js +1 -1
  142. package/dist/components/date-range-picker/index.js +1 -1
  143. package/dist/components/date-time-picker/index.js +1 -1
  144. package/dist/components/description-list/index.js +1 -1
  145. package/dist/components/dialog/index.js +1 -1
  146. package/dist/components/empty-state/index.js +1 -1
  147. package/dist/components/file-upload/index.js +1 -1
  148. package/dist/components/floating-action-button/index.js +1 -1
  149. package/dist/components/freemium-paywall/index.js +1 -1
  150. package/dist/components/header/index.js +1 -1
  151. package/dist/components/icon-button/index.js +1 -1
  152. package/dist/components/key-value-pair/index.js +1 -1
  153. package/dist/components/message-card/index.js +1 -1
  154. package/dist/components/message-tray/index.js +1 -1
  155. package/dist/components/multi-select/index.js +1 -1
  156. package/dist/components/notification-card/index.js +1 -1
  157. package/dist/components/notification-tray/index.js +1 -1
  158. package/dist/components/number-input/index.js +1 -1
  159. package/dist/components/otp-input/index.js +1 -1
  160. package/dist/components/pagination/index.js +1 -1
  161. package/dist/components/payment-form/index.js +1 -1
  162. package/dist/components/phone-input/index.js +1 -1
  163. package/dist/components/popover/index.js +1 -1
  164. package/dist/components/privacy-lock/index.js +1 -1
  165. package/dist/components/rich-text-editor/index.js +1 -1
  166. package/dist/components/select/index.js +1 -1
  167. package/dist/components/sheet/index.js +1 -1
  168. package/dist/components/sidebar/index.js +1 -1
  169. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  170. package/dist/components/signature-capture/index.js +1 -1
  171. package/dist/components/slider/index.js +1 -1
  172. package/dist/components/slot-grid/index.js +1 -1
  173. package/dist/components/sparkline/index.js +1 -1
  174. package/dist/components/stepper-calendar/index.js +1 -1
  175. package/dist/components/tabs/index.js +1 -1
  176. package/dist/components/task-tray/index.js +1 -1
  177. package/dist/components/text-area/index.js +1 -1
  178. package/dist/components/theme-toggle/index.js +1 -1
  179. package/dist/components/time-picker/index.js +1 -1
  180. package/dist/components/timeline/index.js +1 -1
  181. package/dist/components/toast/index.js +1 -1
  182. package/dist/components/tooth-scheme/index.js +1 -1
  183. package/dist/components/warning-stack/index.js +1 -1
  184. package/dist/components/workflow/index.js +1 -1
  185. package/dist/index.js +61 -61
  186. package/dist/patterns/leo-assistant/index.js +1 -1
  187. package/dist/patterns/patient-shell/index.js +1 -1
  188. package/dist/tokens.css +1 -1
  189. package/package.json +1 -1
  190. package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +0 -1
  191. package/dist/_chunks/avatar-BAhxbDEu.js.map +0 -1
  192. package/dist/_chunks/badge-zDghajh8.js.map +0 -1
  193. package/dist/_chunks/button-DmiGFnNA.js.map +0 -1
  194. package/dist/_chunks/color-picker-OKKF3Dww.js.map +0 -1
  195. package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +0 -1
  196. package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +0 -1
  197. package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +0 -1
  198. package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +0 -1
  199. package/dist/_chunks/floating-action-button-RigP2E7o.js.map +0 -1
  200. package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +0 -1
  201. package/dist/_chunks/number-input-D7rSa_ef.js.map +0 -1
  202. package/dist/_chunks/otp-input-C9R9sC74.js.map +0 -1
  203. package/dist/_chunks/pagination.agent-D75FB6XP.js.map +0 -1
  204. package/dist/_chunks/payment-form-l3j-gA-t.js.map +0 -1
  205. package/dist/_chunks/phone-input-ZWa_FU4R.js.map +0 -1
  206. package/dist/_chunks/popover-CMr1pTPO.js.map +0 -1
  207. package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +0 -1
  208. package/dist/_chunks/select-DbxWF3O_.js.map +0 -1
  209. package/dist/_chunks/sidebar-B52iGGNV.js.map +0 -1
  210. package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +0 -1
  211. package/dist/_chunks/slider-n8JWpJvT.js.map +0 -1
  212. package/dist/_chunks/slot-grid-BRAkqChA.js.map +0 -1
  213. package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +0 -1
  214. package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +0 -1
  215. package/dist/_chunks/text-area-BqbruBWx.js.map +0 -1
  216. package/dist/_chunks/time-picker-DbpAmPux.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { jsx as d, jsxs as h, Fragment as we } from "react/jsx-runtime";
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-n8JWpJvT.js";
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: de = !1,
231
- variant: le = "inline",
230
+ disabled: le = !1,
231
+ variant: de = "inline",
232
232
  compact: A = !0,
233
233
  className: D
234
- } = e, { t: x } = ye(), N = Pe(), ce = Ne(), M = N.id || ce, v = N.disabled || de, S = s !== void 0, [j, fe] = P(() => {
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 l = L(t);
238
- if (l) return l;
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 l = c ? t : { ...t, a: 1 };
250
- S || fe(l), n == null || n(B(l, i));
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), [g, q] = P(
268
+ ), Y = H(null), [x, q] = P(
269
269
  X >= 0 ? X : 0
270
270
  ), me = (t) => {
271
271
  var f;
272
- const l = (f = Y.current) == null ? void 0 : f.querySelectorAll('[role="gridcell"]');
273
- l != null && l[t] && (l[t].focus(), q(t));
274
- }, xe = (t) => {
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 l = y.length;
277
- let f = g;
276
+ const d = y.length;
277
+ let f = x;
278
278
  switch (t.key) {
279
279
  case "ArrowRight":
280
- f = (g + 1) % l;
280
+ f = (x + 1) % d;
281
281
  break;
282
282
  case "ArrowLeft":
283
- f = (g - 1 + l) % l;
283
+ f = (x - 1 + d) % d;
284
284
  break;
285
285
  case "ArrowDown":
286
- f = Math.min(g + u, l - 1);
286
+ f = Math.min(x + u, d - 1);
287
287
  break;
288
288
  case "ArrowUp":
289
- f = Math.max(g - u, 0);
289
+ f = Math.max(x - u, 0);
290
290
  break;
291
291
  case "Home":
292
- f = Math.floor(g / u) * u;
292
+ f = Math.floor(x / u) * u;
293
293
  break;
294
294
  case "End":
295
- f = Math.min(Math.floor(g / u) * u + u - 1, l - 1);
295
+ f = Math.min(Math.floor(x / u) * u + u - 1, d - 1);
296
296
  break;
297
297
  case "PageUp":
298
- f = g % u;
298
+ f = x % u;
299
299
  break;
300
300
  case "PageDown": {
301
- const Q = Math.floor((l - 1) / u) * u;
302
- f = Math.min(Q + g % u, l - 1);
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[g].hex));
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
- }, [ge, ve] = P(!1), z = F(() => {
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 l = Se(o, t);
318
- return { ratio: l, aa: Te(l), aaa: ze(l) };
319
- }, [b, o]), be = /* @__PURE__ */ d(
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": x("ui.inputs.colorPicker.paletteLabel", "Colour swatches"),
325
- onKeyDown: xe,
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, l) => {
328
- const f = Math.floor(l / u) * u;
329
- return l === f ? /* @__PURE__ */ d("div", { role: "row", className: "ds:contents", children: y.slice(f, f + u).map((k, Ce) => {
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__ */ d(
331
+ return /* @__PURE__ */ l(
332
332
  "div",
333
333
  {
334
334
  role: "gridcell",
335
335
  "aria-selected": R,
336
- "aria-label": x("ui.inputs.colorPicker.swatchLabel", { name: k.name, hex: k.hex }),
337
- tabIndex: Z === g ? 0 : -1,
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__ */ d(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
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
- }) }, l) : null;
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__ */ d("label", { htmlFor: `${M}-hex`, className: "ds:text-[var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: x("ui.inputs.colorPicker.hex", "Hex") }),
353
- /* @__PURE__ */ d("bdi", { dir: "ltr", children: /* @__PURE__ */ d(
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__ */ d(
367
+ /* @__PURE__ */ l(
368
368
  O,
369
369
  {
370
- label: x("ui.inputs.colorPicker.hue", "Hue"),
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__ */ d(
380
+ /* @__PURE__ */ l(
381
381
  O,
382
382
  {
383
- label: x("ui.inputs.colorPicker.saturation", "Saturation"),
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__ */ d(
393
+ /* @__PURE__ */ l(
394
394
  O,
395
395
  {
396
- label: x("ui.inputs.colorPicker.lightness", "Lightness"),
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__ */ d("label", { className: "ds:text-[var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: x("ui.inputs.colorPicker.opacity", "Opacity") }),
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__ */ d(
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__ */ d(
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__ */ d(
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": x("ui.inputs.colorPicker.opacity", "Opacity"),
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__ */ d("span", { className: "ds:tabular-nums", children: x("ui.inputs.colorPicker.contrastRatio", { ratio: z.ratio.toFixed(1) }) }),
445
- /* @__PURE__ */ d(te, { level: "AA", passes: z.aa, t: x }),
446
- /* @__PURE__ */ d(te, { level: "AAA", passes: z.aaa, t: x })
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__ */ d(
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__ */ d("span", { className: "ds:text-[var(--font-size-sm)] ds:text-[var(--muted-foreground)] ds:tabular-nums", children: B(o, i) })
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 le === "inline" ? /* @__PURE__ */ d(
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: ge, onOpenChange: ve, children: [
476
- /* @__PURE__ */ d(I.Trigger, { asChild: !0, disabled: v, children: /* @__PURE__ */ h(
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__ */ d(
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__ */ d("span", { className: "ds:text-start ds:truncate ds:tabular-nums", children: B(o, i) })
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__ */ d(I.Portal, { children: /* @__PURE__ */ d(I.Content, { sideOffset: 4, align: "start", className: _e, children: J }) })
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__ */ d("abbr", { title: `Web Content Accessibility Guidelines Level ${e}`, className: "ds:no-underline ds:font-medium", children: e }),
507
- a ? /* @__PURE__ */ d(ne, { "aria-hidden": "true", className: "ds:size-4 ds:text-[var(--success)]" }) : /* @__PURE__ */ d(Ae, { "aria-hidden": "true", className: "ds:size-4 ds:text-[var(--destructive)]" }),
508
- /* @__PURE__ */ d("span", { className: "ds:sr-only", children: a ? s("ui.inputs.colorPicker.contrastPass", "Pass") : s("ui.inputs.colorPicker.contrastFail", "Fail") })
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__ */ d("label", { className: "ds:text-[var(--font-size-xs)] ds:text-[var(--muted-foreground)]", children: e }),
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__ */ d(
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__ */ d(
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-OKKF3Dww.js.map
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":"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"}
@@ -1,4 +1,4 @@
1
- import { jsx as s, jsxs as v } from "react/jsx-runtime";
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__ */ v(
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: g } = Oe(), l = Ve(), p = De(Be) !== null, [le, ce] = V(
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, ve = H ?? g("ui.inputs.combobox.placeholder", "Search…"), ge = J(
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__ */ v(
195
+ return /* @__PURE__ */ s(z.Root, { open: c, onOpenChange: Re, children: /* @__PURE__ */ g(
196
196
  r,
197
197
  {
198
- filter: ge,
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__ */ v(
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: ve,
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": g("ui.inputs.combobox.clear", "Clear selection"),
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__ */ v(r.List, { className: We, children: [
271
- /* @__PURE__ */ s(r.Empty, { className: Je, children: re ?? g("ui.inputs.combobox.empty", "No results found") }),
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__ */ v(
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: g("ui.inputs.combobox.create", 'Create "{{value}}"', {
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-CfeB-IZ1.js.map
349
+ //# sourceMappingURL=combobox.agent-9w6W1Jct.js.map