@alfadocs/ui-kit 0.0.19 → 0.1.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 (552) hide show
  1. package/dist/_chunks/accordion-BJD1aM67.js +117 -0
  2. package/dist/_chunks/accordion-BJD1aM67.js.map +1 -0
  3. package/dist/_chunks/agenda-card-Bld47Eul.js +130 -0
  4. package/dist/_chunks/agenda-card-Bld47Eul.js.map +1 -0
  5. package/dist/_chunks/agenda-tray-D86cNIJ0.js +119 -0
  6. package/dist/_chunks/agenda-tray-D86cNIJ0.js.map +1 -0
  7. package/dist/_chunks/ai-prompt-input-CdYwt2VP.js +379 -0
  8. package/dist/_chunks/ai-prompt-input-CdYwt2VP.js.map +1 -0
  9. package/dist/_chunks/{alert-C5ud6CfE.js → alert-ETrF7Q8J.js} +51 -51
  10. package/dist/_chunks/alert-ETrF7Q8J.js.map +1 -0
  11. package/dist/_chunks/apexcharts-theme-BkSShpEy.js +48 -0
  12. package/dist/_chunks/apexcharts-theme-BkSShpEy.js.map +1 -0
  13. package/dist/_chunks/{app-frame-CmIUp9BD.js → app-frame-uq2Gy0vs.js} +37 -37
  14. package/dist/_chunks/app-frame-uq2Gy0vs.js.map +1 -0
  15. package/dist/_chunks/aspect-ratio-BqU4itGW.js +56 -0
  16. package/dist/_chunks/aspect-ratio-BqU4itGW.js.map +1 -0
  17. package/dist/_chunks/{audio-recorder-GkGNtW2X.js → audio-recorder-D2UEBF9B.js} +98 -98
  18. package/dist/_chunks/audio-recorder-D2UEBF9B.js.map +1 -0
  19. package/dist/_chunks/{audio-visualiser-CIO3yy23.js → audio-visualiser-B4u4goV5.js} +46 -46
  20. package/dist/_chunks/audio-visualiser-B4u4goV5.js.map +1 -0
  21. package/dist/_chunks/{autocomplete.agent-kb0nmr6F.js → autocomplete.agent-Bi6CiRKa.js} +111 -111
  22. package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +1 -0
  23. package/dist/_chunks/{avatar-BsV7vRA6.js → avatar-BAhxbDEu.js} +38 -38
  24. package/dist/_chunks/avatar-BAhxbDEu.js.map +1 -0
  25. package/dist/_chunks/badge-zDghajh8.js +104 -0
  26. package/dist/_chunks/badge-zDghajh8.js.map +1 -0
  27. package/dist/_chunks/{balance-cell-renderer-BQwN51rT.js → balance-cell-renderer-BGyvZWjB.js} +123 -124
  28. package/dist/_chunks/balance-cell-renderer-BGyvZWjB.js.map +1 -0
  29. package/dist/_chunks/{breadcrumb-DnO6eHSS.js → breadcrumb-pdUacgm1.js} +40 -40
  30. package/dist/_chunks/breadcrumb-pdUacgm1.js.map +1 -0
  31. package/dist/_chunks/button-DmiGFnNA.js +119 -0
  32. package/dist/_chunks/button-DmiGFnNA.js.map +1 -0
  33. package/dist/_chunks/{button-group-CI7LFxt3.js → button-group-BtTHSyU0.js} +24 -24
  34. package/dist/_chunks/button-group-BtTHSyU0.js.map +1 -0
  35. package/dist/_chunks/{calendar-BIXVzhkL.js → calendar-BkDeDTaX.js} +333 -290
  36. package/dist/_chunks/calendar-BkDeDTaX.js.map +1 -0
  37. package/dist/_chunks/card-DeItIBcV.js +158 -0
  38. package/dist/_chunks/card-DeItIBcV.js.map +1 -0
  39. package/dist/_chunks/{chart.agent-DkmVXNsI.js → chart.agent-BdS-_8MO.js} +66 -64
  40. package/dist/_chunks/chart.agent-BdS-_8MO.js.map +1 -0
  41. package/dist/_chunks/chat-container-Co8HpB64.js +174 -0
  42. package/dist/_chunks/chat-container-Co8HpB64.js.map +1 -0
  43. package/dist/_chunks/{chat-input-aphxDjZL.js → chat-input-3rstZhHR.js} +57 -57
  44. package/dist/_chunks/chat-input-3rstZhHR.js.map +1 -0
  45. package/dist/_chunks/{chat-message-CdJSD18D.js → chat-message-dDMVSYBs.js} +66 -66
  46. package/dist/_chunks/chat-message-dDMVSYBs.js.map +1 -0
  47. package/dist/_chunks/checkbox-DMzgtnqw.js +116 -0
  48. package/dist/_chunks/checkbox-DMzgtnqw.js.map +1 -0
  49. package/dist/_chunks/{checkbox-group-D1aqVI0-.js → checkbox-group-DBnIBRT_.js} +34 -34
  50. package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +1 -0
  51. package/dist/_chunks/{collapsible-jBFm7Ah8.js → collapsible-DPGQnHZh.js} +16 -16
  52. package/dist/_chunks/collapsible-DPGQnHZh.js.map +1 -0
  53. package/dist/_chunks/{color-picker-CiotzQJF.js → color-picker-OKKF3Dww.js} +158 -158
  54. package/dist/_chunks/color-picker-OKKF3Dww.js.map +1 -0
  55. package/dist/_chunks/{combobox.agent-B6RwDSct.js → combobox.agent-CfeB-IZ1.js} +107 -107
  56. package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +1 -0
  57. package/dist/_chunks/{command-palette.agent-B87_OkmC.js → command-palette.agent-XLfSGHCL.js} +27 -27
  58. package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +1 -0
  59. package/dist/_chunks/{date-picker-CdPuI3dK.js → date-picker-DXx8oSJb.js} +5 -5
  60. package/dist/_chunks/{date-picker-CdPuI3dK.js.map → date-picker-DXx8oSJb.js.map} +1 -1
  61. package/dist/_chunks/{date-range-picker-DfK4cjln.js → date-range-picker-C3CbY__H.js} +29 -29
  62. package/dist/_chunks/{date-range-picker-DfK4cjln.js.map → date-range-picker-C3CbY__H.js.map} +1 -1
  63. package/dist/_chunks/{date-time-picker-CX_FMsLG.js → date-time-picker-Bn3FPeAc.js} +58 -58
  64. package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +1 -0
  65. package/dist/_chunks/description-list-B1CL3RTG.js +187 -0
  66. package/dist/_chunks/description-list-B1CL3RTG.js.map +1 -0
  67. package/dist/_chunks/{dialog.agent-B276rAQF.js → dialog.agent-D9WeIWi2.js} +39 -39
  68. package/dist/_chunks/dialog.agent-D9WeIWi2.js.map +1 -0
  69. package/dist/_chunks/dropdown-menu-BnVUeVG3.js +210 -0
  70. package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +1 -0
  71. package/dist/_chunks/{empty-state-DiG7vYBM.js → empty-state-DV96gCnp.js} +37 -37
  72. package/dist/_chunks/empty-state-DV96gCnp.js.map +1 -0
  73. package/dist/_chunks/{file-upload.agent-BMow5yDY.js → file-upload.agent-DYFnqdxw.js} +185 -185
  74. package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +1 -0
  75. package/dist/_chunks/{flag-ChP784EM.js → flag-C3BUEwHH.js} +14 -14
  76. package/dist/_chunks/{flag-ChP784EM.js.map → flag-C3BUEwHH.js.map} +1 -1
  77. package/dist/_chunks/floating-action-button-RigP2E7o.js +95 -0
  78. package/dist/_chunks/floating-action-button-RigP2E7o.js.map +1 -0
  79. package/dist/_chunks/form-field-DI5LY5aG.js +121 -0
  80. package/dist/_chunks/form-field-DI5LY5aG.js.map +1 -0
  81. package/dist/_chunks/freemium-paywall-D0GiUFOe.js +197 -0
  82. package/dist/_chunks/freemium-paywall-D0GiUFOe.js.map +1 -0
  83. package/dist/_chunks/{header-BpKaSL_v.js → header-CW2oRd5H.js} +111 -111
  84. package/dist/_chunks/header-CW2oRd5H.js.map +1 -0
  85. package/dist/_chunks/icon-button-C482ii4y.js +45 -0
  86. package/dist/_chunks/icon-button-C482ii4y.js.map +1 -0
  87. package/dist/_chunks/{icon-button-group-tERESY-n.js → icon-button-group-BnhkUWUg.js} +56 -56
  88. package/dist/_chunks/icon-button-group-BnhkUWUg.js.map +1 -0
  89. package/dist/_chunks/{kbd-0iPlQjgC.js → kbd-DTcIjYA7.js} +52 -52
  90. package/dist/_chunks/kbd-DTcIjYA7.js.map +1 -0
  91. package/dist/_chunks/{key-value-pair--Je59tAF.js → key-value-pair-DDhSYdDL.js} +26 -26
  92. package/dist/_chunks/key-value-pair-DDhSYdDL.js.map +1 -0
  93. package/dist/_chunks/leo-sidebar-gXXcGPKk.js +755 -0
  94. package/dist/_chunks/leo-sidebar-gXXcGPKk.js.map +1 -0
  95. package/dist/_chunks/{list-n8vI8Yvn.js → list-Cwe8mcmh.js} +96 -96
  96. package/dist/_chunks/list-Cwe8mcmh.js.map +1 -0
  97. package/dist/_chunks/live-region-COggO6x6.js +57 -0
  98. package/dist/_chunks/live-region-COggO6x6.js.map +1 -0
  99. package/dist/_chunks/{logo-UNWYb9p7.js → logo-3wrZGpwg.js} +29 -29
  100. package/dist/_chunks/logo-3wrZGpwg.js.map +1 -0
  101. package/dist/_chunks/{matrix-rain-Q7xTEpKu.js → matrix-rain-gsHqSvW7.js} +75 -75
  102. package/dist/_chunks/matrix-rain-gsHqSvW7.js.map +1 -0
  103. package/dist/_chunks/message-card-DID3cXUW.js +275 -0
  104. package/dist/_chunks/message-card-DID3cXUW.js.map +1 -0
  105. package/dist/_chunks/message-tray-CVMLBnVp.js +302 -0
  106. package/dist/_chunks/message-tray-CVMLBnVp.js.map +1 -0
  107. package/dist/_chunks/{multi-select.agent-Cf4pU636.js → multi-select.agent-BUKYZJfp.js} +126 -126
  108. package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +1 -0
  109. package/dist/_chunks/{navigation-menu-DBDsAmXc.js → navigation-menu-NjwxyshT.js} +68 -97
  110. package/dist/_chunks/navigation-menu-NjwxyshT.js.map +1 -0
  111. package/dist/_chunks/notification-card-BZ33fq8H.js +255 -0
  112. package/dist/_chunks/notification-card-BZ33fq8H.js.map +1 -0
  113. package/dist/_chunks/{notification-tray-CNWPuPZp.js → notification-tray-CnEd7B2q.js} +96 -96
  114. package/dist/_chunks/notification-tray-CnEd7B2q.js.map +1 -0
  115. package/dist/_chunks/{number-input-B1Th0DdC.js → number-input-D7rSa_ef.js} +73 -73
  116. package/dist/_chunks/number-input-D7rSa_ef.js.map +1 -0
  117. package/dist/_chunks/{otp-input-CmoBuZ4K.js → otp-input-C9R9sC74.js} +42 -42
  118. package/dist/_chunks/otp-input-C9R9sC74.js.map +1 -0
  119. package/dist/_chunks/{pagination.agent-B5KLDCMN.js → pagination.agent-D75FB6XP.js} +106 -106
  120. package/dist/_chunks/pagination.agent-D75FB6XP.js.map +1 -0
  121. package/dist/_chunks/{password-input-DnjNh-hQ.js → password-input-C6PvKyQV.js} +59 -59
  122. package/dist/_chunks/password-input-C6PvKyQV.js.map +1 -0
  123. package/dist/_chunks/{patient-shell-D0RaWDMR.js → patient-shell-CGsmI5LJ.js} +9 -9
  124. package/dist/_chunks/{patient-shell-D0RaWDMR.js.map → patient-shell-CGsmI5LJ.js.map} +1 -1
  125. package/dist/_chunks/{payment-form-Cf7U6r5L.js → payment-form-l3j-gA-t.js} +108 -108
  126. package/dist/_chunks/payment-form-l3j-gA-t.js.map +1 -0
  127. package/dist/_chunks/{pdf-viewer.agent-DXjgDItg.js → pdf-viewer.agent-DuGfSoep.js} +234 -233
  128. package/dist/_chunks/pdf-viewer.agent-DuGfSoep.js.map +1 -0
  129. package/dist/_chunks/{phone-input-C2dtIuxW.js → phone-input-ZWa_FU4R.js} +112 -112
  130. package/dist/_chunks/phone-input-ZWa_FU4R.js.map +1 -0
  131. package/dist/_chunks/{popover-D1woU9mP.js → popover-CMr1pTPO.js} +58 -58
  132. package/dist/_chunks/popover-CMr1pTPO.js.map +1 -0
  133. package/dist/_chunks/{privacy-lock-C1X42Sit.js → privacy-lock-Br5k7Rul.js} +36 -36
  134. package/dist/_chunks/privacy-lock-Br5k7Rul.js.map +1 -0
  135. package/dist/_chunks/{progress-DL3-izuO.js → progress-D4ELgHG3.js} +43 -43
  136. package/dist/_chunks/progress-D4ELgHG3.js.map +1 -0
  137. package/dist/_chunks/radio-B_gvGU29.js +106 -0
  138. package/dist/_chunks/radio-B_gvGU29.js.map +1 -0
  139. package/dist/_chunks/radio-group-Bn8Wt0yc.js +88 -0
  140. package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +1 -0
  141. package/dist/_chunks/{react-day-picker-DQKDiJ37.js → react-day-picker-d0MHsyCj.js} +174 -174
  142. package/dist/_chunks/{react-day-picker-DQKDiJ37.js.map → react-day-picker-d0MHsyCj.js.map} +1 -1
  143. package/dist/_chunks/{resizable.agent-DVk_jJur.js → resizable.agent-DBpPGNdy.js} +122 -122
  144. package/dist/_chunks/resizable.agent-DBpPGNdy.js.map +1 -0
  145. package/dist/_chunks/{rich-text-editor.agent-BOjF4Xao.js → rich-text-editor.agent-C1_E7_7t.js} +225 -225
  146. package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +1 -0
  147. package/dist/_chunks/scroll-area-Ba99pJ_R.js +144 -0
  148. package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +1 -0
  149. package/dist/_chunks/{search-bar-DgSOAajC.js → search-bar-VoTqJhRp.js} +131 -131
  150. package/dist/_chunks/search-bar-VoTqJhRp.js.map +1 -0
  151. package/dist/_chunks/search-input-D6rarD0_.js +197 -0
  152. package/dist/_chunks/search-input-D6rarD0_.js.map +1 -0
  153. package/dist/_chunks/select-DbxWF3O_.js +320 -0
  154. package/dist/_chunks/select-DbxWF3O_.js.map +1 -0
  155. package/dist/_chunks/{separator-DExI4amU.js → separator-BRQHi8s0.js} +17 -17
  156. package/dist/_chunks/separator-BRQHi8s0.js.map +1 -0
  157. package/dist/_chunks/sheet-DyWqluiS.js +188 -0
  158. package/dist/_chunks/sheet-DyWqluiS.js.map +1 -0
  159. package/dist/_chunks/sidebar-B52iGGNV.js +1076 -0
  160. package/dist/_chunks/sidebar-B52iGGNV.js.map +1 -0
  161. package/dist/_chunks/sign-in-with-alfadocs-button-BU7MP5Hg.js +44 -0
  162. package/dist/_chunks/sign-in-with-alfadocs-button-BU7MP5Hg.js.map +1 -0
  163. package/dist/_chunks/{signature-capture.agent-L_1_-zVR.js → signature-capture.agent-4htVctJ2.js} +163 -163
  164. package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +1 -0
  165. package/dist/_chunks/skeleton-ClO1v5GE.js +95 -0
  166. package/dist/_chunks/skeleton-ClO1v5GE.js.map +1 -0
  167. package/dist/_chunks/skip-link-CASJkBOe.js +68 -0
  168. package/dist/_chunks/skip-link-CASJkBOe.js.map +1 -0
  169. package/dist/_chunks/slider-n8JWpJvT.js +273 -0
  170. package/dist/_chunks/slider-n8JWpJvT.js.map +1 -0
  171. package/dist/_chunks/slot-grid-BRAkqChA.js +491 -0
  172. package/dist/_chunks/slot-grid-BRAkqChA.js.map +1 -0
  173. package/dist/_chunks/{sparkline.agent-BDTXzTy9.js → sparkline.agent-BLY1IMyW.js} +45 -45
  174. package/dist/_chunks/sparkline.agent-BLY1IMyW.js.map +1 -0
  175. package/dist/_chunks/{spinner-77xUGpuX.js → spinner-CoAOGcDa.js} +40 -40
  176. package/dist/_chunks/spinner-CoAOGcDa.js.map +1 -0
  177. package/dist/_chunks/stat-D76MNHzK.js +208 -0
  178. package/dist/_chunks/stat-D76MNHzK.js.map +1 -0
  179. package/dist/_chunks/{stepper-accordion-BkvqQWPI.js → stepper-accordion-DHQ80A4v.js} +33 -33
  180. package/dist/_chunks/stepper-accordion-DHQ80A4v.js.map +1 -0
  181. package/dist/_chunks/{stepper-calendar-BQMjrwzo.js → stepper-calendar-vtWwa2bY.js} +159 -159
  182. package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +1 -0
  183. package/dist/_chunks/stepper-progress-DMZ5w5VR.js +128 -0
  184. package/dist/_chunks/stepper-progress-DMZ5w5VR.js.map +1 -0
  185. package/dist/_chunks/streaming-text-D0cW8pwq.js +104 -0
  186. package/dist/_chunks/streaming-text-D0cW8pwq.js.map +1 -0
  187. package/dist/_chunks/suggestion-chip-BgNFpPEE.js +157 -0
  188. package/dist/_chunks/suggestion-chip-BgNFpPEE.js.map +1 -0
  189. package/dist/_chunks/switch-DtLPKO0p.js +137 -0
  190. package/dist/_chunks/switch-DtLPKO0p.js.map +1 -0
  191. package/dist/_chunks/{tabs.agent-FsGU3sZL.js → tabs.agent-BDUlyPbJ.js} +101 -101
  192. package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +1 -0
  193. package/dist/_chunks/tag-CfSZZN2f.js +194 -0
  194. package/dist/_chunks/tag-CfSZZN2f.js.map +1 -0
  195. package/dist/_chunks/task-card-B5xfiFg5.js +112 -0
  196. package/dist/_chunks/task-card-B5xfiFg5.js.map +1 -0
  197. package/dist/_chunks/task-tray-BnpiodZ4.js +99 -0
  198. package/dist/_chunks/task-tray-BnpiodZ4.js.map +1 -0
  199. package/dist/_chunks/text-area-BqbruBWx.js +152 -0
  200. package/dist/_chunks/text-area-BqbruBWx.js.map +1 -0
  201. package/dist/_chunks/text-input-lh6kRXZS.js +187 -0
  202. package/dist/_chunks/text-input-lh6kRXZS.js.map +1 -0
  203. package/dist/_chunks/theme-toggle-BHKMiORD.js +326 -0
  204. package/dist/_chunks/theme-toggle-BHKMiORD.js.map +1 -0
  205. package/dist/_chunks/{time-picker-BapZq0OY.js → time-picker-DbpAmPux.js} +102 -102
  206. package/dist/_chunks/time-picker-DbpAmPux.js.map +1 -0
  207. package/dist/_chunks/timeline-vjsUeuq1.js +219 -0
  208. package/dist/_chunks/timeline-vjsUeuq1.js.map +1 -0
  209. package/dist/_chunks/{timestamp-BLM-jjdw.js → timestamp-DmSt92P1.js} +30 -30
  210. package/dist/_chunks/timestamp-DmSt92P1.js.map +1 -0
  211. package/dist/_chunks/{toast-DSCqnDRl.js → toast-DllSITLf.js} +151 -151
  212. package/dist/_chunks/{toast-DSCqnDRl.js.map → toast-DllSITLf.js.map} +1 -1
  213. package/dist/_chunks/{tooltip-DF6WjD1r.js → tooltip-Dp3u8jGz.js} +30 -30
  214. package/dist/_chunks/tooltip-Dp3u8jGz.js.map +1 -0
  215. package/dist/_chunks/{tooth-scheme.agent-CFKl3iQr.js → tooth-scheme.agent-BRqxWa1D.js} +75 -75
  216. package/dist/_chunks/tooth-scheme.agent-BRqxWa1D.js.map +1 -0
  217. package/dist/_chunks/transcript-panel-Bg1BTMSr.js +265 -0
  218. package/dist/_chunks/transcript-panel-Bg1BTMSr.js.map +1 -0
  219. package/dist/_chunks/typing-indicator-BRg22Rqr.js +81 -0
  220. package/dist/_chunks/typing-indicator-BRg22Rqr.js.map +1 -0
  221. package/dist/_chunks/use-locale-BuXR_Zl9.js +32 -0
  222. package/dist/_chunks/use-locale-BuXR_Zl9.js.map +1 -0
  223. package/dist/_chunks/visually-hidden-Y3jcdCv-.js +21 -0
  224. package/dist/_chunks/visually-hidden-Y3jcdCv-.js.map +1 -0
  225. package/dist/_chunks/{warning-stack-Cyf_81SL.js → warning-stack-B9N9yWet.js} +38 -38
  226. package/dist/_chunks/warning-stack-B9N9yWet.js.map +1 -0
  227. package/dist/_chunks/{workflow-map-Uf-hHAO3.js → workflow-map-gBhL_Wrs.js} +385 -385
  228. package/dist/_chunks/workflow-map-gBhL_Wrs.js.map +1 -0
  229. package/dist/agent-catalog.json +1 -1
  230. package/dist/components/_shared/index.d.ts +2 -0
  231. package/dist/components/_shared/index.d.ts.map +1 -1
  232. package/dist/components/_shared/use-focus-trap.d.ts +32 -0
  233. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -0
  234. package/dist/components/_shared/use-neutralize-hidden-focus.d.ts +3 -0
  235. package/dist/components/_shared/use-neutralize-hidden-focus.d.ts.map +1 -0
  236. package/dist/components/accordion/index.js +1 -1
  237. package/dist/components/agenda-card/index.js +1 -1
  238. package/dist/components/agenda-tray/index.js +1 -1
  239. package/dist/components/ai-prompt-input/index.js +1 -1
  240. package/dist/components/alert/index.js +1 -1
  241. package/dist/components/app-frame/index.js +1 -1
  242. package/dist/components/aspect-ratio/index.js +1 -1
  243. package/dist/components/audio-recorder/index.js +1 -1
  244. package/dist/components/audio-visualiser/index.js +1 -1
  245. package/dist/components/autocomplete/index.js +1 -1
  246. package/dist/components/avatar/index.js +1 -1
  247. package/dist/components/badge/index.js +1 -1
  248. package/dist/components/breadcrumb/index.js +1 -1
  249. package/dist/components/button/index.js +2 -2
  250. package/dist/components/button-group/index.js +1 -1
  251. package/dist/components/calendar/calendar.d.ts.map +1 -1
  252. package/dist/components/calendar/index.js +1 -1
  253. package/dist/components/card/index.js +1 -1
  254. package/dist/components/chart/chart.d.ts.map +1 -1
  255. package/dist/components/chart/index.js +1 -1
  256. package/dist/components/chat-container/index.js +1 -1
  257. package/dist/components/chat-input/index.js +1 -1
  258. package/dist/components/chat-message/index.js +1 -1
  259. package/dist/components/checkbox/index.js +1 -1
  260. package/dist/components/checkbox-group/index.js +1 -1
  261. package/dist/components/collapsible/index.js +1 -1
  262. package/dist/components/color-picker/index.js +1 -1
  263. package/dist/components/combobox/index.js +1 -1
  264. package/dist/components/command-palette/index.js +1 -1
  265. package/dist/components/data-table/index.js +1 -1
  266. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  267. package/dist/components/date-picker/index.js +1 -1
  268. package/dist/components/date-range-picker/index.js +1 -1
  269. package/dist/components/date-time-picker/index.js +1 -1
  270. package/dist/components/description-list/index.js +1 -1
  271. package/dist/components/dialog/index.js +1 -1
  272. package/dist/components/dropdown-menu/index.js +1 -1
  273. package/dist/components/empty-state/index.js +1 -1
  274. package/dist/components/file-upload/index.js +1 -1
  275. package/dist/components/flag/index.js +1 -1
  276. package/dist/components/floating-action-button/index.js +1 -1
  277. package/dist/components/form-field/index.js +1 -1
  278. package/dist/components/freemium-paywall/index.js +1 -1
  279. package/dist/components/header/index.js +1 -1
  280. package/dist/components/icon-button/index.d.ts +3 -0
  281. package/dist/components/icon-button/index.d.ts.map +1 -0
  282. package/dist/components/icon-button/index.js +5 -0
  283. package/dist/components/icon-button/index.js.map +1 -0
  284. package/dist/components/icon-button-group/index.js +1 -1
  285. package/dist/components/index.d.ts +8 -2
  286. package/dist/components/index.d.ts.map +1 -1
  287. package/dist/components/kbd/index.js +1 -1
  288. package/dist/components/key-value-pair/index.js +1 -1
  289. package/dist/components/list/index.js +1 -1
  290. package/dist/components/live-region/index.d.ts +3 -0
  291. package/dist/components/live-region/index.d.ts.map +1 -0
  292. package/dist/components/live-region/index.js +5 -0
  293. package/dist/components/live-region/index.js.map +1 -0
  294. package/dist/components/live-region/live-region.d.ts +49 -0
  295. package/dist/components/live-region/live-region.d.ts.map +1 -0
  296. package/dist/components/logo/index.js +1 -1
  297. package/dist/components/matrix-rain/index.js +1 -1
  298. package/dist/components/message-card/index.js +1 -1
  299. package/dist/components/message-tray/index.js +1 -1
  300. package/dist/components/multi-select/index.js +1 -1
  301. package/dist/components/navigation-menu/index.d.ts +4 -2
  302. package/dist/components/navigation-menu/index.d.ts.map +1 -1
  303. package/dist/components/navigation-menu/index.js +3 -2
  304. package/dist/components/navigation-menu/index.js.map +1 -1
  305. package/dist/components/navigation-menu/navigation-menu.d.ts +2 -6
  306. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  307. package/dist/components/notification-card/index.js +1 -1
  308. package/dist/components/notification-tray/index.js +1 -1
  309. package/dist/components/number-input/index.js +1 -1
  310. package/dist/components/otp-input/index.js +1 -1
  311. package/dist/components/pagination/index.js +1 -1
  312. package/dist/components/password-input/index.js +1 -1
  313. package/dist/components/payment-form/index.js +1 -1
  314. package/dist/components/pdf-viewer/index.js +1 -1
  315. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  316. package/dist/components/phone-input/index.js +1 -1
  317. package/dist/components/popover/index.js +1 -1
  318. package/dist/components/privacy-lock/index.js +1 -1
  319. package/dist/components/progress/index.js +1 -1
  320. package/dist/components/radio/index.d.ts +3 -0
  321. package/dist/components/radio/index.d.ts.map +1 -0
  322. package/dist/components/radio/index.js +5 -0
  323. package/dist/components/radio/index.js.map +1 -0
  324. package/dist/components/radio-group/index.js +4 -3
  325. package/dist/components/radio-group/index.js.map +1 -1
  326. package/dist/components/resizable/index.js +1 -1
  327. package/dist/components/rich-text-editor/index.js +1 -1
  328. package/dist/components/scroll-area/index.js +1 -1
  329. package/dist/components/search-bar/index.js +1 -1
  330. package/dist/components/search-input/index.js +1 -1
  331. package/dist/components/select/index.js +1 -1
  332. package/dist/components/separator/index.js +1 -1
  333. package/dist/components/sheet/index.js +1 -1
  334. package/dist/components/sidebar/index.js +1 -1
  335. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  336. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts +20 -0
  337. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  338. package/dist/components/signature-capture/index.js +1 -1
  339. package/dist/components/skeleton/index.js +1 -1
  340. package/dist/components/skip-link/index.d.ts +2 -0
  341. package/dist/components/skip-link/index.d.ts.map +1 -0
  342. package/dist/components/skip-link/index.js +5 -0
  343. package/dist/components/skip-link/index.js.map +1 -0
  344. package/dist/components/skip-link/skip-link.d.ts +34 -0
  345. package/dist/components/skip-link/skip-link.d.ts.map +1 -0
  346. package/dist/components/slider/index.js +1 -1
  347. package/dist/components/slot-grid/index.js +1 -1
  348. package/dist/components/sparkline/index.js +1 -1
  349. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  350. package/dist/components/spinner/index.js +1 -1
  351. package/dist/components/stat/index.js +1 -1
  352. package/dist/components/stepper-accordion/index.js +1 -1
  353. package/dist/components/stepper-calendar/index.js +1 -1
  354. package/dist/components/stepper-progress/index.js +1 -1
  355. package/dist/components/streaming-text/index.js +1 -1
  356. package/dist/components/suggestion-chip/index.js +1 -1
  357. package/dist/components/switch/index.js +1 -1
  358. package/dist/components/tabs/index.js +1 -1
  359. package/dist/components/tag/index.js +1 -1
  360. package/dist/components/task-card/index.js +1 -1
  361. package/dist/components/task-tray/index.js +1 -1
  362. package/dist/components/text-area/index.js +1 -1
  363. package/dist/components/text-input/index.js +1 -1
  364. package/dist/components/theme-toggle/index.d.ts +3 -0
  365. package/dist/components/theme-toggle/index.d.ts.map +1 -0
  366. package/dist/components/theme-toggle/index.js +5 -0
  367. package/dist/components/theme-toggle/index.js.map +1 -0
  368. package/dist/components/theme-toggle/theme-toggle.d.ts +34 -0
  369. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  370. package/dist/components/time-picker/index.js +1 -1
  371. package/dist/components/timeline/index.js +1 -1
  372. package/dist/components/timestamp/index.js +1 -1
  373. package/dist/components/toast/index.js +1 -1
  374. package/dist/components/tooltip/index.js +1 -1
  375. package/dist/components/tooth-scheme/index.js +1 -1
  376. package/dist/components/transcript-panel/index.js +1 -1
  377. package/dist/components/typing-indicator/index.js +1 -1
  378. package/dist/components/visually-hidden/index.d.ts +2 -0
  379. package/dist/components/visually-hidden/index.d.ts.map +1 -0
  380. package/dist/components/visually-hidden/index.js +5 -0
  381. package/dist/components/visually-hidden/index.js.map +1 -0
  382. package/dist/components/visually-hidden/visually-hidden.d.ts +11 -0
  383. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
  384. package/dist/components/warning-stack/index.js +1 -1
  385. package/dist/components/workflow/index.js +1 -1
  386. package/dist/hooks/index.d.ts +3 -0
  387. package/dist/hooks/index.d.ts.map +1 -1
  388. package/dist/hooks/index.js +10 -7
  389. package/dist/hooks/index.js.map +1 -1
  390. package/dist/hooks/use-locale.d.ts +27 -0
  391. package/dist/hooks/use-locale.d.ts.map +1 -0
  392. package/dist/hooks/use-media-query.d.ts +17 -0
  393. package/dist/hooks/use-media-query.d.ts.map +1 -0
  394. package/dist/i18n/config.js +59 -2
  395. package/dist/i18n/config.js.map +1 -1
  396. package/dist/i18n/resources.d.ts +57 -0
  397. package/dist/i18n/resources.d.ts.map +1 -1
  398. package/dist/index.js +442 -431
  399. package/dist/index.js.map +1 -1
  400. package/dist/locales/de.json +19 -0
  401. package/dist/locales/en.json +19 -0
  402. package/dist/locales/it.json +19 -0
  403. package/dist/patterns/leo-assistant/index.js +1 -1
  404. package/dist/patterns/patient-shell/index.js +1 -1
  405. package/dist/tokens.css +2 -2
  406. package/package.json +4 -2
  407. package/dist/_chunks/accordion-Dgcd38U_.js +0 -117
  408. package/dist/_chunks/accordion-Dgcd38U_.js.map +0 -1
  409. package/dist/_chunks/agenda-card-B2gq-gTq.js +0 -130
  410. package/dist/_chunks/agenda-card-B2gq-gTq.js.map +0 -1
  411. package/dist/_chunks/agenda-tray-twa8g_87.js +0 -119
  412. package/dist/_chunks/agenda-tray-twa8g_87.js.map +0 -1
  413. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js +0 -379
  414. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js.map +0 -1
  415. package/dist/_chunks/alert-C5ud6CfE.js.map +0 -1
  416. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js +0 -17
  417. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js.map +0 -1
  418. package/dist/_chunks/app-frame-CmIUp9BD.js.map +0 -1
  419. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js +0 -56
  420. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js.map +0 -1
  421. package/dist/_chunks/audio-recorder-GkGNtW2X.js.map +0 -1
  422. package/dist/_chunks/audio-visualiser-CIO3yy23.js.map +0 -1
  423. package/dist/_chunks/autocomplete.agent-kb0nmr6F.js.map +0 -1
  424. package/dist/_chunks/avatar-BsV7vRA6.js.map +0 -1
  425. package/dist/_chunks/badge--CmSr7ok.js +0 -104
  426. package/dist/_chunks/badge--CmSr7ok.js.map +0 -1
  427. package/dist/_chunks/balance-cell-renderer-BQwN51rT.js.map +0 -1
  428. package/dist/_chunks/breadcrumb-DnO6eHSS.js.map +0 -1
  429. package/dist/_chunks/button-CXL8bA8G.js +0 -119
  430. package/dist/_chunks/button-CXL8bA8G.js.map +0 -1
  431. package/dist/_chunks/button-group-CI7LFxt3.js.map +0 -1
  432. package/dist/_chunks/calendar-BIXVzhkL.js.map +0 -1
  433. package/dist/_chunks/card-n97MNPP2.js +0 -158
  434. package/dist/_chunks/card-n97MNPP2.js.map +0 -1
  435. package/dist/_chunks/chart.agent-DkmVXNsI.js.map +0 -1
  436. package/dist/_chunks/chat-container-SR3UWxbL.js +0 -174
  437. package/dist/_chunks/chat-container-SR3UWxbL.js.map +0 -1
  438. package/dist/_chunks/chat-input-aphxDjZL.js.map +0 -1
  439. package/dist/_chunks/chat-message-CdJSD18D.js.map +0 -1
  440. package/dist/_chunks/checkbox-CfiZ0FZc.js +0 -116
  441. package/dist/_chunks/checkbox-CfiZ0FZc.js.map +0 -1
  442. package/dist/_chunks/checkbox-group-D1aqVI0-.js.map +0 -1
  443. package/dist/_chunks/collapsible-jBFm7Ah8.js.map +0 -1
  444. package/dist/_chunks/color-picker-CiotzQJF.js.map +0 -1
  445. package/dist/_chunks/combobox.agent-B6RwDSct.js.map +0 -1
  446. package/dist/_chunks/command-palette.agent-B87_OkmC.js.map +0 -1
  447. package/dist/_chunks/date-time-picker-CX_FMsLG.js.map +0 -1
  448. package/dist/_chunks/description-list-C5UPZgX6.js +0 -187
  449. package/dist/_chunks/description-list-C5UPZgX6.js.map +0 -1
  450. package/dist/_chunks/dialog.agent-B276rAQF.js.map +0 -1
  451. package/dist/_chunks/dropdown-menu-CJKvK7VG.js +0 -210
  452. package/dist/_chunks/dropdown-menu-CJKvK7VG.js.map +0 -1
  453. package/dist/_chunks/empty-state-DiG7vYBM.js.map +0 -1
  454. package/dist/_chunks/file-upload.agent-BMow5yDY.js.map +0 -1
  455. package/dist/_chunks/floating-action-button-BM9ib-Wf.js +0 -95
  456. package/dist/_chunks/floating-action-button-BM9ib-Wf.js.map +0 -1
  457. package/dist/_chunks/form-field-B4bwrccN.js +0 -121
  458. package/dist/_chunks/form-field-B4bwrccN.js.map +0 -1
  459. package/dist/_chunks/freemium-paywall-DVyNsQHS.js +0 -197
  460. package/dist/_chunks/freemium-paywall-DVyNsQHS.js.map +0 -1
  461. package/dist/_chunks/header-BpKaSL_v.js.map +0 -1
  462. package/dist/_chunks/icon-button-C1vpylg3.js +0 -45
  463. package/dist/_chunks/icon-button-C1vpylg3.js.map +0 -1
  464. package/dist/_chunks/icon-button-group-tERESY-n.js.map +0 -1
  465. package/dist/_chunks/kbd-0iPlQjgC.js.map +0 -1
  466. package/dist/_chunks/key-value-pair--Je59tAF.js.map +0 -1
  467. package/dist/_chunks/leo-sidebar-9A9AWBxX.js +0 -755
  468. package/dist/_chunks/leo-sidebar-9A9AWBxX.js.map +0 -1
  469. package/dist/_chunks/list-n8vI8Yvn.js.map +0 -1
  470. package/dist/_chunks/logo-UNWYb9p7.js.map +0 -1
  471. package/dist/_chunks/matrix-rain-Q7xTEpKu.js.map +0 -1
  472. package/dist/_chunks/message-card-g5VS5Q80.js +0 -275
  473. package/dist/_chunks/message-card-g5VS5Q80.js.map +0 -1
  474. package/dist/_chunks/message-tray-CAk-iibU.js +0 -302
  475. package/dist/_chunks/message-tray-CAk-iibU.js.map +0 -1
  476. package/dist/_chunks/multi-select.agent-Cf4pU636.js.map +0 -1
  477. package/dist/_chunks/navigation-menu-DBDsAmXc.js.map +0 -1
  478. package/dist/_chunks/notification-card-CQxJporb.js +0 -255
  479. package/dist/_chunks/notification-card-CQxJporb.js.map +0 -1
  480. package/dist/_chunks/notification-tray-CNWPuPZp.js.map +0 -1
  481. package/dist/_chunks/number-input-B1Th0DdC.js.map +0 -1
  482. package/dist/_chunks/otp-input-CmoBuZ4K.js.map +0 -1
  483. package/dist/_chunks/pagination.agent-B5KLDCMN.js.map +0 -1
  484. package/dist/_chunks/password-input-DnjNh-hQ.js.map +0 -1
  485. package/dist/_chunks/payment-form-Cf7U6r5L.js.map +0 -1
  486. package/dist/_chunks/pdf-viewer.agent-DXjgDItg.js.map +0 -1
  487. package/dist/_chunks/phone-input-C2dtIuxW.js.map +0 -1
  488. package/dist/_chunks/popover-D1woU9mP.js.map +0 -1
  489. package/dist/_chunks/privacy-lock-C1X42Sit.js.map +0 -1
  490. package/dist/_chunks/progress-DL3-izuO.js.map +0 -1
  491. package/dist/_chunks/radio-group-CXN9qNPe.js +0 -185
  492. package/dist/_chunks/radio-group-CXN9qNPe.js.map +0 -1
  493. package/dist/_chunks/resizable.agent-DVk_jJur.js.map +0 -1
  494. package/dist/_chunks/rich-text-editor.agent-BOjF4Xao.js.map +0 -1
  495. package/dist/_chunks/scroll-area-DXn-YWHY.js +0 -144
  496. package/dist/_chunks/scroll-area-DXn-YWHY.js.map +0 -1
  497. package/dist/_chunks/search-bar-DgSOAajC.js.map +0 -1
  498. package/dist/_chunks/search-input-D4tC_Prn.js +0 -197
  499. package/dist/_chunks/search-input-D4tC_Prn.js.map +0 -1
  500. package/dist/_chunks/select-B4m4upMg.js +0 -320
  501. package/dist/_chunks/select-B4m4upMg.js.map +0 -1
  502. package/dist/_chunks/separator-DExI4amU.js.map +0 -1
  503. package/dist/_chunks/sheet-D6XOx0fK.js +0 -188
  504. package/dist/_chunks/sheet-D6XOx0fK.js.map +0 -1
  505. package/dist/_chunks/sidebar-r645O-k9.js +0 -1076
  506. package/dist/_chunks/sidebar-r645O-k9.js.map +0 -1
  507. package/dist/_chunks/sign-in-with-alfadocs-button-y3gy-W-D.js +0 -38
  508. package/dist/_chunks/sign-in-with-alfadocs-button-y3gy-W-D.js.map +0 -1
  509. package/dist/_chunks/signature-capture.agent-L_1_-zVR.js.map +0 -1
  510. package/dist/_chunks/skeleton-vbTWUntB.js +0 -95
  511. package/dist/_chunks/skeleton-vbTWUntB.js.map +0 -1
  512. package/dist/_chunks/slider-B3DBwmcm.js +0 -273
  513. package/dist/_chunks/slider-B3DBwmcm.js.map +0 -1
  514. package/dist/_chunks/slot-grid-DL_Tuj0p.js +0 -491
  515. package/dist/_chunks/slot-grid-DL_Tuj0p.js.map +0 -1
  516. package/dist/_chunks/sparkline.agent-BDTXzTy9.js.map +0 -1
  517. package/dist/_chunks/spinner-77xUGpuX.js.map +0 -1
  518. package/dist/_chunks/stat-CrumvZWf.js +0 -208
  519. package/dist/_chunks/stat-CrumvZWf.js.map +0 -1
  520. package/dist/_chunks/stepper-accordion-BkvqQWPI.js.map +0 -1
  521. package/dist/_chunks/stepper-calendar-BQMjrwzo.js.map +0 -1
  522. package/dist/_chunks/stepper-progress-Bwfl-0rV.js +0 -128
  523. package/dist/_chunks/stepper-progress-Bwfl-0rV.js.map +0 -1
  524. package/dist/_chunks/streaming-text-Cu9YQe_1.js +0 -104
  525. package/dist/_chunks/streaming-text-Cu9YQe_1.js.map +0 -1
  526. package/dist/_chunks/suggestion-chip-XkxDJiPW.js +0 -157
  527. package/dist/_chunks/suggestion-chip-XkxDJiPW.js.map +0 -1
  528. package/dist/_chunks/switch-DyC0ThNT.js +0 -137
  529. package/dist/_chunks/switch-DyC0ThNT.js.map +0 -1
  530. package/dist/_chunks/tabs.agent-FsGU3sZL.js.map +0 -1
  531. package/dist/_chunks/tag-BucAvfTX.js +0 -194
  532. package/dist/_chunks/tag-BucAvfTX.js.map +0 -1
  533. package/dist/_chunks/task-card-uxjApfcg.js +0 -112
  534. package/dist/_chunks/task-card-uxjApfcg.js.map +0 -1
  535. package/dist/_chunks/task-tray-BdfM3p8N.js +0 -99
  536. package/dist/_chunks/task-tray-BdfM3p8N.js.map +0 -1
  537. package/dist/_chunks/text-area-CKxZ7cS3.js +0 -152
  538. package/dist/_chunks/text-area-CKxZ7cS3.js.map +0 -1
  539. package/dist/_chunks/text-input-D16CcMlL.js +0 -187
  540. package/dist/_chunks/text-input-D16CcMlL.js.map +0 -1
  541. package/dist/_chunks/time-picker-BapZq0OY.js.map +0 -1
  542. package/dist/_chunks/timeline-D3VOf4RT.js +0 -219
  543. package/dist/_chunks/timeline-D3VOf4RT.js.map +0 -1
  544. package/dist/_chunks/timestamp-BLM-jjdw.js.map +0 -1
  545. package/dist/_chunks/tooltip-DF6WjD1r.js.map +0 -1
  546. package/dist/_chunks/tooth-scheme.agent-CFKl3iQr.js.map +0 -1
  547. package/dist/_chunks/transcript-panel-aI14fHYA.js +0 -265
  548. package/dist/_chunks/transcript-panel-aI14fHYA.js.map +0 -1
  549. package/dist/_chunks/typing-indicator-BTVDEpnd.js +0 -81
  550. package/dist/_chunks/typing-indicator-BTVDEpnd.js.map +0 -1
  551. package/dist/_chunks/warning-stack-Cyf_81SL.js.map +0 -1
  552. package/dist/_chunks/workflow-map-Uf-hHAO3.js.map +0 -1
