@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":"phone-input-BuRe5PyI.js","sources":["../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n} from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Command, defaultFilter } from 'cmdk';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport {\n AsYouType,\n getCountries,\n getCountryCallingCode,\n parsePhoneNumberFromString,\n type CountryCode,\n} from 'libphonenumber-js/min';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { normalizeDiacritics } from '../_shared/normalize-diacritics';\nimport { Flag } from '../flag';\n\nexport interface PhoneInputChangeMeta {\n country: CountryCode;\n isValid: boolean;\n isPossible: boolean;\n type?: string;\n}\n\nexport interface PhoneInputProps {\n value?: string;\n defaultValue?: string;\n /**\n * Country pre-selected when no value is supplied. Defaults to `IT`\n * (AlfaDocs's dominant user base is Italian). Pass a different\n * `CountryCode` to override, or enable `detectBrowserCountry` to\n * derive it from the browser locale.\n */\n defaultCountry?: CountryCode;\n /**\n * When true, infer the default country from `navigator.language` /\n * `Intl.Locale` before falling back to `defaultCountry` (or `IT`).\n * Off by default — most AlfaDocs flows should stay on IT regardless\n * of the visitor's browser locale.\n */\n detectBrowserCountry?: boolean;\n onChange?: (e164: string, meta: PhoneInputChangeMeta) => void;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n popularCountries?: CountryCode[];\n className?: string;\n id?: string;\n name?: string;\n required?: boolean;\n 'aria-label'?: string;\n}\n\nconst phoneInputWrapperVariants = cva(\n [\n 'ds:group ds:relative ds:inline-flex ds:items-stretch ds:w-full',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background',\n 'ds:text-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\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 ds:has-[:disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: '',\n error: 'ds:border-destructive ds:focus-within:outline-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n },\n);\n\nconst countryTriggerVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:bg-transparent ds:text-foreground',\n 'ds:border-0 ds:border-e ds:border-e-border',\n 'ds:rounded-s-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\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',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-3 ds:pe-2',\n md: 'ds:ps-3 ds:pe-2',\n lg: 'ds:ps-4 ds:pe-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst phoneNumberInputVariants = cva(\n [\n 'ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:outline-none',\n 'ds:disabled:cursor-not-allowed',\n 'ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:ps-3 ds:pe-4 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst pickerContentClasses = [\n 'z-[var(--z-popover)] overflow-hidden w-72',\n 'rounded-[var(--radius-md)] border border-border bg-background text-foreground',\n 'shadow-[var(--shadow-lg)]',\n 'animate-in fade-in zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out',\n 'data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'motion-reduce:animate-none',\n].join(' ');\n\nconst pickerSearchClasses = [\n 'w-full bg-transparent text-foreground placeholder:text-muted-foreground',\n 'border-0 border-b border-b-border outline-none',\n 'ps-3 pe-3 py-2 text-[var(--font-size-sm)]',\n 'focus:outline-none',\n].join(' ');\n\nconst pickerListClasses = 'max-h-72 overflow-y-auto p-[var(--spacing-xs)]';\n\nconst pickerItemClasses = [\n 'relative flex cursor-pointer items-center gap-[var(--spacing-sm)]',\n 'rounded-[var(--radius-sm)] ps-3 pe-3 py-2 text-[var(--font-size-sm)]',\n 'text-foreground outline-none select-none',\n 'data-[highlighted]:bg-muted data-[highlighted]:text-foreground',\n 'data-[highlighted]:border-s-2 data-[highlighted]:border-s-primary',\n 'aria-selected:bg-muted',\n].join(' ');\n\nconst pickerGroupHeadingClasses = [\n 'ps-3 pe-3 py-1.5',\n 'type-eyebrow text-muted-foreground',\n].join(' ');\n\nconst pickerEmptyClasses = 'ps-3 pe-3 py-2 type-body-sm text-muted-foreground';\n\nconst chevronSizeBySize = {\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n} as const;\n\nconst flagSizeBySize = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const satisfies Record<'sm' | 'md' | 'lg', 'sm' | 'md' | 'lg'>;\n\nfunction countDigitsBefore(str: string, position: number): number {\n let digits = 0;\n for (let i = 0; i < position && i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') digits++;\n }\n return digits;\n}\n\nfunction positionAfterDigits(str: string, targetDigits: number): number {\n if (targetDigits === 0) return 0;\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') {\n count++;\n if (count === targetDigits) return i + 1;\n }\n }\n return str.length;\n}\n\nfunction resolveDefaultCountry(\n explicit: CountryCode | undefined,\n supported: Set<string>,\n detectBrowser: boolean,\n locale: string,\n): CountryCode {\n if (explicit && supported.has(explicit)) return explicit;\n\n if (detectBrowser) {\n const fromNavigator =\n typeof navigator !== 'undefined' ? navigator.language : undefined;\n if (fromNavigator) {\n const match = fromNavigator.match(/-([A-Za-z]{2})/);\n if (match) {\n const candidate = match[1].toUpperCase();\n if (supported.has(candidate)) return candidate as CountryCode;\n }\n }\n\n try {\n const region = new Intl.Locale(locale).region;\n if (region && supported.has(region.toUpperCase())) {\n return region.toUpperCase() as CountryCode;\n }\n } catch {\n // Intl.Locale may throw on malformed BCP-47 — fall through.\n }\n }\n\n return 'IT';\n}\n\ninterface CountryRow {\n code: CountryCode;\n name: string;\n dialCode: string;\n}\n\nfunction buildCountryRows(\n locale: string,\n countries: CountryCode[],\n): CountryRow[] {\n let displayNames: Intl.DisplayNames;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = new Intl.DisplayNames(['en'], { type: 'region' });\n }\n const rows = countries.map<CountryRow>((code) => ({\n code,\n name: displayNames.of(code) ?? code,\n dialCode: getCountryCallingCode(code),\n }));\n const collator = new Intl.Collator(locale);\n return rows.sort((a, b) => collator.compare(a.name, b.name));\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(\n function PhoneInput(\n {\n value,\n defaultValue,\n defaultCountry,\n detectBrowserCountry = false,\n onChange,\n size = 'md',\n tone = 'default',\n disabled,\n readOnly,\n placeholder,\n popularCountries,\n className,\n id,\n name,\n required,\n 'aria-label': ariaLabel,\n },\n ref,\n ) {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const supportedCountries = useMemo(\n () => new Set(getCountries() as string[]),\n [],\n );\n\n const initialState = useMemo(() => {\n const resolvedCountry = resolveDefaultCountry(\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n i18n.language,\n );\n const raw = value ?? defaultValue;\n if (raw) {\n const parsed = parsePhoneNumberFromString(raw);\n if (parsed?.country) {\n return {\n country: parsed.country,\n display: parsed.formatNational(),\n };\n }\n return { country: resolvedCountry, display: raw };\n }\n return { country: resolvedCountry, display: '' };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [country, setCountry] = useState<CountryCode>(initialState.country);\n const [displayValue, setDisplayValue] = useState<string>(\n initialState.display,\n );\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerSearch, setPickerSearch] = useState('');\n\n const isControlled = value !== undefined;\n const lastEmittedRef = useRef<string>('');\n const pendingCaretRef = useRef<number | null>(null);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const composedInputRef = composeRefs(ref, inputRef);\n\n // Sync state back from a controlled `value` prop change that did not\n // originate from this component (e.g. parent reset). Skip the sync when\n // the incoming value matches what we just emitted.\n useEffect(() => {\n if (!isControlled) return;\n const current = value ?? '';\n if (current === lastEmittedRef.current) return;\n if (current === '') {\n setDisplayValue('');\n return;\n }\n const parsed = parsePhoneNumberFromString(current);\n if (parsed?.country) {\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n } else {\n setDisplayValue(current);\n }\n }, [value, isControlled]);\n\n useLayoutEffect(() => {\n if (pendingCaretRef.current == null) return;\n const pos = pendingCaretRef.current;\n pendingCaretRef.current = null;\n const node = inputRef.current;\n if (node && document.activeElement === node) {\n node.setSelectionRange(pos, pos);\n }\n });\n\n const emit = useCallback(\n (nextDisplay: string, nextCountry: CountryCode) => {\n const parsed = parsePhoneNumberFromString(nextDisplay, nextCountry);\n const e164 = parsed?.number ?? '';\n lastEmittedRef.current = e164;\n onChange?.(e164, {\n country: nextCountry,\n isValid: parsed?.isValid() ?? false,\n isPossible: parsed?.isPossible() ?? false,\n type: parsed?.getType(),\n });\n },\n [onChange],\n );\n\n const inputId = id ?? (inFormField ? ctx.id : undefined);\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n const effectiveInvalid = inFormField ? ctx.invalid : false;\n const effectiveTone = effectiveInvalid ? 'error' : tone;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n\n const resolvedPlaceholder =\n placeholder ?? t('ui.inputs.phone.placeholder', 'Phone number');\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) return;\n const target = event.target;\n const raw = target.value;\n const caret = target.selectionStart ?? raw.length;\n const digitsBefore = countDigitsBefore(raw, caret);\n\n const formatter = new AsYouType(country);\n const formatted = formatter.input(raw);\n\n pendingCaretRef.current = positionAfterDigits(formatted, digitsBefore);\n setDisplayValue(formatted);\n emit(formatted, country);\n };\n\n const handleCountrySelect = (nextCountry: CountryCode) => {\n if (nextCountry === country) {\n setPickerOpen(false);\n return;\n }\n const digits = displayValue.replace(/\\D/g, '');\n const formatter = new AsYouType(nextCountry);\n const reformatted = digits ? formatter.input(digits) : '';\n setCountry(nextCountry);\n setDisplayValue(reformatted);\n setPickerOpen(false);\n setPickerSearch('');\n emit(reformatted, nextCountry);\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n };\n\n const countryRows = useMemo(\n () =>\n buildCountryRows(\n i18n.language,\n Array.from(supportedCountries) as CountryCode[],\n ),\n [i18n.language, supportedCountries],\n );\n\n const popularRows = useMemo(() => {\n if (!popularCountries || popularCountries.length === 0) return [];\n const byCode = new Map(countryRows.map((row) => [row.code, row]));\n return popularCountries\n .filter((code): code is CountryCode =>\n supportedCountries.has(code),\n )\n .map((code) => byCode.get(code))\n .filter((row): row is CountryRow => Boolean(row));\n }, [popularCountries, countryRows, supportedCountries]);\n\n const popularCodes = useMemo(\n () => new Set(popularRows.map((row) => row.code)),\n [popularRows],\n );\n\n const remainingRows = useMemo(\n () =>\n popularCodes.size > 0\n ? countryRows.filter((row) => !popularCodes.has(row.code))\n : countryRows,\n [countryRows, popularCodes],\n );\n\n const selected = useMemo(\n () => countryRows.find((row) => row.code === country),\n [countryRows, country],\n );\n const selectedDialCode = selected ? selected.dialCode : '';\n const selectedName = selected ? selected.name : country;\n\n const triggerLabel = t(\n 'ui.inputs.phone.countryPickerLabel',\n 'Country',\n );\n const triggerAccessibleName = `${triggerLabel}: ${selectedName}, +${selectedDialCode}`;\n\n const filterFn = useCallback(\n (candidate: string, searchStr: string, keywords?: string[]) => {\n const normalizedCandidate = normalizeDiacritics(candidate);\n const normalizedSearch = normalizeDiacritics(searchStr);\n const normalizedKeywords = keywords?.map(normalizeDiacritics);\n return defaultFilter(\n normalizedCandidate,\n normalizedSearch,\n normalizedKeywords,\n );\n },\n [],\n );\n\n const renderRow = (row: CountryRow) => {\n const accessibleLabel = `${row.name}, +${row.dialCode}`;\n return (\n <Command.Item\n key={row.code}\n value={row.code}\n keywords={[row.name, row.dialCode, `+${row.dialCode}`]}\n onSelect={() => handleCountrySelect(row.code)}\n className={pickerItemClasses}\n aria-label={accessibleLabel}\n >\n <Flag country={row.code} size={flagSizeBySize[size]} />\n <span className=\"ds:flex-1 ds:truncate\">{row.name}</span>\n <bdi dir=\"ltr\" className=\"ds:text-muted-foreground ds:tabular-nums\">\n +{row.dialCode}\n </bdi>\n </Command.Item>\n );\n };\n\n return (\n <div\n data-component=\"phone-input\"\n data-slot=\"phone-input\"\n className={phoneInputWrapperVariants({\n size,\n tone: effectiveTone,\n className,\n })}\n >\n <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n disabled={effectiveDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={pickerOpen}\n aria-label={triggerAccessibleName}\n className={countryTriggerVariants({ size })}\n >\n <Flag country={country} size={flagSizeBySize[size]} />\n <bdi dir=\"ltr\" className=\"ds:tabular-nums\">\n +{selectedDialCode}\n </bdi>\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n chevronSizeBySize[size],\n 'ds:shrink-0 ds:text-muted-foreground',\n 'ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n pickerOpen ? 'ds:rotate-180' : '',\n ].join(' ')}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n sideOffset={6}\n align=\"start\"\n className={pickerContentClasses}\n >\n <Command filter={filterFn} shouldFilter loop label={triggerLabel}>\n <Command.Input\n asChild\n value={pickerSearch}\n onValueChange={setPickerSearch}\n >\n <input\n data-phone-country-search=\"true\"\n type=\"text\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n placeholder={t(\n 'ui.inputs.phone.searchCountry',\n 'Search countries…',\n )}\n className={pickerSearchClasses}\n />\n </Command.Input>\n <Command.List className={pickerListClasses}>\n <Command.Empty className={pickerEmptyClasses}>\n {t('ui.inputs.phone.noCountryFound', 'No country found')}\n </Command.Empty>\n {popularRows.length > 0 ? (\n <Command.Group\n heading={\n <span className={pickerGroupHeadingClasses}>\n {t('ui.inputs.phone.popularCountries', 'Popular')}\n </span>\n }\n >\n {popularRows.map(renderRow)}\n </Command.Group>\n ) : null}\n <Command.Group\n heading={\n popularRows.length > 0 ? (\n <span className={pickerGroupHeadingClasses}>\n {t('ui.inputs.phone.allCountries', 'All countries')}\n </span>\n ) : undefined\n }\n >\n {remainingRows.map(renderRow)}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n <input\n ref={composedInputRef}\n id={inputId}\n name={name}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n value={displayValue}\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={readOnly}\n required={effectiveRequired}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n onChange={handleInputChange}\n className={phoneNumberInputVariants({ size })}\n />\n </div>\n );\n },\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\nexport {\n phoneInputWrapperVariants,\n countryTriggerVariants,\n phoneNumberInputVariants,\n};\n"],"names":["phoneInputWrapperVariants","cva","countryTriggerVariants","phoneNumberInputVariants","pickerContentClasses","pickerSearchClasses","pickerListClasses","pickerItemClasses","pickerGroupHeadingClasses","pickerEmptyClasses","chevronSizeBySize","flagSizeBySize","countDigitsBefore","str","position","digits","i","positionAfterDigits","targetDigits","count","resolveDefaultCountry","explicit","supported","detectBrowser","locale","fromNavigator","match","candidate","region","buildCountryRows","countries","displayNames","rows","code","getCountryCallingCode","collator","a","b","PhoneInput","forwardRef","value","defaultValue","defaultCountry","detectBrowserCountry","onChange","size","tone","disabled","readOnly","placeholder","popularCountries","className","id","name","required","ariaLabel","ref","t","i18n","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","supportedCountries","useMemo","getCountries","initialState","resolvedCountry","raw","parsed","parsePhoneNumberFromString","country","setCountry","useState","displayValue","setDisplayValue","pickerOpen","setPickerOpen","pickerSearch","setPickerSearch","isControlled","lastEmittedRef","useRef","pendingCaretRef","inputRef","composedInputRef","composeRefs","useEffect","current","useLayoutEffect","pos","node","emit","useCallback","nextDisplay","nextCountry","e164","inputId","effectiveDisabled","effectiveRequired","effectiveInvalid","effectiveTone","describedBy","resolvedPlaceholder","handleInputChange","event","target","caret","digitsBefore","formatted","AsYouType","handleCountrySelect","formatter","reformatted","_a","countryRows","popularRows","byCode","row","popularCodes","remainingRows","selected","selectedDialCode","selectedName","triggerLabel","triggerAccessibleName","filterFn","searchStr","keywords","normalizedCandidate","normalizeDiacritics","normalizedSearch","normalizedKeywords","defaultFilter","renderRow","accessibleLabel","jsxs","Command","jsx","Flag","Popover","ChevronDown"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { useState as H, useCallback as u, useRef as V, useEffect as C, forwardRe
3
3
  import * as m from "@radix-ui/react-popover";
4
4
  import { c as X } from "./index-D2ZczOXr.js";
5
5
  import { useTranslation as $ } from "react-i18next";
6
- import { I as q } from "./icon-button-C482ii4y.js";
6
+ import { I as q } from "./icon-button-CNjWCD1X.js";
7
7
  import { X as G } from "./x-CCcI3eJp.js";
8
8
  const g = z({
9
9
  headingId: void 0,
@@ -30,7 +30,7 @@ const K = X(
30
30
  "ds:p-[var(--spacing-md)]",
31
31
  "ds:shadow-[var(--shadow-lg)]",
32
32
  "ds:z-[var(--z-popover)]",
33
- "ds:text-[var(--popover-foreground)] ds:text-[var(--font-size-sm)]",
33
+ "ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]",
34
34
  "ds:break-words",
35
35
  "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
36
36
  "ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0",
@@ -141,6 +141,7 @@ const R = v(
141
141
  "aria-labelledby": p,
142
142
  "aria-describedby": y,
143
143
  className: K({ size: s, className: n }),
144
+ "data-component": "popover",
144
145
  ...P,
145
146
  ...h,
146
147
  children: [
@@ -219,4 +220,4 @@ const O = Object.assign(x, {
219
220
  export {
220
221
  O as P
221
222
  };
222
- //# sourceMappingURL=popover-CMr1pTPO.js.map
223
+ //# sourceMappingURL=popover-Ds1iOdiv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-Ds1iOdiv.js","sources":["../../src/components/popover/popover.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\ninterface PopoverA11yContext {\n headingId: string | undefined;\n setHeadingId: (id: string | undefined) => void;\n descriptionId: string | undefined;\n setDescriptionId: (id: string | undefined) => void;\n}\n\nconst A11yContext = createContext<PopoverA11yContext>({\n headingId: undefined,\n setHeadingId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n});\n\ninterface PopoverHoverContext {\n isHoverMode: boolean;\n clearHoverTimer: () => void;\n closeWithDelay: () => void;\n}\n\nconst HoverContext = createContext<PopoverHoverContext>({\n isHoverMode: false,\n clearHoverTimer: () => {},\n closeWithDelay: () => {},\n});\n\nfunction resolvePhysicalSide(\n logicalSide: 'start' | 'top' | 'end' | 'bottom',\n): 'left' | 'top' | 'right' | 'bottom' {\n if (logicalSide === 'top' || logicalSide === 'bottom') return logicalSide;\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n if (logicalSide === 'start') return isRtl ? 'right' : 'left';\n /* logicalSide === 'end' */\n return isRtl ? 'left' : 'right';\n}\n\nconst contentVariants = cva(\n [\n 'ds:relative ds:bg-[var(--popover)] ds:border ds:border-[color:var(--border)] ds:rounded-[var(--radius-md)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n 'ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]',\n 'ds:break-words',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2',\n 'ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus-visible:outline-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:max-w-[var(--popover-size-sm)]',\n md: 'ds:max-w-[var(--popover-size-md)]',\n lg: 'ds:max-w-[var(--popover-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport interface PopoverRootProps\n extends ComponentPropsWithoutRef<typeof RadixPopover.Root> {\n openOn?: 'click' | 'hover' | 'hover-or-click';\n children: ReactNode;\n}\n\nfunction PopoverRoot({\n openOn = 'click',\n children,\n open: controlledOpen,\n onOpenChange,\n defaultOpen,\n modal,\n}: PopoverRootProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isHoverMode = openOn === 'hover' || openOn === 'hover-or-click';\n\n const clearHoverTimer = useCallback(() => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = null;\n }\n }, []);\n\n const openWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(true);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n const closeWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(false);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n useEffect(() => {\n return () => clearHoverTimer();\n }, [clearHoverTimer]);\n\n /* a11y context state */\n const [headingId, setHeadingId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n\n const hoverHandlers = isHoverMode\n ? {\n onMouseEnter: openWithDelay,\n onMouseLeave: closeWithDelay,\n onFocus: () => {\n clearHoverTimer();\n handleOpenChange(true);\n },\n onBlur: closeWithDelay,\n }\n : {};\n\n return (\n <A11yContext.Provider\n value={{ headingId, setHeadingId, descriptionId, setDescriptionId }}\n >\n <HoverContext.Provider\n value={{ isHoverMode, clearHoverTimer, closeWithDelay }}\n >\n <RadixPopover.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {isHoverMode ? (\n <span className=\"ds:inline-flex\" {...hoverHandlers}>\n {children}\n </span>\n ) : (\n children\n )}\n </RadixPopover.Root>\n </HoverContext.Provider>\n </A11yContext.Provider>\n );\n}\nPopoverRoot.displayName = 'Popover.Root';\n\nconst PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixPopover.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixPopover.Trigger ref={ref} {...props}>\n {children}\n </RadixPopover.Trigger>\n));\nPopoverTrigger.displayName = 'Popover.Trigger';\n\nexport interface PopoverContentProps\n extends Omit<\n ComponentPropsWithoutRef<typeof RadixPopover.Content>,\n 'side' | 'align'\n >,\n VariantProps<typeof contentVariants> {\n side?: 'start' | 'top' | 'end' | 'bottom';\n align?: 'start' | 'center' | 'end';\n size?: 'sm' | 'md' | 'lg';\n showArrow?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n side = 'bottom',\n align = 'center',\n size = 'md',\n showArrow = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { headingId, descriptionId } = useContext(A11yContext);\n const { isHoverMode: isHover, clearHoverTimer: cancelTimer, closeWithDelay: delayClose } =\n useContext(HoverContext);\n const physicalSide = resolvePhysicalSide(side);\n\n const contentHoverHandlers = isHover\n ? {\n onMouseEnter: cancelTimer,\n onMouseLeave: delayClose,\n onFocus: cancelTimer,\n onBlur: delayClose,\n }\n : {};\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n side={physicalSide}\n align={align}\n sideOffset={8}\n collisionPadding={8}\n aria-labelledby={headingId}\n aria-describedby={descriptionId}\n className={contentVariants({ size, className })}\n data-component=\"popover\"\n {...contentHoverHandlers}\n {...props}\n >\n {children}\n {showArrow && (\n <RadixPopover.Arrow\n width={12}\n height={6}\n className=\"ds:fill-[var(--popover)]\"\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n },\n);\nPopoverContent.displayName = 'Popover.Content';\n\nconst PopoverClose = forwardRef<\n HTMLButtonElement,\n { className?: string }\n>(({ className }, ref) => {\n const { t } = useTranslation();\n\n return (\n <div className={['ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]', className].filter(Boolean).join(' ')}>\n <RadixPopover.Close asChild>\n <IconButton\n ref={ref}\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('ui.common.close', 'Close')}\n />\n </RadixPopover.Close>\n </div>\n );\n});\nPopoverClose.displayName = 'Popover.Close';\n\ninterface PopoverHeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst PopoverHeading = forwardRef<HTMLHeadingElement, PopoverHeadingProps>(\n ({ as: Tag = 'h3', className, ...props }, ref) => {\n const generatedId = useId();\n const { setHeadingId } = useContext(A11yContext);\n\n useEffect(() => {\n setHeadingId(generatedId);\n return () => setHeadingId(undefined);\n }, [generatedId, setHeadingId]);\n\n return (\n <Tag\n ref={ref}\n id={generatedId}\n className={[\n 'type-title-item ds:leading-snug ds:break-words',\n 'ds:pe-[var(--spacing-xl)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nPopoverHeading.displayName = 'Popover.Heading';\n\nconst PopoverDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const generatedId = useId();\n const { setDescriptionId } = useContext(A11yContext);\n\n useEffect(() => {\n setDescriptionId(generatedId);\n return () => setDescriptionId(undefined);\n }, [generatedId, setDescriptionId]);\n\n return (\n <p\n ref={ref}\n id={generatedId}\n className={[\n 'ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n});\nPopoverDescription.displayName = 'Popover.Description';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n Heading: PopoverHeading,\n Description: PopoverDescription,\n});\n\nexport type { PopoverRootProps as PopoverProps, PopoverHeadingProps };\n"],"names":["A11yContext","createContext","HoverContext","resolvePhysicalSide","logicalSide","isRtl","contentVariants","cva","PopoverRoot","openOn","children","controlledOpen","onOpenChange","defaultOpen","modal","internalOpen","setInternalOpen","useState","isControlled","isOpen","handleOpenChange","useCallback","nextOpen","hoverTimerRef","useRef","isHoverMode","clearHoverTimer","openWithDelay","closeWithDelay","useEffect","headingId","setHeadingId","descriptionId","setDescriptionId","hoverHandlers","jsx","RadixPopover","PopoverTrigger","forwardRef","props","ref","PopoverContent","side","align","size","showArrow","className","useContext","isHover","cancelTimer","delayClose","physicalSide","contentHoverHandlers","jsxs","PopoverClose","t","useTranslation","IconButton","X","PopoverHeading","Tag","generatedId","useId","PopoverDescription","Popover"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import { jsxs as a, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as K, useState as q, useCallback as f } from "react";
3
3
  import { useTranslation as F } from "react-i18next";
4
4
  import * as r from "@radix-ui/react-dialog";
5
- import { B as c } from "./button-DmiGFnNA.js";
6
- import { I as G } from "./icon-button-C482ii4y.js";
7
- import { L as H } from "./logo-3wrZGpwg.js";
5
+ import { B as d } from "./button-7dTew-IV.js";
6
+ import { I as G } from "./icon-button-CNjWCD1X.js";
7
+ import { L as H } from "./logo-BpFoCL-s.js";
8
8
  import { E as v } from "./eye-off-xEXDAh5z.js";
9
9
  import { U as J } from "./user-CPxpqFjJ.js";
10
10
  import { L as M } from "./log-out-616hnn2-.js";
11
11
  const Q = K(
12
12
  ({
13
13
  open: l,
14
- defaultOpen: g = !1,
15
- onOpenChange: s,
16
- onUnlock: y,
14
+ defaultOpen: y = !1,
15
+ onOpenChange: a,
16
+ onUnlock: g,
17
17
  onAccountPage: p,
18
18
  onSignOut: m,
19
19
  triggerIcon: L,
@@ -27,12 +27,12 @@ const Q = K(
27
27
  className: P,
28
28
  ...w
29
29
  }, I) => {
30
- const { t: o } = F(), [O, j] = q(g), i = l !== void 0, z = i ? l : O, n = f(
30
+ const { t: o } = F(), [O, j] = q(y), i = l !== void 0, z = i ? l : O, n = f(
31
31
  (t) => {
32
- i || j(t), s == null || s(t);
32
+ i || j(t), a == null || a(t);
33
33
  },
34
- [i, s]
35
- ), d = f(
34
+ [i, a]
35
+ ), c = f(
36
36
  (t) => (S) => {
37
37
  t == null || t(), S.defaultPrevented || n(!1);
38
38
  },
@@ -41,7 +41,7 @@ const Q = K(
41
41
  "privacyLock.description",
42
42
  "Locking the screen helps protect the privacy of your data."
43
43
  ), C = D ?? o("privacyLock.unlock", "Unlock screen"), E = T ?? o("privacyLock.accountPage", "Account page"), R = N ?? o("privacyLock.signOut", "Log out");
44
- return /* @__PURE__ */ a(r.Root, { open: z, onOpenChange: n, children: [
44
+ return /* @__PURE__ */ s(r.Root, { open: z, onOpenChange: n, children: [
45
45
  /* @__PURE__ */ e(r.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
46
46
  G,
47
47
  {
@@ -50,10 +50,11 @@ const Q = K(
50
50
  "aria-label": U,
51
51
  tooltip: A,
52
52
  className: P,
53
+ "data-component": "privacy-lock",
53
54
  ...w
54
55
  }
55
56
  ) }),
56
- /* @__PURE__ */ a(r.Portal, { children: [
57
+ /* @__PURE__ */ s(r.Portal, { children: [
57
58
  /* @__PURE__ */ e(
58
59
  r.Overlay,
59
60
  {
@@ -76,7 +77,6 @@ const Q = K(
76
77
  onPointerDownOutside: (t) => t.preventDefault(),
77
78
  onInteractOutside: (t) => t.preventDefault(),
78
79
  className: [
79
- "theme-dark",
80
80
  "ds:fixed ds:inset-0 ds:z-[var(--z-modal)]",
81
81
  "ds:flex ds:items-center ds:justify-center",
82
82
  "ds:focus:outline-none",
@@ -84,34 +84,34 @@ const Q = K(
84
84
  "ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in",
85
85
  "ds:motion-reduce:animate-none"
86
86
  ].join(" "),
87
- children: /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-lg)] ds:w-[min(22rem,calc(100vw-var(--spacing-xl)))] ds:text-center", children: [
87
+ children: /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-lg)] ds:w-[min(22rem,calc(100vw-var(--spacing-xl)))] ds:text-center", children: [
88
88
  /* @__PURE__ */ e(H, { size: "xl", decorative: !0 }),
89
89
  /* @__PURE__ */ e(r.Title, { className: "ds:sr-only", children: u }),
90
- /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full", children: [
90
+ /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full", children: [
91
91
  /* @__PURE__ */ e(
92
- c,
92
+ d,
93
93
  {
94
94
  intent: "primary",
95
95
  startIcon: /* @__PURE__ */ e(v, { "aria-hidden": !0 }),
96
- onClick: d(y),
96
+ onClick: c(g),
97
97
  children: C
98
98
  }
99
99
  ),
100
100
  p ? /* @__PURE__ */ e(
101
- c,
101
+ d,
102
102
  {
103
103
  intent: "outline",
104
104
  startIcon: /* @__PURE__ */ e(J, { "aria-hidden": !0 }),
105
- onClick: d(p),
105
+ onClick: c(p),
106
106
  children: E
107
107
  }
108
108
  ) : null,
109
109
  m ? /* @__PURE__ */ e(
110
- c,
110
+ d,
111
111
  {
112
112
  intent: "outline",
113
113
  startIcon: /* @__PURE__ */ e(M, { "aria-hidden": !0 }),
114
- onClick: d(m),
114
+ onClick: c(m),
115
115
  children: R
116
116
  }
117
117
  ) : null
@@ -128,4 +128,4 @@ Q.displayName = "PrivacyLock";
128
128
  export {
129
129
  Q as P
130
130
  };
131
- //# sourceMappingURL=privacy-lock-DdpkKNM2.js.map
131
+ //# sourceMappingURL=privacy-lock-KEruBpM1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"privacy-lock-DdpkKNM2.js","sources":["../../src/components/privacy-lock/privacy-lock.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* PrivacyLock — a one-click \"lock my screen\" dialog for operator */\n/* workstations on shared clinic hardware. Clicking the trigger paints */\n/* a full-viewport privacy overlay (blurred backdrop + centred card); */\n/* the only ways out are the three action buttons the consumer wires. */\n/* */\n/* Composed of one `IconButton` trigger and a Radix Dialog overlay. The */\n/* dialog is intentionally *not* dismissible via Escape or outside-click */\n/* — the whole point is to make the screen unreadable until the user */\n/* takes an explicit action. */\n/* */\n/* See `src/components/privacy-lock/privacy-lock.mdx` for usage. */\n/* -------------------------------------------------------------------- */\n\nimport {\n forwardRef,\n useCallback,\n useState,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport { EyeOff, LogOut, User } from 'lucide-react';\nimport { Button } from '../button';\nimport { IconButton } from '../button/icon-button';\nimport { Logo } from '../logo';\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface PrivacyLockProps {\n /** Controlled open state. Pair with `onOpenChange`. */\n open?: boolean;\n /** Uncontrolled initial state. Ignored when `open` is provided. */\n defaultOpen?: boolean;\n /** Fires whenever the dialog opens or closes — trigger click, action button, etc. */\n onOpenChange?: (open: boolean) => void;\n\n /** Fires when the \"Unlock screen\" button is activated. Dialog closes automatically. */\n onUnlock?: () => void;\n /** Fires when \"Account page\" is activated. Button is omitted when undefined. Dialog closes automatically. */\n onAccountPage?: () => void;\n /** Fires when \"Log out\" is activated. Button is omitted when undefined. Dialog closes automatically. */\n onSignOut?: () => void;\n\n /** Override the trigger icon. Default: `lucide-react` `<EyeOff />`. */\n triggerIcon?: ReactNode;\n /** Accessible name for the trigger. Default: t('privacyLock.triggerAriaLabel'). */\n triggerAriaLabel?: string;\n /** Tooltip for the trigger. Default: t('privacyLock.triggerTooltip'). */\n triggerTooltip?: string;\n\n /** Accessible title of the dialog (visually hidden). Default: t('privacyLock.title'). */\n title?: string;\n /** Visible supporting text under the action buttons. Default: t('privacyLock.description'). */\n description?: string;\n /** Label for the \"Unlock screen\" button. Default: t('privacyLock.unlock'). */\n unlockLabel?: string;\n /** Label for the \"Account page\" button. Default: t('privacyLock.accountPage'). */\n accountPageLabel?: string;\n /** Label for the \"Log out\" button. Default: t('privacyLock.signOut'). */\n signOutLabel?: string;\n\n /** Extra classes on the trigger `IconButton`. */\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const PrivacyLock = forwardRef<HTMLButtonElement, PrivacyLockProps>(\n (\n {\n open,\n defaultOpen = false,\n onOpenChange,\n onUnlock,\n onAccountPage,\n onSignOut,\n triggerIcon,\n triggerAriaLabel,\n triggerTooltip,\n title,\n description,\n unlockLabel,\n accountPageLabel,\n signOutLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n // Every action closes the dialog after firing the consumer's\n // callback. Consumers that need to keep the dialog open (e.g.\n // confirmation step) should control `open` themselves and skip the\n // close on the relevant callback.\n const handleAction = useCallback(\n (callback?: () => void) => (event: MouseEvent<HTMLButtonElement>) => {\n callback?.();\n // Only close if the consumer didn't preventDefault — lets a\n // controlled consumer stop the auto-close for guarded actions.\n if (!event.defaultPrevented) setOpen(false);\n },\n [setOpen],\n );\n\n const resolvedTriggerAriaLabel =\n triggerAriaLabel ?? t('privacyLock.triggerAriaLabel', 'Lock screen for privacy');\n const resolvedTriggerTooltip =\n triggerTooltip ?? t('privacyLock.triggerTooltip', 'Lock screen');\n const resolvedTitle =\n title ?? t('privacyLock.title', 'Screen locked for privacy');\n const resolvedDescription =\n description ??\n t(\n 'privacyLock.description',\n 'Locking the screen helps protect the privacy of your data.',\n );\n const resolvedUnlockLabel =\n unlockLabel ?? t('privacyLock.unlock', 'Unlock screen');\n const resolvedAccountPageLabel =\n accountPageLabel ?? t('privacyLock.accountPage', 'Account page');\n const resolvedSignOutLabel =\n signOutLabel ?? t('privacyLock.signOut', 'Log out');\n\n return (\n <RadixDialog.Root open={isOpen} onOpenChange={setOpen}>\n <RadixDialog.Trigger asChild>\n <IconButton\n ref={ref}\n icon={triggerIcon ?? <EyeOff aria-hidden />}\n aria-label={resolvedTriggerAriaLabel}\n tooltip={resolvedTriggerTooltip}\n className={className}\n {...rest}\n />\n </RadixDialog.Trigger>\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[var(--background)]/40 ds:backdrop-blur-xl',\n // Fade-in / fade-out via Radix data-state. Gated on\n // motion-reduce per accessibility requirements.\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:motion-reduce:animate-none',\n ].join(' ')}\n />\n <RadixDialog.Content\n aria-label={resolvedTitle}\n // Make the overlay non-dismissible by ambient input. The only\n // way out is an explicit action button — preserving the\n // \"locked\" contract. Screen readers + assistive tech still\n // reach the buttons via Tab.\n onEscapeKeyDown={(event) => event.preventDefault()}\n onPointerDownOutside={(event) => event.preventDefault()}\n onInteractOutside={(event) => event.preventDefault()}\n // `theme-dark` scopes all DS tokens (--foreground, --border,\n // --primary, …) to dark-theme values regardless of the\n // consumer page's theme. Privacy-lock is a \"locked / paused\"\n // state — the dark UI matches that visual language and keeps\n // outline buttons + description text readable against the\n // frosted backdrop.\n className={[\n 'theme-dark',\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal)]',\n 'ds:flex ds:items-center ds:justify-center',\n 'ds:focus:outline-none',\n 'ds:text-[color:var(--foreground)]',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in',\n 'ds:motion-reduce:animate-none',\n ].join(' ')}\n >\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-lg)] ds:w-[min(22rem,calc(100vw-var(--spacing-xl)))] ds:text-center\">\n <Logo size=\"xl\" decorative />\n <RadixDialog.Title className=\"ds:sr-only\">\n {resolvedTitle}\n </RadixDialog.Title>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full\">\n <Button\n intent=\"primary\"\n startIcon={<EyeOff aria-hidden />}\n onClick={handleAction(onUnlock)}\n >\n {resolvedUnlockLabel}\n </Button>\n {onAccountPage ? (\n <Button\n intent=\"outline\"\n startIcon={<User aria-hidden />}\n onClick={handleAction(onAccountPage)}\n >\n {resolvedAccountPageLabel}\n </Button>\n ) : null}\n {onSignOut ? (\n <Button\n intent=\"outline\"\n startIcon={<LogOut aria-hidden />}\n onClick={handleAction(onSignOut)}\n >\n {resolvedSignOutLabel}\n </Button>\n ) : null}\n </div>\n <RadixDialog.Description className=\"type-body-sm ds:opacity-90\">\n {resolvedDescription}\n </RadixDialog.Description>\n </div>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n );\n },\n);\nPrivacyLock.displayName = 'PrivacyLock';\n"],"names":["PrivacyLock","forwardRef","open","defaultOpen","onOpenChange","onUnlock","onAccountPage","onSignOut","triggerIcon","triggerAriaLabel","triggerTooltip","title","description","unlockLabel","accountPageLabel","signOutLabel","className","rest","ref","t","useTranslation","uncontrolledOpen","setUncontrolledOpen","useState","isControlled","isOpen","setOpen","useCallback","next","handleAction","callback","event","resolvedTriggerAriaLabel","resolvedTriggerTooltip","resolvedTitle","resolvedDescription","resolvedUnlockLabel","resolvedAccountPageLabel","resolvedSignOutLabel","RadixDialog","jsx","IconButton","EyeOff","jsxs","Logo","Button","User","LogOut"],"mappings":"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"}
1
+ {"version":3,"file":"privacy-lock-KEruBpM1.js","sources":["../../src/components/privacy-lock/privacy-lock.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* PrivacyLock — a one-click \"lock my screen\" dialog for operator */\n/* workstations on shared clinic hardware. Clicking the trigger paints */\n/* a full-viewport privacy overlay (blurred backdrop + centred card); */\n/* the only ways out are the three action buttons the consumer wires. */\n/* */\n/* Composed of one `IconButton` trigger and a Radix Dialog overlay. The */\n/* dialog is intentionally *not* dismissible via Escape or outside-click */\n/* — the whole point is to make the screen unreadable until the user */\n/* takes an explicit action. */\n/* */\n/* See `src/components/privacy-lock/privacy-lock.mdx` for usage. */\n/* -------------------------------------------------------------------- */\n\nimport {\n forwardRef,\n useCallback,\n useState,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport { EyeOff, LogOut, User } from 'lucide-react';\nimport { Button } from '../button';\nimport { IconButton } from '../button/icon-button';\nimport { Logo } from '../logo';\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface PrivacyLockProps {\n /** Controlled open state. Pair with `onOpenChange`. */\n open?: boolean;\n /** Uncontrolled initial state. Ignored when `open` is provided. */\n defaultOpen?: boolean;\n /** Fires whenever the dialog opens or closes — trigger click, action button, etc. */\n onOpenChange?: (open: boolean) => void;\n\n /** Fires when the \"Unlock screen\" button is activated. Dialog closes automatically. */\n onUnlock?: () => void;\n /** Fires when \"Account page\" is activated. Button is omitted when undefined. Dialog closes automatically. */\n onAccountPage?: () => void;\n /** Fires when \"Log out\" is activated. Button is omitted when undefined. Dialog closes automatically. */\n onSignOut?: () => void;\n\n /** Override the trigger icon. Default: `lucide-react` `<EyeOff />`. */\n triggerIcon?: ReactNode;\n /** Accessible name for the trigger. Default: t('privacyLock.triggerAriaLabel'). */\n triggerAriaLabel?: string;\n /** Tooltip for the trigger. Default: t('privacyLock.triggerTooltip'). */\n triggerTooltip?: string;\n\n /** Accessible title of the dialog (visually hidden). Default: t('privacyLock.title'). */\n title?: string;\n /** Visible supporting text under the action buttons. Default: t('privacyLock.description'). */\n description?: string;\n /** Label for the \"Unlock screen\" button. Default: t('privacyLock.unlock'). */\n unlockLabel?: string;\n /** Label for the \"Account page\" button. Default: t('privacyLock.accountPage'). */\n accountPageLabel?: string;\n /** Label for the \"Log out\" button. Default: t('privacyLock.signOut'). */\n signOutLabel?: string;\n\n /** Extra classes on the trigger `IconButton`. */\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const PrivacyLock = forwardRef<HTMLButtonElement, PrivacyLockProps>(\n (\n {\n open,\n defaultOpen = false,\n onOpenChange,\n onUnlock,\n onAccountPage,\n onSignOut,\n triggerIcon,\n triggerAriaLabel,\n triggerTooltip,\n title,\n description,\n unlockLabel,\n accountPageLabel,\n signOutLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n // Every action closes the dialog after firing the consumer's\n // callback. Consumers that need to keep the dialog open (e.g.\n // confirmation step) should control `open` themselves and skip the\n // close on the relevant callback.\n const handleAction = useCallback(\n (callback?: () => void) => (event: MouseEvent<HTMLButtonElement>) => {\n callback?.();\n // Only close if the consumer didn't preventDefault — lets a\n // controlled consumer stop the auto-close for guarded actions.\n if (!event.defaultPrevented) setOpen(false);\n },\n [setOpen],\n );\n\n const resolvedTriggerAriaLabel =\n triggerAriaLabel ?? t('privacyLock.triggerAriaLabel', 'Lock screen for privacy');\n const resolvedTriggerTooltip =\n triggerTooltip ?? t('privacyLock.triggerTooltip', 'Lock screen');\n const resolvedTitle =\n title ?? t('privacyLock.title', 'Screen locked for privacy');\n const resolvedDescription =\n description ??\n t(\n 'privacyLock.description',\n 'Locking the screen helps protect the privacy of your data.',\n );\n const resolvedUnlockLabel =\n unlockLabel ?? t('privacyLock.unlock', 'Unlock screen');\n const resolvedAccountPageLabel =\n accountPageLabel ?? t('privacyLock.accountPage', 'Account page');\n const resolvedSignOutLabel =\n signOutLabel ?? t('privacyLock.signOut', 'Log out');\n\n return (\n <RadixDialog.Root open={isOpen} onOpenChange={setOpen}>\n <RadixDialog.Trigger asChild>\n <IconButton\n ref={ref}\n icon={triggerIcon ?? <EyeOff aria-hidden />}\n aria-label={resolvedTriggerAriaLabel}\n tooltip={resolvedTriggerTooltip}\n className={className}\n data-component=\"privacy-lock\"\n {...rest}\n />\n </RadixDialog.Trigger>\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[var(--background)]/40 ds:backdrop-blur-xl',\n // Fade-in / fade-out via Radix data-state. Gated on\n // motion-reduce per accessibility requirements.\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:motion-reduce:animate-none',\n ].join(' ')}\n />\n <RadixDialog.Content\n aria-label={resolvedTitle}\n // Make the overlay non-dismissible by ambient input. The only\n // way out is an explicit action button — preserving the\n // \"locked\" contract. Screen readers + assistive tech still\n // reach the buttons via Tab.\n onEscapeKeyDown={(event) => event.preventDefault()}\n onPointerDownOutside={(event) => event.preventDefault()}\n onInteractOutside={(event) => event.preventDefault()}\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal)]',\n 'ds:flex ds:items-center ds:justify-center',\n 'ds:focus:outline-none',\n 'ds:text-[color:var(--foreground)]',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in',\n 'ds:motion-reduce:animate-none',\n ].join(' ')}\n >\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-lg)] ds:w-[min(22rem,calc(100vw-var(--spacing-xl)))] ds:text-center\">\n <Logo size=\"xl\" decorative />\n <RadixDialog.Title className=\"ds:sr-only\">\n {resolvedTitle}\n </RadixDialog.Title>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full\">\n <Button\n intent=\"primary\"\n startIcon={<EyeOff aria-hidden />}\n onClick={handleAction(onUnlock)}\n >\n {resolvedUnlockLabel}\n </Button>\n {onAccountPage ? (\n <Button\n intent=\"outline\"\n startIcon={<User aria-hidden />}\n onClick={handleAction(onAccountPage)}\n >\n {resolvedAccountPageLabel}\n </Button>\n ) : null}\n {onSignOut ? (\n <Button\n intent=\"outline\"\n startIcon={<LogOut aria-hidden />}\n onClick={handleAction(onSignOut)}\n >\n {resolvedSignOutLabel}\n </Button>\n ) : null}\n </div>\n <RadixDialog.Description className=\"type-body-sm ds:opacity-90\">\n {resolvedDescription}\n </RadixDialog.Description>\n </div>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n );\n },\n);\nPrivacyLock.displayName = 'PrivacyLock';\n"],"names":["PrivacyLock","forwardRef","open","defaultOpen","onOpenChange","onUnlock","onAccountPage","onSignOut","triggerIcon","triggerAriaLabel","triggerTooltip","title","description","unlockLabel","accountPageLabel","signOutLabel","className","rest","ref","t","useTranslation","uncontrolledOpen","setUncontrolledOpen","useState","isControlled","isOpen","setOpen","useCallback","next","handleAction","callback","event","resolvedTriggerAriaLabel","resolvedTriggerTooltip","resolvedTitle","resolvedDescription","resolvedUnlockLabel","resolvedAccountPageLabel","resolvedSignOutLabel","RadixDialog","jsx","IconButton","EyeOff","jsxs","Logo","Button","User","LogOut"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx as s, jsxs as t } from "react/jsx-runtime";
2
2
  import { useContext as N, createContext as C, forwardRef as j, useId as R, useRef as I, useEffect as k } from "react";
3
3
  import * as m from "@radix-ui/react-radio-group";
4
4
  import { c as w } from "./index-D2ZczOXr.js";
5
- import { T as G } from "./tooltip-Dp3u8jGz.js";
5
+ import { T as G } from "./tooltip-DHik5yRI.js";
6
6
  const F = C(null);
7
7
  function S() {
8
8
  return N(F);
@@ -38,9 +38,9 @@ const T = w(
38
38
  }, _ = j(
39
39
  ({
40
40
  label: o,
41
- size: i = "md",
41
+ size: d = "md",
42
42
  disabled: e,
43
- disabledReason: d,
43
+ disabledReason: i,
44
44
  description: n,
45
45
  id: u,
46
46
  className: f,
@@ -52,7 +52,7 @@ const T = w(
52
52
  }, [r]);
53
53
  const x = [
54
54
  "rounded-full bg-primary",
55
- V[i],
55
+ V[d],
56
56
  "group-data-[disabled]:bg-muted"
57
57
  ].join(" "), c = /* @__PURE__ */ s(
58
58
  m.Item,
@@ -62,7 +62,8 @@ const T = w(
62
62
  disabled: e,
63
63
  "aria-disabled": e || void 0,
64
64
  value: p,
65
- className: T({ size: i, className: f }),
65
+ className: T({ size: d, className: f }),
66
+ "data-component": "radio",
66
67
  ...g,
67
68
  children: /* @__PURE__ */ s(
68
69
  m.Indicator,
@@ -95,7 +96,7 @@ const T = w(
95
96
  c,
96
97
  /* @__PURE__ */ s("label", { htmlFor: a, className: y, children: o })
97
98
  ] });
98
- return e && d ? /* @__PURE__ */ s(G, { label: d, children: l }) : l;
99
+ return e && i ? /* @__PURE__ */ s(G, { label: i, children: l }) : l;
99
100
  }
100
101
  );
101
102
  _.displayName = "Radio";
@@ -103,4 +104,4 @@ export {
103
104
  _ as R,
104
105
  F as a
105
106
  };
106
- //# sourceMappingURL=radio-B_gvGU29.js.map
107
+ //# sourceMappingURL=radio-XSSNX3Af.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-XSSNX3Af.js","sources":["../../src/components/radio-group/radio-group-context.ts","../../src/components/radio-group/radio.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type RadioGroupVariant = 'vertical' | 'horizontal' | 'card';\n\nexport interface RadioGroupInternalContextShape {\n variant: RadioGroupVariant;\n}\n\nexport const RadioGroupInternalContext =\n createContext<RadioGroupInternalContextShape | null>(null);\n\nexport function useRadioGroupContext(): RadioGroupInternalContextShape | null {\n return useContext(RadioGroupInternalContext);\n}\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useRadioGroupContext } from './radio-group-context';\nimport { Tooltip } from '../tooltip';\n\nconst radioVariants = cva(\n [\n 'ds:group ds:inline-flex ds:items-center ds:justify-center ds:shrink-0 ds:rounded-full',\n 'ds:border ds:border-border ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:data-[state=checked]:border-primary',\n 'ds:data-[disabled]:border-muted',\n 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst discSizeBySize = {\n sm: 'size-1.5',\n md: 'size-2',\n lg: 'size-2.5',\n} as const;\n\ntype RadixItemProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Item>;\n\nexport interface RadioProps\n extends Omit<RadixItemProps, 'children'>,\n VariantProps<typeof radioVariants> {\n label: string;\n size?: 'sm' | 'md' | 'lg';\n disabledReason?: string;\n description?: string;\n}\n\nexport const Radio = forwardRef<HTMLButtonElement, RadioProps>(\n (\n {\n label,\n size = 'md',\n disabled,\n disabledReason,\n description,\n id,\n className,\n value,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const radioId = id ?? generatedId;\n const ctx = useRadioGroupContext();\n const isCard = ctx?.variant === 'card';\n\n const warnedRef = useRef(false);\n useEffect(() => {\n if (import.meta.env.DEV && !ctx && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n '<Radio> rendered without a <RadioGroup> ancestor. A lone radio is rarely meaningful — use <Checkbox> for a single on/off choice.',\n );\n }\n }, [ctx]);\n\n const discClasses = [\n 'rounded-full bg-primary',\n discSizeBySize[size],\n 'group-data-[disabled]:bg-muted',\n ].join(' ');\n\n const item = (\n <RadixRadioGroup.Item\n ref={ref}\n id={radioId}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n value={value as string}\n className={radioVariants({ size, className })}\n data-component=\"radio\"\n {...props}\n >\n <RadixRadioGroup.Indicator\n asChild\n className=\"ds:inline-flex ds:items-center ds:justify-center\"\n >\n <span aria-hidden=\"true\" className={discClasses} />\n </RadixRadioGroup.Indicator>\n </RadixRadioGroup.Item>\n );\n\n const labelClasses = [\n 'type-label text-foreground select-none',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n ].join(' ');\n\n const cardClasses = [\n 'flex items-start gap-[var(--spacing-md)]',\n 'rounded-[var(--radius-md)] border border-border',\n 'ps-[var(--spacing-md)] pe-[var(--spacing-md)] py-[var(--spacing-md)]',\n 'min-h-[var(--min-target-size)]',\n 'has-[[data-state=checked]]:border-ring',\n 'has-[[data-state=checked]]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]',\n 'transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none',\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n ].join(' ');\n\n const content = isCard ? (\n <label htmlFor={radioId} className={cardClasses}>\n {item}\n <span className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:text-start\">\n <span className=\"type-label ds:text-foreground\">{label}</span>\n {description ? (\n <span className=\"type-body-sm ds:text-muted-foreground\">{description}</span>\n ) : null}\n </span>\n </label>\n ) : (\n <div className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:min-h-[var(--min-target-size)]\">\n {item}\n <label htmlFor={radioId} className={labelClasses}>\n {label}\n </label>\n </div>\n );\n\n if (disabled && disabledReason) {\n return <Tooltip label={disabledReason}>{content}</Tooltip>;\n }\n\n return content;\n },\n);\n\nRadio.displayName = 'Radio';\n"],"names":["RadioGroupInternalContext","createContext","useRadioGroupContext","useContext","radioVariants","cva","discSizeBySize","Radio","forwardRef","label","size","disabled","disabledReason","description","id","className","value","props","ref","generatedId","useId","radioId","ctx","isCard","useRef","useEffect","discClasses","item","jsx","RadixRadioGroup","labelClasses","cardClasses","content","jsxs","Tooltip"],"mappings":";;;;;AAQO,MAAMA,IACXC,EAAqD,IAAI;AAEpD,SAASC,IAA8D;AAC5E,SAAOC,EAAWH,CAAyB;AAC7C;ACDA,MAAMI,IAAgBC;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAEMC,IAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAaaC,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAcC,EAAA,GACdC,IAAUP,KAAMK,GAChBG,IAAMpB,EAAA,GACNqB,KAASD,KAAA,gBAAAA,EAAK,aAAY;AAEd,IAAAE,EAAO,EAAK,GAC9BC,EAAU,MAAM;AAAA,IAOhB,GAAG,CAACH,CAAG,CAAC;AAER,UAAMI,IAAc;AAAA,MAClB;AAAA,MACApB,EAAeI,CAAI;AAAA,MACnB;AAAA,IAAA,EACA,KAAK,GAAG,GAEJiB,IACJ,gBAAAC;AAAA,MAACC,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAAX;AAAA,QACA,IAAIG;AAAA,QACJ,UAAAV;AAAA,QACA,iBAAeA,KAAY;AAAA,QAC3B,OAAAK;AAAA,QACA,WAAWZ,EAAc,EAAE,MAAAM,GAAM,WAAAK,GAAW;AAAA,QAC5C,kBAAe;AAAA,QACd,GAAGE;AAAA,QAEJ,UAAA,gBAAAW;AAAA,UAACC,EAAgB;AAAA,UAAhB;AAAA,YACC,SAAO;AAAA,YACP,WAAU;AAAA,YAEV,4BAAC,QAAA,EAAK,eAAY,QAAO,WAAWH,GAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MACnD;AAAA,IAAA,GAIEI,IAAe;AAAA,MACnB;AAAA,MACAnB,IAAW,kCAAkC;AAAA,IAAA,EAC7C,KAAK,GAAG,GAEJoB,IAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACApB,IAAW,kCAAkC;AAAA,IAAA,EAC7C,KAAK,GAAG,GAEJqB,IAAUT,IACd,gBAAAU,EAAC,WAAM,SAASZ,GAAS,WAAWU,GACjC,UAAA;AAAA,MAAAJ;AAAA,MACD,gBAAAM,EAAC,QAAA,EAAK,WAAU,gEACd,UAAA;AAAA,0BAAC,QAAA,EAAK,WAAU,iCAAiC,UAAAxB,GAAM;AAAA,QACtDI,sBACE,QAAA,EAAK,WAAU,yCAAyC,aAAY,IACnE;AAAA,MAAA,GACN;AAAA,IAAA,EAAA,CACF,IAEA,gBAAAoB,EAAC,OAAA,EAAI,WAAU,+FACZ,UAAA;AAAA,MAAAN;AAAA,wBACA,SAAA,EAAM,SAASN,GAAS,WAAWS,GACjC,UAAArB,EAAA,CACH;AAAA,IAAA,GACF;AAGF,WAAIE,KAAYC,sBACNsB,GAAA,EAAQ,OAAOtB,GAAiB,UAAAoB,GAAQ,IAG3CA;AAAA,EACT;AACF;AAEAzB,EAAM,cAAc;"}
@@ -1,8 +1,8 @@
1
- import { jsx as s, jsxs as o } from "react/jsx-runtime";
1
+ import { jsx as s, jsxs as r } from "react/jsx-runtime";
2
2
  import { forwardRef as z, useId as C, useMemo as j, useRef as B } from "react";
3
3
  import * as V from "@radix-ui/react-radio-group";
4
4
  import { c as $ } from "./index-D2ZczOXr.js";
5
- import { a as x } from "./radio-B_gvGU29.js";
5
+ import { a as x } from "./radio-XSSNX3Af.js";
6
6
  import { u as P } from "./use-direction-D6rvvG9G.js";
7
7
  import { c as k } from "./compose-refs-C0k0tdqF.js";
8
8
  import { C as A } from "./circle-alert-ChA9opNA.js";
@@ -19,20 +19,20 @@ const D = $("ds:flex", {
19
19
  }
20
20
  }), M = z(
21
21
  ({
22
- children: h,
22
+ children: g,
23
23
  variant: e = "vertical",
24
24
  label: i,
25
25
  description: a,
26
- error: r,
26
+ error: o,
27
27
  required: d,
28
- disabled: g,
28
+ disabled: h,
29
29
  className: R,
30
30
  ...N
31
31
  }, y) => {
32
- const t = C(), n = `${t}-description`, l = `${t}-error`, b = [a ? n : null, r ? l : null].filter(Boolean).join(" ") || void 0, G = e === "horizontal" ? "horizontal" : "vertical", c = j(
32
+ const t = C(), n = `${t}-description`, l = `${t}-error`, b = [a ? n : null, o ? l : null].filter(Boolean).join(" ") || void 0, G = e === "horizontal" ? "horizontal" : "vertical", c = j(
33
33
  () => ({ variant: e }),
34
34
  [e]
35
- ), p = a ? /* @__PURE__ */ s("p", { id: n, className: "type-body-sm ds:text-muted-foreground", children: a }) : null, m = r ? /* @__PURE__ */ o(
35
+ ), p = a ? /* @__PURE__ */ s("p", { id: n, className: "type-body-sm ds:text-muted-foreground", children: a }) : null, m = o ? /* @__PURE__ */ r(
36
36
  "p",
37
37
  {
38
38
  id: l,
@@ -40,27 +40,28 @@ const D = $("ds:flex", {
40
40
  className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive",
41
41
  children: [
42
42
  /* @__PURE__ */ s(A, { "aria-hidden": "true", className: "ds:size-4 ds:shrink-0" }),
43
- /* @__PURE__ */ s("span", { children: r })
43
+ /* @__PURE__ */ s("span", { children: o })
44
44
  ]
45
45
  }
46
- ) : null, f = B(null), I = k(y, f), w = P(f), u = /* @__PURE__ */ s(
46
+ ) : null, u = B(null), I = k(y, u), w = P(u), f = /* @__PURE__ */ s(
47
47
  V.Root,
48
48
  {
49
49
  ref: I,
50
50
  orientation: G,
51
51
  dir: w,
52
- disabled: g,
52
+ disabled: h,
53
53
  required: d,
54
54
  "aria-describedby": b,
55
- "aria-invalid": !!r || void 0,
55
+ "aria-invalid": !!o || void 0,
56
56
  "aria-required": d || void 0,
57
57
  className: D({ variant: e, className: R }),
58
+ "data-component": "radio-group",
58
59
  ...N,
59
- children: h
60
+ children: g
60
61
  }
61
62
  ), v = "flex flex-col gap-[var(--spacing-xs)] min-w-0";
62
- return i ? /* @__PURE__ */ s(x.Provider, { value: c, children: /* @__PURE__ */ o("fieldset", { className: `${v} ds:border-0 ds:p-0 ds:m-0`, children: [
63
- /* @__PURE__ */ o("legend", { className: "type-label ds:text-foreground ds:p-0", children: [
63
+ return i ? /* @__PURE__ */ s(x.Provider, { value: c, children: /* @__PURE__ */ r("fieldset", { className: `${v} ds:border-0 ds:p-0 ds:m-0`, children: [
64
+ /* @__PURE__ */ r("legend", { className: "type-label ds:text-foreground ds:p-0", children: [
64
65
  i,
65
66
  d ? /* @__PURE__ */ s(
66
67
  "span",
@@ -72,11 +73,11 @@ const D = $("ds:flex", {
72
73
  ) : null
73
74
  ] }),
74
75
  p,
75
- u,
76
+ f,
76
77
  m
77
- ] }) }) : /* @__PURE__ */ s(x.Provider, { value: c, children: /* @__PURE__ */ o("div", { className: v, children: [
78
+ ] }) }) : /* @__PURE__ */ s(x.Provider, { value: c, children: /* @__PURE__ */ r("div", { className: v, children: [
78
79
  p,
79
- u,
80
+ f,
80
81
  m
81
82
  ] }) });
82
83
  }
@@ -85,4 +86,4 @@ M.displayName = "RadioGroup";
85
86
  export {
86
87
  M as R
87
88
  };
88
- //# sourceMappingURL=radio-group-Bn8Wt0yc.js.map
89
+ //# sourceMappingURL=radio-group-DBrUOPcy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group-DBrUOPcy.js","sources":["../../src/components/radio-group/radio-group.tsx"],"sourcesContent":["import {\n forwardRef,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { AlertCircle } from 'lucide-react';\nimport {\n RadioGroupInternalContext,\n type RadioGroupInternalContextShape,\n type RadioGroupVariant,\n} from './radio-group-context';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\n\nconst radioGroupVariants = cva('ds:flex', {\n variants: {\n variant: {\n vertical: 'ds:flex-col ds:gap-[var(--spacing-sm)]',\n horizontal: 'ds:flex-row ds:flex-wrap ds:gap-[var(--spacing-md)]',\n card: 'ds:flex-col ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: {\n variant: 'vertical',\n },\n});\n\ntype RadixRootProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Root>;\n\nexport interface RadioGroupProps\n extends Omit<RadixRootProps, 'children' | 'orientation'>,\n VariantProps<typeof radioGroupVariants> {\n children: React.ReactNode;\n variant?: RadioGroupVariant;\n label?: string;\n description?: string;\n error?: string;\n required?: boolean;\n}\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n children,\n variant = 'vertical',\n label,\n description,\n error,\n required,\n disabled,\n className,\n ...props\n },\n ref,\n ) => {\n const baseId = useId();\n const descriptionId = `${baseId}-description`;\n const errorId = `${baseId}-error`;\n\n const describedBy =\n [description ? descriptionId : null, error ? errorId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const orientation: 'vertical' | 'horizontal' =\n variant === 'horizontal' ? 'horizontal' : 'vertical';\n\n const ctxValue: RadioGroupInternalContextShape = useMemo(\n () => ({ variant }),\n [variant],\n );\n\n const descriptionNode = description ? (\n <p id={descriptionId} className=\"type-body-sm ds:text-muted-foreground\">\n {description}\n </p>\n ) : null;\n\n const errorNode = error ? (\n <p\n id={errorId}\n role=\"alert\"\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive\"\n >\n <AlertCircle aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{error}</span>\n </p>\n ) : null;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const dir = useDirection(rootRef);\n\n const root = (\n <RadixRadioGroup.Root\n ref={composedRef}\n orientation={orientation}\n dir={dir}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={Boolean(error) || undefined}\n aria-required={required || undefined}\n className={radioGroupVariants({ variant, className })}\n data-component=\"radio-group\"\n {...props}\n >\n {children}\n </RadixRadioGroup.Root>\n );\n\n const outerClasses = 'flex flex-col gap-[var(--spacing-xs)] min-w-0';\n\n if (label) {\n return (\n <RadioGroupInternalContext.Provider value={ctxValue}>\n <fieldset className={`${outerClasses} ds:border-0 ds:p-0 ds:m-0`}>\n <legend className=\"type-label ds:text-foreground ds:p-0\">\n {label}\n {required ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:text-destructive ds:ms-[var(--spacing-xs)]\"\n >\n *\n </span>\n ) : null}\n </legend>\n {descriptionNode}\n {root}\n {errorNode}\n </fieldset>\n </RadioGroupInternalContext.Provider>\n );\n }\n\n return (\n <RadioGroupInternalContext.Provider value={ctxValue}>\n <div className={outerClasses}>\n {descriptionNode}\n {root}\n {errorNode}\n </div>\n </RadioGroupInternalContext.Provider>\n );\n },\n);\n\nRadioGroup.displayName = 'RadioGroup';\n"],"names":["radioGroupVariants","cva","RadioGroup","forwardRef","children","variant","label","description","error","required","disabled","className","props","ref","baseId","useId","descriptionId","errorId","describedBy","orientation","ctxValue","useMemo","descriptionNode","jsx","errorNode","jsxs","AlertCircle","rootRef","useRef","composedRef","composeRefs","dir","useDirection","root","RadixRadioGroup","outerClasses","RadioGroupInternalContext"],"mappings":";;;;;;;;AAkBA,MAAMA,IAAqBC,EAAI,WAAW;AAAA,EACxC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,iBAAiB;AAAA,IACf,SAAS;AAAA,EAAA;AAEb,CAAC,GAeYC,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,UAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAASC,EAAA,GACTC,IAAgB,GAAGF,CAAM,gBACzBG,IAAU,GAAGH,CAAM,UAEnBI,IACJ,CAACX,IAAcS,IAAgB,MAAMR,IAAQS,IAAU,IAAI,EACxD,OAAO,OAAO,EACd,KAAK,GAAG,KAAK,QAEZE,IACJd,MAAY,eAAe,eAAe,YAEtCe,IAA2CC;AAAA,MAC/C,OAAO,EAAE,SAAAhB,EAAA;AAAA,MACT,CAACA,CAAO;AAAA,IAAA,GAGJiB,IAAkBf,IACtB,gBAAAgB,EAAC,KAAA,EAAE,IAAIP,GAAe,WAAU,yCAC7B,UAAAT,EAAA,CACH,IACE,MAEEiB,IAAYhB,IAChB,gBAAAiB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIR;AAAA,QACJ,MAAK;AAAA,QACL,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAM,EAACG,GAAA,EAAY,eAAY,QAAO,WAAU,yBAAwB;AAAA,UAClE,gBAAAH,EAAC,UAAM,UAAAf,EAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAEb,MAEEmB,IAAUC,EAAuB,IAAI,GACrCC,IAAcC,EAAYjB,GAAKc,CAAO,GACtCI,IAAMC,EAAaL,CAAO,GAE1BM,IACJ,gBAAAV;AAAA,MAACW,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAKL;AAAA,QACL,aAAAV;AAAA,QACA,KAAAY;AAAA,QACA,UAAArB;AAAA,QACA,UAAAD;AAAA,QACA,oBAAkBS;AAAA,QAClB,gBAAc,EAAQV,KAAU;AAAA,QAChC,iBAAeC,KAAY;AAAA,QAC3B,WAAWT,EAAmB,EAAE,SAAAK,GAAS,WAAAM,GAAW;AAAA,QACpD,kBAAe;AAAA,QACd,GAAGC;AAAA,QAEH,UAAAR;AAAA,MAAA;AAAA,IAAA,GAIC+B,IAAe;AAErB,WAAI7B,IAEA,gBAAAiB,EAACa,EAA0B,UAA1B,EAAmC,OAAOhB,GACzC,UAAA,gBAAAK,EAAC,YAAA,EAAS,WAAW,GAAGU,CAAY,8BAClC,UAAA;AAAA,MAAA,gBAAAV,EAAC,UAAA,EAAO,WAAU,wCACf,UAAA;AAAA,QAAAnB;AAAA,QACAG,IACC,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA,IAGC;AAAA,MAAA,GACN;AAAA,MACCD;AAAA,MACAW;AAAA,MACAT;AAAA,IAAA,EAAA,CACH,EAAA,CACF,IAKF,gBAAAD,EAACa,EAA0B,UAA1B,EAAmC,OAAOhB,GACzC,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWU,GACb,UAAA;AAAA,MAAAb;AAAA,MACAW;AAAA,MACAT;AAAA,IAAA,EAAA,CACH,EAAA,CACF;AAAA,EAEJ;AACF;AAEAtB,EAAW,cAAc;"}
@@ -1762,9 +1762,9 @@ const Co = ve(
1762
1762
  {
1763
1763
  variants: {
1764
1764
  size: {
1765
- sm: "ds:h-8 ds:text-[var(--font-size-sm)] ds:ps-3 ds:pe-10",
1766
- md: "ds:h-[var(--min-target-size)] ds:text-[var(--font-size-base)] ds:ps-3 ds:pe-10",
1767
- lg: "ds:h-12 ds:text-[var(--font-size-lg)] ds:ps-4 ds:pe-12"
1765
+ sm: "ds:h-8 ds:text-[length:var(--font-size-sm)] ds:ps-3 ds:pe-10",
1766
+ md: "ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)] ds:ps-3 ds:pe-10",
1767
+ lg: "ds:h-12 ds:text-[length:var(--font-size-lg)] ds:ps-4 ds:pe-12"
1768
1768
  },
1769
1769
  tone: {
1770
1770
  default: "ds:border-border",
@@ -1797,7 +1797,7 @@ const Co = ve(
1797
1797
  ), _o = ve(
1798
1798
  [
1799
1799
  "ds:w-full ds:text-start ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]",
1800
- "ds:rounded-[var(--radius-sm)] ds:text-[var(--font-size-sm)] ds:text-foreground",
1800
+ "ds:rounded-[var(--radius-sm)] ds:text-[length:var(--font-size-sm)] ds:text-foreground",
1801
1801
  "ds:hover:bg-muted ds:cursor-pointer",
1802
1802
  "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
1803
1803
  "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
@@ -1821,4 +1821,4 @@ export {
1821
1821
  _o as p,
1822
1822
  Co as t
1823
1823
  };
1824
- //# sourceMappingURL=react-day-picker-d0MHsyCj.js.map
1824
+ //# sourceMappingURL=react-day-picker-C04L_28V.js.map