@alfadocs/ui-kit 0.1.1 → 0.1.3

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 (475) hide show
  1. package/dist/_chunks/{accordion-BJD1aM67.js → accordion-B6fyINUk.js} +10 -9
  2. package/dist/_chunks/accordion-B6fyINUk.js.map +1 -0
  3. package/dist/_chunks/{agenda-card-Bld47Eul.js → agenda-card-C_hQGErS.js} +12 -11
  4. package/dist/_chunks/{agenda-card-Bld47Eul.js.map → agenda-card-C_hQGErS.js.map} +1 -1
  5. package/dist/_chunks/{agenda-tray-D86cNIJ0.js → agenda-tray-CBaVMJLO.js} +6 -5
  6. package/dist/_chunks/{agenda-tray-D86cNIJ0.js.map → agenda-tray-CBaVMJLO.js.map} +1 -1
  7. package/dist/_chunks/{ai-prompt-input-CdYwt2VP.js → ai-prompt-input-K94oVLG2.js} +17 -16
  8. package/dist/_chunks/ai-prompt-input-K94oVLG2.js.map +1 -0
  9. package/dist/_chunks/{alert-ETrF7Q8J.js → alert-rOM4EG0P.js} +12 -11
  10. package/dist/_chunks/{alert-ETrF7Q8J.js.map → alert-rOM4EG0P.js.map} +1 -1
  11. package/dist/_chunks/{app-frame-uq2Gy0vs.js → app-frame-6d7Lu4ea.js} +2 -1
  12. package/dist/_chunks/{app-frame-uq2Gy0vs.js.map → app-frame-6d7Lu4ea.js.map} +1 -1
  13. package/dist/_chunks/{aspect-ratio-BqU4itGW.js → aspect-ratio-CxsdG8vk.js} +9 -8
  14. package/dist/_chunks/{aspect-ratio-BqU4itGW.js.map → aspect-ratio-CxsdG8vk.js.map} +1 -1
  15. package/dist/_chunks/{audio-recorder-D2UEBF9B.js → audio-recorder-Cn8z2zC9.js} +7 -6
  16. package/dist/_chunks/{audio-recorder-D2UEBF9B.js.map → audio-recorder-Cn8z2zC9.js.map} +1 -1
  17. package/dist/_chunks/{audio-visualiser-B4u4goV5.js → audio-visualiser-CeMPCZkd.js} +2 -1
  18. package/dist/_chunks/{audio-visualiser-B4u4goV5.js.map → audio-visualiser-CeMPCZkd.js.map} +1 -1
  19. package/dist/_chunks/{autocomplete.agent-Bi6CiRKa.js → autocomplete.agent-DRrp-Rsx.js} +4 -3
  20. package/dist/_chunks/autocomplete.agent-DRrp-Rsx.js.map +1 -0
  21. package/dist/_chunks/{avatar-BAhxbDEu.js → avatar-Biffh-_H.js} +17 -16
  22. package/dist/_chunks/avatar-Biffh-_H.js.map +1 -0
  23. package/dist/_chunks/{badge-zDghajh8.js → badge-mrstWxve.js} +14 -13
  24. package/dist/_chunks/badge-mrstWxve.js.map +1 -0
  25. package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js → balance-cell-renderer-CiyezQhi.js} +12 -12
  26. package/dist/_chunks/{balance-cell-renderer-BGyvZWjB.js.map → balance-cell-renderer-CiyezQhi.js.map} +1 -1
  27. package/dist/_chunks/{breadcrumb-pdUacgm1.js → breadcrumb-CcZovmIq.js} +2 -1
  28. package/dist/_chunks/breadcrumb-CcZovmIq.js.map +1 -0
  29. package/dist/_chunks/{button-DmiGFnNA.js → button-7dTew-IV.js} +4 -4
  30. package/dist/_chunks/button-7dTew-IV.js.map +1 -0
  31. package/dist/_chunks/{button-group-BtTHSyU0.js → button-group-CONver7M.js} +9 -8
  32. package/dist/_chunks/{button-group-BtTHSyU0.js.map → button-group-CONver7M.js.map} +1 -1
  33. package/dist/_chunks/{card-DeItIBcV.js → card-BEy58ZKp.js} +2 -1
  34. package/dist/_chunks/card-BEy58ZKp.js.map +1 -0
  35. package/dist/_chunks/{chat-container-Co8HpB64.js → chat-container-BZvQ3_yT.js} +2 -2
  36. package/dist/_chunks/{chat-container-Co8HpB64.js.map → chat-container-BZvQ3_yT.js.map} +1 -1
  37. package/dist/_chunks/{chat-input-3rstZhHR.js → chat-input-xiBIujMv.js} +3 -3
  38. package/dist/_chunks/chat-input-xiBIujMv.js.map +1 -0
  39. package/dist/_chunks/{chat-message-dDMVSYBs.js → chat-message-BtxUyugB.js} +10 -9
  40. package/dist/_chunks/chat-message-BtxUyugB.js.map +1 -0
  41. package/dist/_chunks/{checkbox-DMzgtnqw.js → checkbox-Ni6C_KJg.js} +11 -11
  42. package/dist/_chunks/{checkbox-DMzgtnqw.js.map → checkbox-Ni6C_KJg.js.map} +1 -1
  43. package/dist/_chunks/{checkbox-group-DBnIBRT_.js → checkbox-group-BFZ4oN5t.js} +8 -7
  44. package/dist/_chunks/checkbox-group-BFZ4oN5t.js.map +1 -0
  45. package/dist/_chunks/{collapsible-DPGQnHZh.js → collapsible-fFMqzpdL.js} +8 -7
  46. package/dist/_chunks/collapsible-fFMqzpdL.js.map +1 -0
  47. package/dist/_chunks/{color-picker-OKKF3Dww.js → color-picker-Cl3KdjJd.js} +89 -87
  48. package/dist/_chunks/color-picker-Cl3KdjJd.js.map +1 -0
  49. package/dist/_chunks/{combobox.agent-CfeB-IZ1.js → combobox.agent-DjdivI3X.js} +21 -20
  50. package/dist/_chunks/combobox.agent-DjdivI3X.js.map +1 -0
  51. package/dist/_chunks/{command-palette.agent-XLfSGHCL.js → command-palette.agent-BUjzr2ET.js} +3 -2
  52. package/dist/_chunks/command-palette.agent-BUjzr2ET.js.map +1 -0
  53. package/dist/_chunks/{date-picker-DXx8oSJb.js → date-picker-DYXNsWmM.js} +3 -3
  54. package/dist/_chunks/{date-picker-DXx8oSJb.js.map → date-picker-DYXNsWmM.js.map} +1 -1
  55. package/dist/_chunks/{date-range-picker-C3CbY__H.js → date-range-picker-BcNDJI7m.js} +3 -3
  56. package/dist/_chunks/date-range-picker-BcNDJI7m.js.map +1 -0
  57. package/dist/_chunks/{date-time-picker-Bn3FPeAc.js → date-time-picker-CmGiTU__.js} +7 -7
  58. package/dist/_chunks/date-time-picker-CmGiTU__.js.map +1 -0
  59. package/dist/_chunks/{description-list-B1CL3RTG.js → description-list-C_1NX8P3.js} +3 -2
  60. package/dist/_chunks/description-list-C_1NX8P3.js.map +1 -0
  61. package/dist/_chunks/{dialog.agent-D9WeIWi2.js → dialog.agent-C2lP9H0h.js} +2 -2
  62. package/dist/_chunks/{dialog.agent-D9WeIWi2.js.map → dialog.agent-C2lP9H0h.js.map} +1 -1
  63. package/dist/_chunks/{dropdown-menu-BnVUeVG3.js → dropdown-menu-2HgU1Emf.js} +4 -3
  64. package/dist/_chunks/dropdown-menu-2HgU1Emf.js.map +1 -0
  65. package/dist/_chunks/{empty-state-DV96gCnp.js → empty-state-BHrItOiE.js} +3 -2
  66. package/dist/_chunks/{empty-state-DV96gCnp.js.map → empty-state-BHrItOiE.js.map} +1 -1
  67. package/dist/_chunks/{file-upload.agent-DYFnqdxw.js → file-upload.agent-LlC0W468.js} +4 -4
  68. package/dist/_chunks/file-upload.agent-LlC0W468.js.map +1 -0
  69. package/dist/_chunks/{flag-C3BUEwHH.js → flag-DZ6V7-hU.js} +3 -1
  70. package/dist/_chunks/{flag-C3BUEwHH.js.map → flag-DZ6V7-hU.js.map} +1 -1
  71. package/dist/_chunks/{floating-action-button-RigP2E7o.js → floating-action-button-Cnw-f6AG.js} +8 -7
  72. package/dist/_chunks/floating-action-button-Cnw-f6AG.js.map +1 -0
  73. package/dist/_chunks/{form-field-DI5LY5aG.js → form-field-BfsPLTSc.js} +2 -1
  74. package/dist/_chunks/form-field-BfsPLTSc.js.map +1 -0
  75. package/dist/_chunks/{freemium-paywall-D0GiUFOe.js → freemium-paywall-Dr9aOtOC.js} +24 -23
  76. package/dist/_chunks/freemium-paywall-Dr9aOtOC.js.map +1 -0
  77. package/dist/_chunks/{header-CW2oRd5H.js → header-BpU9U-1X.js} +3 -2
  78. package/dist/_chunks/{header-CW2oRd5H.js.map → header-BpU9U-1X.js.map} +1 -1
  79. package/dist/_chunks/{icon-button-C482ii4y.js → icon-button-CNjWCD1X.js} +10 -9
  80. package/dist/_chunks/icon-button-CNjWCD1X.js.map +1 -0
  81. package/dist/_chunks/{icon-button-group-BnhkUWUg.js → icon-button-group-DeV3FpNY.js} +26 -25
  82. package/dist/_chunks/{icon-button-group-BnhkUWUg.js.map → icon-button-group-DeV3FpNY.js.map} +1 -1
  83. package/dist/_chunks/{kbd-DTcIjYA7.js → kbd-8baVw3KU.js} +35 -31
  84. package/dist/_chunks/kbd-8baVw3KU.js.map +1 -0
  85. package/dist/_chunks/{key-value-pair-DDhSYdDL.js → key-value-pair-C9hpjC_B.js} +13 -12
  86. package/dist/_chunks/{key-value-pair-DDhSYdDL.js.map → key-value-pair-C9hpjC_B.js.map} +1 -1
  87. package/dist/_chunks/{leo-sidebar-gXXcGPKk.js → leo-sidebar-CNjZqljo.js} +12 -12
  88. package/dist/_chunks/{leo-sidebar-gXXcGPKk.js.map → leo-sidebar-CNjZqljo.js.map} +1 -1
  89. package/dist/_chunks/{list-Cwe8mcmh.js → list-B1ozIjQe.js} +4 -1
  90. package/dist/_chunks/list-B1ozIjQe.js.map +1 -0
  91. package/dist/_chunks/live-region-C41SO3cA.js +58 -0
  92. package/dist/_chunks/{live-region-COggO6x6.js.map → live-region-C41SO3cA.js.map} +1 -1
  93. package/dist/_chunks/{logo-3wrZGpwg.js → logo-BpFoCL-s.js} +7 -7
  94. package/dist/_chunks/{logo-3wrZGpwg.js.map → logo-BpFoCL-s.js.map} +1 -1
  95. package/dist/_chunks/{matrix-rain-gsHqSvW7.js → matrix-rain-BEkvux64.js} +2 -1
  96. package/dist/_chunks/{matrix-rain-gsHqSvW7.js.map → matrix-rain-BEkvux64.js.map} +1 -1
  97. package/dist/_chunks/{message-card-DID3cXUW.js → message-card-CZzNO4ov.js} +6 -5
  98. package/dist/_chunks/message-card-CZzNO4ov.js.map +1 -0
  99. package/dist/_chunks/{message-tray-CVMLBnVp.js → message-tray-BWbjXW3F.js} +7 -6
  100. package/dist/_chunks/message-tray-BWbjXW3F.js.map +1 -0
  101. package/dist/_chunks/{multi-select.agent-BUKYZJfp.js → multi-select.agent-BSGEW10d.js} +34 -33
  102. package/dist/_chunks/multi-select.agent-BSGEW10d.js.map +1 -0
  103. package/dist/_chunks/{navigation-menu-NjwxyshT.js → navigation-menu-DxOMvrKM.js} +2 -1
  104. package/dist/_chunks/navigation-menu-DxOMvrKM.js.map +1 -0
  105. package/dist/_chunks/{notification-card-BZ33fq8H.js → notification-card-DgW-vVg-.js} +5 -4
  106. package/dist/_chunks/{notification-card-BZ33fq8H.js.map → notification-card-DgW-vVg-.js.map} +1 -1
  107. package/dist/_chunks/{notification-tray-CnEd7B2q.js → notification-tray-CKUgl2jc.js} +7 -6
  108. package/dist/_chunks/{notification-tray-CnEd7B2q.js.map → notification-tray-CKUgl2jc.js.map} +1 -1
  109. package/dist/_chunks/{number-input-D7rSa_ef.js → number-input-BPPhekLu.js} +19 -18
  110. package/dist/_chunks/number-input-BPPhekLu.js.map +1 -0
  111. package/dist/_chunks/{otp-input-C9R9sC74.js → otp-input-De5_Ih7B.js} +15 -14
  112. package/dist/_chunks/otp-input-De5_Ih7B.js.map +1 -0
  113. package/dist/_chunks/{pagination.agent-D75FB6XP.js → pagination.agent-CmA0Ocr5.js} +16 -15
  114. package/dist/_chunks/pagination.agent-CmA0Ocr5.js.map +1 -0
  115. package/dist/_chunks/{password-input-C6PvKyQV.js → password-input-DAT5HQth.js} +7 -7
  116. package/dist/_chunks/password-input-DAT5HQth.js.map +1 -0
  117. package/dist/_chunks/{patient-shell-CGsmI5LJ.js → patient-shell-BzHhg6uA.js} +9 -9
  118. package/dist/_chunks/{patient-shell-CGsmI5LJ.js.map → patient-shell-BzHhg6uA.js.map} +1 -1
  119. package/dist/_chunks/{payment-form-l3j-gA-t.js → payment-form-YlxrCpZQ.js} +22 -22
  120. package/dist/_chunks/payment-form-YlxrCpZQ.js.map +1 -0
  121. package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js → pdf-viewer.agent-sMned5Xn.js} +3 -3
  122. package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js.map → pdf-viewer.agent-sMned5Xn.js.map} +1 -1
  123. package/dist/_chunks/{phone-input-ZWa_FU4R.js → phone-input-BuRe5PyI.js} +41 -40
  124. package/dist/_chunks/phone-input-BuRe5PyI.js.map +1 -0
  125. package/dist/_chunks/{popover-CMr1pTPO.js → popover-Ds1iOdiv.js} +4 -3
  126. package/dist/_chunks/popover-Ds1iOdiv.js.map +1 -0
  127. package/dist/_chunks/{privacy-lock-DdpkKNM2.js → privacy-lock-KEruBpM1.js} +23 -23
  128. package/dist/_chunks/{privacy-lock-DdpkKNM2.js.map → privacy-lock-KEruBpM1.js.map} +1 -1
  129. package/dist/_chunks/{radio-B_gvGU29.js → radio-XSSNX3Af.js} +8 -7
  130. package/dist/_chunks/radio-XSSNX3Af.js.map +1 -0
  131. package/dist/_chunks/{radio-group-Bn8Wt0yc.js → radio-group-DBrUOPcy.js} +19 -18
  132. package/dist/_chunks/radio-group-DBrUOPcy.js.map +1 -0
  133. package/dist/_chunks/{react-day-picker-d0MHsyCj.js → react-day-picker-C04L_28V.js} +5 -5
  134. package/dist/_chunks/{react-day-picker-d0MHsyCj.js.map → react-day-picker-C04L_28V.js.map} +1 -1
  135. package/dist/_chunks/{rich-text-editor.agent-C1_E7_7t.js → rich-text-editor.agent-COSb5_2D.js} +4 -4
  136. package/dist/_chunks/rich-text-editor.agent-COSb5_2D.js.map +1 -0
  137. package/dist/_chunks/{scroll-area-Ba99pJ_R.js → scroll-area-HIq0hJyJ.js} +14 -12
  138. package/dist/_chunks/scroll-area-HIq0hJyJ.js.map +1 -0
  139. package/dist/_chunks/{search-bar-VoTqJhRp.js → search-bar-9Zbew4yM.js} +4 -3
  140. package/dist/_chunks/search-bar-9Zbew4yM.js.map +1 -0
  141. package/dist/_chunks/{search-input-D6rarD0_.js → search-input-CtkWITO2.js} +28 -28
  142. package/dist/_chunks/{search-input-D6rarD0_.js.map → search-input-CtkWITO2.js.map} +1 -1
  143. package/dist/_chunks/{select-DbxWF3O_.js → select-DdAOtomN.js} +24 -23
  144. package/dist/_chunks/select-DdAOtomN.js.map +1 -0
  145. package/dist/_chunks/{separator-BRQHi8s0.js → separator-B4wXDLNC.js} +9 -8
  146. package/dist/_chunks/{separator-BRQHi8s0.js.map → separator-B4wXDLNC.js.map} +1 -1
  147. package/dist/_chunks/{sheet-DyWqluiS.js → sheet-D7GRhnWw.js} +3 -2
  148. package/dist/_chunks/sheet-D7GRhnWw.js.map +1 -0
  149. package/dist/_chunks/{sidebar-B52iGGNV.js → sidebar-Dc2ffrbf.js} +9 -8
  150. package/dist/_chunks/sidebar-Dc2ffrbf.js.map +1 -0
  151. package/dist/_chunks/sign-in-with-alfadocs-button-BotwPDcW.js +45 -0
  152. package/dist/_chunks/{sign-in-with-alfadocs-button-BU7MP5Hg.js.map → sign-in-with-alfadocs-button-BotwPDcW.js.map} +1 -1
  153. package/dist/_chunks/{signature-capture.agent-4htVctJ2.js → signature-capture.agent-C38VPXxg.js} +19 -19
  154. package/dist/_chunks/signature-capture.agent-C38VPXxg.js.map +1 -0
  155. package/dist/_chunks/{skeleton-ClO1v5GE.js → skeleton-DAdPFx9d.js} +18 -16
  156. package/dist/_chunks/{skeleton-ClO1v5GE.js.map → skeleton-DAdPFx9d.js.map} +1 -1
  157. package/dist/_chunks/{skip-link-CASJkBOe.js → skip-link-DmZ3c6cb.js} +12 -11
  158. package/dist/_chunks/{skip-link-CASJkBOe.js.map → skip-link-DmZ3c6cb.js.map} +1 -1
  159. package/dist/_chunks/{slider-n8JWpJvT.js → slider-DjyRt3Mp.js} +3 -2
  160. package/dist/_chunks/slider-DjyRt3Mp.js.map +1 -0
  161. package/dist/_chunks/{slot-grid-BRAkqChA.js → slot-grid-WHc5A8-z.js} +57 -56
  162. package/dist/_chunks/slot-grid-WHc5A8-z.js.map +1 -0
  163. package/dist/_chunks/{sparkline.agent-BLY1IMyW.js → sparkline.agent-C_xp3NRB.js} +2 -2
  164. package/dist/_chunks/{sparkline.agent-BLY1IMyW.js.map → sparkline.agent-C_xp3NRB.js.map} +1 -1
  165. package/dist/_chunks/{spinner-CoAOGcDa.js → spinner-GCcv67vh.js} +2 -1
  166. package/dist/_chunks/spinner-GCcv67vh.js.map +1 -0
  167. package/dist/_chunks/{stat-D76MNHzK.js → stat-DUB6g90R.js} +3 -1
  168. package/dist/_chunks/{stat-D76MNHzK.js.map → stat-DUB6g90R.js.map} +1 -1
  169. package/dist/_chunks/{stepper-accordion-DHQ80A4v.js → stepper-accordion-2_7Pw0tC.js} +2 -1
  170. package/dist/_chunks/{stepper-accordion-DHQ80A4v.js.map → stepper-accordion-2_7Pw0tC.js.map} +1 -1
  171. package/dist/_chunks/{stepper-calendar-vtWwa2bY.js → stepper-calendar-CWZcFgt_.js} +9 -8
  172. package/dist/_chunks/stepper-calendar-CWZcFgt_.js.map +1 -0
  173. package/dist/_chunks/{stepper-progress-DMZ5w5VR.js → stepper-progress-rE7tn7WY.js} +12 -11
  174. package/dist/_chunks/{stepper-progress-DMZ5w5VR.js.map → stepper-progress-rE7tn7WY.js.map} +1 -1
  175. package/dist/_chunks/{streaming-text-D0cW8pwq.js → streaming-text-BgjCTVOw.js} +6 -5
  176. package/dist/_chunks/{streaming-text-D0cW8pwq.js.map → streaming-text-BgjCTVOw.js.map} +1 -1
  177. package/dist/_chunks/{suggestion-chip-BgNFpPEE.js → suggestion-chip-6AB40rxz.js} +2 -1
  178. package/dist/_chunks/{suggestion-chip-BgNFpPEE.js.map → suggestion-chip-6AB40rxz.js.map} +1 -1
  179. package/dist/_chunks/{switch-DtLPKO0p.js → switch-DhSORO9C.js} +2 -1
  180. package/dist/_chunks/{switch-DtLPKO0p.js.map → switch-DhSORO9C.js.map} +1 -1
  181. package/dist/_chunks/{tabs.agent-BDUlyPbJ.js → tabs.agent-BtaNGxRh.js} +6 -5
  182. package/dist/_chunks/tabs.agent-BtaNGxRh.js.map +1 -0
  183. package/dist/_chunks/{tag-CfSZZN2f.js → tag--uLKOb9f.js} +17 -14
  184. package/dist/_chunks/{tag-CfSZZN2f.js.map → tag--uLKOb9f.js.map} +1 -1
  185. package/dist/_chunks/{task-card-B5xfiFg5.js → task-card-BeSuntXP.js} +11 -10
  186. package/dist/_chunks/{task-card-B5xfiFg5.js.map → task-card-BeSuntXP.js.map} +1 -1
  187. package/dist/_chunks/{task-tray-BnpiodZ4.js → task-tray-pRk6u8Ik.js} +10 -9
  188. package/dist/_chunks/{task-tray-BnpiodZ4.js.map → task-tray-pRk6u8Ik.js.map} +1 -1
  189. package/dist/_chunks/{text-area-BqbruBWx.js → text-area-xf9-6iDf.js} +21 -21
  190. package/dist/_chunks/text-area-xf9-6iDf.js.map +1 -0
  191. package/dist/_chunks/{text-input-lh6kRXZS.js → text-input-exh7VD7D.js} +10 -9
  192. package/dist/_chunks/{text-input-lh6kRXZS.js.map → text-input-exh7VD7D.js.map} +1 -1
  193. package/dist/_chunks/theme-root-DDb0TJjd.js +18 -0
  194. package/dist/_chunks/{theme-root-vapFjsnt.js.map → theme-root-DDb0TJjd.js.map} +1 -1
  195. package/dist/_chunks/{theme-toggle-BHKMiORD.js → theme-toggle-CJgA6G24.js} +42 -39
  196. package/dist/_chunks/theme-toggle-CJgA6G24.js.map +1 -0
  197. package/dist/_chunks/{time-picker-DbpAmPux.js → time-picker-D-EueWUG.js} +68 -67
  198. package/dist/_chunks/time-picker-D-EueWUG.js.map +1 -0
  199. package/dist/_chunks/{timeline-vjsUeuq1.js → timeline-DIueH4TJ.js} +5 -4
  200. package/dist/_chunks/timeline-DIueH4TJ.js.map +1 -0
  201. package/dist/_chunks/{timestamp-DmSt92P1.js → timestamp-BV2lC-wV.js} +2 -1
  202. package/dist/_chunks/{timestamp-DmSt92P1.js.map → timestamp-BV2lC-wV.js.map} +1 -1
  203. package/dist/_chunks/{toast-DllSITLf.js → toast-q0SlabGr.js} +2 -2
  204. package/dist/_chunks/{toast-DllSITLf.js.map → toast-q0SlabGr.js.map} +1 -1
  205. package/dist/_chunks/{tooltip-Dp3u8jGz.js → tooltip-DHik5yRI.js} +2 -1
  206. package/dist/_chunks/{tooltip-Dp3u8jGz.js.map → tooltip-DHik5yRI.js.map} +1 -1
  207. package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js → tooth-scheme.agent-BlDyu-Gx.js} +2 -2
  208. package/dist/_chunks/{tooth-scheme.agent-BRqxWa1D.js.map → tooth-scheme.agent-BlDyu-Gx.js.map} +1 -1
  209. package/dist/_chunks/{transcript-panel-Bg1BTMSr.js → transcript-panel-DFnhbrlQ.js} +39 -38
  210. package/dist/_chunks/{transcript-panel-Bg1BTMSr.js.map → transcript-panel-DFnhbrlQ.js.map} +1 -1
  211. package/dist/_chunks/{typing-indicator-BRg22Rqr.js → typing-indicator-CbUBf-Dx.js} +9 -8
  212. package/dist/_chunks/{typing-indicator-BRg22Rqr.js.map → typing-indicator-CbUBf-Dx.js.map} +1 -1
  213. package/dist/_chunks/visually-hidden-BlkhaZWe.js +21 -0
  214. package/dist/_chunks/{visually-hidden-Y3jcdCv-.js.map → visually-hidden-BlkhaZWe.js.map} +1 -1
  215. package/dist/_chunks/{warning-stack-B9N9yWet.js → warning-stack-DCmO0R07.js} +26 -24
  216. package/dist/_chunks/warning-stack-DCmO0R07.js.map +1 -0
  217. package/dist/_chunks/{workflow-map-gBhL_Wrs.js → workflow-map-CAM6Uy_J.js} +13 -10
  218. package/dist/_chunks/workflow-map-CAM6Uy_J.js.map +1 -0
  219. package/dist/agent-catalog.json +1 -1
  220. package/dist/components/accordion/accordion.d.ts.map +1 -1
  221. package/dist/components/accordion/index.js +1 -1
  222. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  223. package/dist/components/agenda-card/index.js +1 -1
  224. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  225. package/dist/components/agenda-tray/index.js +1 -1
  226. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  227. package/dist/components/ai-prompt-input/index.js +1 -1
  228. package/dist/components/alert/alert.d.ts.map +1 -1
  229. package/dist/components/alert/index.js +1 -1
  230. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  231. package/dist/components/app-frame/index.js +1 -1
  232. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  233. package/dist/components/aspect-ratio/index.js +1 -1
  234. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  235. package/dist/components/audio-recorder/index.js +1 -1
  236. package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
  237. package/dist/components/audio-visualiser/index.js +1 -1
  238. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  239. package/dist/components/autocomplete/index.js +1 -1
  240. package/dist/components/avatar/avatar.d.ts.map +1 -1
  241. package/dist/components/avatar/index.js +1 -1
  242. package/dist/components/badge/badge.d.ts.map +1 -1
  243. package/dist/components/badge/index.js +1 -1
  244. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  245. package/dist/components/breadcrumb/index.js +1 -1
  246. package/dist/components/button/icon-button.d.ts.map +1 -1
  247. package/dist/components/button/index.js +2 -2
  248. package/dist/components/button-group/button-group.d.ts.map +1 -1
  249. package/dist/components/button-group/index.js +1 -1
  250. package/dist/components/card/card.d.ts.map +1 -1
  251. package/dist/components/card/index.js +1 -1
  252. package/dist/components/chat-container/index.js +1 -1
  253. package/dist/components/chat-input/index.js +1 -1
  254. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  255. package/dist/components/chat-message/index.js +1 -1
  256. package/dist/components/checkbox/index.js +1 -1
  257. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  258. package/dist/components/checkbox-group/index.js +1 -1
  259. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  260. package/dist/components/collapsible/index.js +1 -1
  261. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  262. package/dist/components/color-picker/index.js +1 -1
  263. package/dist/components/combobox/combobox.d.ts.map +1 -1
  264. package/dist/components/combobox/index.js +1 -1
  265. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  266. package/dist/components/command-palette/index.js +1 -1
  267. package/dist/components/data-table/index.js +1 -1
  268. package/dist/components/date-picker/index.js +1 -1
  269. package/dist/components/date-range-picker/index.js +1 -1
  270. package/dist/components/date-time-picker/index.js +1 -1
  271. package/dist/components/description-list/description-list.d.ts.map +1 -1
  272. package/dist/components/description-list/index.js +1 -1
  273. package/dist/components/dialog/index.js +1 -1
  274. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  275. package/dist/components/dropdown-menu/index.js +1 -1
  276. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  277. package/dist/components/empty-state/index.js +1 -1
  278. package/dist/components/file-upload/index.js +1 -1
  279. package/dist/components/flag/flag.d.ts.map +1 -1
  280. package/dist/components/flag/index.js +1 -1
  281. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  282. package/dist/components/floating-action-button/index.js +1 -1
  283. package/dist/components/form-field/form-field.d.ts.map +1 -1
  284. package/dist/components/form-field/index.js +1 -1
  285. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  286. package/dist/components/freemium-paywall/index.js +1 -1
  287. package/dist/components/header/header.d.ts.map +1 -1
  288. package/dist/components/header/index.js +1 -1
  289. package/dist/components/icon-button/index.js +1 -1
  290. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  291. package/dist/components/icon-button-group/index.js +1 -1
  292. package/dist/components/kbd/index.js +1 -1
  293. package/dist/components/kbd/kbd.d.ts.map +1 -1
  294. package/dist/components/key-value-pair/index.js +1 -1
  295. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  296. package/dist/components/list/index.js +1 -1
  297. package/dist/components/list/list.d.ts.map +1 -1
  298. package/dist/components/live-region/index.js +1 -1
  299. package/dist/components/live-region/live-region.d.ts.map +1 -1
  300. package/dist/components/logo/index.js +1 -1
  301. package/dist/components/matrix-rain/index.js +1 -1
  302. package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
  303. package/dist/components/message-card/index.js +1 -1
  304. package/dist/components/message-card/message-card.d.ts.map +1 -1
  305. package/dist/components/message-tray/index.js +1 -1
  306. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  307. package/dist/components/multi-select/index.js +1 -1
  308. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  309. package/dist/components/navigation-menu/index.js +2 -2
  310. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  311. package/dist/components/notification-card/index.js +1 -1
  312. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  313. package/dist/components/notification-tray/index.js +1 -1
  314. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  315. package/dist/components/number-input/index.js +1 -1
  316. package/dist/components/number-input/number-input.d.ts.map +1 -1
  317. package/dist/components/otp-input/index.js +1 -1
  318. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  319. package/dist/components/pagination/index.js +1 -1
  320. package/dist/components/pagination/pagination.d.ts.map +1 -1
  321. package/dist/components/password-input/index.js +1 -1
  322. package/dist/components/payment-form/index.js +1 -1
  323. package/dist/components/pdf-viewer/index.js +1 -1
  324. package/dist/components/phone-input/index.js +1 -1
  325. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  326. package/dist/components/popover/index.js +1 -1
  327. package/dist/components/popover/popover.d.ts.map +1 -1
  328. package/dist/components/privacy-lock/index.js +1 -1
  329. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  330. package/dist/components/radio/index.js +1 -1
  331. package/dist/components/radio-group/index.js +2 -2
  332. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  333. package/dist/components/radio-group/radio.d.ts.map +1 -1
  334. package/dist/components/rich-text-editor/index.js +1 -1
  335. package/dist/components/scroll-area/index.js +1 -1
  336. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  337. package/dist/components/search-bar/index.js +1 -1
  338. package/dist/components/search-input/index.js +1 -1
  339. package/dist/components/select/index.js +1 -1
  340. package/dist/components/select/select.d.ts.map +1 -1
  341. package/dist/components/separator/index.js +1 -1
  342. package/dist/components/separator/separator.d.ts.map +1 -1
  343. package/dist/components/sheet/index.js +1 -1
  344. package/dist/components/sheet/sheet.d.ts.map +1 -1
  345. package/dist/components/sidebar/index.js +1 -1
  346. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  347. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  348. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  349. package/dist/components/signature-capture/index.js +1 -1
  350. package/dist/components/skeleton/index.js +1 -1
  351. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  352. package/dist/components/skip-link/index.js +1 -1
  353. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  354. package/dist/components/slider/index.js +1 -1
  355. package/dist/components/slider/slider.d.ts.map +1 -1
  356. package/dist/components/slot-grid/index.js +1 -1
  357. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  358. package/dist/components/sparkline/index.js +1 -1
  359. package/dist/components/spinner/index.js +1 -1
  360. package/dist/components/spinner/spinner.d.ts.map +1 -1
  361. package/dist/components/stat/index.js +1 -1
  362. package/dist/components/stat/stat.d.ts.map +1 -1
  363. package/dist/components/stepper-accordion/index.js +1 -1
  364. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  365. package/dist/components/stepper-calendar/index.js +1 -1
  366. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  367. package/dist/components/stepper-progress/index.js +1 -1
  368. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  369. package/dist/components/streaming-text/index.js +1 -1
  370. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  371. package/dist/components/suggestion-chip/index.js +1 -1
  372. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  373. package/dist/components/switch/index.js +1 -1
  374. package/dist/components/switch/switch.d.ts.map +1 -1
  375. package/dist/components/tabs/index.js +1 -1
  376. package/dist/components/tabs/tabs.d.ts.map +1 -1
  377. package/dist/components/tag/index.js +1 -1
  378. package/dist/components/tag/tag.d.ts.map +1 -1
  379. package/dist/components/task-card/index.js +1 -1
  380. package/dist/components/task-card/task-card.d.ts.map +1 -1
  381. package/dist/components/task-tray/index.js +1 -1
  382. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  383. package/dist/components/text-area/index.js +1 -1
  384. package/dist/components/text-input/index.js +1 -1
  385. package/dist/components/text-input/text-input.d.ts.map +1 -1
  386. package/dist/components/theme-root/index.js +1 -1
  387. package/dist/components/theme-toggle/index.js +1 -1
  388. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  389. package/dist/components/time-picker/index.js +1 -1
  390. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  391. package/dist/components/timeline/index.js +1 -1
  392. package/dist/components/timeline/timeline.d.ts.map +1 -1
  393. package/dist/components/timestamp/index.js +1 -1
  394. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  395. package/dist/components/toast/index.js +1 -1
  396. package/dist/components/tooltip/index.js +1 -1
  397. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  398. package/dist/components/tooth-scheme/index.js +1 -1
  399. package/dist/components/transcript-panel/index.js +1 -1
  400. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  401. package/dist/components/typing-indicator/index.js +1 -1
  402. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  403. package/dist/components/visually-hidden/index.js +1 -1
  404. package/dist/components/warning-stack/index.js +1 -1
  405. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  406. package/dist/components/workflow/index.js +1 -1
  407. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  408. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  409. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  410. package/dist/index.js +108 -108
  411. package/dist/patterns/leo-assistant/index.js +1 -1
  412. package/dist/patterns/patient-shell/index.js +1 -1
  413. package/dist/tokens.css +1 -1
  414. package/package.json +1 -1
  415. package/dist/_chunks/accordion-BJD1aM67.js.map +0 -1
  416. package/dist/_chunks/ai-prompt-input-CdYwt2VP.js.map +0 -1
  417. package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +0 -1
  418. package/dist/_chunks/avatar-BAhxbDEu.js.map +0 -1
  419. package/dist/_chunks/badge-zDghajh8.js.map +0 -1
  420. package/dist/_chunks/breadcrumb-pdUacgm1.js.map +0 -1
  421. package/dist/_chunks/button-DmiGFnNA.js.map +0 -1
  422. package/dist/_chunks/card-DeItIBcV.js.map +0 -1
  423. package/dist/_chunks/chat-input-3rstZhHR.js.map +0 -1
  424. package/dist/_chunks/chat-message-dDMVSYBs.js.map +0 -1
  425. package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +0 -1
  426. package/dist/_chunks/collapsible-DPGQnHZh.js.map +0 -1
  427. package/dist/_chunks/color-picker-OKKF3Dww.js.map +0 -1
  428. package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +0 -1
  429. package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +0 -1
  430. package/dist/_chunks/date-range-picker-C3CbY__H.js.map +0 -1
  431. package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +0 -1
  432. package/dist/_chunks/description-list-B1CL3RTG.js.map +0 -1
  433. package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +0 -1
  434. package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +0 -1
  435. package/dist/_chunks/floating-action-button-RigP2E7o.js.map +0 -1
  436. package/dist/_chunks/form-field-DI5LY5aG.js.map +0 -1
  437. package/dist/_chunks/freemium-paywall-D0GiUFOe.js.map +0 -1
  438. package/dist/_chunks/icon-button-C482ii4y.js.map +0 -1
  439. package/dist/_chunks/kbd-DTcIjYA7.js.map +0 -1
  440. package/dist/_chunks/list-Cwe8mcmh.js.map +0 -1
  441. package/dist/_chunks/live-region-COggO6x6.js +0 -57
  442. package/dist/_chunks/message-card-DID3cXUW.js.map +0 -1
  443. package/dist/_chunks/message-tray-CVMLBnVp.js.map +0 -1
  444. package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +0 -1
  445. package/dist/_chunks/navigation-menu-NjwxyshT.js.map +0 -1
  446. package/dist/_chunks/number-input-D7rSa_ef.js.map +0 -1
  447. package/dist/_chunks/otp-input-C9R9sC74.js.map +0 -1
  448. package/dist/_chunks/pagination.agent-D75FB6XP.js.map +0 -1
  449. package/dist/_chunks/password-input-C6PvKyQV.js.map +0 -1
  450. package/dist/_chunks/payment-form-l3j-gA-t.js.map +0 -1
  451. package/dist/_chunks/phone-input-ZWa_FU4R.js.map +0 -1
  452. package/dist/_chunks/popover-CMr1pTPO.js.map +0 -1
  453. package/dist/_chunks/radio-B_gvGU29.js.map +0 -1
  454. package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +0 -1
  455. package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +0 -1
  456. package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +0 -1
  457. package/dist/_chunks/search-bar-VoTqJhRp.js.map +0 -1
  458. package/dist/_chunks/select-DbxWF3O_.js.map +0 -1
  459. package/dist/_chunks/sheet-DyWqluiS.js.map +0 -1
  460. package/dist/_chunks/sidebar-B52iGGNV.js.map +0 -1
  461. package/dist/_chunks/sign-in-with-alfadocs-button-BU7MP5Hg.js +0 -44
  462. package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +0 -1
  463. package/dist/_chunks/slider-n8JWpJvT.js.map +0 -1
  464. package/dist/_chunks/slot-grid-BRAkqChA.js.map +0 -1
  465. package/dist/_chunks/spinner-CoAOGcDa.js.map +0 -1
  466. package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +0 -1
  467. package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +0 -1
  468. package/dist/_chunks/text-area-BqbruBWx.js.map +0 -1
  469. package/dist/_chunks/theme-root-vapFjsnt.js +0 -18
  470. package/dist/_chunks/theme-toggle-BHKMiORD.js.map +0 -1
  471. package/dist/_chunks/time-picker-DbpAmPux.js.map +0 -1
  472. package/dist/_chunks/timeline-vjsUeuq1.js.map +0 -1
  473. package/dist/_chunks/visually-hidden-Y3jcdCv-.js +0 -21
  474. package/dist/_chunks/warning-stack-B9N9yWet.js.map +0 -1
  475. package/dist/_chunks/workflow-map-gBhL_Wrs.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-area-xf9-6iDf.js","sources":["../../src/components/text-area/text-area.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ChangeEvent,\n type CompositionEvent,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\n\nconst textAreaVariants = cva(\n [\n 'ds:block ds:w-full ds:border ds:rounded-[var(--radius-sm)] ds:bg-background ds:text-foreground',\n 'ds:leading-[var(--line-height-base)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n 'ds:focus:outline-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:read-only:bg-muted ds:read-only:cursor-default',\n 'ds:transition-[height,color,background-color,border-color] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:placeholder:text-muted-foreground',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:min-h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:min-h-[calc(var(--min-target-size)*1.5)] ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: 'ds:border-border',\n error: 'ds:border-destructive',\n },\n resize: {\n auto: 'ds:resize-none',\n manual: 'ds:resize-y',\n },\n },\n defaultVariants: { size: 'md', tone: 'default', resize: 'manual' },\n },\n);\n\nconst counterToneClass = (ratio: number): string => {\n if (ratio >= 1) return 'text-destructive';\n if (ratio >= 0.9) return 'text-warning';\n return 'text-muted-foreground';\n};\n\ntype NativeTextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'children' | 'size'\n>;\n\nexport interface TextAreaProps\n extends NativeTextareaProps,\n Pick<VariantProps<typeof textAreaVariants>, 'size' | 'tone'> {\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n autoResize?: boolean;\n minRows?: number;\n maxRows?: number;\n showCounter?: boolean;\n}\n\nconst codePointLength = (value: string): number => [...value].length;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n size = 'md',\n tone = 'default',\n autoResize = false,\n minRows = 2,\n maxRows,\n showCounter,\n className,\n id,\n disabled,\n value,\n defaultValue,\n maxLength,\n rows,\n onChange,\n onCompositionStart,\n onCompositionEnd,\n onInput,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const ctx = useFormField();\n const textAreaId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone: 'default' | 'error' = ctx.invalid ? 'error' : tone;\n\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLTextAreaElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n String(defaultValue ?? ''),\n );\n const currentValue = isControlled ? String(value) : internalValue;\n\n const composingRef = useRef(false);\n\n const resizeTextArea = useCallback(() => {\n const el = innerRef.current;\n if (!el || !autoResize) return;\n\n const styles = window.getComputedStyle(el);\n const lineHeight = parseFloat(styles.lineHeight);\n const paddingTop = parseFloat(styles.paddingTop);\n const paddingBottom = parseFloat(styles.paddingBottom);\n const borderTop = parseFloat(styles.borderTopWidth);\n const borderBottom = parseFloat(styles.borderBottomWidth);\n const verticalChrome =\n paddingTop + paddingBottom + borderTop + borderBottom;\n\n const minH =\n (Number.isFinite(lineHeight) ? lineHeight : 24) * minRows +\n verticalChrome;\n const maxH =\n typeof maxRows === 'number'\n ? (Number.isFinite(lineHeight) ? lineHeight : 24) * maxRows +\n verticalChrome\n : Number.POSITIVE_INFINITY;\n\n // EXCEPTION to constraint #4 (no inline styles): height is computed from\n // runtime scrollHeight and cannot be expressed as a static Tailwind class.\n el.style.height = 'auto';\n const next = Math.max(minH, Math.min(el.scrollHeight, maxH));\n el.style.height = `${next}px`;\n }, [autoResize, minRows, maxRows]);\n\n useLayoutEffect(() => {\n if (!autoResize) return;\n resizeTextArea();\n }, [autoResize, resizeTextArea, currentValue]);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n if (composingRef.current) return;\n onChange?.(event);\n };\n\n const handleCompositionStart = (\n event: CompositionEvent<HTMLTextAreaElement>,\n ) => {\n composingRef.current = true;\n onCompositionStart?.(event);\n };\n\n const handleCompositionEnd = (\n event: CompositionEvent<HTMLTextAreaElement>,\n ) => {\n composingRef.current = false;\n onCompositionEnd?.(event);\n const target = event.currentTarget;\n if (!isControlled) {\n setInternalValue(target.value);\n }\n // Synthesise a ChangeEvent from the CompositionEvent so consumers receive\n // a single post-IME change. nativeEvent is still the CompositionEvent, so\n // consumers inspecting `nativeEvent.inputType` will not find the usual\n // \"insertCompositionText\" value — documented as a known limitation.\n onChange?.({\n ...event,\n target,\n currentTarget: target,\n } as unknown as ChangeEvent<HTMLTextAreaElement>);\n if (autoResize) resizeTextArea();\n };\n\n const counterEnabled =\n typeof maxLength === 'number' &&\n (showCounter ?? true) &&\n maxLength > 0;\n\n const current = codePointLength(currentValue);\n const remaining = counterEnabled\n ? Math.max(0, (maxLength as number) - current)\n : 0;\n const ratio = counterEnabled ? current / (maxLength as number) : 0;\n\n const [announced, setAnnounced] = useState<string>('');\n useEffect(() => {\n if (!counterEnabled) return;\n const handle = window.setTimeout(() => {\n if (composingRef.current) return;\n setAnnounced(\n t('ui.inputs.textarea.charactersRemaining', {\n count: remaining,\n defaultValue: '{{count}} characters remaining',\n }),\n );\n }, 500);\n return () => window.clearTimeout(handle);\n }, [counterEnabled, remaining, t]);\n\n const counterId = counterEnabled ? `${textAreaId}-counter` : undefined;\n const describedBy =\n [ctx.describedBy || undefined, counterId].filter(Boolean).join(' ') ||\n undefined;\n\n const resizeVariant: 'auto' | 'manual' = autoResize ? 'auto' : 'manual';\n\n return (\n <div data-component=\"text-area\" className=\"ds:flex ds:w-full ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <textarea\n ref={setRefs}\n id={textAreaId}\n value={isControlled ? currentValue : undefined}\n defaultValue={!isControlled ? defaultValue : undefined}\n disabled={effectiveDisabled}\n aria-describedby={describedBy}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n maxLength={maxLength}\n rows={autoResize ? minRows : rows}\n onChange={handleChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n onInput={onInput}\n className={textAreaVariants({\n size,\n tone: effectiveTone,\n resize: resizeVariant,\n className,\n })}\n {...props}\n />\n {counterEnabled ? (\n <div\n id={counterId}\n className=\"ds:flex ds:justify-end type-meta ds:tabular-nums\"\n >\n <span aria-hidden=\"true\" className={counterToneClass(ratio)}>\n {current} / {maxLength}\n </span>\n <span className=\"ds:sr-only\" aria-live=\"polite\">\n {announced}\n </span>\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n"],"names":["textAreaVariants","cva","counterToneClass","ratio","codePointLength","value","TextArea","forwardRef","size","tone","autoResize","minRows","maxRows","showCounter","className","id","disabled","defaultValue","maxLength","rows","onChange","onCompositionStart","onCompositionEnd","onInput","props","ref","t","useTranslation","ctx","useFormField","textAreaId","effectiveDisabled","effectiveTone","innerRef","useRef","setRefs","useCallback","node","isControlled","internalValue","setInternalValue","useState","currentValue","composingRef","resizeTextArea","el","styles","lineHeight","paddingTop","paddingBottom","borderTop","borderBottom","verticalChrome","minH","maxH","next","useLayoutEffect","handleChange","event","handleCompositionStart","handleCompositionEnd","target","counterEnabled","current","remaining","announced","setAnnounced","useEffect","handle","counterId","describedBy","resizeVariant","jsxs","jsx"],"mappings":"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"}
@@ -73,29 +73,29 @@ const as = I(
73
73
  onCompositionEnd: f,
74
74
  ...x
75
75
  }, r) => {
76
- const { t: U } = C(), a = ss(), k = $ ?? a.id, y = a.disabled || j, F = a.invalid ? "error" : R, d = b !== void 0, [B, p] = E(
76
+ const { t: U } = C(), a = ss(), k = $ ?? a.id, y = a.disabled || j, F = a.invalid ? "error" : R, n = b !== void 0, [B, p] = E(
77
77
  String(O ?? "")
78
- ), T = d ? String(b) : B, D = T.length > 0, m = z(!1), [q, w] = E(!1), n = z(null), H = A(
78
+ ), T = n ? String(b) : B, D = T.length > 0, m = z(!1), [q, w] = E(!1), d = z(null), H = A(
79
79
  (s) => {
80
- n.current = s, typeof r == "function" ? r(s) : r && (r.current = s);
80
+ d.current = s, typeof r == "function" ? r(s) : r && (r.current = s);
81
81
  },
82
82
  [r]
83
83
  ), X = !!o, S = V && D && !y && !x.readOnly, G = !!l || S, W = (s) => {
84
- d || p(s.target.value), !m.current && (t == null || t(s));
84
+ n || p(s.target.value), !m.current && (t == null || t(s));
85
85
  }, J = (s) => {
86
86
  m.current = !0, w(!0), c == null || c(s);
87
87
  }, K = (s) => {
88
88
  m.current = !1, w(!1), f == null || f(s);
89
89
  const e = s.currentTarget;
90
- d || p(e.value), t == null || t({
90
+ n || p(e.value), t == null || t({
91
91
  ...s,
92
92
  target: e,
93
93
  currentTarget: e
94
94
  });
95
95
  }, L = () => {
96
96
  var e;
97
- d || p("");
98
- const s = n.current;
97
+ n || p("");
98
+ const s = d.current;
99
99
  if (s && t) {
100
100
  const Q = Object.getPrototypeOf(s), g = (e = Object.getOwnPropertyDescriptor(Q, "value")) == null ? void 0 : e.set;
101
101
  g == null || g.call(s, ""), t({
@@ -117,13 +117,14 @@ const as = I(
117
117
  u == null || u(), s == null || s.focus();
118
118
  }, M = (s) => {
119
119
  var e;
120
- s.target !== n.current && (s.target.closest("button") || (e = n.current) == null || e.focus());
120
+ s.target !== d.current && (s.target.closest("button") || (e = d.current) == null || e.focus());
121
121
  };
122
122
  return /* @__PURE__ */ Y(
123
123
  "div",
124
124
  {
125
125
  className: as(),
126
126
  onClick: M,
127
+ "data-component": "text-input",
127
128
  "data-composing": q ? "true" : void 0,
128
129
  children: [
129
130
  o ? /* @__PURE__ */ i(
@@ -184,4 +185,4 @@ is.displayName = "TextInput";
184
185
  export {
185
186
  is as T
186
187
  };
187
- //# sourceMappingURL=text-input-lh6kRXZS.js.map
188
+ //# sourceMappingURL=text-input-exh7VD7D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-input-lh6kRXZS.js","sources":["../../src/components/text-input/text-input.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type ChangeEvent,\n type CompositionEvent,\n type InputHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport {\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_TEXT,\n INPUT_SURFACE_TONE,\n} from '../_shared/input-surface';\n\nconst wrapperVariants = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:w-full',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n 'ds:has-[:disabled]:cursor-not-allowed',\n ].join(' '),\n);\n\nconst inputVariants = cva(\n [\n 'ds:w-full ds:rounded-[var(--radius-sm)] ds:border ds:bg-background ds:text-foreground',\n 'ds:placeholder:text-muted-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus:outline-none ds:focus-visible:outline-none',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:read-only:bg-muted ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: `${INPUT_SURFACE_HEIGHT.sm} ${INPUT_SURFACE_TEXT.sm}`,\n md: `${INPUT_SURFACE_HEIGHT.md} ${INPUT_SURFACE_TEXT.md}`,\n lg: `${INPUT_SURFACE_HEIGHT.lg} ${INPUT_SURFACE_TEXT.lg}`,\n },\n tone: INPUT_SURFACE_TONE,\n hasStart: {\n true: 'ds:ps-10',\n false: '',\n },\n hasEnd: {\n true: 'ds:pe-10',\n false: '',\n },\n },\n compoundVariants: [\n { size: 'sm', hasStart: false, class: 'ds:ps-3' },\n { size: 'md', hasStart: false, class: 'ds:ps-3' },\n { size: 'lg', hasStart: false, class: 'ds:ps-4' },\n { size: 'sm', hasEnd: false, class: 'ds:pe-3' },\n { size: 'md', hasEnd: false, class: 'ds:pe-3' },\n { size: 'lg', hasEnd: false, class: 'ds:pe-4' },\n ],\n defaultVariants: {\n size: 'md',\n tone: 'default',\n hasStart: false,\n hasEnd: false,\n },\n },\n);\n\nconst adornmentBase =\n 'absolute inset-y-0 flex items-center pointer-events-none text-muted-foreground';\n\nexport interface TextInputProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'onChange' | 'onCompositionStart' | 'onCompositionEnd'\n >,\n Pick<VariantProps<typeof inputVariants>, 'size' | 'tone'> {\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onCompositionStart?: (event: CompositionEvent<HTMLInputElement>) => void;\n onCompositionEnd?: (event: CompositionEvent<HTMLInputElement>) => void;\n}\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n size = 'md',\n tone = 'default',\n startAdornment,\n endAdornment,\n clearable = false,\n onClear,\n className,\n id,\n disabled,\n value,\n defaultValue,\n onChange,\n onCompositionStart,\n onCompositionEnd,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const ctx = useFormField();\n const inputId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : tone;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n String(defaultValue ?? ''),\n );\n const currentValue = isControlled ? String(value) : internalValue;\n const hasValue = currentValue.length > 0;\n\n const composingRef = useRef(false);\n const [composingState, setComposingState] = useState(false);\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const hasStart = Boolean(startAdornment);\n const showClear = clearable && hasValue && !effectiveDisabled && !props.readOnly;\n const hasEnd = Boolean(endAdornment) || showClear;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n if (composingRef.current) return;\n onChange?.(event);\n };\n\n const handleCompositionStart = (event: CompositionEvent<HTMLInputElement>) => {\n composingRef.current = true;\n setComposingState(true);\n onCompositionStart?.(event);\n };\n\n const handleCompositionEnd = (event: CompositionEvent<HTMLInputElement>) => {\n composingRef.current = false;\n setComposingState(false);\n onCompositionEnd?.(event);\n const target = event.currentTarget;\n if (!isControlled) {\n setInternalValue(target.value);\n }\n // Synthesise a ChangeEvent from the CompositionEvent so consumers receive\n // a single post-IME change. nativeEvent is still the CompositionEvent, so\n // consumers inspecting `nativeEvent.inputType` will not find the usual\n // \"insertCompositionText\" value — documented as a known limitation.\n onChange?.({\n ...event,\n target,\n currentTarget: target,\n } as unknown as ChangeEvent<HTMLInputElement>);\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n const node = innerRef.current;\n if (node && onChange) {\n // Drive the DOM value to '' via the prototype setter so downstream\n // reads of event.target.value see the cleared value, then forward a\n // synthesised ChangeEvent to consumers (form libraries drive state\n // from onChange, not onClear).\n const prototype = Object.getPrototypeOf(node) as HTMLInputElement;\n const setter = Object.getOwnPropertyDescriptor(prototype, 'value')?.set;\n setter?.call(node, '');\n onChange({\n target: node,\n currentTarget: node,\n bubbles: true,\n type: 'change',\n nativeEvent: new Event('change', { bubbles: true }),\n preventDefault: () => {},\n stopPropagation: () => {},\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n persist: () => {},\n } as unknown as ChangeEvent<HTMLInputElement>);\n }\n onClear?.();\n node?.focus();\n };\n\n const handleWrapperClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === innerRef.current) return;\n if ((event.target as HTMLElement).closest('button')) return;\n innerRef.current?.focus();\n };\n\n return (\n <div\n className={wrapperVariants()}\n onClick={handleWrapperClick}\n data-composing={composingState ? 'true' : undefined}\n >\n {startAdornment ? (\n <span\n aria-hidden=\"true\"\n className={`${adornmentBase} ds:start-0 ds:ps-3 ds:[&_svg]:size-4`}\n >\n {startAdornment}\n </span>\n ) : null}\n <input\n ref={setRefs}\n id={inputId}\n type=\"text\"\n value={currentValue}\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n onChange={handleChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n className={inputVariants({\n size,\n tone: effectiveTone,\n hasStart,\n hasEnd,\n className,\n })}\n {...props}\n />\n {showClear ? (\n <button\n type=\"button\"\n aria-label={t('ui.inputs.text.clear', 'Clear input')}\n onClick={handleClear}\n className=\"ds:absolute ds:inset-y-0 ds:end-0 ds:pe-3 ds:flex ds:items-center ds:pointer-events-auto ds:text-muted-foreground ds:hover:text-foreground ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none\"\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n ) : endAdornment ? (\n <span\n aria-hidden=\"true\"\n className={`${adornmentBase} ds:end-0 ds:pe-3 ds:[&_svg]:size-4`}\n >\n {endAdornment}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n"],"names":["wrapperVariants","cva","inputVariants","INPUT_SURFACE_HEIGHT","INPUT_SURFACE_TEXT","INPUT_SURFACE_TONE","adornmentBase","TextInput","forwardRef","size","tone","startAdornment","endAdornment","clearable","onClear","className","id","disabled","value","defaultValue","onChange","onCompositionStart","onCompositionEnd","props","ref","t","useTranslation","ctx","useFormField","inputId","effectiveDisabled","effectiveTone","isControlled","internalValue","setInternalValue","useState","currentValue","hasValue","composingRef","useRef","composingState","setComposingState","innerRef","setRefs","useCallback","node","hasStart","showClear","hasEnd","handleChange","event","handleCompositionStart","handleCompositionEnd","target","handleClear","prototype","setter","_a","handleWrapperClick","jsxs","jsx","X"],"mappings":"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"}
1
+ {"version":3,"file":"text-input-exh7VD7D.js","sources":["../../src/components/text-input/text-input.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type ChangeEvent,\n type CompositionEvent,\n type InputHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport {\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_TEXT,\n INPUT_SURFACE_TONE,\n} from '../_shared/input-surface';\n\nconst wrapperVariants = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:w-full',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n 'ds:has-[:disabled]:cursor-not-allowed',\n ].join(' '),\n);\n\nconst inputVariants = cva(\n [\n 'ds:w-full ds:rounded-[var(--radius-sm)] ds:border ds:bg-background ds:text-foreground',\n 'ds:placeholder:text-muted-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus:outline-none ds:focus-visible:outline-none',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:read-only:bg-muted ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: `${INPUT_SURFACE_HEIGHT.sm} ${INPUT_SURFACE_TEXT.sm}`,\n md: `${INPUT_SURFACE_HEIGHT.md} ${INPUT_SURFACE_TEXT.md}`,\n lg: `${INPUT_SURFACE_HEIGHT.lg} ${INPUT_SURFACE_TEXT.lg}`,\n },\n tone: INPUT_SURFACE_TONE,\n hasStart: {\n true: 'ds:ps-10',\n false: '',\n },\n hasEnd: {\n true: 'ds:pe-10',\n false: '',\n },\n },\n compoundVariants: [\n { size: 'sm', hasStart: false, class: 'ds:ps-3' },\n { size: 'md', hasStart: false, class: 'ds:ps-3' },\n { size: 'lg', hasStart: false, class: 'ds:ps-4' },\n { size: 'sm', hasEnd: false, class: 'ds:pe-3' },\n { size: 'md', hasEnd: false, class: 'ds:pe-3' },\n { size: 'lg', hasEnd: false, class: 'ds:pe-4' },\n ],\n defaultVariants: {\n size: 'md',\n tone: 'default',\n hasStart: false,\n hasEnd: false,\n },\n },\n);\n\nconst adornmentBase =\n 'absolute inset-y-0 flex items-center pointer-events-none text-muted-foreground';\n\nexport interface TextInputProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'onChange' | 'onCompositionStart' | 'onCompositionEnd'\n >,\n Pick<VariantProps<typeof inputVariants>, 'size' | 'tone'> {\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n clearable?: boolean;\n onClear?: () => void;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onCompositionStart?: (event: CompositionEvent<HTMLInputElement>) => void;\n onCompositionEnd?: (event: CompositionEvent<HTMLInputElement>) => void;\n}\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n size = 'md',\n tone = 'default',\n startAdornment,\n endAdornment,\n clearable = false,\n onClear,\n className,\n id,\n disabled,\n value,\n defaultValue,\n onChange,\n onCompositionStart,\n onCompositionEnd,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const ctx = useFormField();\n const inputId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : tone;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n String(defaultValue ?? ''),\n );\n const currentValue = isControlled ? String(value) : internalValue;\n const hasValue = currentValue.length > 0;\n\n const composingRef = useRef(false);\n const [composingState, setComposingState] = useState(false);\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n const hasStart = Boolean(startAdornment);\n const showClear = clearable && hasValue && !effectiveDisabled && !props.readOnly;\n const hasEnd = Boolean(endAdornment) || showClear;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n if (composingRef.current) return;\n onChange?.(event);\n };\n\n const handleCompositionStart = (event: CompositionEvent<HTMLInputElement>) => {\n composingRef.current = true;\n setComposingState(true);\n onCompositionStart?.(event);\n };\n\n const handleCompositionEnd = (event: CompositionEvent<HTMLInputElement>) => {\n composingRef.current = false;\n setComposingState(false);\n onCompositionEnd?.(event);\n const target = event.currentTarget;\n if (!isControlled) {\n setInternalValue(target.value);\n }\n // Synthesise a ChangeEvent from the CompositionEvent so consumers receive\n // a single post-IME change. nativeEvent is still the CompositionEvent, so\n // consumers inspecting `nativeEvent.inputType` will not find the usual\n // \"insertCompositionText\" value — documented as a known limitation.\n onChange?.({\n ...event,\n target,\n currentTarget: target,\n } as unknown as ChangeEvent<HTMLInputElement>);\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n const node = innerRef.current;\n if (node && onChange) {\n // Drive the DOM value to '' via the prototype setter so downstream\n // reads of event.target.value see the cleared value, then forward a\n // synthesised ChangeEvent to consumers (form libraries drive state\n // from onChange, not onClear).\n const prototype = Object.getPrototypeOf(node) as HTMLInputElement;\n const setter = Object.getOwnPropertyDescriptor(prototype, 'value')?.set;\n setter?.call(node, '');\n onChange({\n target: node,\n currentTarget: node,\n bubbles: true,\n type: 'change',\n nativeEvent: new Event('change', { bubbles: true }),\n preventDefault: () => {},\n stopPropagation: () => {},\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n persist: () => {},\n } as unknown as ChangeEvent<HTMLInputElement>);\n }\n onClear?.();\n node?.focus();\n };\n\n const handleWrapperClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === innerRef.current) return;\n if ((event.target as HTMLElement).closest('button')) return;\n innerRef.current?.focus();\n };\n\n return (\n <div\n className={wrapperVariants()}\n onClick={handleWrapperClick}\n data-component=\"text-input\"\n data-composing={composingState ? 'true' : undefined}\n >\n {startAdornment ? (\n <span\n aria-hidden=\"true\"\n className={`${adornmentBase} ds:start-0 ds:ps-3 ds:[&_svg]:size-4`}\n >\n {startAdornment}\n </span>\n ) : null}\n <input\n ref={setRefs}\n id={inputId}\n type=\"text\"\n value={currentValue}\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n onChange={handleChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n className={inputVariants({\n size,\n tone: effectiveTone,\n hasStart,\n hasEnd,\n className,\n })}\n {...props}\n />\n {showClear ? (\n <button\n type=\"button\"\n aria-label={t('ui.inputs.text.clear', 'Clear input')}\n onClick={handleClear}\n className=\"ds:absolute ds:inset-y-0 ds:end-0 ds:pe-3 ds:flex ds:items-center ds:pointer-events-auto ds:text-muted-foreground ds:hover:text-foreground ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none\"\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n ) : endAdornment ? (\n <span\n aria-hidden=\"true\"\n className={`${adornmentBase} ds:end-0 ds:pe-3 ds:[&_svg]:size-4`}\n >\n {endAdornment}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n"],"names":["wrapperVariants","cva","inputVariants","INPUT_SURFACE_HEIGHT","INPUT_SURFACE_TEXT","INPUT_SURFACE_TONE","adornmentBase","TextInput","forwardRef","size","tone","startAdornment","endAdornment","clearable","onClear","className","id","disabled","value","defaultValue","onChange","onCompositionStart","onCompositionEnd","props","ref","t","useTranslation","ctx","useFormField","inputId","effectiveDisabled","effectiveTone","isControlled","internalValue","setInternalValue","useState","currentValue","hasValue","composingRef","useRef","composingState","setComposingState","innerRef","setRefs","useCallback","node","hasStart","showClear","hasEnd","handleChange","event","handleCompositionStart","handleCompositionEnd","target","handleClear","prototype","setter","_a","handleWrapperClick","jsxs","jsx","X"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import { forwardRef as n } from "react";
3
+ import { Slot as c } from "@radix-ui/react-slot";
4
+ function f(t, m, e) {
5
+ const o = [t === "dark" ? "theme-dark" : "theme-light"];
6
+ return m && o.push("theme-accessible"), e && o.push(e), o.join(" ");
7
+ }
8
+ const h = n(
9
+ ({ theme: t = "light", accessible: m = !1, asChild: e = !1, className: o, children: s, ...r }, a) => {
10
+ const i = f(t, m, o);
11
+ return /* @__PURE__ */ p(e ? c : "div", { ref: a, className: i, "data-component": "theme-root", ...r, children: s });
12
+ }
13
+ );
14
+ h.displayName = "ThemeRoot";
15
+ export {
16
+ h as T
17
+ };
18
+ //# sourceMappingURL=theme-root-DDb0TJjd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-root-vapFjsnt.js","sources":["../../src/components/theme-root/theme-root.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* ThemeRoot — declarative wrapper that activates a DS theme. */\n/* */\n/* DS themes are composed from two orthogonal axes (see 04-theming.mdx): */\n/* base: `theme-light` | `theme-dark` */\n/* modifier: `theme-accessible` (AAA contrast, larger target size, */\n/* 0ms animations, 18px base font) */\n/* */\n/* `<ThemeRoot>` owns the class combination so consuming apps don't */\n/* hand-assemble it (and get it wrong under `accessible + dark`, where */\n/* the selector is `.theme-dark.theme-accessible`, not a separate class).*/\n/* */\n/* Rendered as a `<div>` by default. Pass `asChild` to merge the theme */\n/* classes onto a caller-supplied element via Radix `<Slot>` — preserves */\n/* the child's props and correctly forwards refs. Used when the theme */\n/* root is <html> or <body> in a server-rendered layout. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nexport type ThemeBase = 'light' | 'dark';\n\nexport interface ThemeRootProps extends HTMLAttributes<HTMLDivElement> {\n /** Which colour-scheme base to activate. Default: `light`. */\n theme?: ThemeBase;\n /** Layer the AAA `theme-accessible` modifier on top of the base. */\n accessible?: boolean;\n /**\n * When true, merges the theme classes onto the single child element\n * instead of rendering a wrapping `<div>`. Useful when the theme root\n * is `<html>` or `<body>` in an app shell. Refs forward to the child.\n */\n asChild?: boolean;\n}\n\nfunction composeClassName(\n theme: ThemeBase,\n accessible: boolean,\n extra?: string,\n): string {\n const parts = [theme === 'dark' ? 'theme-dark' : 'theme-light'];\n if (accessible) parts.push('theme-accessible');\n if (extra) parts.push(extra);\n return parts.join(' ');\n}\n\nexport const ThemeRoot = forwardRef<HTMLDivElement, ThemeRootProps>(\n (\n { theme = 'light', accessible = false, asChild = false, className, children, ...rest },\n ref,\n ) => {\n const merged = composeClassName(theme, accessible, className);\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp ref={ref} className={merged} {...rest}>\n {children}\n </Comp>\n );\n },\n);\nThemeRoot.displayName = 'ThemeRoot';\n"],"names":["composeClassName","theme","accessible","extra","parts","ThemeRoot","forwardRef","asChild","className","children","rest","ref","merged","Slot"],"mappings":";;;AAoCA,SAASA,EACPC,GACAC,GACAC,GACQ;AACR,QAAMC,IAAQ,CAACH,MAAU,SAAS,eAAe,aAAa;AAC9D,SAAIC,KAAYE,EAAM,KAAK,kBAAkB,GACzCD,KAAOC,EAAM,KAAKD,CAAK,GACpBC,EAAM,KAAK,GAAG;AACvB;AAEO,MAAMC,IAAYC;AAAA,EACvB,CACE,EAAE,OAAAL,IAAQ,SAAS,YAAAC,IAAa,IAAO,SAAAK,IAAU,IAAO,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAChFC,MACG;AACH,UAAMC,IAASZ,EAAiBC,GAAOC,GAAYM,CAAS;AAE5D,6BADaD,IAAUM,IAAO,OAE3B,EAAK,KAAAF,GAAU,WAAWC,GAAS,GAAGF,GACpC,UAAAD,GACH;AAAA,EAEJ;AACF;AACAJ,EAAU,cAAc;"}
1
+ {"version":3,"file":"theme-root-DDb0TJjd.js","sources":["../../src/components/theme-root/theme-root.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* ThemeRoot — declarative wrapper that activates a DS theme. */\n/* */\n/* DS themes are composed from two orthogonal axes (see 04-theming.mdx): */\n/* base: `theme-light` | `theme-dark` */\n/* modifier: `theme-accessible` (AAA contrast, larger target size, */\n/* 0ms animations, 18px base font) */\n/* */\n/* `<ThemeRoot>` owns the class combination so consuming apps don't */\n/* hand-assemble it (and get it wrong under `accessible + dark`, where */\n/* the selector is `.theme-dark.theme-accessible`, not a separate class).*/\n/* */\n/* Rendered as a `<div>` by default. Pass `asChild` to merge the theme */\n/* classes onto a caller-supplied element via Radix `<Slot>` — preserves */\n/* the child's props and correctly forwards refs. Used when the theme */\n/* root is <html> or <body> in a server-rendered layout. */\n/* -------------------------------------------------------------------- */\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nexport type ThemeBase = 'light' | 'dark';\n\nexport interface ThemeRootProps extends HTMLAttributes<HTMLDivElement> {\n /** Which colour-scheme base to activate. Default: `light`. */\n theme?: ThemeBase;\n /** Layer the AAA `theme-accessible` modifier on top of the base. */\n accessible?: boolean;\n /**\n * When true, merges the theme classes onto the single child element\n * instead of rendering a wrapping `<div>`. Useful when the theme root\n * is `<html>` or `<body>` in an app shell. Refs forward to the child.\n */\n asChild?: boolean;\n}\n\nfunction composeClassName(\n theme: ThemeBase,\n accessible: boolean,\n extra?: string,\n): string {\n const parts = [theme === 'dark' ? 'theme-dark' : 'theme-light'];\n if (accessible) parts.push('theme-accessible');\n if (extra) parts.push(extra);\n return parts.join(' ');\n}\n\nexport const ThemeRoot = forwardRef<HTMLDivElement, ThemeRootProps>(\n (\n { theme = 'light', accessible = false, asChild = false, className, children, ...rest },\n ref,\n ) => {\n const merged = composeClassName(theme, accessible, className);\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp ref={ref} className={merged} data-component=\"theme-root\" {...rest}>\n {children}\n </Comp>\n );\n },\n);\nThemeRoot.displayName = 'ThemeRoot';\n"],"names":["composeClassName","theme","accessible","extra","parts","ThemeRoot","forwardRef","asChild","className","children","rest","ref","merged","jsx","Slot"],"mappings":";;;AAoCA,SAASA,EACPC,GACAC,GACAC,GACQ;AACR,QAAMC,IAAQ,CAACH,MAAU,SAAS,eAAe,aAAa;AAC9D,SAAIC,KAAYE,EAAM,KAAK,kBAAkB,GACzCD,KAAOC,EAAM,KAAKD,CAAK,GACpBC,EAAM,KAAK,GAAG;AACvB;AAEO,MAAMC,IAAYC;AAAA,EACvB,CACE,EAAE,OAAAL,IAAQ,SAAS,YAAAC,IAAa,IAAO,SAAAK,IAAU,IAAO,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAChFC,MACG;AACH,UAAMC,IAASZ,EAAiBC,GAAOC,GAAYM,CAAS;AAE5D,WACE,gBAAAK,EAFWN,IAAUO,IAAO,SAEtB,KAAAH,GAAU,WAAWC,GAAQ,kBAAe,cAAc,GAAGF,GAChE,UAAAD,EAAA,CACH;AAAA,EAEJ;AACF;AACAJ,EAAU,cAAc;"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as e, jsxs as l, Fragment as A } from "react/jsx-runtime";
2
2
  import { forwardRef as N, useCallback as k } from "react";
3
3
  import { c as S } from "./index-D2ZczOXr.js";
4
- import { useTranslation as u } from "react-i18next";
5
- import { I as v } from "./icon-button-C482ii4y.js";
6
- import { I } from "./icon-button-group-BnhkUWUg.js";
7
- import { S as R } from "./switch-DtLPKO0p.js";
8
- import { D as o } from "./dropdown-menu-BnVUeVG3.js";
4
+ import { useTranslation as g } from "react-i18next";
5
+ import { I as v } from "./icon-button-CNjWCD1X.js";
6
+ import { I } from "./icon-button-group-DeV3FpNY.js";
7
+ import { S as R } from "./switch-DhSORO9C.js";
8
+ import { D as r } from "./dropdown-menu-2HgU1Emf.js";
9
9
  import { u as V } from "./use-theme-BMUhembX.js";
10
10
  import { c as f } from "./createLucideIcon-CrFbzy84.js";
11
11
  /**
@@ -63,10 +63,10 @@ const z = [
63
63
  function j(a) {
64
64
  const {
65
65
  theme: c,
66
- accessibility: r,
66
+ accessibility: o,
67
67
  onThemeChange: n,
68
68
  onAccessibilityChange: i
69
- } = a, t = V(), g = c ?? t.theme, p = r ?? t.accessibility, s = t.setTheme, h = t.setAccessibility, m = k(
69
+ } = a, t = V(), u = c ?? t.theme, p = o ?? t.accessibility, s = t.setTheme, h = t.setAccessibility, m = k(
70
70
  (d) => {
71
71
  if (n) {
72
72
  n(d);
@@ -86,7 +86,7 @@ function j(a) {
86
86
  [i, h]
87
87
  );
88
88
  return {
89
- theme: g,
89
+ theme: u,
90
90
  accessibility: p,
91
91
  resolvedTheme: t.resolvedTheme,
92
92
  setTheme: m,
@@ -96,14 +96,14 @@ function j(a) {
96
96
  function w({
97
97
  value: a,
98
98
  onValueChange: c,
99
- ariaLabel: r,
99
+ ariaLabel: o,
100
100
  size: n = "md"
101
101
  }) {
102
- const { t: i } = u();
102
+ const { t: i } = g();
103
103
  return /* @__PURE__ */ l(
104
104
  I,
105
105
  {
106
- "aria-label": r,
106
+ "aria-label": o,
107
107
  role: "radiogroup",
108
108
  mode: "toggle-single",
109
109
  size: n,
@@ -141,15 +141,15 @@ function w({
141
141
  function L({
142
142
  value: a,
143
143
  onValueChange: c,
144
- size: r = "md"
144
+ size: o = "md"
145
145
  }) {
146
- const { t: n } = u(), i = a === "accessible";
146
+ const { t: n } = g(), i = a === "accessible";
147
147
  return /* @__PURE__ */ e(
148
148
  R,
149
149
  {
150
150
  label: n("ui.navigation.themeToggle.accessibility.label"),
151
151
  labelSide: "start",
152
- size: r,
152
+ size: o,
153
153
  checked: i,
154
154
  onCheckedChange: (t) => c(t ? "accessible" : "default")
155
155
  }
@@ -158,42 +158,43 @@ function L({
158
158
  function D({
159
159
  state: a,
160
160
  className: c,
161
- rest: r,
161
+ rest: o,
162
162
  forwardedRef: n,
163
163
  showAccessibility: i
164
164
  }) {
165
- const { t } = u(), g = a.resolvedTheme === "dark" || a.resolvedTheme === "dark-accessible" ? /* @__PURE__ */ e(b, { "aria-hidden": !0 }) : /* @__PURE__ */ e(y, { "aria-hidden": !0 }), p = a.accessibility === "accessible";
165
+ const { t } = g(), u = a.resolvedTheme === "dark" || a.resolvedTheme === "dark-accessible" ? /* @__PURE__ */ e(b, { "aria-hidden": !0 }) : /* @__PURE__ */ e(y, { "aria-hidden": !0 }), p = a.accessibility === "accessible";
166
166
  return /* @__PURE__ */ e(
167
167
  "div",
168
168
  {
169
169
  ref: n,
170
+ "data-component": "theme-toggle",
170
171
  className: T({ variant: "menu", className: c }),
171
- ...r,
172
- children: /* @__PURE__ */ l(o.Root, { children: [
173
- /* @__PURE__ */ e(o.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
172
+ ...o,
173
+ children: /* @__PURE__ */ l(r.Root, { children: [
174
+ /* @__PURE__ */ e(r.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
174
175
  v,
175
176
  {
176
- icon: g,
177
+ icon: u,
177
178
  "aria-label": t("ui.navigation.themeToggle.trigger")
178
179
  }
179
180
  ) }),
180
- /* @__PURE__ */ e(o.Portal, { children: /* @__PURE__ */ l(o.Content, { align: "end", sideOffset: 8, children: [
181
- /* @__PURE__ */ e(o.Label, { children: t("ui.navigation.themeToggle.appearance.label") }),
181
+ /* @__PURE__ */ e(r.Portal, { children: /* @__PURE__ */ l(r.Content, { align: "end", sideOffset: 8, children: [
182
+ /* @__PURE__ */ e(r.Label, { children: t("ui.navigation.themeToggle.appearance.label") }),
182
183
  /* @__PURE__ */ l(
183
- o.RadioGroup,
184
+ r.RadioGroup,
184
185
  {
185
186
  value: a.theme,
186
187
  onValueChange: (s) => a.setTheme(s),
187
188
  children: [
188
- /* @__PURE__ */ l(o.RadioItem, { value: "light", children: [
189
+ /* @__PURE__ */ l(r.RadioItem, { value: "light", children: [
189
190
  /* @__PURE__ */ e(y, { "aria-hidden": !0, className: "ds:size-4" }),
190
191
  t("ui.navigation.themeToggle.appearance.light")
191
192
  ] }),
192
- /* @__PURE__ */ l(o.RadioItem, { value: "dark", children: [
193
+ /* @__PURE__ */ l(r.RadioItem, { value: "dark", children: [
193
194
  /* @__PURE__ */ e(b, { "aria-hidden": !0, className: "ds:size-4" }),
194
195
  t("ui.navigation.themeToggle.appearance.dark")
195
196
  ] }),
196
- /* @__PURE__ */ l(o.RadioItem, { value: "system", children: [
197
+ /* @__PURE__ */ l(r.RadioItem, { value: "system", children: [
197
198
  /* @__PURE__ */ e(C, { "aria-hidden": !0, className: "ds:size-4" }),
198
199
  t("ui.navigation.themeToggle.appearance.system")
199
200
  ] })
@@ -201,9 +202,9 @@ function D({
201
202
  }
202
203
  ),
203
204
  i ? /* @__PURE__ */ l(A, { children: [
204
- /* @__PURE__ */ e(o.Separator, {}),
205
+ /* @__PURE__ */ e(r.Separator, {}),
205
206
  /* @__PURE__ */ e(
206
- o.CheckboxItem,
207
+ r.CheckboxItem,
207
208
  {
208
209
  checked: p,
209
210
  onCheckedChange: (s) => a.setAccessibility(s ? "accessible" : "default"),
@@ -220,16 +221,17 @@ function D({
220
221
  function P({
221
222
  state: a,
222
223
  className: c,
223
- rest: r,
224
+ rest: o,
224
225
  forwardedRef: n
225
226
  }) {
226
- const { t: i } = u();
227
+ const { t: i } = g();
227
228
  return /* @__PURE__ */ e(
228
229
  "div",
229
230
  {
230
231
  ref: n,
232
+ "data-component": "theme-toggle",
231
233
  className: T({ variant: "compact", className: c }),
232
- ...r,
234
+ ...o,
233
235
  children: /* @__PURE__ */ e(
234
236
  w,
235
237
  {
@@ -244,17 +246,18 @@ function P({
244
246
  function q({
245
247
  state: a,
246
248
  className: c,
247
- rest: r,
249
+ rest: o,
248
250
  forwardedRef: n,
249
251
  showAccessibility: i
250
252
  }) {
251
- const { t } = u();
253
+ const { t } = g();
252
254
  return /* @__PURE__ */ l(
253
255
  "div",
254
256
  {
255
257
  ref: n,
258
+ "data-component": "theme-toggle",
256
259
  className: T({ variant: "split", className: c }),
257
- ...r,
260
+ ...o,
258
261
  children: [
259
262
  /* @__PURE__ */ e(
260
263
  w,
@@ -278,18 +281,18 @@ function q({
278
281
  const B = N(
279
282
  (a, c) => {
280
283
  const {
281
- variant: r = "menu",
284
+ variant: o = "menu",
282
285
  showAccessibility: n = !0,
283
286
  className: i,
284
287
  // Strip controlled props from the spread — they are read by the
285
288
  // adapter, not by the DOM element.
286
289
  theme: t,
287
- accessibility: g,
290
+ accessibility: u,
288
291
  onThemeChange: p,
289
292
  onAccessibilityChange: s,
290
293
  ...h
291
294
  } = a, m = j(a);
292
- return r === "compact" ? /* @__PURE__ */ e(
295
+ return o === "compact" ? /* @__PURE__ */ e(
293
296
  P,
294
297
  {
295
298
  state: m,
@@ -298,7 +301,7 @@ const B = N(
298
301
  forwardedRef: c,
299
302
  showAccessibility: n
300
303
  }
301
- ) : r === "split" ? /* @__PURE__ */ e(
304
+ ) : o === "split" ? /* @__PURE__ */ e(
302
305
  q,
303
306
  {
304
307
  state: m,
@@ -323,4 +326,4 @@ B.displayName = "ThemeToggle";
323
326
  export {
324
327
  B as T
325
328
  };
326
- //# sourceMappingURL=theme-toggle-BHKMiORD.js.map
329
+ //# sourceMappingURL=theme-toggle-CJgA6G24.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle-CJgA6G24.js","sources":["../../node_modules/lucide-react/dist/esm/icons/monitor.js","../../node_modules/lucide-react/dist/esm/icons/moon.js","../../node_modules/lucide-react/dist/esm/icons/sun.js","../../src/components/theme-toggle/theme-toggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"3\", rx: \"2\", key: \"48i651\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"21\", y2: \"21\", key: \"1svkeh\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"17\", y2: \"21\", key: \"vw1qmm\" }]\n];\nconst Monitor = createLucideIcon(\"monitor\", __iconNode);\n\nexport { __iconNode, Monitor as default };\n//# sourceMappingURL=monitor.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.js.map\n","import {\n forwardRef,\n useCallback,\n type HTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { Switch } from '../switch/switch';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport {\n useTheme,\n type AccessibilityPreference,\n type ThemePreference,\n type UseThemeReturn,\n} from '../../hooks';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n variant: {\n menu: '',\n compact: '',\n split: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { variant: 'menu' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type ThemeToggleVariant = 'menu' | 'compact' | 'split';\n\ninterface ThemeToggleBaseProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n /**\n * Visual form factor.\n * - `menu` (default) — single trigger that opens a dropdown with both\n * Appearance and Accessibility controls. Best for headers / nav rails.\n * - `compact` — segmented Appearance control only. Use when accessibility\n * lives on a separate settings surface.\n * - `split` — segmented Appearance control plus an inline Accessibility\n * switch. Best for full-width settings panels.\n */\n variant?: ThemeToggleVariant;\n /** Hide the accessibility control. Ignored on `compact`, which never renders it. */\n showAccessibility?: boolean;\n /**\n * Controlled escape hatch — when omitted the component reads/writes\n * `useTheme()` directly so it can drop into any header with no wiring.\n * Pass all four to opt into controlled mode.\n */\n theme?: ThemePreference;\n accessibility?: AccessibilityPreference;\n onThemeChange?: (next: ThemePreference) => void;\n onAccessibilityChange?: (next: AccessibilityPreference) => void;\n}\n\nexport type ThemeToggleProps = ThemeToggleBaseProps;\n\n/* ------------------------------------------------------------------ */\n/* Hook adapter */\n/* ------------------------------------------------------------------ */\n\n/**\n * Resolves controlled props against the store. When the consumer passes\n * `theme` / `onThemeChange` (etc.) we honour those; otherwise we fall\n * through to the singleton `useTheme()` hook so a bare `<ThemeToggle />`\n * works with zero wiring.\n */\nfunction useResolvedTheme(props: ThemeToggleBaseProps): UseThemeReturn {\n const {\n theme: themeProp,\n accessibility: accessibilityProp,\n onThemeChange,\n onAccessibilityChange,\n } = props;\n const store = useTheme();\n const theme = themeProp ?? store.theme;\n const accessibility = accessibilityProp ?? store.accessibility;\n\n const storeSetTheme = store.setTheme;\n const storeSetAccessibility = store.setAccessibility;\n\n const setTheme = useCallback(\n (next: ThemePreference) => {\n if (onThemeChange) {\n onThemeChange(next);\n return;\n }\n storeSetTheme(next);\n },\n [onThemeChange, storeSetTheme],\n );\n\n const setAccessibility = useCallback(\n (next: AccessibilityPreference) => {\n if (onAccessibilityChange) {\n onAccessibilityChange(next);\n return;\n }\n storeSetAccessibility(next);\n },\n [onAccessibilityChange, storeSetAccessibility],\n );\n\n return {\n theme,\n accessibility,\n resolvedTheme: store.resolvedTheme,\n setTheme,\n setAccessibility,\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Sub-pieces */\n/* ------------------------------------------------------------------ */\n\ninterface AppearanceSegmentProps {\n value: ThemePreference;\n onValueChange: (next: ThemePreference) => void;\n ariaLabel: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nfunction AppearanceSegment({\n value,\n onValueChange,\n ariaLabel,\n size = 'md',\n}: AppearanceSegmentProps) {\n const { t } = useTranslation();\n return (\n <IconButtonGroup\n aria-label={ariaLabel}\n role=\"radiogroup\"\n mode=\"toggle-single\"\n size={size}\n value={value}\n onValueChange={(next) => onValueChange(next as ThemePreference)}\n >\n <IconButton\n icon={<Sun aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.light')}\n value=\"light\"\n />\n <IconButton\n icon={<Moon aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.dark')}\n value=\"dark\"\n />\n <IconButton\n icon={<Monitor aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.system')}\n value=\"system\"\n />\n </IconButtonGroup>\n );\n}\n\ninterface AccessibilitySwitchProps {\n value: AccessibilityPreference;\n onValueChange: (next: AccessibilityPreference) => void;\n size?: 'sm' | 'md' | 'lg';\n}\n\nfunction AccessibilitySwitch({\n value,\n onValueChange,\n size = 'md',\n}: AccessibilitySwitchProps) {\n const { t } = useTranslation();\n // 'system' is treated as \"off\" visually — the OS preference flows through\n // automatically. Flipping the switch on creates an explicit override.\n const checked = value === 'accessible';\n return (\n <Switch\n label={t('ui.navigation.themeToggle.accessibility.label')}\n labelSide=\"start\"\n size={size}\n checked={checked}\n onCheckedChange={(next) =>\n onValueChange(next ? 'accessible' : 'default')\n }\n />\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Variants */\n/* ------------------------------------------------------------------ */\n\ninterface VariantRenderProps {\n state: UseThemeReturn;\n className?: string;\n rest: HTMLAttributes<HTMLDivElement>;\n forwardedRef: React.Ref<HTMLDivElement>;\n showAccessibility: boolean;\n}\n\nfunction MenuVariant({\n state,\n className,\n rest,\n forwardedRef,\n showAccessibility,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n const triggerIcon =\n state.resolvedTheme === 'dark' || state.resolvedTheme === 'dark-accessible'\n ? <Moon aria-hidden />\n : <Sun aria-hidden />;\n\n const accessibleChecked = state.accessibility === 'accessible';\n\n return (\n <div\n ref={forwardedRef}\n data-component=\"theme-toggle\"\n className={wrapperVariants({ variant: 'menu', className })}\n {...rest}\n >\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n icon={triggerIcon}\n aria-label={t('ui.navigation.themeToggle.trigger')}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content align=\"end\" sideOffset={8}>\n <DropdownMenu.Label>\n {t('ui.navigation.themeToggle.appearance.label')}\n </DropdownMenu.Label>\n <DropdownMenu.RadioGroup\n value={state.theme}\n onValueChange={(next) =>\n state.setTheme(next as ThemePreference)\n }\n >\n <DropdownMenu.RadioItem value=\"light\">\n <Sun aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.light')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"dark\">\n <Moon aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.dark')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"system\">\n <Monitor aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.system')}\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n {showAccessibility ? (\n <>\n <DropdownMenu.Separator />\n {/* CheckboxItem keeps the accessibility toggle inside the\n Radix menu collection so ArrowDown reaches it and Space\n activates it; `onSelect={preventDefault}` prevents the\n menu from closing on toggle. */}\n <DropdownMenu.CheckboxItem\n checked={accessibleChecked}\n onCheckedChange={(next) =>\n state.setAccessibility(next ? 'accessible' : 'default')\n }\n onSelect={(event) => event.preventDefault()}\n >\n {t('ui.navigation.themeToggle.accessibility.label')}\n </DropdownMenu.CheckboxItem>\n </>\n ) : null}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n );\n}\n\nfunction CompactVariant({\n state,\n className,\n rest,\n forwardedRef,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n return (\n <div\n ref={forwardedRef}\n data-component=\"theme-toggle\"\n className={wrapperVariants({ variant: 'compact', className })}\n {...rest}\n >\n <AppearanceSegment\n value={state.theme}\n onValueChange={state.setTheme}\n ariaLabel={t('ui.navigation.themeToggle.appearance.label')}\n />\n </div>\n );\n}\n\nfunction SplitVariant({\n state,\n className,\n rest,\n forwardedRef,\n showAccessibility,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n return (\n <div\n ref={forwardedRef}\n data-component=\"theme-toggle\"\n className={wrapperVariants({ variant: 'split', className })}\n {...rest}\n >\n <AppearanceSegment\n value={state.theme}\n onValueChange={state.setTheme}\n ariaLabel={t('ui.navigation.themeToggle.appearance.label')}\n />\n {showAccessibility ? (\n <AccessibilitySwitch\n value={state.accessibility}\n onValueChange={state.setAccessibility}\n />\n ) : null}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* ThemeToggle */\n/* ------------------------------------------------------------------ */\n\nexport const ThemeToggle = forwardRef<HTMLDivElement, ThemeToggleProps>(\n (props, ref) => {\n const {\n variant = 'menu',\n showAccessibility = true,\n className,\n // Strip controlled props from the spread — they are read by the\n // adapter, not by the DOM element.\n theme: _theme,\n accessibility: _accessibility,\n onThemeChange: _onThemeChange,\n onAccessibilityChange: _onAccessibilityChange,\n ...rest\n } = props;\n\n const state = useResolvedTheme(props);\n\n if (variant === 'compact') {\n return (\n <CompactVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n }\n if (variant === 'split') {\n return (\n <SplitVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n }\n return (\n <MenuVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n"],"names":["__iconNode","Monitor","createLucideIcon","Moon","Sun","wrapperVariants","cva","useResolvedTheme","props","themeProp","accessibilityProp","onThemeChange","onAccessibilityChange","store","useTheme","theme","accessibility","storeSetTheme","storeSetAccessibility","setTheme","useCallback","next","setAccessibility","AppearanceSegment","value","onValueChange","ariaLabel","size","t","useTranslation","jsxs","IconButtonGroup","jsx","IconButton","AccessibilitySwitch","checked","Switch","MenuVariant","state","className","rest","forwardedRef","showAccessibility","triggerIcon","accessibleChecked","DropdownMenu","Fragment","event","CompactVariant","SplitVariant","ThemeToggle","forwardRef","ref","variant","_theme","_accessibility","_onThemeChange","_onAccessibilityChange"],"mappings":"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","x_google_ignoreList":[0,1,2]}