@@ -3,42 +3,42 @@ import { forwardRef as _, useState as x, useCallback as D, useRef as j, useLayou
3
3
  import { c as oe } from "./index-D2ZczOXr.js";
4
4
  const ne = oe(
5
5
  [
6
- "inline-flex isolate",
6
+ "ds:inline-flex ds:isolate",
7
7
  // Hairline border around the group unifies the children into one
8
8
  // visual unit. Internal child dividers are drawn via the per-child
9
9
  // class list below.
10
- "border border-border",
11
- "rounded-[var(--radius-md)]",
10
+ "ds:border ds:border-border",
11
+ "ds:rounded-[var(--radius-md)]",
12
12
  // Ensure the focus ring of a pressed child sits above its siblings.
13
- "[&>*]:relative [&>*:focus-visible]:z-10"
13
+ "ds:[&>*]:relative ds:[&>*:focus-visible]:z-10"
14
14
  ].join(" "),
15
15
  {
16
16
  variants: {
17
17
  orientation: {
18
18
  horizontal: [
19
- "flex-row",
19
+ "ds:flex-row",
20
20
  // Flatten internal corners on children so the outer radius owns
21
21
  // the rounded edges.
22
- "[&>*:not(:first-child)]:rounded-s-none",
23
- "[&>*:not(:last-child)]:rounded-e-none",
22
+ "ds:[&>*:not(:first-child)]:rounded-s-none",
23
+ "ds:[&>*:not(:last-child)]:rounded-e-none",
24
24
  // Internal divider — logical so it flips in RTL.
25
- "[&>*:not(:first-child)]:border-s",
26
- "[&>*:not(:first-child)]:border-border",
25
+ "ds:[&>*:not(:first-child)]:border-s",
26
+ "ds:[&>*:not(:first-child)]:border-border",
27
27
  // The children already own an outer border (from IconButton's
28
28
  // own border in secondary/outline variants). Collapse the doubled
29
29
  // border so we don't get a 2px seam.
30
- "[&>*]:border-0"
30
+ "ds:[&>*]:border-0"
31
31
  ].join(" "),
32
32
  vertical: [
33
- "flex-col",
33
+ "ds:flex-col",
34
34
  // Vertical groups flow block-wise. Reading direction doesn't
35
35
  // invert vertical stacks in any locale this DS targets, so the
36
36
  // physical `rounded-t/b` is intentional.
37
- "[&>*:not(:first-child)]:rounded-t-none",
38
- "[&>*:not(:last-child)]:rounded-b-none",
39
- "[&>*:not(:first-child)]:border-t",
40
- "[&>*:not(:first-child)]:border-border",
41
- "[&>*]:border-0"
37
+ "ds:[&>*:not(:first-child)]:rounded-t-none",
38
+ "ds:[&>*:not(:last-child)]:rounded-b-none",
39
+ "ds:[&>*:not(:first-child)]:border-t",
40
+ "ds:[&>*:not(:first-child)]:border-border",
41
+ "ds:[&>*]:border-0"
42
42
  ].join(" ")
43
43
  }
44
44
  },
@@ -47,11 +47,11 @@ const ne = oe(
47
47
  }
48
48
  }
49
49
  ), ie = _(
50
- (l, g) => {
50
+ (s, g) => {
51
51
  const {
52
52
  size: b,
53
53
  orientation: u = "horizontal",
54
- role: a = "group",
54
+ role: l = "group",
55
55
  mode: n = "momentary",
56
56
  disabled: T = !1,
57
57
  intent: F = "outline",
@@ -60,15 +60,15 @@ const ne = oe(
60
60
  "aria-label": S,
61
61
  "aria-labelledby": H,
62
62
  ...M
63
- } = l, [z, L] = x(
64
- () => n === "toggle-single" ? l.defaultValue ?? "" : n === "toggle-multi" ? l.defaultValue ?? [] : ""
63
+ } = s, [z, L] = x(
64
+ () => n === "toggle-single" ? s.defaultValue ?? "" : n === "toggle-multi" ? s.defaultValue ?? [] : ""
65
65
  ), A = (() => {
66
66
  if (n === "toggle-single") {
67
- const e = l;
67
+ const e = s;
68
68
  return e.value !== void 0 ? e.value : z;
69
69
  }
70
70
  if (n === "toggle-multi") {
71
- const e = l;
71
+ const e = s;
72
72
  return e.value !== void 0 ? e.value : z;
73
73
  }
74
74
  return "";
@@ -76,15 +76,15 @@ const ne = oe(
76
76
  (e) => {
77
77
  var t, o;
78
78
  if (n === "toggle-single") {
79
- const r = l;
79
+ const r = s;
80
80
  r.value === void 0 && L(e), (t = r.onValueChange) == null || t.call(r, e);
81
81
  } else if (n === "toggle-multi") {
82
- const r = l;
82
+ const r = s;
83
83
  r.value === void 0 && L(e), (o = r.onValueChange) == null || o.call(r, e);
84
84
  }
85
85
  },
86
- [n, l]
87
- ), h = a === "toolbar" || a === "radiogroup", v = j([]), [w, E] = x(0), O = D(
86
+ [n, s]
87
+ ), h = l === "toolbar" || l === "radiogroup", v = j([]), [w, E] = x(0), O = D(
88
88
  (e, t) => {
89
89
  v.current[e] = t;
90
90
  },
@@ -107,39 +107,39 @@ const ne = oe(
107
107
  let f = null;
108
108
  if (e.key === o ? f = (w + 1) % t : e.key === r ? f = (w - 1 + t) % t : e.key === "Home" ? f = 0 : e.key === "End" && (f = t - 1), f === null) return;
109
109
  const V = t;
110
- let p = 0, s = f;
110
+ let p = 0, a = f;
111
111
  for (; p < V; ) {
112
- const c = v.current[s];
113
- if (c && c.getAttribute("aria-disabled") !== "true" && !c.disabled)
112
+ const d = v.current[a];
113
+ if (d && d.getAttribute("aria-disabled") !== "true" && !d.disabled)
114
114
  break;
115
- s = e.key === r || e.key === "End" ? (s - 1 + t) % t : (s + 1) % t, p += 1;
115
+ a = e.key === r || e.key === "End" ? (a - 1 + t) % t : (a + 1) % t, p += 1;
116
116
  }
117
- if (e.preventDefault(), E(s), (k = v.current[s]) == null || k.focus(), a === "radiogroup" && n === "toggle-single") {
118
- const c = P.current[s];
119
- if (c && typeof c == "object" && "props" in c) {
120
- const R = c.props.value;
117
+ if (e.preventDefault(), E(a), (k = v.current[a]) == null || k.focus(), l === "radiogroup" && n === "toggle-single") {
118
+ const d = P.current[a];
119
+ if (d && typeof d == "object" && "props" in d) {
120
+ const R = d.props.value;
121
121
  R && y(R);
122
122
  }
123
123
  }
124
124
  },
125
- [h, u, C, w, a, n, y]
125
+ [h, u, C, w, l, n, y]
126
126
  ), K = ee.toArray(N), P = j([]);
127
127
  P.current = K;
128
128
  const q = K.map((e, t) => {
129
129
  if (!te(e))
130
130
  return e;
131
- const o = e, r = o.props.value, { ariaPressed: f, ariaChecked: V } = le(
131
+ const o = e, r = o.props.value, { ariaPressed: f, ariaChecked: V } = se(
132
132
  n,
133
- a,
133
+ l,
134
134
  r,
135
135
  A
136
- ), p = T === !0, s = o.props.disabled === !0, k = (d) => {
136
+ ), p = T === !0, a = o.props.disabled === !0, k = (c) => {
137
137
  var i, m;
138
138
  if (p) {
139
- d.preventDefault(), d.stopPropagation();
139
+ c.preventDefault(), c.stopPropagation();
140
140
  return;
141
141
  }
142
- if ((m = (i = o.props).onClick) == null || m.call(i, d), !d.defaultPrevented && r) {
142
+ if ((m = (i = o.props).onClick) == null || m.call(i, c), !c.defaultPrevented && r) {
143
143
  if (n === "toggle-single") {
144
144
  if (A === r) return;
145
145
  y(r);
@@ -148,14 +148,14 @@ const ne = oe(
148
148
  y(X);
149
149
  }
150
150
  }
151
- }, c = (d) => {
152
- O(t, d);
151
+ }, d = (c) => {
152
+ O(t, c);
153
153
  const i = o.ref;
154
- typeof i == "function" ? i(d) : i != null && typeof i == "object" && (i.current = d);
155
- }, R = p && !s ? !0 : void 0, J = n !== "momentary" || p, Q = {
154
+ typeof i == "function" ? i(c) : i != null && typeof i == "object" && (i.current = c);
155
+ }, R = p && !a ? !0 : void 0, J = n !== "momentary" || p, Q = {
156
156
  intent: o.props.intent ?? F,
157
157
  size: o.props.size ?? b,
158
- disabled: s,
158
+ disabled: a,
159
159
  "aria-disabled": R,
160
160
  onClick: J ? k : o.props.onClick,
161
161
  "aria-pressed": f,
@@ -164,13 +164,13 @@ const ne = oe(
164
164
  // so screen readers announce them as radio buttons and so
165
165
  // `getByRole('radio')` works in tests. The button element is
166
166
  // re-purposed as a radio; `aria-checked` above carries the state.
167
- role: a === "radiogroup" ? "radio" : void 0,
167
+ role: l === "radiogroup" ? "radio" : void 0,
168
168
  tabIndex: h ? t === w ? 0 : -1 : void 0,
169
- onFocus: (d) => {
169
+ onFocus: (c) => {
170
170
  var i, m;
171
- h && E(t), (m = (i = o.props).onFocus) == null || m.call(i, d);
171
+ h && E(t), (m = (i = o.props).onFocus) == null || m.call(i, c);
172
172
  },
173
- ref: c
173
+ ref: d
174
174
  };
175
175
  return re(o, Q);
176
176
  });
@@ -180,10 +180,10 @@ const ne = oe(
180
180
  ref: (e) => {
181
181
  B.current = e, typeof g == "function" ? g(e) : g && typeof g == "object" && (g.current = e);
182
182
  },
183
- role: a,
183
+ role: l,
184
184
  "aria-label": S,
185
185
  "aria-labelledby": H,
186
- "aria-orientation": a === "toolbar" ? u : void 0,
186
+ "aria-orientation": l === "toolbar" ? u : void 0,
187
187
  onKeyDown: W,
188
188
  className: ne({ orientation: u, className: G }),
189
189
  ...M,
@@ -193,12 +193,12 @@ const ne = oe(
193
193
  }
194
194
  );
195
195
  ie.displayName = "IconButtonGroup";
196
- function le(l, g, b, u) {
197
- if (l === "momentary" || !b) return {};
198
- const a = l === "toggle-multi" ? u.includes(b) : u === b;
199
- return g === "radiogroup" ? { ariaChecked: a } : { ariaPressed: a };
196
+ function se(s, g, b, u) {
197
+ if (s === "momentary" || !b) return {};
198
+ const l = s === "toggle-multi" ? u.includes(b) : u === b;
199
+ return g === "radiogroup" ? { ariaChecked: l } : { ariaPressed: l };
200
200
  }
201
201
  export {
202
202
  ie as I
203
203
  };
204
- //# sourceMappingURL=icon-button-group-tERESY-n.js.map
204
+ //# sourceMappingURL=icon-button-group-BnhkUWUg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button-group-BnhkUWUg.js","sources":["../../src/components/icon-button-group/icon-button-group.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { IconButton, type IconButtonProps } from '../button/icon-button';\nimport type { ButtonProps } from '../button/button';\n\ntype ButtonIntent = NonNullable<ButtonProps['intent']>;\n\n// Intentionally does NOT compose `@radix-ui/react-toggle-group`. Radix\n// ToggleGroup's render shape makes it hard to layer shared-border chrome\n// across children (first-child / last-child / internal-divider CSS), and\n// the three-mode + three-role matrix (group / toolbar / radiogroup × momentary\n// / toggle-single / toggle-multi) is broader than Radix's single / multi\n// contract. The roving-tabindex implementation below mirrors Radix's pattern\n// so keyboard semantics stay consistent. See 05-accessibility.mdx for the\n// WAI-ARIA toolbar / radiogroup references.\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst iconButtonGroupVariants = cva(\n [\n 'ds:inline-flex ds:isolate',\n // Hairline border around the group unifies the children into one\n // visual unit. Internal child dividers are drawn via the per-child\n // class list below.\n 'ds:border ds:border-border',\n 'ds:rounded-[var(--radius-md)]',\n // Ensure the focus ring of a pressed child sits above its siblings.\n 'ds:[&>*]:relative ds:[&>*:focus-visible]:z-10',\n ].join(' '),\n {\n variants: {\n orientation: {\n horizontal: [\n 'ds:flex-row',\n // Flatten internal corners on children so the outer radius owns\n // the rounded edges.\n 'ds:[&>*:not(:first-child)]:rounded-s-none',\n 'ds:[&>*:not(:last-child)]:rounded-e-none',\n // Internal divider — logical so it flips in RTL.\n 'ds:[&>*:not(:first-child)]:border-s',\n 'ds:[&>*:not(:first-child)]:border-border',\n // The children already own an outer border (from IconButton's\n // own border in secondary/outline variants). Collapse the doubled\n // border so we don't get a 2px seam.\n 'ds:[&>*]:border-0',\n ].join(' '),\n vertical: [\n 'ds:flex-col',\n // Vertical groups flow block-wise. Reading direction doesn't\n // invert vertical stacks in any locale this DS targets, so the\n // physical `rounded-t/b` is intentional.\n 'ds:[&>*:not(:first-child)]:rounded-t-none',\n 'ds:[&>*:not(:last-child)]:rounded-b-none',\n 'ds:[&>*:not(:first-child)]:border-t',\n 'ds:[&>*:not(:first-child)]:border-border',\n 'ds:[&>*]:border-0',\n ].join(' '),\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type IconButtonGroupRole = 'group' | 'toolbar' | 'radiogroup';\nexport type IconButtonGroupMode =\n | 'momentary'\n | 'toggle-single'\n | 'toggle-multi';\n\ntype SharedPropsBase = {\n /** Forwarded to every child that does not set its own `size`. */\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n /** Disables every child. Uses `aria-disabled` on children (not the HTML\n * attribute) so each child still takes focus — matches WAI-ARIA toolbar\n * guidance. Visual disabled styling picks up the `aria-disabled:*`\n * variant declared on the Button base class. */\n disabled?: boolean;\n /** Intent applied to every child that does not set its own `intent`.\n * Defaults to `outline` — grouped icon buttons are peers, not a row\n * of solid-primary CTAs. */\n intent?: ButtonIntent;\n children: ReactNode;\n};\n\n// At least one of `aria-label` / `aria-labelledby` must be present. This\n// discriminated pair makes the TypeScript compiler reject a group with\n// neither — see the a11y acceptance criteria in the user story.\ntype AccessibleNameProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string };\n\ntype SharedProps = SharedPropsBase & AccessibleNameProps;\n\n// Role + mode combinations are not all valid. Encoded via a discriminated\n// union so the compiler rejects nonsensical pairings (e.g. a multi-select\n// radiogroup).\ntype GroupRoleProps =\n | { role?: 'group'; mode?: 'momentary' | 'toggle-single' | 'toggle-multi' }\n | { role: 'toolbar'; mode?: 'momentary' | 'toggle-single' | 'toggle-multi' }\n | { role: 'radiogroup'; mode: 'toggle-single' };\n\ntype MomentaryProps = SharedProps & {\n mode?: 'momentary';\n value?: never;\n defaultValue?: never;\n onValueChange?: never;\n};\n\ntype ToggleSingleProps = SharedProps & {\n mode: 'toggle-single';\n value?: string;\n defaultValue?: string;\n onValueChange?: (next: string) => void;\n};\n\ntype ToggleMultiProps = SharedProps & {\n mode: 'toggle-multi';\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (next: string[]) => void;\n};\n\nexport type IconButtonGroupProps = (\n | MomentaryProps\n | ToggleSingleProps\n | ToggleMultiProps\n) &\n GroupRoleProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'onChange' | 'children'> &\n VariantProps<typeof iconButtonGroupVariants>;\n\n/* ------------------------------------------------------------------ */\n/* IconButtonGroup */\n/* ------------------------------------------------------------------ */\n\nexport const IconButtonGroup = forwardRef<HTMLDivElement, IconButtonGroupProps>(\n (props, ref) => {\n const {\n size,\n orientation = 'horizontal',\n role = 'group',\n mode = 'momentary',\n disabled = false,\n intent = 'outline',\n className,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props as IconButtonGroupProps & { className?: string };\n\n if (import.meta.env.DEV && !ariaLabel && !ariaLabelledBy) {\n // eslint-disable-next-line no-console\n console.warn(\n 'IconButtonGroup: `aria-label` or `aria-labelledby` is required for accessibility.',\n );\n }\n\n /* ---- Controlled / uncontrolled value for toggle modes --------- */\n const [internalValue, setInternalValue] = useState<string | string[]>(\n () => {\n if (mode === 'toggle-single') {\n const p = props as ToggleSingleProps;\n return p.defaultValue ?? '';\n }\n if (mode === 'toggle-multi') {\n const p = props as ToggleMultiProps;\n return p.defaultValue ?? [];\n }\n return '';\n },\n );\n\n const resolvedValue: string | string[] = (() => {\n if (mode === 'toggle-single') {\n const p = props as ToggleSingleProps;\n return p.value !== undefined ? p.value : internalValue;\n }\n if (mode === 'toggle-multi') {\n const p = props as ToggleMultiProps;\n return p.value !== undefined ? p.value : internalValue;\n }\n return '';\n })();\n\n const commitValue = useCallback(\n (next: string | string[]) => {\n if (mode === 'toggle-single') {\n const p = props as ToggleSingleProps;\n if (p.value === undefined) setInternalValue(next as string);\n p.onValueChange?.(next as string);\n } else if (mode === 'toggle-multi') {\n const p = props as ToggleMultiProps;\n if (p.value === undefined) setInternalValue(next as string[]);\n p.onValueChange?.(next as string[]);\n }\n },\n [mode, props],\n );\n\n /* ---- Roving tabindex state — only active in toolbar / radiogroup - */\n const rovingTabindex = role === 'toolbar' || role === 'radiogroup';\n const buttonsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n\n const registerIndex = useCallback(\n (index: number, el: HTMLButtonElement | null) => {\n buttonsRef.current[index] = el;\n },\n [],\n );\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [isRTL, setIsRTL] = useState(false);\n // `useLayoutEffect` so the direction is correct BEFORE the first paint\n // (otherwise a user pressing an arrow key on the first frame after mount\n // would hit the default-LTR mapping even in an RTL document).\n useLayoutEffect(() => {\n if (typeof window === 'undefined') return;\n const node = rootRef.current;\n if (!node) return;\n // Read the computed direction from the group's own wrapper so a\n // scoped `dir='rtl'` on any ancestor (not just <html>) flips arrow\n // navigation. `getComputedStyle` walks up automatically.\n const dir = window.getComputedStyle(node).direction;\n setIsRTL(dir === 'rtl');\n }, []);\n\n /* ---- Arrow-key navigation for roving tabindex ----------------- */\n const handleRootKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (!rovingTabindex) return;\n const count = buttonsRef.current.filter(Boolean).length;\n if (count === 0) return;\n\n const forwardKey =\n orientation === 'vertical'\n ? 'ArrowDown'\n : isRTL\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backwardKey =\n orientation === 'vertical'\n ? 'ArrowUp'\n : isRTL\n ? 'ArrowRight'\n : 'ArrowLeft';\n\n let next: number | null = null;\n if (event.key === forwardKey) next = (focusIndex + 1) % count;\n else if (event.key === backwardKey)\n next = (focusIndex - 1 + count) % count;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n\n if (next === null) return;\n // Skip over disabled children.\n const maxAttempts = count;\n let attempts = 0;\n let candidate = next;\n while (attempts < maxAttempts) {\n const el = buttonsRef.current[candidate];\n if (el && el.getAttribute('aria-disabled') !== 'true' && !el.disabled) {\n break;\n }\n candidate =\n event.key === backwardKey || event.key === 'End'\n ? (candidate - 1 + count) % count\n : (candidate + 1) % count;\n attempts += 1;\n }\n event.preventDefault();\n setFocusIndex(candidate);\n buttonsRef.current[candidate]?.focus();\n // WAI-ARIA radiogroup pattern: arrow keys MOVE focus AND CHANGE\n // the selected radio in one action. toolbar pattern (and plain\n // group) only moves focus.\n if (role === 'radiogroup' && mode === 'toggle-single') {\n const child = childArrayRef.current[candidate];\n if (child && typeof child === 'object' && 'props' in child) {\n const cValue = (\n child as ReactElement<{ value?: string }>\n ).props.value;\n if (cValue) commitValue(cValue);\n }\n }\n },\n [rovingTabindex, orientation, isRTL, focusIndex, role, mode, commitValue],\n );\n\n /* ---- Build enhanced children ---------------------------------- */\n const childArray = Children.toArray(children);\n // Mirror into a ref so the keydown handler (referenced from Memo deps)\n // can read the latest child list without inflating the dep array.\n const childArrayRef = useRef<ReturnType<typeof Children.toArray>>([]);\n childArrayRef.current = childArray;\n\n const enhanced = childArray.map((child, index) => {\n if (!isValidElement(child)) {\n if (import.meta.env.DEV) {\n // eslint-disable-next-line no-console\n console.warn(\n 'IconButtonGroup: children should be <IconButton> elements.',\n );\n }\n return child;\n }\n\n const childEl = child as ReactElement<\n IconButtonProps & {\n value?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n }\n >;\n\n // DEV-time sanity: warn if we got something that isn't an IconButton.\n // `React.cloneElement` would still work, but IconButton-specific\n // props (::before target size, forwarded tooltip) wouldn't apply.\n if (import.meta.env.DEV && childEl.type !== IconButton) {\n // eslint-disable-next-line no-console\n console.warn(\n 'IconButtonGroup: each child should be a DS <IconButton>. Other elements break target-size + focus-ring contracts.',\n );\n }\n\n const childValue = childEl.props.value;\n\n // Compute aria-pressed / aria-checked for toggle modes.\n const { ariaPressed, ariaChecked } = computeToggleAria(\n mode,\n role,\n childValue,\n resolvedValue,\n );\n\n const groupDisabled = disabled === true;\n const childDisabled = childEl.props.disabled === true;\n\n // Click handling — wrap so aria-disabled (group-level) blocks\n // activation, then forward to the child's own onClick.\n const wrappedOnClick: React.MouseEventHandler<HTMLButtonElement> = (\n event,\n ) => {\n // aria-disabled is advisory; the native click still fires. Block\n // it explicitly when the GROUP (not the child) is disabled.\n if (groupDisabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n // Forward to the child's own handler first so consumers can run\n // analytics / preventDefault.\n childEl.props.onClick?.(event);\n if (event.defaultPrevented) return;\n if (!childValue) return;\n if (mode === 'toggle-single') {\n // Contract: exactly one pressed. Clicking the pressed one is a\n // no-op. This matches Radix ToggleGroup type='single' and the\n // radiogroup pattern.\n if (resolvedValue === childValue) return;\n commitValue(childValue);\n } else if (mode === 'toggle-multi') {\n const list = resolvedValue as string[];\n const next = list.includes(childValue)\n ? list.filter((v) => v !== childValue)\n : [...list, childValue];\n commitValue(next);\n }\n };\n\n // cloneElement's typed overload rejects `ref` as a prop, so we\n // build the override bag as `unknown` and cast to the element's\n // prop type. React at runtime routes `ref` via its usual channel.\n const setMergedRef = (node: HTMLButtonElement | null) => {\n registerIndex(index, node);\n const originalRef = (\n childEl as unknown as { ref?: React.Ref<HTMLButtonElement> }\n ).ref;\n if (typeof originalRef === 'function') originalRef(node);\n else if (\n originalRef !== null &&\n originalRef !== undefined &&\n typeof originalRef === 'object'\n ) {\n (originalRef as React.MutableRefObject<HTMLButtonElement | null>).current =\n node;\n }\n };\n\n // Per the user story: group-level disabled injects `aria-disabled`\n // so the child stays focusable; child-level `disabled` still uses\n // the HTML attribute (child's own contract). When both are true\n // we leave the HTML disabled in place (strictest cue wins).\n const ariaDisabled = groupDisabled && !childDisabled ? true : undefined;\n\n // If the group is disabled OR we are in a toggle mode, we need the\n // wrapped click handler. In pure momentary mode with no group\n // disable, the child's own onClick is passed through unchanged.\n const needsWrappedClick = mode !== 'momentary' || groupDisabled;\n\n const overrides = {\n intent: childEl.props.intent ?? intent,\n size: childEl.props.size ?? size,\n disabled: childDisabled,\n 'aria-disabled': ariaDisabled,\n onClick: needsWrappedClick ? wrappedOnClick : childEl.props.onClick,\n 'aria-pressed': ariaPressed,\n 'aria-checked': ariaChecked,\n // When the group is a radiogroup, children must be `role=\"radio\"`\n // so screen readers announce them as radio buttons and so\n // `getByRole('radio')` works in tests. The button element is\n // re-purposed as a radio; `aria-checked` above carries the state.\n role: role === 'radiogroup' ? 'radio' : undefined,\n tabIndex: rovingTabindex ? (index === focusIndex ? 0 : -1) : undefined,\n onFocus: (ev: React.FocusEvent<HTMLButtonElement>) => {\n if (rovingTabindex) setFocusIndex(index);\n childEl.props.onFocus?.(ev);\n },\n ref: setMergedRef,\n } as unknown as Partial<IconButtonProps>;\n\n return cloneElement(childEl, overrides);\n });\n\n const mergedRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref && typeof ref === 'object') {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n return (\n <div\n ref={mergedRootRef}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-orientation={role === 'toolbar' ? orientation : undefined}\n onKeyDown={handleRootKeyDown}\n className={iconButtonGroupVariants({ orientation, className })}\n {...rest}\n >\n {enhanced}\n </div>\n );\n },\n);\n\nIconButtonGroup.displayName = 'IconButtonGroup';\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction computeToggleAria(\n mode: IconButtonGroupMode,\n role: IconButtonGroupRole,\n childValue: string | undefined,\n resolvedValue: string | string[],\n): { ariaPressed?: boolean; ariaChecked?: boolean } {\n if (mode === 'momentary' || !childValue) return {};\n\n const isActive =\n mode === 'toggle-multi'\n ? (resolvedValue as string[]).includes(childValue)\n : resolvedValue === childValue;\n\n // radiogroup uses aria-checked; toolbar/group use aria-pressed.\n if (role === 'radiogroup') {\n return { ariaChecked: isActive };\n }\n return { ariaPressed: isActive };\n}\n\n"],"names":["iconButtonGroupVariants","cva","IconButtonGroup","forwardRef","props","ref","size","orientation","role","mode","disabled","intent","className","children","ariaLabel","ariaLabelledBy","rest","internalValue","setInternalValue","useState","resolvedValue","p","commitValue","useCallback","next","_a","_b","rovingTabindex","buttonsRef","useRef","focusIndex","setFocusIndex","registerIndex","index","el","rootRef","isRTL","setIsRTL","useLayoutEffect","node","dir","handleRootKeyDown","event","count","forwardKey","backwardKey","maxAttempts","attempts","candidate","child","childArrayRef","cValue","childArray","Children","enhanced","isValidElement","childEl","childValue","ariaPressed","ariaChecked","computeToggleAria","groupDisabled","childDisabled","wrappedOnClick","list","v","setMergedRef","originalRef","ariaDisabled","needsWrappedClick","overrides","ev","cloneElement","jsx","isActive"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { jsx as o, jsxs as u } from "react/jsx-runtime";
1
+ import { jsx as a, jsxs as u } from "react/jsx-runtime";
2
2
  import { forwardRef as z, useState as C, useEffect as T, Fragment as L } from "react";
3
3
  import { c as x } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as R } from "react-i18next";
5
5
  function K() {
6
6
  if (typeof navigator > "u") return !1;
7
- const n = navigator.userAgentData, a = (n == null ? void 0 : n.platform) ?? navigator.platform ?? "";
8
- return /mac/i.test(a);
7
+ const n = navigator.userAgentData, r = (n == null ? void 0 : n.platform) ?? navigator.platform ?? "";
8
+ return /mac/i.test(r);
9
9
  }
10
10
  const S = {
11
11
  Meta: "⌘",
@@ -69,38 +69,38 @@ const S = {
69
69
  function j(n) {
70
70
  return n === "Meta" || n === "Control" || n === "Alt" || n === "Shift" || n === "Enter" || n === "Escape" || n === "Space" || n === "Tab" || n === "Delete" || n === "Backspace" || n === "ArrowUp" || n === "ArrowDown" || n === "ArrowLeft" || n === "ArrowRight";
71
71
  }
72
- function w(n, a) {
73
- return j(n) ? (a ? S : E)[n] : n;
72
+ function w(n, r) {
73
+ return j(n) ? (r ? S : E)[n] : n;
74
74
  }
75
75
  function A(n) {
76
76
  return j(n) ? N[n] : n;
77
77
  }
78
78
  const h = x(
79
79
  [
80
- "inline-flex items-center justify-center",
81
- "font-[family-name:var(--font-mono)]",
82
- "tabular-nums",
83
- "rounded-[var(--radius-sm)]",
84
- "select-none",
80
+ "ds:inline-flex ds:items-center ds:justify-center",
81
+ "ds:font-[family-name:var(--font-mono)]",
82
+ "ds:tabular-nums",
83
+ "ds:rounded-[var(--radius-sm)]",
84
+ "ds:select-none",
85
85
  // Tight minimum size so single-key pills never collapse.
86
- "min-inline-size-[1.5em] min-block-size-[1.5em]"
86
+ "ds:min-inline-size-[1.5em] ds:min-block-size-[1.5em]"
87
87
  ].join(" "),
88
88
  {
89
89
  variants: {
90
90
  size: {
91
- sm: "text-[length:var(--font-size-xs)] ps-[calc(var(--spacing-xs)/1.5)] pe-[calc(var(--spacing-xs)/1.5)]",
92
- md: "text-[length:var(--font-size-xs)] ps-[var(--spacing-xs)] pe-[var(--spacing-xs)]",
93
- lg: "text-[length:var(--font-size-sm)] ps-[var(--spacing-sm)] pe-[var(--spacing-sm)]"
91
+ sm: "ds:text-[length:var(--font-size-xs)] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]",
92
+ md: "ds:text-[length:var(--font-size-xs)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]",
93
+ lg: "ds:text-[length:var(--font-size-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]"
94
94
  },
95
95
  intensity: {
96
96
  outline: [
97
- "bg-[var(--background)]",
98
- "border border-[color:var(--border)]",
99
- "text-[color:var(--foreground)]"
97
+ "ds:bg-[var(--background)]",
98
+ "ds:border ds:border-[color:var(--border)]",
99
+ "ds:text-[color:var(--foreground)]"
100
100
  ].join(" "),
101
101
  solid: [
102
- "bg-[var(--muted)]",
103
- "text-[color:var(--foreground)]"
102
+ "ds:bg-[var(--muted)]",
103
+ "ds:text-[color:var(--foreground)]"
104
104
  ].join(" ")
105
105
  }
106
106
  },
@@ -108,88 +108,88 @@ const h = x(
108
108
  }
109
109
  ), U = x(
110
110
  [
111
- "inline-flex items-center",
112
- "gap-[calc(var(--spacing-xs)/2)]",
111
+ "ds:inline-flex ds:items-center",
112
+ "ds:gap-[calc(var(--spacing-xs)/2)]",
113
113
  // Group shouldn't visually render as a pill itself — just holds pills.
114
- "font-[family-name:var(--font-mono)]"
114
+ "ds:font-[family-name:var(--font-mono)]"
115
115
  ].join(" ")
116
- ), $ = z((n, a) => {
116
+ ), $ = z((n, r) => {
117
117
  const {
118
118
  size: l = "md",
119
119
  intensity: d = "outline",
120
120
  separator: g = "none",
121
- glyphMap: r,
121
+ glyphMap: t,
122
122
  className: m,
123
123
  ...p
124
124
  } = n, { t: f } = R(), [b, k] = C(!1);
125
125
  if (T(() => {
126
126
  k(K());
127
127
  }, []), "children" in n && n.children !== void 0)
128
- return /* @__PURE__ */ o(
128
+ return /* @__PURE__ */ a(
129
129
  "kbd",
130
130
  {
131
- ref: a,
131
+ ref: r,
132
132
  className: [h({ size: l, intensity: d }), m].filter(Boolean).join(" "),
133
133
  ...p,
134
134
  children: n.children
135
135
  }
136
136
  );
137
- const s = n.keys;
138
- if (s.length === 1) {
139
- const e = s[0], t = r == null ? void 0 : r[e], c = (t == null ? void 0 : t.glyph) ?? w(e, b), i = (t == null ? void 0 : t.spoken) ?? A(e);
137
+ const o = n.keys;
138
+ if (o.length === 1) {
139
+ const e = o[0], s = t == null ? void 0 : t[e], c = (s == null ? void 0 : s.glyph) ?? w(e, b), i = (s == null ? void 0 : s.spoken) ?? A(e);
140
140
  return /* @__PURE__ */ u(
141
141
  "kbd",
142
142
  {
143
- ref: a,
143
+ ref: r,
144
144
  className: [h({ size: l, intensity: d }), m].filter(Boolean).join(" "),
145
145
  ...p,
146
146
  children: [
147
- /* @__PURE__ */ o("span", { "aria-hidden": "true", children: c }),
148
- /* @__PURE__ */ o("span", { className: "sr-only", children: i })
147
+ /* @__PURE__ */ a("span", { "aria-hidden": "true", children: c }),
148
+ /* @__PURE__ */ a("span", { className: "ds:sr-only", children: i })
149
149
  ]
150
150
  }
151
151
  );
152
152
  }
153
- const v = s.map((e) => {
154
- var t;
155
- return ((t = r == null ? void 0 : r[e]) == null ? void 0 : t.spoken) ?? A(e);
153
+ const v = o.map((e) => {
154
+ var s;
155
+ return ((s = t == null ? void 0 : t[e]) == null ? void 0 : s.spoken) ?? A(e);
156
156
  }).join(" ");
157
157
  if (g === "none")
158
158
  return /* @__PURE__ */ u(
159
159
  "kbd",
160
160
  {
161
- ref: a,
161
+ ref: r,
162
162
  className: [h({ size: l, intensity: d }), m].filter(Boolean).join(" "),
163
163
  ...p,
164
164
  children: [
165
- s.map((e, t) => {
165
+ o.map((e, s) => {
166
166
  var i;
167
- const c = ((i = r == null ? void 0 : r[e]) == null ? void 0 : i.glyph) ?? w(e, b);
168
- return /* @__PURE__ */ o("span", { "aria-hidden": "true", children: c }, `${e}-${t}`);
167
+ const c = ((i = t == null ? void 0 : t[e]) == null ? void 0 : i.glyph) ?? w(e, b);
168
+ return /* @__PURE__ */ a("span", { "aria-hidden": "true", children: c }, `${e}-${s}`);
169
169
  }),
170
- /* @__PURE__ */ o("span", { className: "sr-only", children: v })
170
+ /* @__PURE__ */ a("span", { className: "ds:sr-only", children: v })
171
171
  ]
172
172
  }
173
173
  );
174
174
  const D = g === "plus" ? f("kbd.plus", "+") : f("kbd.then", "then"), B = g === "then" ? f("kbd.pressThen", "Press {{keys}}", {
175
- keys: s.map((e) => {
176
- var t;
177
- return ((t = r == null ? void 0 : r[e]) == null ? void 0 : t.spoken) ?? A(e);
175
+ keys: o.map((e) => {
176
+ var s;
177
+ return ((s = t == null ? void 0 : t[e]) == null ? void 0 : s.spoken) ?? A(e);
178
178
  }).join(` ${f("kbd.thenSpoken", "then")} `)
179
179
  }) : v;
180
180
  return /* @__PURE__ */ u(
181
181
  "kbd",
182
182
  {
183
- ref: a,
183
+ ref: r,
184
184
  className: [U(), m].filter(Boolean).join(" "),
185
185
  ...p,
186
186
  children: [
187
- /* @__PURE__ */ o("span", { className: "sr-only", children: B }),
188
- s.map((e, t) => {
187
+ /* @__PURE__ */ a("span", { className: "ds:sr-only", children: B }),
188
+ o.map((e, s) => {
189
189
  var i;
190
- const c = ((i = r == null ? void 0 : r[e]) == null ? void 0 : i.glyph) ?? w(e, b);
190
+ const c = ((i = t == null ? void 0 : t[e]) == null ? void 0 : i.glyph) ?? w(e, b);
191
191
  return /* @__PURE__ */ u(L, { children: [
192
- /* @__PURE__ */ o(
192
+ /* @__PURE__ */ a(
193
193
  "kbd",
194
194
  {
195
195
  "aria-hidden": "true",
@@ -197,15 +197,15 @@ const h = x(
197
197
  children: c
198
198
  }
199
199
  ),
200
- t < s.length - 1 ? /* @__PURE__ */ o(
200
+ s < o.length - 1 ? /* @__PURE__ */ a(
201
201
  "span",
202
202
  {
203
203
  "aria-hidden": "true",
204
- className: "text-[color:var(--muted-foreground)] text-[length:var(--font-size-xs)]",
204
+ className: "ds:text-[color:var(--muted-foreground)] ds:text-[length:var(--font-size-xs)]",
205
205
  children: D
206
206
  }
207
207
  ) : null
208
- ] }, `${e}-${t}`);
208
+ ] }, `${e}-${s}`);
209
209
  })
210
210
  ]
211
211
  }
@@ -217,4 +217,4 @@ export {
217
217
  $ as K,
218
218
  _ as k
219
219
  };
220
- //# sourceMappingURL=kbd-0iPlQjgC.js.map
220
+ //# sourceMappingURL=kbd-DTcIjYA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd-DTcIjYA7.js","sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import {\n forwardRef,\n Fragment,\n useEffect,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\n\n/* ------------------------------------------------------------------ */\n/* Platform detection */\n/* ------------------------------------------------------------------ */\n\nfunction detectMacLike(): boolean {\n if (typeof navigator === 'undefined') return false;\n const uaData = (navigator as unknown as {\n userAgentData?: { platform?: string };\n }).userAgentData;\n const platformString = uaData?.platform ?? navigator.platform ?? '';\n return /mac/i.test(platformString);\n}\n\n/* ------------------------------------------------------------------ */\n/* Glyph + accessible-name maps */\n/* ------------------------------------------------------------------ */\n\nexport type KbdNamedKey =\n | 'Meta'\n | 'Control'\n | 'Alt'\n | 'Shift'\n | 'Enter'\n | 'Escape'\n | 'Space'\n | 'Tab'\n | 'Delete'\n | 'Backspace'\n | 'ArrowUp'\n | 'ArrowDown'\n | 'ArrowLeft'\n | 'ArrowRight';\n\n/**\n * Named keys we understand — anything else is passed through verbatim.\n * Glyph rendering is platform-aware; accessible names spell the key out\n * so screen readers say \"Command K\" instead of \"black apple K\".\n */\nconst MAC_GLYPHS: Record<KbdNamedKey, string> = {\n Meta: '\\u2318', // ⌘\n Control: '\\u2303', // ⌃\n Alt: '\\u2325', // ⌥\n Shift: '\\u21E7', // ⇧\n Enter: '\\u23CE', // ⏎\n Escape: 'Esc',\n Space: 'Space',\n Tab: '\\u21E5', // ⇥\n Delete: '\\u2326', // ⌦\n Backspace: '\\u232B', // ⌫\n ArrowUp: '\\u2191', // ↑\n ArrowDown: '\\u2193', // ↓\n ArrowLeft: '\\u2190', // ←\n ArrowRight: '\\u2192', // →\n};\n\nconst WIN_GLYPHS: Record<KbdNamedKey, string> = {\n Meta: 'Ctrl', // Windows/Linux consumers usually care about the Control equivalent\n Control: 'Ctrl',\n Alt: 'Alt',\n Shift: 'Shift',\n Enter: 'Enter',\n Escape: 'Esc',\n Space: 'Space',\n Tab: 'Tab',\n Delete: 'Del',\n Backspace: 'Backspace',\n ArrowUp: '\\u2191',\n ArrowDown: '\\u2193',\n ArrowLeft: '\\u2190',\n ArrowRight: '\\u2192',\n};\n\n/** Spelled-out names used for the aria-label — never platform-swapped. */\nconst SPOKEN_NAMES: Record<KbdNamedKey, string> = {\n Meta: 'Command',\n Control: 'Control',\n Alt: 'Option',\n Shift: 'Shift',\n Enter: 'Enter',\n Escape: 'Escape',\n Space: 'Space',\n Tab: 'Tab',\n Delete: 'Delete',\n Backspace: 'Backspace',\n ArrowUp: 'Up arrow',\n ArrowDown: 'Down arrow',\n ArrowLeft: 'Left arrow',\n ArrowRight: 'Right arrow',\n};\n\nfunction isNamedKey(key: string): key is KbdNamedKey {\n return (\n key === 'Meta' ||\n key === 'Control' ||\n key === 'Alt' ||\n key === 'Shift' ||\n key === 'Enter' ||\n key === 'Escape' ||\n key === 'Space' ||\n key === 'Tab' ||\n key === 'Delete' ||\n key === 'Backspace' ||\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowRight'\n );\n}\n\nfunction glyphFor(key: string, isMac: boolean): string {\n if (isNamedKey(key)) {\n return (isMac ? MAC_GLYPHS : WIN_GLYPHS)[key];\n }\n return key;\n}\n\nfunction spokenFor(key: string): string {\n if (isNamedKey(key)) return SPOKEN_NAMES[key];\n return key;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst kbdVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:font-[family-name:var(--font-mono)]',\n 'ds:tabular-nums',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:select-none',\n // Tight minimum size so single-key pills never collapse.\n 'ds:min-inline-size-[1.5em] ds:min-block-size-[1.5em]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-xs)] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]',\n md: 'ds:text-[length:var(--font-size-xs)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n lg: 'ds:text-[length:var(--font-size-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n },\n intensity: {\n outline: [\n 'ds:bg-[var(--background)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:text-[color:var(--foreground)]',\n ].join(' '),\n solid: [\n 'ds:bg-[var(--muted)]',\n 'ds:text-[color:var(--foreground)]',\n ].join(' '),\n },\n },\n defaultVariants: { size: 'md', intensity: 'outline' },\n },\n);\n\nconst groupVariants = cva(\n [\n 'ds:inline-flex ds:items-center',\n 'ds:gap-[calc(var(--spacing-xs)/2)]',\n // Group shouldn't visually render as a pill itself — just holds pills.\n 'ds:font-[family-name:var(--font-mono)]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type KbdSeparator = 'none' | 'plus' | 'then';\n\n/**\n * Optional override map for keys. Consumers can rewrite the visible\n * glyph or the spoken name for product-specific shortcuts (e.g. mapping\n * a \"Brand\" modifier to a special icon).\n */\nexport interface KbdGlyphOverride {\n glyph?: string;\n spoken?: string;\n}\n\ninterface KbdBaseProps\n extends Omit<HTMLAttributes<HTMLElement>, 'children'>,\n VariantProps<typeof kbdVariants> {\n separator?: KbdSeparator;\n glyphMap?: Partial<Record<KbdNamedKey | string, KbdGlyphOverride>>;\n}\n\ninterface KbdWithKeysProps extends KbdBaseProps {\n keys: Array<KbdNamedKey | string>;\n children?: never;\n}\n\ninterface KbdWithChildrenProps extends KbdBaseProps {\n keys?: never;\n children: ReactNode;\n}\n\nexport type KbdProps = KbdWithKeysProps | KbdWithChildrenProps;\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const Kbd = forwardRef<HTMLElement, KbdProps>((props, ref) => {\n const {\n size = 'md',\n intensity = 'outline',\n separator = 'none',\n glyphMap,\n className,\n ...rest\n } = props as KbdBaseProps & { className?: string };\n\n const { t } = useTranslation();\n\n const [isMac, setIsMac] = useState(false);\n useEffect(() => {\n setIsMac(detectMacLike());\n }, []);\n\n // Children path: pass-through rendering. Still a semantic <kbd> so\n // AT + search engines classify it correctly.\n if ('children' in props && props.children !== undefined) {\n return (\n <kbd\n ref={ref}\n className={[kbdVariants({ size, intensity }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n {(props as KbdWithChildrenProps).children}\n </kbd>\n );\n }\n\n const keys = (props as KbdWithKeysProps).keys;\n\n // Single-key shortcut with no separator — render as one pill.\n // axe's `aria-prohibited-attr` rule forbids `aria-label` on <kbd>\n // elements (no valid implicit role), so the spoken name is delivered\n // via a visually-hidden sr-only span instead.\n if (keys.length === 1) {\n const k = keys[0];\n const override = glyphMap?.[k];\n const glyph = override?.glyph ?? glyphFor(k, isMac);\n const spoken = override?.spoken ?? spokenFor(k);\n return (\n <kbd\n ref={ref}\n className={[kbdVariants({ size, intensity }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <span aria-hidden=\"true\">{glyph}</span>\n <span className=\"ds:sr-only\">{spoken}</span>\n </kbd>\n );\n }\n\n // Multi-key shortcut.\n const spokenAll = keys\n .map((k) => glyphMap?.[k]?.spoken ?? spokenFor(k))\n .join(' ');\n\n // `none`: single combined pill (e.g. \"⌘K\" rendered together).\n if (separator === 'none') {\n return (\n <kbd\n ref={ref}\n className={[kbdVariants({ size, intensity }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n {keys.map((k, i) => {\n const glyph = glyphMap?.[k]?.glyph ?? glyphFor(k, isMac);\n return (\n <span key={`${k}-${i}`} aria-hidden=\"true\">\n {glyph}\n </span>\n );\n })}\n <span className=\"ds:sr-only\">{spokenAll}</span>\n </kbd>\n );\n }\n\n // `plus` / `then`: multiple sibling <kbd> pills inside a wrapping <kbd>.\n const separatorText =\n separator === 'plus' ? t('kbd.plus', '+') : t('kbd.then', 'then');\n\n const spokenAnnouncement =\n separator === 'then'\n ? t('kbd.pressThen', 'Press {{keys}}', {\n keys: keys\n .map((k) => glyphMap?.[k]?.spoken ?? spokenFor(k))\n .join(` ${t('kbd.thenSpoken', 'then')} `),\n })\n : spokenAll;\n\n return (\n <kbd\n ref={ref}\n className={[groupVariants(), className].filter(Boolean).join(' ')}\n {...rest}\n >\n <span className=\"ds:sr-only\">{spokenAnnouncement}</span>\n {keys.map((k, i) => {\n const glyph = glyphMap?.[k]?.glyph ?? glyphFor(k, isMac);\n return (\n <Fragment key={`${k}-${i}`}>\n <kbd\n aria-hidden=\"true\"\n className={kbdVariants({ size, intensity })}\n >\n {glyph}\n </kbd>\n {i < keys.length - 1 ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:text-[color:var(--muted-foreground)] ds:text-[length:var(--font-size-xs)]\"\n >\n {separatorText}\n </span>\n ) : null}\n </Fragment>\n );\n })}\n </kbd>\n );\n});\n\nKbd.displayName = 'Kbd';\n\n/* ------------------------------------------------------------------ */\n/* Named helpers */\n/* ------------------------------------------------------------------ */\n\nexport const kbdGlyphs = { mac: MAC_GLYPHS, win: WIN_GLYPHS, spoken: SPOKEN_NAMES };\n"],"names":["detectMacLike","uaData","platformString","MAC_GLYPHS","WIN_GLYPHS","SPOKEN_NAMES","isNamedKey","key","glyphFor","isMac","spokenFor","kbdVariants","cva","groupVariants","Kbd","forwardRef","props","ref","size","intensity","separator","glyphMap","className","rest","t","useTranslation","setIsMac","useState","useEffect","jsx","keys","k","override","glyph","spoken","jsxs","spokenAll","_a","i","separatorText","spokenAnnouncement","Fragment","kbdGlyphs"],"mappings":"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"}