@alfadocs/ui-kit-debug 1.67.0 → 1.68.0

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 (499) hide show
  1. package/dist/_chunks/{address-fields-CJtu7LQU.js → address-fields-BUPRs3n-.js} +3 -3
  2. package/dist/_chunks/{address-fields-CJtu7LQU.js.map → address-fields-BUPRs3n-.js.map} +1 -1
  3. package/dist/_chunks/{agenda-card-DR9gDdKp.js → agenda-card-BDuvreCe.js} +2 -2
  4. package/dist/_chunks/{agenda-card-DR9gDdKp.js.map → agenda-card-BDuvreCe.js.map} +1 -1
  5. package/dist/_chunks/{agenda-tray-DGB1Zup-.js → agenda-tray-CfwylhWf.js} +3 -3
  6. package/dist/_chunks/{agenda-tray-DGB1Zup-.js.map → agenda-tray-CfwylhWf.js.map} +1 -1
  7. package/dist/_chunks/{ai-credits-exhausted-notice-DfAgfZDF.js → ai-credits-exhausted-notice-Bg8NpW2K.js} +2 -2
  8. package/dist/_chunks/{ai-credits-exhausted-notice-DfAgfZDF.js.map → ai-credits-exhausted-notice-Bg8NpW2K.js.map} +1 -1
  9. package/dist/_chunks/{ai-permission-notice-qsdm4Sx4.js → ai-permission-notice-C00i6VhY.js} +2 -2
  10. package/dist/_chunks/{ai-permission-notice-qsdm4Sx4.js.map → ai-permission-notice-C00i6VhY.js.map} +1 -1
  11. package/dist/_chunks/{ai-prompt-input-DSGSe4LH.js → ai-prompt-input-DzgyoKyk.js} +141 -139
  12. package/dist/_chunks/ai-prompt-input-DzgyoKyk.js.map +1 -0
  13. package/dist/_chunks/{alert-DjsJMGRE.js → alert-9kEwDza3.js} +122 -112
  14. package/dist/_chunks/alert-9kEwDza3.js.map +1 -0
  15. package/dist/_chunks/{alia-sidebar-qe0quZkB.js → alia-sidebar-B06ZSOaF.js} +3 -3
  16. package/dist/_chunks/{alia-sidebar-qe0quZkB.js.map → alia-sidebar-B06ZSOaF.js.map} +1 -1
  17. package/dist/_chunks/{anamnesis-summary-card-CMzBLTiN.js → anamnesis-summary-card-DQ3iE1gD.js} +2 -2
  18. package/dist/_chunks/{anamnesis-summary-card-CMzBLTiN.js.map → anamnesis-summary-card-DQ3iE1gD.js.map} +1 -1
  19. package/dist/_chunks/{anamnesis-summary-rows-BQ_EokKz.js → anamnesis-summary-rows-CNK0fIJk.js} +392 -388
  20. package/dist/_chunks/anamnesis-summary-rows-CNK0fIJk.js.map +1 -0
  21. package/dist/_chunks/{appointment-card-CL32sux-.js → appointment-card-5JMWi9_f.js} +2 -2
  22. package/dist/_chunks/{appointment-card-CL32sux-.js.map → appointment-card-5JMWi9_f.js.map} +1 -1
  23. package/dist/_chunks/{appointment-peek-B5mcDcXt.js → appointment-peek-D5XCfYKu.js} +2 -2
  24. package/dist/_chunks/{appointment-peek-B5mcDcXt.js.map → appointment-peek-D5XCfYKu.js.map} +1 -1
  25. package/dist/_chunks/{appointment-timeline-CCqjORFb.js → appointment-timeline-VFP6HoXT.js} +4 -4
  26. package/dist/_chunks/{appointment-timeline-CCqjORFb.js.map → appointment-timeline-VFP6HoXT.js.map} +1 -1
  27. package/dist/_chunks/{appointment-tray-qtpJt8e0.js → appointment-tray-B3PDER3I.js} +3 -3
  28. package/dist/_chunks/{appointment-tray-qtpJt8e0.js.map → appointment-tray-B3PDER3I.js.map} +1 -1
  29. package/dist/_chunks/{audio-recorder-B11RR-rC.js → audio-recorder-4Ll0pwYK.js} +3 -3
  30. package/dist/_chunks/{audio-recorder-B11RR-rC.js.map → audio-recorder-4Ll0pwYK.js.map} +1 -1
  31. package/dist/_chunks/{auth-form-parts-DwUTH6YN.js → auth-form-parts-B40zvD-a.js} +2 -2
  32. package/dist/_chunks/{auth-form-parts-DwUTH6YN.js.map → auth-form-parts-B40zvD-a.js.map} +1 -1
  33. package/dist/_chunks/avatar-BPiPL7ND.js +199 -0
  34. package/dist/_chunks/avatar-BPiPL7ND.js.map +1 -0
  35. package/dist/_chunks/{balance-badge-cell-DZNthHO1.js → balance-badge-cell-BG3DMly4.js} +4 -4
  36. package/dist/_chunks/{balance-badge-cell-DZNthHO1.js.map → balance-badge-cell-BG3DMly4.js.map} +1 -1
  37. package/dist/_chunks/{bishop-score-CaNTrikJ.js → bishop-score-Df8nF1qg.js} +2 -2
  38. package/dist/_chunks/{bishop-score-CaNTrikJ.js.map → bishop-score-Df8nF1qg.js.map} +1 -1
  39. package/dist/_chunks/{booking-tTVxKPQY.js → booking-B1pDbERi.js} +377 -335
  40. package/dist/_chunks/booking-B1pDbERi.js.map +1 -0
  41. package/dist/_chunks/{calendar-BhN-jisv.js → calendar-BvOM8rG3.js} +2 -2
  42. package/dist/_chunks/{calendar-BhN-jisv.js.map → calendar-BvOM8rG3.js.map} +1 -1
  43. package/dist/_chunks/{calendar-workspace-MRrzcxAy.js → calendar-workspace-CYK1M83j.js} +18 -18
  44. package/dist/_chunks/{calendar-workspace-MRrzcxAy.js.map → calendar-workspace-CYK1M83j.js.map} +1 -1
  45. package/dist/_chunks/{chat-message-fRLZ95O5.js → chat-message-Be-9vIIQ.js} +2 -2
  46. package/dist/_chunks/{chat-message-fRLZ95O5.js.map → chat-message-Be-9vIIQ.js.map} +1 -1
  47. package/dist/_chunks/{clinical-note-card-BnFTIs6x.js → clinical-note-card-Caidqcwa.js} +2 -2
  48. package/dist/_chunks/{clinical-note-card-BnFTIs6x.js.map → clinical-note-card-Caidqcwa.js.map} +1 -1
  49. package/dist/_chunks/{color-picker-BsggJovx.js → color-picker-AcaWuKah.js} +99 -95
  50. package/dist/_chunks/color-picker-AcaWuKah.js.map +1 -0
  51. package/dist/_chunks/{combobox-U5yfO6o0.js → combobox-vF9O-QoG.js} +92 -83
  52. package/dist/_chunks/combobox-vF9O-QoG.js.map +1 -0
  53. package/dist/_chunks/{contact-profile-card-C4-OCshj.js → contact-profile-card-CAwwOqHl.js} +40 -40
  54. package/dist/_chunks/contact-profile-card-CAwwOqHl.js.map +1 -0
  55. package/dist/_chunks/{control-room-rail-DUerqHeo.js → control-room-rail-BB6rCDWI.js} +3 -3
  56. package/dist/_chunks/{control-room-rail-DUerqHeo.js.map → control-room-rail-BB6rCDWI.js.map} +1 -1
  57. package/dist/_chunks/{country-select-DF5Bd_mn.js → country-select-CSE2Zm_s.js} +2 -2
  58. package/dist/_chunks/{country-select-DF5Bd_mn.js.map → country-select-CSE2Zm_s.js.map} +1 -1
  59. package/dist/_chunks/dashboard-grid-7JzaiKnk.js +1487 -0
  60. package/dist/_chunks/dashboard-grid-7JzaiKnk.js.map +1 -0
  61. package/dist/_chunks/{data-table-COoCQ4n_.js → data-table-Cty4-Jht.js} +3 -3
  62. package/dist/_chunks/{data-table-COoCQ4n_.js.map → data-table-Cty4-Jht.js.map} +1 -1
  63. package/dist/_chunks/{dependent-selector-DBr1AhLg.js → dependent-selector-C4kOgO8b.js} +2 -2
  64. package/dist/_chunks/{dependent-selector-DBr1AhLg.js.map → dependent-selector-C4kOgO8b.js.map} +1 -1
  65. package/dist/_chunks/{document-preview-VyQOjFVL.js → document-preview-513f3iPn.js} +4 -4
  66. package/dist/_chunks/{document-preview-VyQOjFVL.js.map → document-preview-513f3iPn.js.map} +1 -1
  67. package/dist/_chunks/{document-scanner-CXH_GYh4.js → document-scanner-Bd3wbzpI.js} +2 -2
  68. package/dist/_chunks/{document-scanner-CXH_GYh4.js.map → document-scanner-Bd3wbzpI.js.map} +1 -1
  69. package/dist/_chunks/{editable-description-ChGNdYY8.js → editable-description-DnAFi360.js} +2 -2
  70. package/dist/_chunks/{editable-description-ChGNdYY8.js.map → editable-description-DnAFi360.js.map} +1 -1
  71. package/dist/_chunks/{entity-summary-Bj-Wxq7Y.js → entity-summary-C2B8yNmc.js} +4 -4
  72. package/dist/_chunks/{entity-summary-Bj-Wxq7Y.js.map → entity-summary-C2B8yNmc.js.map} +1 -1
  73. package/dist/_chunks/{error-summary-PUE5Zxp9.js → error-summary-mGxIyDAY.js} +2 -2
  74. package/dist/_chunks/{error-summary-PUE5Zxp9.js.map → error-summary-mGxIyDAY.js.map} +1 -1
  75. package/dist/_chunks/{face-scheme-DAD-mXzM.js → face-scheme-CSJdRNad.js} +248 -244
  76. package/dist/_chunks/{face-scheme-DAD-mXzM.js.map → face-scheme-CSJdRNad.js.map} +1 -1
  77. package/dist/_chunks/{file-manager-RiV7-OEE.js → file-manager-D4cPnRhL.js} +3 -3
  78. package/dist/_chunks/{file-manager-RiV7-OEE.js.map → file-manager-D4cPnRhL.js.map} +1 -1
  79. package/dist/_chunks/{forgot-password-form-CPOfRE0C.js → forgot-password-form-Dqi7R-NL.js} +4 -4
  80. package/dist/_chunks/{forgot-password-form-CPOfRE0C.js.map → forgot-password-form-Dqi7R-NL.js.map} +1 -1
  81. package/dist/_chunks/format-number-DdzqwMs1.js +13 -0
  82. package/dist/_chunks/format-number-DdzqwMs1.js.map +1 -0
  83. package/dist/_chunks/{freemium-paywall-6DO7noHX.js → freemium-paywall-C73C8Rgd.js} +2 -2
  84. package/dist/_chunks/{freemium-paywall-6DO7noHX.js.map → freemium-paywall-C73C8Rgd.js.map} +1 -1
  85. package/dist/_chunks/{gestational-age-calculator-CZYa2D6m.js → gestational-age-calculator-Du53p8MH.js} +2 -2
  86. package/dist/_chunks/{gestational-age-calculator-CZYa2D6m.js.map → gestational-age-calculator-Du53p8MH.js.map} +1 -1
  87. package/dist/_chunks/{header-settings-BSH9Gk0J.js → header-settings-DlUbvAUx.js} +37 -36
  88. package/dist/_chunks/header-settings-DlUbvAUx.js.map +1 -0
  89. package/dist/_chunks/{heatmap-C1TeC7wT.js → heatmap-DbZIQg14.js} +4 -4
  90. package/dist/_chunks/{heatmap-C1TeC7wT.js.map → heatmap-DbZIQg14.js.map} +1 -1
  91. package/dist/_chunks/{help-me-write-templates-Bw3Q58x-.js → help-me-write-templates-5WkUfvc_.js} +3 -3
  92. package/dist/_chunks/{help-me-write-templates-Bw3Q58x-.js.map → help-me-write-templates-5WkUfvc_.js.map} +1 -1
  93. package/dist/_chunks/{kit-extensions-DWs1UEXb.js → kit-extensions-CYvLL4ee.js} +3 -3
  94. package/dist/_chunks/{kit-extensions-DWs1UEXb.js.map → kit-extensions-CYvLL4ee.js.map} +1 -1
  95. package/dist/_chunks/length-token-DwMnGEYT.js +24 -0
  96. package/dist/_chunks/length-token-DwMnGEYT.js.map +1 -0
  97. package/dist/_chunks/{link-cell-renderer-CtTsvfPY.js → link-cell-renderer-DtIsQWDO.js} +4 -4
  98. package/dist/_chunks/{link-cell-renderer-CtTsvfPY.js.map → link-cell-renderer-DtIsQWDO.js.map} +1 -1
  99. package/dist/_chunks/{login-dev-card-A-CL3mjt.js → login-dev-card-vEL-o5wq.js} +3 -3
  100. package/dist/_chunks/{login-dev-card-A-CL3mjt.js.map → login-dev-card-vEL-o5wq.js.map} +1 -1
  101. package/dist/_chunks/{map-view-BuVfJMEa.js → map-view-CtohteZD.js} +300 -191
  102. package/dist/_chunks/map-view-CtohteZD.js.map +1 -0
  103. package/dist/_chunks/{marketplace-app-shell-DtSX8sYb.js → marketplace-app-shell-CcLQ0Dn-.js} +4 -4
  104. package/dist/_chunks/{marketplace-app-shell-DtSX8sYb.js.map → marketplace-app-shell-CcLQ0Dn-.js.map} +1 -1
  105. package/dist/_chunks/{message-card-A3mJNqfy.js → message-card-C_ksqIYM.js} +2 -2
  106. package/dist/_chunks/{message-card-A3mJNqfy.js.map → message-card-C_ksqIYM.js.map} +1 -1
  107. package/dist/_chunks/{message-tray-Ft6vSr71.js → message-tray-DCoQ4GQb.js} +3 -3
  108. package/dist/_chunks/{message-tray-Ft6vSr71.js.map → message-tray-DCoQ4GQb.js.map} +1 -1
  109. package/dist/_chunks/{multi-select-CMaAQQgb.js → multi-select-BOad3za9.js} +110 -98
  110. package/dist/_chunks/multi-select-BOad3za9.js.map +1 -0
  111. package/dist/_chunks/{muscle-scheme-YoN3rYXV.js → muscle-scheme-C66WlCxG.js} +2 -2
  112. package/dist/_chunks/{muscle-scheme-YoN3rYXV.js.map → muscle-scheme-C66WlCxG.js.map} +1 -1
  113. package/dist/_chunks/{note-timeline-DDqNU46n.js → note-timeline-KzL52MmB.js} +2 -2
  114. package/dist/_chunks/{note-timeline-DDqNU46n.js.map → note-timeline-KzL52MmB.js.map} +1 -1
  115. package/dist/_chunks/{notes-panel-IdsmqRFC.js → notes-panel-BXN46XkF.js} +6 -6
  116. package/dist/_chunks/{notes-panel-IdsmqRFC.js.map → notes-panel-BXN46XkF.js.map} +1 -1
  117. package/dist/_chunks/notice-group-DkYzKyAZ.js +291 -0
  118. package/dist/_chunks/notice-group-DkYzKyAZ.js.map +1 -0
  119. package/dist/_chunks/{notification-tray-BR3seWA7.js → notification-tray-Cp18MW5b.js} +2 -2
  120. package/dist/_chunks/{notification-tray-BR3seWA7.js.map → notification-tray-Cp18MW5b.js.map} +1 -1
  121. package/dist/_chunks/{operator-hero-3_RG4Dkj.js → operator-hero-6aAIQaFZ.js} +83 -66
  122. package/dist/_chunks/operator-hero-6aAIQaFZ.js.map +1 -0
  123. package/dist/_chunks/{optical-prescription-CxfMsbxi.js → optical-prescription-ulXnDbBe.js} +525 -509
  124. package/dist/_chunks/optical-prescription-ulXnDbBe.js.map +1 -0
  125. package/dist/_chunks/panel-header-CbtlTe85.js +190 -0
  126. package/dist/_chunks/panel-header-CbtlTe85.js.map +1 -0
  127. package/dist/_chunks/{panel-subview-yP4qIbKS.js → panel-subview-BPU7220K.js} +2 -2
  128. package/dist/_chunks/{panel-subview-yP4qIbKS.js.map → panel-subview-BPU7220K.js.map} +1 -1
  129. package/dist/_chunks/{patient-details-C-EWQTms.js → patient-details-C4Dyo7Ck.js} +4 -4
  130. package/dist/_chunks/{patient-details-C-EWQTms.js.map → patient-details-C4Dyo7Ck.js.map} +1 -1
  131. package/dist/_chunks/{patient-field-row-lY-Tb5Mo.js → patient-field-row-DROvUkFu.js} +4 -4
  132. package/dist/_chunks/{patient-field-row-lY-Tb5Mo.js.map → patient-field-row-DROvUkFu.js.map} +1 -1
  133. package/dist/_chunks/{patient-search-DpAKidZ5.js → patient-search-BADdx3M1.js} +2 -2
  134. package/dist/_chunks/{patient-search-DpAKidZ5.js.map → patient-search-BADdx3M1.js.map} +1 -1
  135. package/dist/_chunks/{patient-summary-card-Bpto_VCD.js → patient-summary-card-CAimxbuI.js} +4 -4
  136. package/dist/_chunks/{patient-summary-card-Bpto_VCD.js.map → patient-summary-card-CAimxbuI.js.map} +1 -1
  137. package/dist/_chunks/{payment-automation-upsell-BQ307qEX.js → payment-automation-upsell-CiwF5UrC.js} +2 -2
  138. package/dist/_chunks/{payment-automation-upsell-BQ307qEX.js.map → payment-automation-upsell-CiwF5UrC.js.map} +1 -1
  139. package/dist/_chunks/{payment-form-XKtinW8r.js → payment-form-PBuh8PIa.js} +2 -2
  140. package/dist/_chunks/{payment-form-XKtinW8r.js.map → payment-form-PBuh8PIa.js.map} +1 -1
  141. package/dist/_chunks/{pdf-viewer-BvoVMjH4.js → pdf-viewer-gAsNUsA8.js} +2 -2
  142. package/dist/_chunks/{pdf-viewer-BvoVMjH4.js.map → pdf-viewer-gAsNUsA8.js.map} +1 -1
  143. package/dist/_chunks/{periodontal-risk-chart-CPy7CNFe.js → periodontal-risk-chart-B7S9OmPC.js} +97 -89
  144. package/dist/_chunks/periodontal-risk-chart-B7S9OmPC.js.map +1 -0
  145. package/dist/_chunks/practice-profile-hero-qfrsFQI_.js +236 -0
  146. package/dist/_chunks/practice-profile-hero-qfrsFQI_.js.map +1 -0
  147. package/dist/_chunks/{practice-results-BrUDDMXC.js → practice-results-BzThnpnm.js} +328 -298
  148. package/dist/_chunks/practice-results-BzThnpnm.js.map +1 -0
  149. package/dist/_chunks/{pregnancy-dating-B8wo4l_r.js → pregnancy-dating-EFcFUJkQ.js} +2 -2
  150. package/dist/_chunks/{pregnancy-dating-B8wo4l_r.js.map → pregnancy-dating-EFcFUJkQ.js.map} +1 -1
  151. package/dist/_chunks/{privacy-mask-Ch7743uk.js → privacy-mask-CCz9zuIh.js} +2 -2
  152. package/dist/_chunks/{privacy-mask-Ch7743uk.js.map → privacy-mask-CCz9zuIh.js.map} +1 -1
  153. package/dist/_chunks/{product-hub-panel-C_ZosrBt.js → product-hub-panel-YuFbNPlT.js} +2 -2
  154. package/dist/_chunks/{product-hub-panel-C_ZosrBt.js.map → product-hub-panel-YuFbNPlT.js.map} +1 -1
  155. package/dist/_chunks/progress-notice-DiHWZ8Ms.js +279 -0
  156. package/dist/_chunks/progress-notice-DiHWZ8Ms.js.map +1 -0
  157. package/dist/_chunks/{province-select-Bd20Z9Br.js → province-select-CDjs5obD.js} +2 -2
  158. package/dist/_chunks/{province-select-Bd20Z9Br.js.map → province-select-CDjs5obD.js.map} +1 -1
  159. package/dist/_chunks/{radiograph-panel.agent-8Ewv8-d7.js → radiograph-panel.agent-4UllIoTQ.js} +2 -2
  160. package/dist/_chunks/{radiograph-panel.agent-8Ewv8-d7.js.map → radiograph-panel.agent-4UllIoTQ.js.map} +1 -1
  161. package/dist/_chunks/{rating-C1Vrmpsi.js → rating-CGYpg5dj.js} +43 -44
  162. package/dist/_chunks/rating-CGYpg5dj.js.map +1 -0
  163. package/dist/_chunks/{registration-form-BxwqUZzk.js → registration-form-1B0PTDal.js} +4 -4
  164. package/dist/_chunks/{registration-form-BxwqUZzk.js.map → registration-form-1B0PTDal.js.map} +1 -1
  165. package/dist/_chunks/{reviews-panel-AvsVgtJu.js → reviews-panel-CosDZyow.js} +29 -7
  166. package/dist/_chunks/reviews-panel-CosDZyow.js.map +1 -0
  167. package/dist/_chunks/{rich-text-editor-aCIoptbg.js → rich-text-editor-56dSsyZI.js} +3 -3
  168. package/dist/_chunks/{rich-text-editor-aCIoptbg.js.map → rich-text-editor-56dSsyZI.js.map} +1 -1
  169. package/dist/_chunks/{select-k4gBdS8N.js → select-4S-eYZUf.js} +244 -214
  170. package/dist/_chunks/select-4S-eYZUf.js.map +1 -0
  171. package/dist/_chunks/{sign-document-D1P1nUQA.js → sign-document-BiOTs1P4.js} +2 -2
  172. package/dist/_chunks/{sign-document-D1P1nUQA.js.map → sign-document-BiOTs1P4.js.map} +1 -1
  173. package/dist/_chunks/{signature-request-3u6TvRt2.js → signature-request-DAmNj_uq.js} +5 -5
  174. package/dist/_chunks/{signature-request-3u6TvRt2.js.map → signature-request-DAmNj_uq.js.map} +1 -1
  175. package/dist/_chunks/skeleton-tTWJpvAq.js +415 -0
  176. package/dist/_chunks/skeleton-tTWJpvAq.js.map +1 -0
  177. package/dist/_chunks/{slot-grid-dj5f6R2w.js → slot-grid-D_gix9mJ.js} +2 -2
  178. package/dist/_chunks/{slot-grid-dj5f6R2w.js.map → slot-grid-D_gix9mJ.js.map} +1 -1
  179. package/dist/_chunks/{tabs-2x3L13jn.js → tabs-BTj-2qMZ.js} +2 -2
  180. package/dist/_chunks/{tabs-2x3L13jn.js.map → tabs-BTj-2qMZ.js.map} +1 -1
  181. package/dist/_chunks/{task-card-BS7Uqevr.js → task-card-Ci2XbLmq.js} +2 -2
  182. package/dist/_chunks/{task-card-BS7Uqevr.js.map → task-card-Ci2XbLmq.js.map} +1 -1
  183. package/dist/_chunks/{task-editor-Bb5MMcid.js → task-editor-BomyxGoZ.js} +8 -8
  184. package/dist/_chunks/{task-editor-Bb5MMcid.js.map → task-editor-BomyxGoZ.js.map} +1 -1
  185. package/dist/_chunks/{task-tray-eQU4KJcA.js → task-tray-Dnc72nl-.js} +3 -3
  186. package/dist/_chunks/{task-tray-eQU4KJcA.js.map → task-tray-Dnc72nl-.js.map} +1 -1
  187. package/dist/_chunks/{tasks-panel-BOb57Ysw.js → tasks-panel-ATz9JDy8.js} +6 -6
  188. package/dist/_chunks/{tasks-panel-BOb57Ysw.js.map → tasks-panel-ATz9JDy8.js.map} +1 -1
  189. package/dist/_chunks/{theme-toggle-Ctb77x6O.js → theme-toggle-DT_Jn4DC.js} +147 -138
  190. package/dist/_chunks/theme-toggle-DT_Jn4DC.js.map +1 -0
  191. package/dist/_chunks/{timeline-DEIuHrWz.js → timeline-wUuTDFY_.js} +2 -2
  192. package/dist/_chunks/{timeline-DEIuHrWz.js.map → timeline-wUuTDFY_.js.map} +1 -1
  193. package/dist/_chunks/{tool-rail-C-03rH2I.js → tool-rail-C-M3eVdY.js} +2 -2
  194. package/dist/_chunks/{tool-rail-C-03rH2I.js.map → tool-rail-C-M3eVdY.js.map} +1 -1
  195. package/dist/_chunks/{transcript-panel-XudW5l6l.js → transcript-panel-CoHHpcFg.js} +2 -2
  196. package/dist/_chunks/{transcript-panel-XudW5l6l.js.map → transcript-panel-CoHHpcFg.js.map} +1 -1
  197. package/dist/_chunks/{treatment-receipt-Cpm8tqQN.js → treatment-receipt-pFqWFyD_.js} +2 -2
  198. package/dist/_chunks/{treatment-receipt-Cpm8tqQN.js.map → treatment-receipt-pFqWFyD_.js.map} +1 -1
  199. package/dist/_chunks/{unit-converter-BPZ0Ldkb.js → unit-converter-CIoTmCmP.js} +2 -2
  200. package/dist/_chunks/{unit-converter-BPZ0Ldkb.js.map → unit-converter-CIoTmCmP.js.map} +1 -1
  201. package/dist/_chunks/{use-appointment-details-read-CVSPoP5j.js → use-appointment-details-read-CUGfE0hV.js} +12 -12
  202. package/dist/_chunks/{use-appointment-details-read-CVSPoP5j.js.map → use-appointment-details-read-CUGfE0hV.js.map} +1 -1
  203. package/dist/_chunks/use-dismissed-CTOWqA0e.js +177 -0
  204. package/dist/_chunks/use-dismissed-CTOWqA0e.js.map +1 -0
  205. package/dist/_chunks/{voice-control-panel-BJIEbDq6.js → voice-control-panel-B8Lrk0C4.js} +4 -4
  206. package/dist/_chunks/{voice-control-panel-BJIEbDq6.js.map → voice-control-panel-B8Lrk0C4.js.map} +1 -1
  207. package/dist/_chunks/{warning-stack-BdY-0bd3.js → warning-stack-BhHUmRiD.js} +2 -2
  208. package/dist/_chunks/{warning-stack-BdY-0bd3.js.map → warning-stack-BhHUmRiD.js.map} +1 -1
  209. package/dist/_chunks/{workflow-map-CYbRD9ek.js → workflow-map-ln4_OG8A.js} +2 -2
  210. package/dist/_chunks/{workflow-map-CYbRD9ek.js.map → workflow-map-ln4_OG8A.js.map} +1 -1
  211. package/dist/agent-catalog.json +172 -4
  212. package/dist/agent-i18n/en.json +25 -1
  213. package/dist/components/_shared/format-number.d.ts +20 -0
  214. package/dist/components/_shared/format-number.d.ts.map +1 -0
  215. package/dist/components/_shared/length-token.d.ts +12 -0
  216. package/dist/components/_shared/length-token.d.ts.map +1 -0
  217. package/dist/components/_shared/option.d.ts +1 -0
  218. package/dist/components/_shared/option.d.ts.map +1 -1
  219. package/dist/components/address-fields/index.js +1 -1
  220. package/dist/components/agenda-card/index.js +1 -1
  221. package/dist/components/agenda-tray/index.js +1 -1
  222. package/dist/components/ai-credits-notice/index.js +1 -1
  223. package/dist/components/ai-permission-notice/index.js +1 -1
  224. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  225. package/dist/components/ai-prompt-input/index.js +1 -1
  226. package/dist/components/alert/alert.d.ts +26 -0
  227. package/dist/components/alert/alert.d.ts.map +1 -1
  228. package/dist/components/alert/index.js +1 -1
  229. package/dist/components/anamnesis-summary-card/index.js +1 -1
  230. package/dist/components/appointment-card/index.js +2 -2
  231. package/dist/components/appointment-details-panel/index.js +1 -1
  232. package/dist/components/appointment-peek/index.js +1 -1
  233. package/dist/components/appointment-timeline/index.js +1 -1
  234. package/dist/components/audio-recorder/index.js +1 -1
  235. package/dist/components/avatar/avatar.d.ts +2 -0
  236. package/dist/components/avatar/avatar.d.ts.map +1 -1
  237. package/dist/components/avatar/index.js +1 -1
  238. package/dist/components/bishop-score/index.js +1 -1
  239. package/dist/components/booking/booking.d.ts.map +1 -1
  240. package/dist/components/booking/details-form.d.ts.map +1 -1
  241. package/dist/components/booking/index.js +1 -1
  242. package/dist/components/calendar/index.js +1 -1
  243. package/dist/components/chat-message/index.js +1 -1
  244. package/dist/components/clinical-note-card/index.js +1 -1
  245. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  246. package/dist/components/color-picker/index.js +1 -1
  247. package/dist/components/combobox/combobox.d.ts.map +1 -1
  248. package/dist/components/combobox/index.js +1 -1
  249. package/dist/components/contact-profile-card/index.js +1 -1
  250. package/dist/components/control-room-rail/index.js +1 -1
  251. package/dist/components/country-select/index.js +1 -1
  252. package/dist/components/dashboard-grid/dashboard-grid.agent.d.ts.map +1 -1
  253. package/dist/components/dashboard-grid/dashboard-grid.d.ts +20 -1
  254. package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -1
  255. package/dist/components/dashboard-grid/index.js +1 -1
  256. package/dist/components/data-table/index.js +2 -2
  257. package/dist/components/dependent-selector/index.js +1 -1
  258. package/dist/components/document-preview/index.js +1 -1
  259. package/dist/components/document-scanner/index.js +1 -1
  260. package/dist/components/editable-description/index.js +1 -1
  261. package/dist/components/entity-summary/index.js +1 -1
  262. package/dist/components/error-summary/index.js +1 -1
  263. package/dist/components/face-scheme/face-scheme.d.ts.map +1 -1
  264. package/dist/components/face-scheme/index.js +1 -1
  265. package/dist/components/file-manager/index.js +1 -1
  266. package/dist/components/freemium-paywall/index.js +1 -1
  267. package/dist/components/gestational-age-calculator/index.js +1 -1
  268. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  269. package/dist/components/header-settings/index.js +1 -1
  270. package/dist/components/heatmap/index.js +1 -1
  271. package/dist/components/index.d.ts +4 -2
  272. package/dist/components/index.d.ts.map +1 -1
  273. package/dist/components/map-view/index.d.ts +1 -1
  274. package/dist/components/map-view/index.d.ts.map +1 -1
  275. package/dist/components/map-view/index.js +1 -1
  276. package/dist/components/map-view/map-view.d.ts +51 -0
  277. package/dist/components/map-view/map-view.d.ts.map +1 -1
  278. package/dist/components/message-card/index.js +1 -1
  279. package/dist/components/message-tray/index.js +1 -1
  280. package/dist/components/multi-select/index.js +1 -1
  281. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  282. package/dist/components/muscle-scheme/index.js +1 -1
  283. package/dist/components/note-timeline/index.js +1 -1
  284. package/dist/components/notes-panel/index.js +1 -1
  285. package/dist/components/notice-group/index.d.ts +3 -0
  286. package/dist/components/notice-group/index.d.ts.map +1 -0
  287. package/dist/components/notice-group/index.js +6 -0
  288. package/dist/components/notice-group/index.js.map +1 -0
  289. package/dist/components/notice-group/notice-group.agent.d.ts +4 -0
  290. package/dist/components/notice-group/notice-group.agent.d.ts.map +1 -0
  291. package/dist/components/notice-group/notice-group.d.ts +43 -0
  292. package/dist/components/notice-group/notice-group.d.ts.map +1 -0
  293. package/dist/components/notification-tray/index.js +1 -1
  294. package/dist/components/operator-hero/index.js +1 -1
  295. package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
  296. package/dist/components/optical-prescription/index.js +1 -1
  297. package/dist/components/optical-prescription/optical-prescription-data.d.ts +8 -8
  298. package/dist/components/optical-prescription/optical-prescription-data.d.ts.map +1 -1
  299. package/dist/components/optical-prescription/optical-prescription.d.ts.map +1 -1
  300. package/dist/components/panel-header/index.js +1 -1
  301. package/dist/components/panel-header/panel-header.d.ts +10 -0
  302. package/dist/components/panel-header/panel-header.d.ts.map +1 -1
  303. package/dist/components/panel-subview/index.js +1 -1
  304. package/dist/components/patient-details/index.js +1 -1
  305. package/dist/components/patient-search/index.js +1 -1
  306. package/dist/components/patient-summary-card/index.js +1 -1
  307. package/dist/components/patient-table/index.js +1 -1
  308. package/dist/components/payment-form/index.js +1 -1
  309. package/dist/components/pdf-viewer/index.js +1 -1
  310. package/dist/components/periodontal-risk-chart/index.js +1 -1
  311. package/dist/components/periodontal-risk-chart/periodontal-risk-chart.d.ts.map +1 -1
  312. package/dist/components/practice-profile-hero/index.js +1 -1
  313. package/dist/components/practice-profile-hero/practice-profile-hero.d.ts +4 -1
  314. package/dist/components/practice-profile-hero/practice-profile-hero.d.ts.map +1 -1
  315. package/dist/components/practice-results/index.js +1 -1
  316. package/dist/components/practice-results/practice-results.d.ts +10 -2
  317. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  318. package/dist/components/pregnancy-dating/index.js +1 -1
  319. package/dist/components/product-hub-tray/index.js +1 -1
  320. package/dist/components/progress-notice/index.d.ts +3 -0
  321. package/dist/components/progress-notice/index.d.ts.map +1 -0
  322. package/dist/components/progress-notice/index.js +6 -0
  323. package/dist/components/progress-notice/index.js.map +1 -0
  324. package/dist/components/progress-notice/progress-notice.agent.d.ts +4 -0
  325. package/dist/components/progress-notice/progress-notice.agent.d.ts.map +1 -0
  326. package/dist/components/progress-notice/progress-notice.d.ts +81 -0
  327. package/dist/components/progress-notice/progress-notice.d.ts.map +1 -0
  328. package/dist/components/province-select/index.js +1 -1
  329. package/dist/components/radiograph-panel/index.js +1 -1
  330. package/dist/components/rating/index.js +1 -1
  331. package/dist/components/rating/rating.d.ts.map +1 -1
  332. package/dist/components/reviews-panel/index.js +1 -1
  333. package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
  334. package/dist/components/rich-text-editor/index.js +2 -2
  335. package/dist/components/select/index.js +1 -1
  336. package/dist/components/select/select.d.ts +6 -0
  337. package/dist/components/select/select.d.ts.map +1 -1
  338. package/dist/components/sign-document/index.js +1 -1
  339. package/dist/components/skeleton/index.d.ts +1 -1
  340. package/dist/components/skeleton/index.d.ts.map +1 -1
  341. package/dist/components/skeleton/index.js +1 -1
  342. package/dist/components/skeleton/skeleton.d.ts +41 -1
  343. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  344. package/dist/components/skeleton-scheme/index.js +1 -1
  345. package/dist/components/slot-grid/index.js +1 -1
  346. package/dist/components/tabs/index.js +1 -1
  347. package/dist/components/task-card/index.js +1 -1
  348. package/dist/components/task-editor/index.js +1 -1
  349. package/dist/components/task-tray/index.js +1 -1
  350. package/dist/components/tasks-panel/index.js +1 -1
  351. package/dist/components/theme-toggle/index.js +1 -1
  352. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  353. package/dist/components/timeline/index.js +1 -1
  354. package/dist/components/tool-rail/index.js +1 -1
  355. package/dist/components/transcript-panel/index.js +1 -1
  356. package/dist/components/treatment-receipt/index.js +1 -1
  357. package/dist/components/unit-converter/index.js +1 -1
  358. package/dist/components/voice-control-panel/index.js +1 -1
  359. package/dist/components/warning-stack/index.js +1 -1
  360. package/dist/components/workflow/index.js +1 -1
  361. package/dist/hooks/index.d.ts +1 -0
  362. package/dist/hooks/index.d.ts.map +1 -1
  363. package/dist/hooks/index.js +81 -76
  364. package/dist/hooks/index.js.map +1 -1
  365. package/dist/hooks/use-dismissed.d.ts +58 -0
  366. package/dist/hooks/use-dismissed.d.ts.map +1 -0
  367. package/dist/i18n/locales/ar.d.ts +22 -0
  368. package/dist/i18n/locales/ar.d.ts.map +1 -1
  369. package/dist/i18n/locales/ar.js +22 -0
  370. package/dist/i18n/locales/ar.js.map +1 -1
  371. package/dist/i18n/locales/de.d.ts +22 -0
  372. package/dist/i18n/locales/de.d.ts.map +1 -1
  373. package/dist/i18n/locales/de.js +22 -0
  374. package/dist/i18n/locales/de.js.map +1 -1
  375. package/dist/i18n/locales/el.d.ts +22 -0
  376. package/dist/i18n/locales/el.d.ts.map +1 -1
  377. package/dist/i18n/locales/el.js +22 -0
  378. package/dist/i18n/locales/el.js.map +1 -1
  379. package/dist/i18n/locales/en.d.ts +22 -0
  380. package/dist/i18n/locales/en.d.ts.map +1 -1
  381. package/dist/i18n/locales/en.js +22 -0
  382. package/dist/i18n/locales/en.js.map +1 -1
  383. package/dist/i18n/locales/es.d.ts +22 -0
  384. package/dist/i18n/locales/es.d.ts.map +1 -1
  385. package/dist/i18n/locales/es.js +22 -0
  386. package/dist/i18n/locales/es.js.map +1 -1
  387. package/dist/i18n/locales/fr.d.ts +22 -0
  388. package/dist/i18n/locales/fr.d.ts.map +1 -1
  389. package/dist/i18n/locales/fr.js +22 -0
  390. package/dist/i18n/locales/fr.js.map +1 -1
  391. package/dist/i18n/locales/hi.d.ts +22 -0
  392. package/dist/i18n/locales/hi.d.ts.map +1 -1
  393. package/dist/i18n/locales/hi.js +22 -0
  394. package/dist/i18n/locales/hi.js.map +1 -1
  395. package/dist/i18n/locales/it.d.ts +22 -0
  396. package/dist/i18n/locales/it.d.ts.map +1 -1
  397. package/dist/i18n/locales/it.js +22 -0
  398. package/dist/i18n/locales/it.js.map +1 -1
  399. package/dist/i18n/locales/ja.d.ts +22 -0
  400. package/dist/i18n/locales/ja.d.ts.map +1 -1
  401. package/dist/i18n/locales/ja.js +22 -0
  402. package/dist/i18n/locales/ja.js.map +1 -1
  403. package/dist/i18n/locales/nl.d.ts +22 -0
  404. package/dist/i18n/locales/nl.d.ts.map +1 -1
  405. package/dist/i18n/locales/nl.js +22 -0
  406. package/dist/i18n/locales/nl.js.map +1 -1
  407. package/dist/i18n/locales/pl.d.ts +22 -0
  408. package/dist/i18n/locales/pl.d.ts.map +1 -1
  409. package/dist/i18n/locales/pl.js +22 -0
  410. package/dist/i18n/locales/pl.js.map +1 -1
  411. package/dist/i18n/locales/pt.d.ts +22 -0
  412. package/dist/i18n/locales/pt.d.ts.map +1 -1
  413. package/dist/i18n/locales/pt.js +22 -0
  414. package/dist/i18n/locales/pt.js.map +1 -1
  415. package/dist/i18n/locales/ro.d.ts +22 -0
  416. package/dist/i18n/locales/ro.d.ts.map +1 -1
  417. package/dist/i18n/locales/ro.js +22 -0
  418. package/dist/i18n/locales/ro.js.map +1 -1
  419. package/dist/i18n/locales/ru.d.ts +22 -0
  420. package/dist/i18n/locales/ru.d.ts.map +1 -1
  421. package/dist/i18n/locales/ru.js +22 -0
  422. package/dist/i18n/locales/ru.js.map +1 -1
  423. package/dist/i18n/locales/sq.d.ts +22 -0
  424. package/dist/i18n/locales/sq.d.ts.map +1 -1
  425. package/dist/i18n/locales/sq.js +22 -0
  426. package/dist/i18n/locales/sq.js.map +1 -1
  427. package/dist/i18n/locales/sv.d.ts +22 -0
  428. package/dist/i18n/locales/sv.d.ts.map +1 -1
  429. package/dist/i18n/locales/sv.js +22 -0
  430. package/dist/i18n/locales/sv.js.map +1 -1
  431. package/dist/i18n/locales/tr.d.ts +22 -0
  432. package/dist/i18n/locales/tr.d.ts.map +1 -1
  433. package/dist/i18n/locales/tr.js +22 -0
  434. package/dist/i18n/locales/tr.js.map +1 -1
  435. package/dist/i18n/locales/zh.d.ts +22 -0
  436. package/dist/i18n/locales/zh.d.ts.map +1 -1
  437. package/dist/i18n/locales/zh.js +22 -0
  438. package/dist/i18n/locales/zh.js.map +1 -1
  439. package/dist/index.js +1194 -1183
  440. package/dist/index.js.map +1 -1
  441. package/dist/locales/ar.json +22 -0
  442. package/dist/locales/de.json +22 -0
  443. package/dist/locales/el.json +22 -0
  444. package/dist/locales/en.json +22 -0
  445. package/dist/locales/es.json +22 -0
  446. package/dist/locales/fr.json +22 -0
  447. package/dist/locales/hi.json +22 -0
  448. package/dist/locales/it.json +22 -0
  449. package/dist/locales/ja.json +22 -0
  450. package/dist/locales/nl.json +22 -0
  451. package/dist/locales/pl.json +22 -0
  452. package/dist/locales/pt.json +22 -0
  453. package/dist/locales/ro.json +22 -0
  454. package/dist/locales/ru.json +22 -0
  455. package/dist/locales/sq.json +22 -0
  456. package/dist/locales/sv.json +22 -0
  457. package/dist/locales/tr.json +22 -0
  458. package/dist/locales/zh.json +22 -0
  459. package/dist/patterns/alia-assistant/index.js +1 -1
  460. package/dist/patterns/anamnesis/anamnesis-export-pdf.d.ts.map +1 -1
  461. package/dist/patterns/anamnesis/index.js +1 -1
  462. package/dist/patterns/calendar/index.js +1 -1
  463. package/dist/patterns/forgot-password-form/index.js +1 -1
  464. package/dist/patterns/help-me-write-templates/index.js +2 -2
  465. package/dist/patterns/login-form/index.js +1 -1
  466. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  467. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  468. package/dist/patterns/registration-form/index.js +1 -1
  469. package/dist/patterns/signature-request/index.js +1 -1
  470. package/dist/tokens.css +1 -1
  471. package/package.json +9 -1
  472. package/dist/_chunks/ai-prompt-input-DSGSe4LH.js.map +0 -1
  473. package/dist/_chunks/alert-DjsJMGRE.js.map +0 -1
  474. package/dist/_chunks/anamnesis-summary-rows-BQ_EokKz.js.map +0 -1
  475. package/dist/_chunks/avatar-WZY3eGE7.js +0 -123
  476. package/dist/_chunks/avatar-WZY3eGE7.js.map +0 -1
  477. package/dist/_chunks/booking-tTVxKPQY.js.map +0 -1
  478. package/dist/_chunks/color-picker-BsggJovx.js.map +0 -1
  479. package/dist/_chunks/combobox-U5yfO6o0.js.map +0 -1
  480. package/dist/_chunks/contact-profile-card-C4-OCshj.js.map +0 -1
  481. package/dist/_chunks/dashboard-grid-B2MB7SRS.js +0 -1428
  482. package/dist/_chunks/dashboard-grid-B2MB7SRS.js.map +0 -1
  483. package/dist/_chunks/header-settings-BSH9Gk0J.js.map +0 -1
  484. package/dist/_chunks/map-view-BuVfJMEa.js.map +0 -1
  485. package/dist/_chunks/multi-select-CMaAQQgb.js.map +0 -1
  486. package/dist/_chunks/operator-hero-3_RG4Dkj.js.map +0 -1
  487. package/dist/_chunks/optical-prescription-CxfMsbxi.js.map +0 -1
  488. package/dist/_chunks/panel-header-BJkaUwnl.js +0 -128
  489. package/dist/_chunks/panel-header-BJkaUwnl.js.map +0 -1
  490. package/dist/_chunks/periodontal-risk-chart-CPy7CNFe.js.map +0 -1
  491. package/dist/_chunks/practice-profile-hero-Dfc0F60y.js +0 -193
  492. package/dist/_chunks/practice-profile-hero-Dfc0F60y.js.map +0 -1
  493. package/dist/_chunks/practice-results-BrUDDMXC.js.map +0 -1
  494. package/dist/_chunks/rating-C1Vrmpsi.js.map +0 -1
  495. package/dist/_chunks/reviews-panel-AvsVgtJu.js.map +0 -1
  496. package/dist/_chunks/select-k4gBdS8N.js.map +0 -1
  497. package/dist/_chunks/skeleton-B1KTdJ4N.js +0 -116
  498. package/dist/_chunks/skeleton-B1KTdJ4N.js.map +0 -1
  499. package/dist/_chunks/theme-toggle-Ctb77x6O.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-picker-AcaWuKah.js","sources":["../../src/components/color-picker/color-picker.agent.ts","../../src/components/color-picker/color-utils.ts","../../src/components/color-picker/palettes.ts","../../src/components/color-picker/color-picker.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — ColorPicker. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ColorPickerHandle } from './color-picker';\n\nexport const colorPickerAgent: AgentAdapter<ColorPickerHandle> = {\n id: 'color-picker',\n capabilities: ['set_value'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.colorPicker.state.value',\n description: 'Currently picked colour as a hex string (e.g. \"#3b82f6\").',\n read: (handle) => handle.getValue(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ hex: string }',\n argsSchema: {\n type: 'object',\n properties: {\n hex: {\n type: 'string',\n description: 'Hex colour string, e.g. \"#3b82f6\".',\n },\n },\n required: ['hex'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.colorPicker.actions.setValue',\n description: 'Set the picked colour from a hex string.',\n examples: [{ args: { hex: '#3b82f6' }, note: 'Set to brand blue.' }],\n invoke: (handle, args: { hex: string }) => {\n handle.setValue(args.hex);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'color-picker',\n description:\n 'Marks the ColorPicker wrapper (inline) or trigger (popover variant).',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/**\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 // Preserve byte identity through RGB -> HSL -> RGB. Palette colours\n // can be server identifiers, so even one changed channel is a different\n // selection. Round human-facing labels only, never this stored value.\n h: hue * 360,\n s: sat * 100,\n l: l * 100,\n a,\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(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%, ${hsl.a})`;\n }\n return `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(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\n/**\n * Google Calendar event colours — the platform's DEFAULT appointment\n * palette (practice DoctorColor sets mirror Google Calendar so synced\n * events keep their colours; the event `colorId` set is capped at 11 —\n * the 24 \"label\" colours exist only in Google's Labels API).\n * `textColor` is deliberately omitted: solid-scheme consumers get the\n * event card's auto-derived ink (provably WCAG AA for any opaque hex),\n * and the tinted scheme paints text on theme tokens regardless.\n */\nexport const GOOGLE_CALENDAR_PALETTE: PaletteSwatch[] = [\n { name: 'Tomato', hex: '#d50000' },\n { name: 'Flamingo', hex: '#e67c73' },\n { name: 'Tangerine', hex: '#f4511e' },\n { name: 'Banana', hex: '#f6bf26' },\n { name: 'Sage', hex: '#33b679' },\n { name: 'Basil', hex: '#0b8043' },\n { name: 'Peacock', hex: '#039be5' },\n { name: 'Blueberry', hex: '#3f51b5' },\n { name: 'Lavender', hex: '#7986cb' },\n { name: 'Grape', hex: '#8e24aa' },\n { name: 'Graphite', hex: '#616161' },\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 {\n findPopoverTrigger,\n useNonModalTabExit,\n} from '../_shared/non-modal-tab-exit';\nimport { cva } from 'class-variance-authority';\nimport { Check, X } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { formatNumber } from '../_shared/format-number';\nimport {\n useFormField,\n useFormFieldControlId,\n} from '../form-field/form-field-context';\nimport { Slider } from '../slider/slider';\nimport { useAgentRegistration } from '../../agent';\nimport { colorPickerAgent } from './color-picker.agent';\n\n/** Agent-readiness curated handle for ColorPicker. */\nexport interface ColorPickerHandle {\n getValue: () => string;\n setValue: (hex: string) => void;\n}\nimport {\n contrastRatio,\n formatOutput,\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(--control-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: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 // Swatch footprint. md/lg honour --min-target-size (44/48px) for touch.\n // sm is a denser 28px swatch for toolbar/inline use — comfortably above\n // the WCAG 2.5.8 (AA) 24px minimum, with the grid gap providing spacing.\n // sm intentionally does NOT take the accessible-theme --min-target-size\n // bump (48px) — a dense colour grid is opt-in and the full roving-tabindex\n // keyboard path is the mitigation for the sub-AAA pointer target.\n size: {\n // sm = 28px: clears WCAG 2.5.8 (AA, 24px) but intentionally opts out of\n // the accessible-theme 48px min-target bump — a conscious, signed-off\n // trade-off (dense opt-in grid; keyboard roving-tabindex is the mitigation).\n sm: 'ds:min-w-7 ds:min-h-7',\n md: 'ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]',\n lg: 'ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]',\n },\n },\n defaultVariants: { selected: false, size: 'md' },\n },\n);\n\nconst PANEL_CLASSES = [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)] ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds: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 'ds:bg-[image:repeating-conic-gradient(var(--color-grey-700)_0%_25%,transparent_0%_50%)]',\n 'ds:bg-[size:8px_8px]',\n].join(' ');\n\nconst PANEL_COMPACT_CLASSES = [\n 'ds:rounded-[var(--radius-md)] ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:p-[var(--spacing-sm)]',\n].join(' ');\n\n// Tighter padding for the dense (sm) swatch-only panel — toolbar/inline use.\nconst PANEL_COMPACT_SM_CLASSES = [\n 'ds:rounded-[var(--radius-md)] ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:p-[var(--spacing-xs)]',\n].join(' ');\n\nconst POPOVER_CONTENT_CLASSES = [\n 'ds:z-[var(--z-popover)] ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)] ds:bg-[var(--background)] ds:shadow-[var(--shadow-lg)]',\n 'ds:w-72',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2',\n].join(' ');\n\nconst HEX_INPUT_CLASSES = [\n 'ds:w-full ds:rounded-[var(--radius-sm)] ds:border ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:text-[length:var(--font-size-sm)]',\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 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// Makes the Slider track/range transparent so the gradient behind shows through\nconst TRANSPARENT_SLIDER =\n 'ds:[&>span:first-child]:bg-transparent ds:[&>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, i18n } = useTranslation('ui');\n const ctx = useFormField();\n const generatedId = useId();\n const pickerId = useFormFieldControlId(ctx) || 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 // Normalise palette entries through parseInput so swatches declared as\n // rgb()/hsl()/shorthand hex still match — raw `s.hex` comparison misses\n // any non-literal-hex representation.\n const swatchCanonicalHexes = useMemo(\n () =>\n swatches.map((s) => {\n const parsed = parseInput(s.hex);\n return parsed ? hslToHex(parsed).toLowerCase() : null;\n }),\n [swatches],\n );\n const selectedSwatchIndex = swatchCanonicalHexes.findIndex(\n (hex) => hex !== null && hex === 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 =\n 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 // The grid (grid-cols-6) mirrors under dir=\"rtl\", so the physical\n // ArrowRight/ArrowLeft keys must map to the inverse logical delta to keep\n // keyboard navigation following the visual reading order. Resolve the\n // effective direction from the element's computed style.\n const isRtl =\n typeof window !== 'undefined' && gridRef.current\n ? window.getComputedStyle(gridRef.current).direction === 'rtl'\n : false;\n const forward = isRtl ? -1 : 1;\n\n switch (event.key) {\n case 'ArrowRight':\n next = (focusedIndex + forward + total) % total;\n break;\n case 'ArrowLeft':\n next = (focusedIndex - forward + 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(\n Math.floor(focusedIndex / COLS) * COLS + COLS - 1,\n total - 1,\n );\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 const parsed = parseInput(swatches[focusedIndex].hex);\n if (parsed) emitChange(parsed);\n return;\n }\n default:\n return;\n }\n\n event.preventDefault();\n focusSwatch(next);\n };\n\n const [open, setOpen] = useState(false);\n\n const agentHandle = useMemo<ColorPickerHandle>(\n () => ({\n getValue: () => hslToHex(currentHslRef.current),\n setValue: (hex) => {\n const parsed = parseInput(hex);\n if (parsed) emitChange(parsed);\n },\n }),\n [emitChange],\n );\n useAgentRegistration(colorPickerAgent, agentHandle, pickerId);\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 // eslint-disable-next-line jsx-a11y/interactive-supports-focus -- inner gridcells are individually focusable via roving tabindex\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={t('inputs.colorPicker.paletteLabel', 'Colour palette')}\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 = idx === selectedSwatchIndex;\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events -- parent grid handles keyboard navigation via onKeyDown\n <div\n key={s.hex}\n role=\"gridcell\"\n aria-selected={sel}\n aria-label={t('inputs.colorPicker.swatchLabel', {\n name: s.name,\n hex: s.hex,\n })}\n tabIndex={idx === focusedIndex ? 0 : -1}\n onClick={() => {\n if (effectiveDisabled) return;\n const parsed = parseInput(s.hex);\n if (parsed) emitChange(parsed);\n setFocusedIndex(idx);\n }}\n className={swatchVariants({ selected: sel, size })}\n // eslint-disable-next-line react/forbid-dom-props -- user-picked swatch hex injected via --swatch-bg CSS variable\n style={{ ['--swatch-bg' as string]: s.hex }}\n >\n {sel ? (\n <Check\n aria-hidden=\"true\"\n className=\"ds:absolute ds:inset-0 ds:m-auto ds:size-4 ds:text-[var(--background)] ds:mix-blend-difference\"\n />\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\n htmlFor={`${pickerId}-hex`}\n className=\"ds:text-[length:var(--font-size-xs)] ds:text-[var(--muted-foreground)]\"\n >\n {t('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 ? 'ds:border-[var(--destructive)]' : 'ds:border-[color:var(--control-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('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}\n max={360}\n value={currentHsl.h}\n onChange={(h) => emitChange({ ...currentHsl, h })}\n formatValue={(v) => `H ${Math.round(v)}°`}\n disabled={effectiveDisabled}\n />\n <SliderWithGradient\n label={t('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}\n max={100}\n value={currentHsl.s}\n onChange={(s) => emitChange({ ...currentHsl, s })}\n formatValue={(v) => `S ${Math.round(v)}%`}\n disabled={effectiveDisabled}\n />\n <SliderWithGradient\n label={t('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}\n max={100}\n value={currentHsl.l}\n onChange={(l) => emitChange({ ...currentHsl, l })}\n formatValue={(v) => `L ${Math.round(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('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 // eslint-disable-next-line react/forbid-dom-props -- opacity-track gradient derived from live HSL, no token equivalent\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}\n max={100}\n step={1}\n value={[Math.round(currentHsl.a * 100)]}\n onValueChange={([v]) =>\n emitChange({ ...currentHsl, a: v / 100 })\n }\n aria-label={t('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\n className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <span className=\"ds:tabular-nums\">\n {t('inputs.colorPicker.contrastRatio', {\n ratio: formatNumber(contrastInfo.ratio, i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }),\n })}\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 // eslint-disable-next-line react/forbid-dom-props -- live picked colour injected via --swatch-bg CSS variable\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\n className={\n compact\n ? size === 'sm'\n ? PANEL_COMPACT_SM_CLASSES\n : PANEL_COMPACT_CLASSES\n : PANEL_CLASSES\n }\n >\n {swatchGrid}\n {fullControls}\n </div>\n );\n\n const exitOnTab = useNonModalTabExit(true, {\n getAnchor: findPopoverTrigger,\n onReturnToTrigger: () => setOpen(false),\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-component=\"color-picker\"\n data-component-id={pickerId}\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 {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props -- FormField propagates invalid state to its trigger; users rely on this for validation announcements */}\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 // In compact mode the trigger only renders the swatch (which is\n // aria-hidden). Provide a fallback name so the button is named\n // for AT regardless of variant. The current value is announced\n // separately via the hex/HSL output inside the popover.\n aria-label={\n compact\n ? t('inputs.colorPicker.triggerLabel', 'Choose colour')\n : undefined\n }\n className={triggerVariants({ size, className })}\n data-component=\"color-picker\"\n data-component-id={pickerId}\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 ? '' : ' ds:me-[var(--spacing-sm)]'}`}\n aria-hidden=\"true\"\n // eslint-disable-next-line react/forbid-dom-props -- trigger preview swatch shows current picked colour via --swatch-bg\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\n sideOffset={4}\n align=\"start\"\n className={POPOVER_CONTENT_CLASSES}\n onKeyDown={exitOnTab}\n >\n {panelContent}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n },\n);\n\nColorPicker.displayName = 'ColorPicker';\n\nfunction ContrastBadge({\n level,\n passes,\n t,\n}: {\n level: string;\n passes: boolean;\n t: (key: string, fallback: string) => string;\n}) {\n return (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <abbr\n title={`Web Content Accessibility Guidelines Level ${level}`}\n className=\"ds:no-underline ds:font-medium\"\n >\n {level}\n </abbr>\n {passes ? (\n <Check\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-[var(--success)]\"\n />\n ) : (\n <X\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-[var(--destructive)]\"\n />\n )}\n <span className=\"ds:sr-only\">\n {passes\n ? t('inputs.colorPicker.contrastPass', 'Pass')\n : t('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)]\">\n {label}\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 ds:bg-[image:var(--slider-gradient)]\"\n // eslint-disable-next-line react/forbid-dom-props -- hue/saturation/lightness gradient derived from live HSL, no token equivalent\n style={{ ['--slider-gradient' as string]: gradient }}\n aria-hidden=\"true\"\n />\n <Slider\n min={min}\n max={max}\n 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":["colorPickerAgent","handle","args","hexToHsl","hex","h","g","b","a","rgbToHsl","r","max","min","l","hue","sat","d","hslToHex","hsl","hslToRgbComponents","toHex","n","base","hslToRgba","ri","gi","bi","s","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","GOOGLE_CALENDAR_PALETTE","COLS","triggerVariants","cva","swatchVariants","PANEL_CLASSES","OPACITY_CHECKER_CLASSES","PANEL_COMPACT_CLASSES","PANEL_COMPACT_SM_CLASSES","POPOVER_CONTENT_CLASSES","HEX_INPUT_CLASSES","TRANSPARENT_SLIDER","ColorPicker","forwardRef","props","ref","defaultValue","onChange","allowOpacity","palette","against","size","disabled","variant","compact","className","i18n","useTranslation","ctx","useFormField","generatedId","useId","pickerId","useFormFieldControlId","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","gridRef","focusedIndex","setFocusedIndex","focusSwatch","index","cells","_a","handleGridKeyDown","event","total","next","forward","lastRowStart","open","setOpen","agentHandle","useAgentRegistration","contrastInfo","bgHsl","swatchGrid","jsx","_swatch","rowStart","j","idx","sel","Check","fullControls","jsxs","Fragment","e","SliderWithGradient","v","Slider","formatNumber","ContrastBadge","panelContent","exitOnTab","useNonModalTabExit","findPopoverTrigger","Popover","level","passes","X","label","gradient","formatValue"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as o, jsxs as g, Fragment as Ze } from "react/jsx-runtime";
2
- import { forwardRef as Qe, useContext as et, useMemo as Y, useState as J, useRef as m, useEffect as R, useCallback as tt } from "react";
3
- import * as V from "@radix-ui/react-popover";
2
+ import { forwardRef as Qe, useContext as et, useMemo as Y, useState as J, useRef as m, useEffect as E, useCallback as tt } from "react";
3
+ import * as P from "@radix-ui/react-popover";
4
4
  import { R as st, _ as x, P as ot } from "./index-4xgbg-sn.js";
5
- import { c as P } from "./index-D2ZczOXr.js";
5
+ import { c as $ } from "./index-D2ZczOXr.js";
6
6
  import { useTranslation as rt } from "react-i18next";
7
7
  import { u as nt, F as it, b as at } from "./form-field-context-DtiROUJV.js";
8
8
  import { c as lt } from "./compose-refs-C0k0tdqF.js";
9
- import { n as E } from "./normalize-diacritics-BNGbFNlJ.js";
9
+ import { n as w } from "./normalize-diacritics-BNGbFNlJ.js";
10
10
  import { g as dt } from "./group-options-BvKhQ3xb.js";
11
11
  import { b as ct } from "./menu-row-BAr8bx1I.js";
12
12
  import { O as ut, a as ft, o as mt, b as pt, c as bt } from "./option-row-Dc7BrbK8.js";
@@ -123,7 +123,7 @@ const Nt = {
123
123
  description: "Each option emits its value as data-option-id."
124
124
  }
125
125
  }
126
- }, Rt = P(
126
+ }, Rt = $(
127
127
  [
128
128
  "ds:peer ds:w-full ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground",
129
129
  "ds:outline-none ds:border-0",
@@ -141,7 +141,7 @@ const Nt = {
141
141
  size: "md"
142
142
  }
143
143
  }
144
- ), Et = P(
144
+ ), Et = $(
145
145
  [
146
146
  "ds:group ds:relative ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:w-full",
147
147
  gt
@@ -160,7 +160,7 @@ const Nt = {
160
160
  tone: "default"
161
161
  }
162
162
  }
163
- ), wt = P(
163
+ ), wt = $(
164
164
  [
165
165
  "ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-[var(--radix-popover-trigger-width)]",
166
166
  // A guard: the list is as wide as the field, so only a field that is
@@ -175,7 +175,7 @@ const Nt = {
175
175
  "ds:data-[side=top]:slide-in-from-bottom-2",
176
176
  "ds:motion-reduce:animate-none"
177
177
  ].join(" ")
178
- ), ve = P(
178
+ ), ve = $(
179
179
  [
180
180
  "ds:relative ds:flex ds:cursor-pointer ds:items-center ds:gap-[var(--spacing-sm)]",
181
181
  "ds:rounded-[var(--radius-sm)]",
@@ -206,24 +206,24 @@ const Nt = {
206
206
  function At({
207
207
  search: n,
208
208
  label: d,
209
- iconClass: $,
210
- size: j,
211
- onSelect: H
209
+ iconClass: j,
210
+ size: H,
211
+ onSelect: q
212
212
  }) {
213
- return ot((q) => q.filtered.count) > 0 ? null : /* @__PURE__ */ g(
213
+ return ot((B) => B.filtered.count) > 0 ? null : /* @__PURE__ */ g(
214
214
  x.Item,
215
215
  {
216
216
  value: `__combobox-create__${n}`,
217
217
  keywords: [],
218
218
  forceMount: !0,
219
- onSelect: () => H(n),
220
- className: ve({ size: j }),
219
+ onSelect: () => q(n),
220
+ className: ve({ size: H }),
221
221
  children: [
222
222
  /* @__PURE__ */ o(
223
223
  "span",
224
224
  {
225
225
  "aria-hidden": "true",
226
- className: `ds:inline-flex ds:items-center ds:justify-center ${$}`
226
+ className: `ds:inline-flex ds:items-center ds:justify-center ${j}`
227
227
  }
228
228
  ),
229
229
  /* @__PURE__ */ o("span", { className: "ds:flex-1 ds:truncate", children: d })
@@ -234,21 +234,21 @@ function At({
234
234
  const he = Qe(
235
235
  function({
236
236
  options: d,
237
- value: $,
238
- defaultValue: j,
239
- onValueChange: H,
237
+ value: j,
238
+ defaultValue: H,
239
+ onValueChange: q,
240
240
  placeholder: te,
241
- clearable: q = !1,
241
+ clearable: B = !1,
242
242
  disabled: ge,
243
243
  readOnly: xe,
244
244
  required: ye,
245
245
  name: Se,
246
246
  id: se,
247
- size: w = "md",
247
+ size: _ = "md",
248
248
  tone: Ne = "default",
249
- filter: B,
249
+ filter: L,
250
250
  allowCreate: Re = !1,
251
- onCreate: L,
251
+ onCreate: U,
252
252
  open: oe,
253
253
  onOpenChange: y,
254
254
  onQueryChange: a,
@@ -257,18 +257,18 @@ const he = Qe(
257
257
  "aria-label": re,
258
258
  "aria-invalid": _e,
259
259
  "aria-describedby": Ie,
260
- autoComplete: z,
260
+ autoComplete: A,
261
261
  matchAutofill: ne,
262
262
  wrapOptionLabels: ie = !1
263
263
  }, ke) {
264
- const { t: _ } = rt("ui"), S = nt(), A = et(it) !== null, [ze, C] = vt({
265
- value: $,
266
- defaultValue: j ?? "",
267
- onChange: H
268
- }), b = ze ?? "", U = Y(
264
+ const { t: I } = rt("ui"), S = nt(), C = et(it) !== null, [ze, D] = vt({
265
+ value: j,
266
+ defaultValue: H ?? "",
267
+ onChange: q
268
+ }), b = ze ?? "", R = Y(
269
269
  () => d.find((e) => e.value === b),
270
270
  [d, b]
271
- ), f = (U == null ? void 0 : U.label) ?? "", [p, c] = J(f), [Ae, ae] = J(!1), D = oe !== void 0, i = D ? oe : Ae, I = m(!1), F = f !== "" && p === f, N = m(null), le = m(null), de = m(null);
271
+ ), f = (R == null ? void 0 : R.label) ?? "", [p, c] = J(f), [Ae, ae] = J(!1), F = oe !== void 0, i = F ? oe : Ae, k = m(!1), T = f !== "" && p === f, N = m(null), le = m(null), de = m(null);
272
272
  at(S, N);
273
273
  const [Ce, De] = J(0), ce = m(!1);
274
274
  Z(() => {
@@ -276,15 +276,15 @@ const he = Qe(
276
276
  ce.current = !0;
277
277
  return;
278
278
  }
279
- F && De((e) => e + 1);
280
- }, [F]);
281
- const T = m(!1);
282
- R(() => {
283
- T.current = !1;
279
+ T && De((e) => e + 1);
280
+ }, [T]);
281
+ const O = m(!1);
282
+ E(() => {
283
+ O.current = !1;
284
284
  }, [p, i]);
285
285
  const K = m(!1);
286
286
  Z(() => {
287
- if (!i || !F || !b) return;
287
+ if (!i || !T || !b) return;
288
288
  const e = de.current, t = e == null ? void 0 : e.querySelector(
289
289
  `[data-option-id="${CSS.escape(b)}"]`
290
290
  );
@@ -297,28 +297,28 @@ const he = Qe(
297
297
  K.current = !1;
298
298
  }
299
299
  }, [i]);
300
- const O = z && z !== "off" ? z : void 0;
300
+ const V = A && A !== "off" ? A : void 0;
301
301
  Z(() => {
302
302
  const e = N.current;
303
- e && (e.setAttribute("aria-expanded", String(i)), O && e.setAttribute("autocomplete", O));
303
+ e && (e.setAttribute("aria-expanded", String(i)), V && e.setAttribute("autocomplete", V));
304
304
  });
305
305
  const M = m(!1);
306
- R(() => {
306
+ E(() => {
307
307
  const e = N.current;
308
- if (!e || !O) return;
308
+ if (!e || !V) return;
309
309
  const t = (r) => {
310
310
  const l = r.inputType;
311
311
  M.current = !l || l === "insertReplacementText";
312
312
  };
313
313
  return e.addEventListener("input", t), () => e.removeEventListener("input", t);
314
- }, [O]), R(() => {
314
+ }, [V]), E(() => {
315
315
  i || c(f);
316
316
  }, [f, i]);
317
- const k = (A ? S.disabled : !1) || !!ge, v = !!xe, Fe = (A ? S.required : !1) || !!ye, ue = A ? S.invalid : !!_e, Te = ue ? "error" : Ne, Oe = A && S.describedBy ? S.describedBy : Ie, fe = te ?? _("inputs.combobox.placeholder", "Search…"), Ve = Y(
317
+ const z = (C ? S.disabled : !1) || !!ge, v = !!xe, Fe = (C ? S.required : !1) || !!ye, ue = C ? S.invalid : !!_e, Te = ue ? "error" : Ne, Oe = C && S.describedBy ? S.describedBy : Ie, fe = te ?? I("inputs.combobox.placeholder", "Search…"), Ve = Y(
318
318
  () => (e, t, r) => {
319
- if (I.current || f !== "" && t === f) return 1;
320
- const l = E(e), s = E(t), h = r == null ? void 0 : r.map(E);
321
- return B ? B(
319
+ if (k.current || f !== "" && t === f) return 1;
320
+ const l = w(e), s = w(t), h = r == null ? void 0 : r.map(w);
321
+ return L ? L(
322
322
  l,
323
323
  s,
324
324
  (h == null ? void 0 : h[0]) ?? ""
@@ -328,22 +328,22 @@ const he = Qe(
328
328
  h
329
329
  );
330
330
  },
331
- [B, f]
331
+ [L, f]
332
332
  ), G = (e) => {
333
- C(e);
333
+ D(e);
334
334
  }, u = (e) => {
335
- D || ae(e), y == null || y(e);
335
+ F || ae(e), y == null || y(e);
336
336
  }, Pe = (e) => {
337
337
  const t = d.find((r) => r.value === e);
338
338
  G(e), c((t == null ? void 0 : t.label) ?? ""), u(!1);
339
339
  }, $e = (e) => {
340
- L == null || L(e), u(!1);
340
+ U == null || U(e), u(!1);
341
341
  }, je = (e) => {
342
342
  var l;
343
- const t = E(e.trim());
343
+ const t = w(e.trim());
344
344
  if (!t) return;
345
345
  const r = ne ? ne(e.trim()) : (l = d.find(
346
- (s) => E(s.value) === t || E(s.label) === t
346
+ (s) => w(s.value) === t || w(s.label) === t
347
347
  )) == null ? void 0 : l.value;
348
348
  return d.find((s) => s.value === r && !s.disabled);
349
349
  }, He = (e) => {
@@ -360,27 +360,27 @@ const he = Qe(
360
360
  return;
361
361
  }
362
362
  }
363
- c(e), I.current || a == null || a(e), !i && e.length > 0 && !I.current && u(!0);
363
+ c(e), k.current || a == null || a(e), !i && e.length > 0 && !k.current && u(!0);
364
364
  }
365
365
  }, qe = () => {
366
- !k && !v && u(!0);
366
+ !z && !v && u(!0);
367
367
  }, Be = () => {
368
- !i && !k && !v && u(!0);
368
+ !i && !z && !v && u(!0);
369
369
  }, Le = () => {
370
- I.current = !0;
370
+ k.current = !0;
371
371
  }, Ue = () => {
372
372
  var t;
373
- if (I.current = !1, v) return;
373
+ if (k.current = !1, v) return;
374
374
  const e = ((t = N.current) == null ? void 0 : t.value) ?? "";
375
375
  c(e), a == null || a(e), e.length > 0 && u(!0);
376
376
  }, Ke = (e) => {
377
377
  if (!e.nativeEvent.isComposing) {
378
- if ((e.key === "ArrowDown" || e.key === "ArrowUp") && !i && !k && !v) {
378
+ if ((e.key === "ArrowDown" || e.key === "ArrowUp") && !i && !z && !v) {
379
379
  e.preventDefault(), u(!0);
380
380
  return;
381
381
  }
382
382
  if ((e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Home" || e.key === "End" || /* cmdk's own Ctrl+N, J, P and K move the highlight too. */
383
- e.ctrlKey && ["n", "j", "p", "k"].includes(e.key)) && (T.current = !0), e.key === "Enter" && (!i || !T.current && (F || p === ""))) {
383
+ e.ctrlKey && ["n", "j", "p", "k"].includes(e.key)) && (O.current = !0), e.key === "Enter" && (!i || !O.current && (T || p === ""))) {
384
384
  e.preventDefault(), i && u(!1);
385
385
  return;
386
386
  }
@@ -392,22 +392,22 @@ const he = Qe(
392
392
  }, Ge = (e) => {
393
393
  v && e || (u(e), e || c(f));
394
394
  }, me = m(b);
395
- R(() => {
395
+ E(() => {
396
396
  me.current = b;
397
397
  }, [b]);
398
398
  const pe = m(p);
399
- R(() => {
399
+ E(() => {
400
400
  pe.current = p;
401
401
  }, [p]);
402
402
  const be = m(i);
403
- R(() => {
403
+ E(() => {
404
404
  be.current = i;
405
405
  }, [i]);
406
406
  const W = tt(
407
407
  (e) => {
408
- D || ae(e), y == null || y(e);
408
+ F || ae(e), y == null || y(e);
409
409
  },
410
- [D, y]
410
+ [F, y]
411
411
  ), We = Y(
412
412
  () => ({
413
413
  getValue: () => me.current || null,
@@ -415,7 +415,7 @@ const he = Qe(
415
415
  getIsOpen: () => be.current,
416
416
  setValue: (e) => {
417
417
  const t = e ?? "";
418
- C(t);
418
+ D(t);
419
419
  const r = d.find((l) => l.value === t);
420
420
  c((r == null ? void 0 : r.label) ?? "");
421
421
  },
@@ -423,16 +423,16 @@ const he = Qe(
423
423
  c(e), a == null || a(e);
424
424
  },
425
425
  clear: () => {
426
- C(""), c(""), a == null || a("");
426
+ D(""), c(""), a == null || a("");
427
427
  },
428
428
  open: () => W(!0),
429
429
  close: () => W(!1)
430
430
  }),
431
- [C, d, W, a]
431
+ [D, d, W, a]
432
432
  );
433
433
  xt(Nt, We, se);
434
- const Xe = q && !!b && !k && !v, Ye = dt(d), X = zt[w];
435
- return /* @__PURE__ */ o(V.Root, { open: i, onOpenChange: Ge, children: /* @__PURE__ */ g(
434
+ const Xe = B && !!b && !z && !v, Ye = dt(d), X = zt[_];
435
+ return /* @__PURE__ */ o(P.Root, { open: i, onOpenChange: Ge, children: /* @__PURE__ */ g(
436
436
  x,
437
437
  {
438
438
  filter: Ve,
@@ -441,12 +441,12 @@ const he = Qe(
441
441
  label: re ?? (S.label || fe),
442
442
  className: "ds:w-full",
443
443
  children: [
444
- /* @__PURE__ */ o(V.Anchor, { asChild: !0, children: /* @__PURE__ */ g(
444
+ /* @__PURE__ */ o(P.Anchor, { asChild: !0, children: /* @__PURE__ */ g(
445
445
  "div",
446
446
  {
447
447
  ref: le,
448
448
  className: Et({
449
- size: w,
449
+ size: _,
450
450
  tone: Te,
451
451
  className: we
452
452
  }),
@@ -459,12 +459,13 @@ const he = Qe(
459
459
  ref: lt(ke, N),
460
460
  value: p,
461
461
  onValueChange: He,
462
+ dir: R == null ? void 0 : R.dir,
462
463
  name: Se,
463
464
  placeholder: fe,
464
- disabled: k,
465
+ disabled: z,
465
466
  readOnly: v,
466
467
  required: Fe,
467
- autoComplete: z,
468
+ autoComplete: A,
468
469
  "aria-describedby": Oe,
469
470
  "aria-invalid": ue || void 0,
470
471
  onFocus: qe,
@@ -472,14 +473,14 @@ const he = Qe(
472
473
  onKeyDown: Ke,
473
474
  onCompositionStart: Le,
474
475
  onCompositionEnd: Ue,
475
- className: Rt({ size: w })
476
+ className: Rt({ size: _ })
476
477
  }
477
478
  ),
478
479
  Xe ? /* @__PURE__ */ o(
479
480
  "button",
480
481
  {
481
482
  type: "button",
482
- "aria-label": _("inputs.combobox.clear", "Clear selection"),
483
+ "aria-label": I("inputs.combobox.clear", "Clear selection"),
483
484
  onClick: Me,
484
485
  onPointerDown: (e) => e.stopPropagation(),
485
486
  className: [
@@ -498,12 +499,12 @@ const he = Qe(
498
499
  ]
499
500
  }
500
501
  ) }),
501
- /* @__PURE__ */ o(V.Portal, { forceMount: !0, children: /* @__PURE__ */ o(
502
- V.Content,
502
+ /* @__PURE__ */ o(P.Portal, { forceMount: !0, children: /* @__PURE__ */ o(
503
+ P.Content,
503
504
  {
504
505
  forceMount: !0,
505
506
  hidden: !i,
506
- "aria-label": re ?? _("inputs.combobox.popupLabel", "Options"),
507
+ "aria-label": re ?? I("inputs.combobox.popupLabel", "Options"),
507
508
  onOpenAutoFocus: (e) => e.preventDefault(),
508
509
  onCloseAutoFocus: (e) => e.preventDefault(),
509
510
  onInteractOutside: (e) => {
@@ -520,11 +521,11 @@ const he = Qe(
520
521
  ref: de,
521
522
  className: It,
522
523
  onPointerMove: () => {
523
- K.current || (T.current = !0);
524
+ K.current || (O.current = !0);
524
525
  },
525
526
  onMouseDown: (e) => e.preventDefault(),
526
527
  children: [
527
- /* @__PURE__ */ o(x.Empty, { className: kt, children: /* @__PURE__ */ o("div", { role: "option", "aria-selected": !1, "aria-disabled": "true", children: Ee ?? _("inputs.combobox.empty", "No results found") }) }),
528
+ /* @__PURE__ */ o(x.Empty, { className: kt, children: /* @__PURE__ */ o("div", { role: "option", "aria-selected": !1, "aria-disabled": "true", children: Ee ?? I("inputs.combobox.empty", "No results found") }) }),
528
529
  Ye.map(({ group: e, items: t }, r) => {
529
530
  const l = t.map((s) => {
530
531
  const h = s.value === b;
@@ -536,7 +537,7 @@ const he = Qe(
536
537
  keywords: [s.label],
537
538
  disabled: s.disabled,
538
539
  onSelect: Pe,
539
- className: ve({ size: w }),
540
+ className: ve({ size: _ }),
540
541
  children: [
541
542
  /* @__PURE__ */ o(
542
543
  "span",
@@ -573,6 +574,7 @@ const he = Qe(
573
574
  /* @__PURE__ */ o(
574
575
  "span",
575
576
  {
577
+ dir: s.dir,
576
578
  className: mt({
577
579
  wrap: ie,
578
580
  className: "ds:flex-1"
@@ -598,7 +600,14 @@ const he = Qe(
598
600
  }
599
601
  )
600
602
  ) : /* @__PURE__ */ g(Ze, { children: [
601
- /* @__PURE__ */ o("span", { className: "ds:flex-1 ds:truncate", children: s.label }),
603
+ /* @__PURE__ */ o(
604
+ "span",
605
+ {
606
+ dir: s.dir,
607
+ className: "ds:flex-1 ds:truncate",
608
+ children: s.label
609
+ }
610
+ ),
602
611
  s.endContent ? (
603
612
  // Deliberately NOT aria-hidden — unlike
604
613
  // `startAdornment`, this slot carries meaning
@@ -626,11 +635,11 @@ const he = Qe(
626
635
  At,
627
636
  {
628
637
  search: p,
629
- label: _("inputs.combobox.create", 'Create "{{value}}"', {
638
+ label: I("inputs.combobox.create", 'Create "{{value}}"', {
630
639
  value: p
631
640
  }),
632
641
  iconClass: X,
633
- size: w,
642
+ size: _,
634
643
  onSelect: $e
635
644
  }
636
645
  ) : null
@@ -655,4 +664,4 @@ export {
655
664
  ve as d,
656
665
  Et as e
657
666
  };
658
- //# sourceMappingURL=combobox-U5yfO6o0.js.map
667
+ //# sourceMappingURL=combobox-vF9O-QoG.js.map