@alfadocs/ui-kit 0.1.2 → 0.1.4

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 (442) 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-DXOgg8IX.js → agenda-card-C_hQGErS.js} +12 -11
  4. package/dist/_chunks/{agenda-card-DXOgg8IX.js.map → agenda-card-C_hQGErS.js.map} +1 -1
  5. package/dist/_chunks/{agenda-tray-DEO8XL8V.js → agenda-tray-CBaVMJLO.js} +6 -5
  6. package/dist/_chunks/{agenda-tray-DEO8XL8V.js.map → agenda-tray-CBaVMJLO.js.map} +1 -1
  7. package/dist/_chunks/{ai-prompt-input-8IShJ-GX.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-BvisG0Wt.js → audio-recorder-Cn8z2zC9.js} +6 -5
  16. package/dist/_chunks/{audio-recorder-BvisG0Wt.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-BmrpzsfW.js → autocomplete.agent-DRrp-Rsx.js} +3 -2
  20. package/dist/_chunks/{autocomplete.agent-BmrpzsfW.js.map → autocomplete.agent-DRrp-Rsx.js.map} +1 -1
  21. package/dist/_chunks/{avatar-DTQY5qIZ.js → avatar-Biffh-_H.js} +2 -1
  22. package/dist/_chunks/{avatar-DTQY5qIZ.js.map → avatar-Biffh-_H.js.map} +1 -1
  23. package/dist/_chunks/{badge-BbbBRweN.js → badge-mrstWxve.js} +14 -13
  24. package/dist/_chunks/{badge-BbbBRweN.js.map → badge-mrstWxve.js.map} +1 -1
  25. package/dist/_chunks/{balance-cell-renderer-DjR0rPS6.js → balance-cell-renderer-CiyezQhi.js} +11 -11
  26. package/dist/_chunks/{balance-cell-renderer-DjR0rPS6.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-group-BtTHSyU0.js → button-group-CONver7M.js} +9 -8
  30. package/dist/_chunks/{button-group-BtTHSyU0.js.map → button-group-CONver7M.js.map} +1 -1
  31. package/dist/_chunks/{card-DeItIBcV.js → card-BEy58ZKp.js} +2 -1
  32. package/dist/_chunks/card-BEy58ZKp.js.map +1 -0
  33. package/dist/_chunks/{chat-container-ChdJTH0J.js → chat-container-BZvQ3_yT.js} +2 -2
  34. package/dist/_chunks/{chat-container-ChdJTH0J.js.map → chat-container-BZvQ3_yT.js.map} +1 -1
  35. package/dist/_chunks/{chat-input-C-B4snVJ.js → chat-input-xiBIujMv.js} +3 -3
  36. package/dist/_chunks/chat-input-xiBIujMv.js.map +1 -0
  37. package/dist/_chunks/{chat-message-cFNbQYRH.js → chat-message-BtxUyugB.js} +9 -8
  38. package/dist/_chunks/chat-message-BtxUyugB.js.map +1 -0
  39. package/dist/_chunks/{checkbox-DMzgtnqw.js → checkbox-Ni6C_KJg.js} +11 -11
  40. package/dist/_chunks/{checkbox-DMzgtnqw.js.map → checkbox-Ni6C_KJg.js.map} +1 -1
  41. package/dist/_chunks/{checkbox-group-DBnIBRT_.js → checkbox-group-BFZ4oN5t.js} +8 -7
  42. package/dist/_chunks/checkbox-group-BFZ4oN5t.js.map +1 -0
  43. package/dist/_chunks/{collapsible-DPGQnHZh.js → collapsible-fFMqzpdL.js} +8 -7
  44. package/dist/_chunks/collapsible-fFMqzpdL.js.map +1 -0
  45. package/dist/_chunks/{color-picker-DkMFcK2m.js → color-picker-Cl3KdjJd.js} +18 -16
  46. package/dist/_chunks/{color-picker-DkMFcK2m.js.map → color-picker-Cl3KdjJd.js.map} +1 -1
  47. package/dist/_chunks/{combobox.agent-9w6W1Jct.js → combobox.agent-DjdivI3X.js} +2 -1
  48. package/dist/_chunks/combobox.agent-DjdivI3X.js.map +1 -0
  49. package/dist/_chunks/{command-palette.agent-Dg7jhOIc.js → command-palette.agent-BUjzr2ET.js} +2 -1
  50. package/dist/_chunks/command-palette.agent-BUjzr2ET.js.map +1 -0
  51. package/dist/_chunks/{date-picker-0WQ98ZC0.js → date-picker-DYXNsWmM.js} +2 -2
  52. package/dist/_chunks/{date-picker-0WQ98ZC0.js.map → date-picker-DYXNsWmM.js.map} +1 -1
  53. package/dist/_chunks/{date-range-picker-CtwEwoyr.js → date-range-picker-BcNDJI7m.js} +2 -2
  54. package/dist/_chunks/date-range-picker-BcNDJI7m.js.map +1 -0
  55. package/dist/_chunks/{date-time-picker-Df3OJ2_C.js → date-time-picker-CmGiTU__.js} +3 -3
  56. package/dist/_chunks/{date-time-picker-Df3OJ2_C.js.map → date-time-picker-CmGiTU__.js.map} +1 -1
  57. package/dist/_chunks/{description-list-Bk3p71qY.js → description-list-C_1NX8P3.js} +3 -2
  58. package/dist/_chunks/description-list-C_1NX8P3.js.map +1 -0
  59. package/dist/_chunks/{dialog.agent-CtMkDinJ.js → dialog.agent-C2lP9H0h.js} +2 -2
  60. package/dist/_chunks/{dialog.agent-CtMkDinJ.js.map → dialog.agent-C2lP9H0h.js.map} +1 -1
  61. package/dist/_chunks/{dropdown-menu-BnVUeVG3.js → dropdown-menu-2HgU1Emf.js} +4 -3
  62. package/dist/_chunks/dropdown-menu-2HgU1Emf.js.map +1 -0
  63. package/dist/_chunks/{empty-state-DPUnQp0A.js → empty-state-BHrItOiE.js} +2 -1
  64. package/dist/_chunks/{empty-state-DPUnQp0A.js.map → empty-state-BHrItOiE.js.map} +1 -1
  65. package/dist/_chunks/{file-upload.agent-DVMxMeDA.js → file-upload.agent-LlC0W468.js} +2 -2
  66. package/dist/_chunks/{file-upload.agent-DVMxMeDA.js.map → file-upload.agent-LlC0W468.js.map} +1 -1
  67. package/dist/_chunks/{flag-C3BUEwHH.js → flag-DZ6V7-hU.js} +3 -1
  68. package/dist/_chunks/{flag-C3BUEwHH.js.map → flag-DZ6V7-hU.js.map} +1 -1
  69. package/dist/_chunks/{floating-action-button-DjRhFQdd.js → floating-action-button-Cnw-f6AG.js} +5 -4
  70. package/dist/_chunks/{floating-action-button-DjRhFQdd.js.map → floating-action-button-Cnw-f6AG.js.map} +1 -1
  71. package/dist/_chunks/{form-field-DI5LY5aG.js → form-field-BfsPLTSc.js} +2 -1
  72. package/dist/_chunks/form-field-BfsPLTSc.js.map +1 -0
  73. package/dist/_chunks/{freemium-paywall-CCsX3GhK.js → freemium-paywall-Dr9aOtOC.js} +23 -22
  74. package/dist/_chunks/freemium-paywall-Dr9aOtOC.js.map +1 -0
  75. package/dist/_chunks/{header-CVQxeLc_.js → header-BpU9U-1X.js} +3 -2
  76. package/dist/_chunks/{header-CVQxeLc_.js.map → header-BpU9U-1X.js.map} +1 -1
  77. package/dist/_chunks/{icon-button-SWpSs9S6.js → icon-button-CNjWCD1X.js} +9 -8
  78. package/dist/_chunks/icon-button-CNjWCD1X.js.map +1 -0
  79. package/dist/_chunks/{icon-button-group-BnhkUWUg.js → icon-button-group-DeV3FpNY.js} +26 -25
  80. package/dist/_chunks/{icon-button-group-BnhkUWUg.js.map → icon-button-group-DeV3FpNY.js.map} +1 -1
  81. package/dist/_chunks/{kbd-DTcIjYA7.js → kbd-8baVw3KU.js} +35 -31
  82. package/dist/_chunks/kbd-8baVw3KU.js.map +1 -0
  83. package/dist/_chunks/{key-value-pair-Cm-pSE6k.js → key-value-pair-C9hpjC_B.js} +13 -12
  84. package/dist/_chunks/{key-value-pair-Cm-pSE6k.js.map → key-value-pair-C9hpjC_B.js.map} +1 -1
  85. package/dist/_chunks/{leo-sidebar-SqGAp1vx.js → leo-sidebar-CNjZqljo.js} +11 -11
  86. package/dist/_chunks/{leo-sidebar-SqGAp1vx.js.map → leo-sidebar-CNjZqljo.js.map} +1 -1
  87. package/dist/_chunks/{list-Cwe8mcmh.js → list-B1ozIjQe.js} +4 -1
  88. package/dist/_chunks/list-B1ozIjQe.js.map +1 -0
  89. package/dist/_chunks/live-region-C41SO3cA.js +58 -0
  90. package/dist/_chunks/{live-region-COggO6x6.js.map → live-region-C41SO3cA.js.map} +1 -1
  91. package/dist/_chunks/{logo-3wrZGpwg.js → logo-BpFoCL-s.js} +7 -7
  92. package/dist/_chunks/{logo-3wrZGpwg.js.map → logo-BpFoCL-s.js.map} +1 -1
  93. package/dist/_chunks/{matrix-rain-gsHqSvW7.js → matrix-rain-BEkvux64.js} +2 -1
  94. package/dist/_chunks/{matrix-rain-gsHqSvW7.js.map → matrix-rain-BEkvux64.js.map} +1 -1
  95. package/dist/_chunks/{message-card-B0oGrI3i.js → message-card-CZzNO4ov.js} +5 -4
  96. package/dist/_chunks/message-card-CZzNO4ov.js.map +1 -0
  97. package/dist/_chunks/{message-tray-DZ6oZ0cs.js → message-tray-BWbjXW3F.js} +6 -5
  98. package/dist/_chunks/message-tray-BWbjXW3F.js.map +1 -0
  99. package/dist/_chunks/{multi-select.agent-BDEVGMmW.js → multi-select.agent-BSGEW10d.js} +19 -18
  100. package/dist/_chunks/multi-select.agent-BSGEW10d.js.map +1 -0
  101. package/dist/_chunks/{navigation-menu-NjwxyshT.js → navigation-menu-DxOMvrKM.js} +2 -1
  102. package/dist/_chunks/navigation-menu-DxOMvrKM.js.map +1 -0
  103. package/dist/_chunks/{notification-card-C73GqjHH.js → notification-card-DgW-vVg-.js} +4 -3
  104. package/dist/_chunks/{notification-card-C73GqjHH.js.map → notification-card-DgW-vVg-.js.map} +1 -1
  105. package/dist/_chunks/{notification-tray-a8a_nut-.js → notification-tray-CKUgl2jc.js} +6 -5
  106. package/dist/_chunks/{notification-tray-a8a_nut-.js.map → notification-tray-CKUgl2jc.js.map} +1 -1
  107. package/dist/_chunks/{number-input-DFQtl5K2.js → number-input-BPPhekLu.js} +16 -15
  108. package/dist/_chunks/{number-input-DFQtl5K2.js.map → number-input-BPPhekLu.js.map} +1 -1
  109. package/dist/_chunks/{otp-input-C2FdizHh.js → otp-input-De5_Ih7B.js} +2 -1
  110. package/dist/_chunks/{otp-input-C2FdizHh.js.map → otp-input-De5_Ih7B.js.map} +1 -1
  111. package/dist/_chunks/{pagination.agent-sxokDphY.js → pagination.agent-CmA0Ocr5.js} +2 -1
  112. package/dist/_chunks/pagination.agent-CmA0Ocr5.js.map +1 -0
  113. package/dist/_chunks/{password-input-C6PvKyQV.js → password-input-DAT5HQth.js} +7 -7
  114. package/dist/_chunks/password-input-DAT5HQth.js.map +1 -0
  115. package/dist/_chunks/{patient-shell-B4vKnuOf.js → patient-shell-BzHhg6uA.js} +9 -9
  116. package/dist/_chunks/{patient-shell-B4vKnuOf.js.map → patient-shell-BzHhg6uA.js.map} +1 -1
  117. package/dist/_chunks/{payment-form-175AzK-1.js → payment-form-YlxrCpZQ.js} +3 -3
  118. package/dist/_chunks/{payment-form-175AzK-1.js.map → payment-form-YlxrCpZQ.js.map} +1 -1
  119. package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js → pdf-viewer.agent-sMned5Xn.js} +3 -3
  120. package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js.map → pdf-viewer.agent-sMned5Xn.js.map} +1 -1
  121. package/dist/_chunks/{phone-input-BavVyXxZ.js → phone-input-BuRe5PyI.js} +3 -2
  122. package/dist/_chunks/phone-input-BuRe5PyI.js.map +1 -0
  123. package/dist/_chunks/{popover-BWgOopjI.js → popover-Ds1iOdiv.js} +3 -2
  124. package/dist/_chunks/popover-Ds1iOdiv.js.map +1 -0
  125. package/dist/_chunks/{privacy-lock-DWL7m_VT.js → privacy-lock-up2ervfF.js} +41 -39
  126. package/dist/_chunks/privacy-lock-up2ervfF.js.map +1 -0
  127. package/dist/_chunks/{radio-B_gvGU29.js → radio-XSSNX3Af.js} +8 -7
  128. package/dist/_chunks/radio-XSSNX3Af.js.map +1 -0
  129. package/dist/_chunks/{radio-group-Bn8Wt0yc.js → radio-group-DBrUOPcy.js} +19 -18
  130. package/dist/_chunks/radio-group-DBrUOPcy.js.map +1 -0
  131. package/dist/_chunks/{scroll-area-Ba99pJ_R.js → scroll-area-HIq0hJyJ.js} +14 -12
  132. package/dist/_chunks/scroll-area-HIq0hJyJ.js.map +1 -0
  133. package/dist/_chunks/{search-bar-VoTqJhRp.js → search-bar-9Zbew4yM.js} +4 -3
  134. package/dist/_chunks/search-bar-9Zbew4yM.js.map +1 -0
  135. package/dist/_chunks/{search-input-D6rarD0_.js → search-input-CtkWITO2.js} +28 -28
  136. package/dist/_chunks/{search-input-D6rarD0_.js.map → search-input-CtkWITO2.js.map} +1 -1
  137. package/dist/_chunks/{select-CQxhOXVE.js → select-DdAOtomN.js} +18 -17
  138. package/dist/_chunks/select-DdAOtomN.js.map +1 -0
  139. package/dist/_chunks/{separator-BRQHi8s0.js → separator-B4wXDLNC.js} +9 -8
  140. package/dist/_chunks/{separator-BRQHi8s0.js.map → separator-B4wXDLNC.js.map} +1 -1
  141. package/dist/_chunks/{sheet-CKsuHuHB.js → sheet-D7GRhnWw.js} +3 -2
  142. package/dist/_chunks/sheet-D7GRhnWw.js.map +1 -0
  143. package/dist/_chunks/{sidebar-CiEpSH9e.js → sidebar-Dc2ffrbf.js} +4 -3
  144. package/dist/_chunks/sidebar-Dc2ffrbf.js.map +1 -0
  145. package/dist/_chunks/sign-in-with-alfadocs-button-BotwPDcW.js +45 -0
  146. package/dist/_chunks/{sign-in-with-alfadocs-button-BDErAgG2.js.map → sign-in-with-alfadocs-button-BotwPDcW.js.map} +1 -1
  147. package/dist/_chunks/{skeleton-ClO1v5GE.js → skeleton-DAdPFx9d.js} +18 -16
  148. package/dist/_chunks/{skeleton-ClO1v5GE.js.map → skeleton-DAdPFx9d.js.map} +1 -1
  149. package/dist/_chunks/{skip-link-CASJkBOe.js → skip-link-DmZ3c6cb.js} +12 -11
  150. package/dist/_chunks/{skip-link-CASJkBOe.js.map → skip-link-DmZ3c6cb.js.map} +1 -1
  151. package/dist/_chunks/{slider-BVBlOW_l.js → slider-DjyRt3Mp.js} +2 -1
  152. package/dist/_chunks/slider-DjyRt3Mp.js.map +1 -0
  153. package/dist/_chunks/{slot-grid-B4WvLEwT.js → slot-grid-WHc5A8-z.js} +5 -4
  154. package/dist/_chunks/{slot-grid-B4WvLEwT.js.map → slot-grid-WHc5A8-z.js.map} +1 -1
  155. package/dist/_chunks/{spinner-CoAOGcDa.js → spinner-GCcv67vh.js} +2 -1
  156. package/dist/_chunks/spinner-GCcv67vh.js.map +1 -0
  157. package/dist/_chunks/{stat-D76MNHzK.js → stat-DUB6g90R.js} +3 -1
  158. package/dist/_chunks/{stat-D76MNHzK.js.map → stat-DUB6g90R.js.map} +1 -1
  159. package/dist/_chunks/{stepper-accordion-DHQ80A4v.js → stepper-accordion-2_7Pw0tC.js} +2 -1
  160. package/dist/_chunks/{stepper-accordion-DHQ80A4v.js.map → stepper-accordion-2_7Pw0tC.js.map} +1 -1
  161. package/dist/_chunks/{stepper-calendar-BZUJpj8i.js → stepper-calendar-CWZcFgt_.js} +7 -6
  162. package/dist/_chunks/{stepper-calendar-BZUJpj8i.js.map → stepper-calendar-CWZcFgt_.js.map} +1 -1
  163. package/dist/_chunks/{stepper-progress-DMZ5w5VR.js → stepper-progress-rE7tn7WY.js} +12 -11
  164. package/dist/_chunks/{stepper-progress-DMZ5w5VR.js.map → stepper-progress-rE7tn7WY.js.map} +1 -1
  165. package/dist/_chunks/{streaming-text-D0cW8pwq.js → streaming-text-BgjCTVOw.js} +6 -5
  166. package/dist/_chunks/{streaming-text-D0cW8pwq.js.map → streaming-text-BgjCTVOw.js.map} +1 -1
  167. package/dist/_chunks/{suggestion-chip-BgNFpPEE.js → suggestion-chip-6AB40rxz.js} +2 -1
  168. package/dist/_chunks/{suggestion-chip-BgNFpPEE.js.map → suggestion-chip-6AB40rxz.js.map} +1 -1
  169. package/dist/_chunks/{switch-DtLPKO0p.js → switch-DhSORO9C.js} +2 -1
  170. package/dist/_chunks/{switch-DtLPKO0p.js.map → switch-DhSORO9C.js.map} +1 -1
  171. package/dist/_chunks/{tabs.agent-sQAHxebC.js → tabs.agent-BtaNGxRh.js} +3 -2
  172. package/dist/_chunks/tabs.agent-BtaNGxRh.js.map +1 -0
  173. package/dist/_chunks/{tag-CfSZZN2f.js → tag--uLKOb9f.js} +17 -14
  174. package/dist/_chunks/{tag-CfSZZN2f.js.map → tag--uLKOb9f.js.map} +1 -1
  175. package/dist/_chunks/{task-card-B5xfiFg5.js → task-card-BeSuntXP.js} +11 -10
  176. package/dist/_chunks/{task-card-B5xfiFg5.js.map → task-card-BeSuntXP.js.map} +1 -1
  177. package/dist/_chunks/{task-tray-CWvVxWM0.js → task-tray-pRk6u8Ik.js} +10 -9
  178. package/dist/_chunks/{task-tray-CWvVxWM0.js.map → task-tray-pRk6u8Ik.js.map} +1 -1
  179. package/dist/_chunks/{text-area-iPDv7Nah.js → text-area-xf9-6iDf.js} +13 -13
  180. package/dist/_chunks/{text-area-iPDv7Nah.js.map → text-area-xf9-6iDf.js.map} +1 -1
  181. package/dist/_chunks/{text-input-lh6kRXZS.js → text-input-exh7VD7D.js} +10 -9
  182. package/dist/_chunks/{text-input-lh6kRXZS.js.map → text-input-exh7VD7D.js.map} +1 -1
  183. package/dist/_chunks/theme-root-DDb0TJjd.js +18 -0
  184. package/dist/_chunks/{theme-root-vapFjsnt.js.map → theme-root-DDb0TJjd.js.map} +1 -1
  185. package/dist/_chunks/{theme-toggle-CEaPghpm.js → theme-toggle-CJgA6G24.js} +42 -39
  186. package/dist/_chunks/theme-toggle-CJgA6G24.js.map +1 -0
  187. package/dist/_chunks/{time-picker-Crc87DU3.js → time-picker-D-EueWUG.js} +2 -1
  188. package/dist/_chunks/{time-picker-Crc87DU3.js.map → time-picker-D-EueWUG.js.map} +1 -1
  189. package/dist/_chunks/{timeline-Ym2DRmtu.js → timeline-DIueH4TJ.js} +5 -4
  190. package/dist/_chunks/timeline-DIueH4TJ.js.map +1 -0
  191. package/dist/_chunks/{timestamp-DmSt92P1.js → timestamp-BV2lC-wV.js} +2 -1
  192. package/dist/_chunks/{timestamp-DmSt92P1.js.map → timestamp-BV2lC-wV.js.map} +1 -1
  193. package/dist/_chunks/{toast-DoMNrzwm.js → toast-q0SlabGr.js} +2 -2
  194. package/dist/_chunks/{toast-DoMNrzwm.js.map → toast-q0SlabGr.js.map} +1 -1
  195. package/dist/_chunks/{tooltip-Dp3u8jGz.js → tooltip-DHik5yRI.js} +2 -1
  196. package/dist/_chunks/{tooltip-Dp3u8jGz.js.map → tooltip-DHik5yRI.js.map} +1 -1
  197. package/dist/_chunks/{transcript-panel-Bg1BTMSr.js → transcript-panel-DFnhbrlQ.js} +39 -38
  198. package/dist/_chunks/{transcript-panel-Bg1BTMSr.js.map → transcript-panel-DFnhbrlQ.js.map} +1 -1
  199. package/dist/_chunks/{typing-indicator-BRg22Rqr.js → typing-indicator-CbUBf-Dx.js} +9 -8
  200. package/dist/_chunks/{typing-indicator-BRg22Rqr.js.map → typing-indicator-CbUBf-Dx.js.map} +1 -1
  201. package/dist/_chunks/visually-hidden-BlkhaZWe.js +21 -0
  202. package/dist/_chunks/{visually-hidden-Y3jcdCv-.js.map → visually-hidden-BlkhaZWe.js.map} +1 -1
  203. package/dist/_chunks/{warning-stack-5KROOw9M.js → warning-stack-DCmO0R07.js} +25 -23
  204. package/dist/_chunks/warning-stack-DCmO0R07.js.map +1 -0
  205. package/dist/_chunks/{workflow-map-D4sjYv2d.js → workflow-map-CAM6Uy_J.js} +12 -9
  206. package/dist/_chunks/workflow-map-CAM6Uy_J.js.map +1 -0
  207. package/dist/agent-catalog.json +1 -1
  208. package/dist/components/accordion/accordion.d.ts.map +1 -1
  209. package/dist/components/accordion/index.js +1 -1
  210. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  211. package/dist/components/agenda-card/index.js +1 -1
  212. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  213. package/dist/components/agenda-tray/index.js +1 -1
  214. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  215. package/dist/components/ai-prompt-input/index.js +1 -1
  216. package/dist/components/alert/alert.d.ts.map +1 -1
  217. package/dist/components/alert/index.js +1 -1
  218. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  219. package/dist/components/app-frame/index.js +1 -1
  220. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  221. package/dist/components/aspect-ratio/index.js +1 -1
  222. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  223. package/dist/components/audio-recorder/index.js +1 -1
  224. package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
  225. package/dist/components/audio-visualiser/index.js +1 -1
  226. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  227. package/dist/components/autocomplete/index.js +1 -1
  228. package/dist/components/avatar/avatar.d.ts.map +1 -1
  229. package/dist/components/avatar/index.js +1 -1
  230. package/dist/components/badge/badge.d.ts.map +1 -1
  231. package/dist/components/badge/index.js +1 -1
  232. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  233. package/dist/components/breadcrumb/index.js +1 -1
  234. package/dist/components/button/icon-button.d.ts.map +1 -1
  235. package/dist/components/button/index.js +1 -1
  236. package/dist/components/button-group/button-group.d.ts.map +1 -1
  237. package/dist/components/button-group/index.js +1 -1
  238. package/dist/components/card/card.d.ts.map +1 -1
  239. package/dist/components/card/index.js +1 -1
  240. package/dist/components/chat-container/index.js +1 -1
  241. package/dist/components/chat-input/index.js +1 -1
  242. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  243. package/dist/components/chat-message/index.js +1 -1
  244. package/dist/components/checkbox/index.js +1 -1
  245. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  246. package/dist/components/checkbox-group/index.js +1 -1
  247. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  248. package/dist/components/collapsible/index.js +1 -1
  249. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  250. package/dist/components/color-picker/index.js +1 -1
  251. package/dist/components/combobox/combobox.d.ts.map +1 -1
  252. package/dist/components/combobox/index.js +1 -1
  253. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  254. package/dist/components/command-palette/index.js +1 -1
  255. package/dist/components/data-table/index.js +1 -1
  256. package/dist/components/date-picker/index.js +1 -1
  257. package/dist/components/date-range-picker/index.js +1 -1
  258. package/dist/components/date-time-picker/index.js +1 -1
  259. package/dist/components/description-list/description-list.d.ts.map +1 -1
  260. package/dist/components/description-list/index.js +1 -1
  261. package/dist/components/dialog/index.js +1 -1
  262. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  263. package/dist/components/dropdown-menu/index.js +1 -1
  264. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  265. package/dist/components/empty-state/index.js +1 -1
  266. package/dist/components/file-upload/index.js +1 -1
  267. package/dist/components/flag/flag.d.ts.map +1 -1
  268. package/dist/components/flag/index.js +1 -1
  269. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  270. package/dist/components/floating-action-button/index.js +1 -1
  271. package/dist/components/form-field/form-field.d.ts.map +1 -1
  272. package/dist/components/form-field/index.js +1 -1
  273. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  274. package/dist/components/freemium-paywall/index.js +1 -1
  275. package/dist/components/header/header.d.ts.map +1 -1
  276. package/dist/components/header/index.js +1 -1
  277. package/dist/components/icon-button/index.js +1 -1
  278. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  279. package/dist/components/icon-button-group/index.js +1 -1
  280. package/dist/components/kbd/index.js +1 -1
  281. package/dist/components/kbd/kbd.d.ts.map +1 -1
  282. package/dist/components/key-value-pair/index.js +1 -1
  283. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  284. package/dist/components/list/index.js +1 -1
  285. package/dist/components/list/list.d.ts.map +1 -1
  286. package/dist/components/live-region/index.js +1 -1
  287. package/dist/components/live-region/live-region.d.ts.map +1 -1
  288. package/dist/components/logo/index.js +1 -1
  289. package/dist/components/matrix-rain/index.js +1 -1
  290. package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
  291. package/dist/components/message-card/index.js +1 -1
  292. package/dist/components/message-card/message-card.d.ts.map +1 -1
  293. package/dist/components/message-tray/index.js +1 -1
  294. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  295. package/dist/components/multi-select/index.js +1 -1
  296. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  297. package/dist/components/navigation-menu/index.js +2 -2
  298. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  299. package/dist/components/notification-card/index.js +1 -1
  300. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  301. package/dist/components/notification-tray/index.js +1 -1
  302. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  303. package/dist/components/number-input/index.js +1 -1
  304. package/dist/components/number-input/number-input.d.ts.map +1 -1
  305. package/dist/components/otp-input/index.js +1 -1
  306. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  307. package/dist/components/pagination/index.js +1 -1
  308. package/dist/components/pagination/pagination.d.ts.map +1 -1
  309. package/dist/components/password-input/index.js +1 -1
  310. package/dist/components/payment-form/index.js +1 -1
  311. package/dist/components/pdf-viewer/index.js +1 -1
  312. package/dist/components/phone-input/index.js +1 -1
  313. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  314. package/dist/components/popover/index.js +1 -1
  315. package/dist/components/popover/popover.d.ts.map +1 -1
  316. package/dist/components/privacy-lock/index.js +1 -1
  317. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  318. package/dist/components/radio/index.js +1 -1
  319. package/dist/components/radio-group/index.js +2 -2
  320. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  321. package/dist/components/radio-group/radio.d.ts.map +1 -1
  322. package/dist/components/scroll-area/index.js +1 -1
  323. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  324. package/dist/components/search-bar/index.js +1 -1
  325. package/dist/components/search-input/index.js +1 -1
  326. package/dist/components/select/index.js +1 -1
  327. package/dist/components/select/select.d.ts.map +1 -1
  328. package/dist/components/separator/index.js +1 -1
  329. package/dist/components/separator/separator.d.ts.map +1 -1
  330. package/dist/components/sheet/index.js +1 -1
  331. package/dist/components/sheet/sheet.d.ts.map +1 -1
  332. package/dist/components/sidebar/index.js +1 -1
  333. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  334. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  335. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  336. package/dist/components/skeleton/index.js +1 -1
  337. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  338. package/dist/components/skip-link/index.js +1 -1
  339. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  340. package/dist/components/slider/index.js +1 -1
  341. package/dist/components/slider/slider.d.ts.map +1 -1
  342. package/dist/components/slot-grid/index.js +1 -1
  343. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  344. package/dist/components/spinner/index.js +1 -1
  345. package/dist/components/spinner/spinner.d.ts.map +1 -1
  346. package/dist/components/stat/index.js +1 -1
  347. package/dist/components/stat/stat.d.ts.map +1 -1
  348. package/dist/components/stepper-accordion/index.js +1 -1
  349. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  350. package/dist/components/stepper-calendar/index.js +1 -1
  351. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  352. package/dist/components/stepper-progress/index.js +1 -1
  353. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  354. package/dist/components/streaming-text/index.js +1 -1
  355. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  356. package/dist/components/suggestion-chip/index.js +1 -1
  357. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  358. package/dist/components/switch/index.js +1 -1
  359. package/dist/components/switch/switch.d.ts.map +1 -1
  360. package/dist/components/tabs/index.js +1 -1
  361. package/dist/components/tabs/tabs.d.ts.map +1 -1
  362. package/dist/components/tag/index.js +1 -1
  363. package/dist/components/tag/tag.d.ts.map +1 -1
  364. package/dist/components/task-card/index.js +1 -1
  365. package/dist/components/task-card/task-card.d.ts.map +1 -1
  366. package/dist/components/task-tray/index.js +1 -1
  367. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  368. package/dist/components/text-area/index.js +1 -1
  369. package/dist/components/text-input/index.js +1 -1
  370. package/dist/components/text-input/text-input.d.ts.map +1 -1
  371. package/dist/components/theme-root/index.js +1 -1
  372. package/dist/components/theme-toggle/index.js +1 -1
  373. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  374. package/dist/components/time-picker/index.js +1 -1
  375. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  376. package/dist/components/timeline/index.js +1 -1
  377. package/dist/components/timeline/timeline.d.ts.map +1 -1
  378. package/dist/components/timestamp/index.js +1 -1
  379. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  380. package/dist/components/toast/index.js +1 -1
  381. package/dist/components/tooltip/index.js +1 -1
  382. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  383. package/dist/components/transcript-panel/index.js +1 -1
  384. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  385. package/dist/components/typing-indicator/index.js +1 -1
  386. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  387. package/dist/components/visually-hidden/index.js +1 -1
  388. package/dist/components/warning-stack/index.js +1 -1
  389. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  390. package/dist/components/workflow/index.js +1 -1
  391. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  392. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  393. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  394. package/dist/index.js +103 -103
  395. package/dist/patterns/leo-assistant/index.js +1 -1
  396. package/dist/patterns/patient-shell/index.js +1 -1
  397. package/package.json +504 -135
  398. package/dist/_chunks/accordion-BJD1aM67.js.map +0 -1
  399. package/dist/_chunks/ai-prompt-input-8IShJ-GX.js.map +0 -1
  400. package/dist/_chunks/breadcrumb-pdUacgm1.js.map +0 -1
  401. package/dist/_chunks/card-DeItIBcV.js.map +0 -1
  402. package/dist/_chunks/chat-input-C-B4snVJ.js.map +0 -1
  403. package/dist/_chunks/chat-message-cFNbQYRH.js.map +0 -1
  404. package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +0 -1
  405. package/dist/_chunks/collapsible-DPGQnHZh.js.map +0 -1
  406. package/dist/_chunks/combobox.agent-9w6W1Jct.js.map +0 -1
  407. package/dist/_chunks/command-palette.agent-Dg7jhOIc.js.map +0 -1
  408. package/dist/_chunks/date-range-picker-CtwEwoyr.js.map +0 -1
  409. package/dist/_chunks/description-list-Bk3p71qY.js.map +0 -1
  410. package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +0 -1
  411. package/dist/_chunks/form-field-DI5LY5aG.js.map +0 -1
  412. package/dist/_chunks/freemium-paywall-CCsX3GhK.js.map +0 -1
  413. package/dist/_chunks/icon-button-SWpSs9S6.js.map +0 -1
  414. package/dist/_chunks/kbd-DTcIjYA7.js.map +0 -1
  415. package/dist/_chunks/list-Cwe8mcmh.js.map +0 -1
  416. package/dist/_chunks/live-region-COggO6x6.js +0 -57
  417. package/dist/_chunks/message-card-B0oGrI3i.js.map +0 -1
  418. package/dist/_chunks/message-tray-DZ6oZ0cs.js.map +0 -1
  419. package/dist/_chunks/multi-select.agent-BDEVGMmW.js.map +0 -1
  420. package/dist/_chunks/navigation-menu-NjwxyshT.js.map +0 -1
  421. package/dist/_chunks/pagination.agent-sxokDphY.js.map +0 -1
  422. package/dist/_chunks/password-input-C6PvKyQV.js.map +0 -1
  423. package/dist/_chunks/phone-input-BavVyXxZ.js.map +0 -1
  424. package/dist/_chunks/popover-BWgOopjI.js.map +0 -1
  425. package/dist/_chunks/privacy-lock-DWL7m_VT.js.map +0 -1
  426. package/dist/_chunks/radio-B_gvGU29.js.map +0 -1
  427. package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +0 -1
  428. package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +0 -1
  429. package/dist/_chunks/search-bar-VoTqJhRp.js.map +0 -1
  430. package/dist/_chunks/select-CQxhOXVE.js.map +0 -1
  431. package/dist/_chunks/sheet-CKsuHuHB.js.map +0 -1
  432. package/dist/_chunks/sidebar-CiEpSH9e.js.map +0 -1
  433. package/dist/_chunks/sign-in-with-alfadocs-button-BDErAgG2.js +0 -44
  434. package/dist/_chunks/slider-BVBlOW_l.js.map +0 -1
  435. package/dist/_chunks/spinner-CoAOGcDa.js.map +0 -1
  436. package/dist/_chunks/tabs.agent-sQAHxebC.js.map +0 -1
  437. package/dist/_chunks/theme-root-vapFjsnt.js +0 -18
  438. package/dist/_chunks/theme-toggle-CEaPghpm.js.map +0 -1
  439. package/dist/_chunks/timeline-Ym2DRmtu.js.map +0 -1
  440. package/dist/_chunks/visually-hidden-Y3jcdCv-.js +0 -21
  441. package/dist/_chunks/warning-stack-5KROOw9M.js.map +0 -1
  442. package/dist/_chunks/workflow-map-D4sjYv2d.js.map +0 -1
@@ -106,7 +106,7 @@ const pe = Q(
106
106
  }
107
107
  return "";
108
108
  })();
109
- return /* @__PURE__ */ a(f.Root, { open: D, onOpenChange: v, children: /* @__PURE__ */ c("div", { ref: F, className: I, children: [
109
+ return /* @__PURE__ */ a(f.Root, { open: D, onOpenChange: v, children: /* @__PURE__ */ c("div", { ref: F, className: I, "data-component": "date-range-picker", children: [
110
110
  /* @__PURE__ */ a(f.Trigger, { asChild: !0, disabled: k, children: /* @__PURE__ */ c(
111
111
  "button",
112
112
  {
@@ -180,4 +180,4 @@ pe.displayName = "DateRangePicker";
180
180
  export {
181
181
  pe as D
182
182
  };
183
- //# sourceMappingURL=date-range-picker-CtwEwoyr.js.map
183
+ //# sourceMappingURL=date-range-picker-BcNDJI7m.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker-BcNDJI7m.js","sources":["../../node_modules/date-fns/subDays.js","../../node_modules/date-fns/subWeeks.js","../../src/components/date-range-picker/date-range-picker.tsx"],"sourcesContent":["import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\n */\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n DayPicker,\n type DateRange,\n} from 'react-day-picker';\nimport {\n format as fnsFormat,\n differenceInCalendarDays,\n startOfWeek,\n endOfWeek,\n startOfMonth,\n endOfMonth,\n subDays,\n subWeeks,\n} from 'date-fns';\nimport { Calendar } from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport {\n getDateFnsLocale,\n buildDisabledMatcher,\n CalendarChevron,\n triggerVariants,\n calendarIconVariants,\n popoverContentVariants,\n presetButtonVariants,\n} from '../_shared';\nimport '../../tokens/themes/bridges/react-day-picker.css';\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface DateRangePreset {\n label: string;\n range: () => { from: Date; to: Date };\n}\n\nexport interface DateRangeValue {\n from?: Date;\n to?: Date;\n}\n\nexport interface DateRangePickerProps\n extends Pick<VariantProps<typeof triggerVariants>, 'size'> {\n /** Current range — controlled. */\n value?: DateRangeValue;\n /** Default range — uncontrolled. */\n defaultValue?: DateRangeValue;\n /** Called when the range changes. */\n onChange?: (range: DateRangeValue) => void;\n /** Minimum selectable date. */\n minDate?: Date;\n /** Maximum selectable date. */\n maxDate?: Date;\n /** Custom presets. Replaces defaults unless mergePresets is true. */\n presets?: DateRangePreset[];\n /** Merge custom presets with defaults instead of replacing. */\n mergePresets?: boolean;\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Placeholder text. */\n placeholder?: string;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n presets: presetsProp,\n mergePresets = false,\n size = 'md',\n disabled,\n placeholder,\n className,\n id,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const effectiveId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : 'default';\n\n const locale = getDateFnsLocale(i18n.language);\n const placeholderText =\n placeholder ?? t('ui.inputs.dateRangePicker.placeholder', 'Select date range');\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<DateRangeValue>(\n value ?? defaultValue ?? {},\n );\n const currentValue: DateRangeValue = isControlled ? value : internalValue;\n\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date>(\n currentValue.from ?? new Date(),\n );\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const emit = useCallback(\n (range: DateRangeValue) => {\n if (!isControlled) setInternalValue(range);\n onChange?.(range);\n },\n [isControlled, onChange],\n );\n\n const disabledMatcher = buildDisabledMatcher(minDate, maxDate);\n\n // Default presets\n const defaultPresets: DateRangePreset[] = [\n {\n label: t('ui.inputs.dateRangePicker.presets.today', 'Today'),\n range: () => {\n const today = new Date();\n return { from: today, to: today };\n },\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.yesterday', 'Yesterday'),\n range: () => {\n const yesterday = subDays(new Date(), 1);\n return { from: yesterday, to: yesterday };\n },\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.last7', 'Last 7 days'),\n range: () => ({\n from: subDays(new Date(), 6),\n to: new Date(),\n }),\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.thisWeek', 'This week'),\n range: () => ({\n from: startOfWeek(new Date(), { locale }),\n to: endOfWeek(new Date(), { locale }),\n }),\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.lastWeek', 'Last week'),\n range: () => {\n const lastWeekDay = subWeeks(new Date(), 1);\n return {\n from: startOfWeek(lastWeekDay, { locale }),\n to: endOfWeek(lastWeekDay, { locale }),\n };\n },\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.thisMonth', 'This month'),\n range: () => ({\n from: startOfMonth(new Date()),\n to: endOfMonth(new Date()),\n }),\n },\n {\n label: t('ui.inputs.dateRangePicker.presets.last30', 'Last 30 days'),\n range: () => ({\n from: subDays(new Date(), 29),\n to: new Date(),\n }),\n },\n ];\n\n const effectivePresets = presetsProp\n ? mergePresets\n ? [...defaultPresets, ...presetsProp]\n : presetsProp\n : defaultPresets;\n\n const handleRangeSelect = (range: DateRange | undefined) => {\n if (range) {\n emit({ from: range.from, to: range.to });\n } else {\n emit({});\n }\n };\n\n const handlePresetClick = (preset: DateRangePreset) => {\n const range = preset.range();\n emit(range);\n setMonth(range.from);\n setOpen(false);\n };\n\n // Format display text\n const displayText = (() => {\n if (currentValue.from && currentValue.to) {\n const fromStr = fnsFormat(currentValue.from, 'MMM d, yyyy', { locale });\n const toStr = fnsFormat(currentValue.to, 'MMM d, yyyy', { locale });\n return `${fromStr} – ${toStr}`;\n }\n if (currentValue.from) {\n return fnsFormat(currentValue.from, 'MMM d, yyyy', { locale });\n }\n return '';\n })();\n\n // Range summary for screen readers\n const rangeSummary = (() => {\n if (currentValue.from && currentValue.to) {\n const days = differenceInCalendarDays(currentValue.to, currentValue.from) + 1;\n return t('ui.inputs.dateRangePicker.days', '{{count}} days', { count: days });\n }\n return '';\n })();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div ref={ref} className={className} data-component=\"date-range-picker\">\n <Popover.Trigger asChild disabled={effectiveDisabled}>\n <button\n ref={triggerRef}\n id={effectiveId}\n type=\"button\"\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `<button>` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={triggerVariants({ size, tone: effectiveTone })}\n >\n <span className={displayText ? 'ds:text-foreground' : 'ds:text-muted-foreground'}>\n {displayText || placeholderText}\n </span>\n <span aria-hidden=\"true\" className={calendarIconVariants({ size })}>\n <Calendar />\n </span>\n </button>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n sideOffset={4}\n align=\"start\"\n className={popoverContentVariants()}\n >\n <div className=\"ds:flex ds:gap-[var(--spacing-md)]\">\n {/* Presets column */}\n {effectivePresets.length > 0 ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-[8rem] ds:border-e ds:border-border ds:pe-[var(--spacing-md)]\">\n {effectivePresets.map((preset) => (\n <button\n key={preset.label}\n type=\"button\"\n onClick={() => handlePresetClick(preset)}\n className={presetButtonVariants()}\n >\n {preset.label}\n </button>\n ))}\n </div>\n ) : null}\n\n {/* Dual calendar */}\n <div>\n <DayPicker\n mode=\"range\"\n selected={\n currentValue.from\n ? { from: currentValue.from, to: currentValue.to }\n : undefined\n }\n onSelect={handleRangeSelect}\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={2}\n disabled={disabledMatcher}\n locale={locale}\n showOutsideDays\n fixedWeeks\n pagedNavigation\n components={{ Chevron: CalendarChevron }}\n />\n\n {/* Range summary live region */}\n {rangeSummary ? (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"type-body-sm ds:text-muted-foreground ds:mt-[var(--spacing-sm)] ds:text-center\"\n >\n {rangeSummary}\n </div>\n ) : null}\n </div>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n },\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n"],"names":["subDays","date","amount","options","addDays","subWeeks","addWeeks","DateRangePicker","forwardRef","value","defaultValue","onChange","minDate","maxDate","presetsProp","mergePresets","size","disabled","placeholder","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","effectiveDisabled","effectiveTone","locale","getDateFnsLocale","placeholderText","isControlled","internalValue","setInternalValue","useState","currentValue","open","setOpen","month","setMonth","triggerRef","useRef","emit","useCallback","range","disabledMatcher","buildDisabledMatcher","defaultPresets","today","yesterday","startOfWeek","endOfWeek","lastWeekDay","startOfMonth","endOfMonth","effectivePresets","handleRangeSelect","handlePresetClick","preset","displayText","fromStr","fnsFormat","toStr","rangeSummary","days","differenceInCalendarDays","jsx","Popover","jsxs","triggerVariants","calendarIconVariants","Calendar","popoverContentVariants","presetButtonVariants","DayPicker","CalendarChevron"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -4,7 +4,7 @@ import { c as de } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as le } from "react-i18next";
5
5
  import * as v from "@radix-ui/react-popover";
6
6
  import { u as ce } from "./form-field-context-94LwgYTQ.js";
7
- import { T as ue } from "./time-picker-Crc87DU3.js";
7
+ import { T as ue } from "./time-picker-D-EueWUG.js";
8
8
  import { g as fe, b as me, i as pe, j as ge, C as he, d as ve, t as be, D as ye, f as Te, h as we } from "./react-day-picker-C04L_28V.js";
9
9
  import { f as De } from "./isSameMonth-5wNF2f4I.js";
10
10
  import { t as j } from "./isSameDay-ecuM8PBB.js";
@@ -103,7 +103,7 @@ const ke = de(
103
103
  Y(i), P(!1), (e = V.current) == null || e.focus();
104
104
  }
105
105
  }, O = d ? De(d, "MMM d, yyyy HH:mm", { locale: k }) : "", ae = l("ui.inputs.datePicker.gridLabel", "Calendar"), ne = l("ui.inputs.timePicker.groupLabel", "Time");
106
- return /* @__PURE__ */ a(v.Root, { open: M, onOpenChange: ee, children: /* @__PURE__ */ h("div", { ref: U, className: z, children: [
106
+ return /* @__PURE__ */ a(v.Root, { open: M, onOpenChange: ee, children: /* @__PURE__ */ h("div", { ref: U, className: z, "data-component": "date-time-picker", children: [
107
107
  /* @__PURE__ */ a(v.Trigger, { asChild: !0, disabled: C, children: /* @__PURE__ */ h(
108
108
  "button",
109
109
  {
@@ -199,4 +199,4 @@ Ne.displayName = "DateTimePicker";
199
199
  export {
200
200
  Ne as D
201
201
  };
202
- //# sourceMappingURL=date-time-picker-Df3OJ2_C.js.map
202
+ //# sourceMappingURL=date-time-picker-CmGiTU__.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-picker-Df3OJ2_C.js","sources":["../../node_modules/date-fns/setHours.js","../../node_modules/date-fns/setMinutes.js","../../src/components/date-time-picker/date-time-picker.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(hours);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n const date_ = toDate(date, options?.in);\n date_.setMinutes(minutes);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as Popover from '@radix-ui/react-popover';\nimport { DayPicker } from 'react-day-picker';\nimport {\n format as fnsFormat,\n isBefore,\n isAfter,\n setHours,\n setMinutes,\n} from 'date-fns';\nimport { Calendar } from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport {\n getDateFnsLocale,\n buildDisabledMatcher,\n CalendarChevron,\n triggerVariants,\n calendarIconVariants,\n popoverContentVariants,\n} from '../_shared';\nimport { TimePicker } from '../time-picker/time-picker';\nimport type { TimeValue } from '../_shared/time';\nimport '../../tokens/themes/bridges/react-day-picker.css';\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/** Get timezone short name. */\nfunction getTimezoneLabel(locale: string, timezone?: string): string {\n try {\n const opts: Intl.DateTimeFormatOptions = { timeZoneName: 'short' };\n if (timezone && timezone !== 'local') {\n opts.timeZone = timezone === 'utc' ? 'UTC' : timezone;\n }\n const parts = new Intl.DateTimeFormat(locale, opts).formatToParts(new Date());\n return parts.find((p) => p.type === 'timeZoneName')?.value ?? '';\n } catch {\n return '';\n }\n}\n\n/** Check if a timezone differs from the browser's. */\nfunction tzDiffersFromBrowser(timezone?: string): boolean {\n if (!timezone || timezone === 'local') return false;\n try {\n const browserTz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (timezone === 'utc') return browserTz !== 'UTC';\n return browserTz !== timezone;\n } catch {\n return false;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA variants */\n/* -------------------------------------------------------------------------- */\n\nconst applyButtonVariants = cva(\n [\n 'ds:w-full ds:rounded-[var(--radius-sm)]',\n 'ds:bg-primary ds:text-primary-foreground',\n 'ds:hover:bg-primary-hover ds:cursor-pointer',\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 ].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 },\n defaultVariants: { size: 'md' },\n },\n);\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface DateTimePickerProps\n extends Pick<VariantProps<typeof triggerVariants>, 'size'> {\n /** Current datetime — controlled. */\n value?: Date;\n /** Default datetime — uncontrolled. */\n defaultValue?: Date;\n /** Called when the datetime changes. */\n onChange?: (date: Date | undefined) => void;\n /** Timezone — IANA string, 'local', or 'utc'. */\n timezone?: string;\n /** Show timezone annotation. Defaults to true when tz differs from browser. */\n showTimezone?: boolean;\n /** Minimum datetime. */\n minDate?: Date;\n /** Maximum datetime. */\n maxDate?: Date;\n /** Force 12h/24h mode. */\n hour12?: boolean;\n /** Minute step for TimePicker. */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Placeholder text. */\n placeholder?: string;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const DateTimePicker = forwardRef<HTMLDivElement, DateTimePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n timezone,\n showTimezone: showTimezoneProp,\n minDate,\n maxDate,\n hour12,\n minuteStep = 1,\n size = 'md',\n disabled,\n placeholder,\n className,\n id,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const effectiveId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : 'default';\n\n const locale = getDateFnsLocale(i18n.language);\n const placeholderText =\n placeholder ?? t('ui.inputs.dateTimePicker.placeholder', 'Select date and time');\n const applyLabel = t('ui.inputs.dateTimePicker.apply', 'Apply');\n const outOfRangeLabel = t(\n 'ui.inputs.dateTimePicker.outOfRange',\n 'Date/time is out of allowed range',\n );\n\n const showTimezone =\n showTimezoneProp !== undefined ? showTimezoneProp : tzDiffersFromBrowser(timezone);\n const timezoneLabel = showTimezone\n ? getTimezoneLabel(i18n.language, timezone)\n : '';\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<Date | undefined>(\n value ?? defaultValue,\n );\n const currentValue = isControlled ? value : internalValue;\n\n // Draft state while popover is open\n const [draftDate, setDraftDate] = useState<Date | undefined>(currentValue);\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date>(currentValue ?? new Date());\n const [rangeError, setRangeError] = useState(false);\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const emit = useCallback(\n (date: Date | undefined) => {\n if (!isControlled) setInternalValue(date);\n onChange?.(date);\n },\n [isControlled, onChange],\n );\n\n const disabledMatcher = buildDisabledMatcher(minDate, maxDate);\n\n /** Check if a full datetime is within range. */\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (minDate && isBefore(date, minDate)) return false;\n if (maxDate && isAfter(date, maxDate)) return false;\n return true;\n },\n [minDate, maxDate],\n );\n\n // Sync draft when popover opens\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen) {\n setDraftDate(currentValue ?? new Date());\n setMonth(currentValue ?? new Date());\n setRangeError(false);\n }\n setOpen(nextOpen);\n };\n\n const handleDaySelect = (date: Date | undefined) => {\n if (!date) return;\n const prev = draftDate ?? new Date();\n const merged = setMinutes(setHours(date, prev.getHours()), prev.getMinutes());\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleTimeChange = (time: TimeValue) => {\n const prev = draftDate ?? new Date();\n const merged = setMinutes(setHours(prev, time.hours), time.minutes);\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleApply = () => {\n if (!draftDate) return;\n if (!isInRange(draftDate)) {\n setRangeError(true);\n return;\n }\n emit(draftDate);\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n // Format display text\n const displayText = currentValue\n ? fnsFormat(currentValue, 'MMM d, yyyy HH:mm', { locale })\n : '';\n\n const calendarLabel = t('ui.inputs.datePicker.gridLabel', 'Calendar');\n const timeLabel = t('ui.inputs.timePicker.groupLabel', 'Time');\n\n return (\n <Popover.Root open={open} onOpenChange={handleOpenChange}>\n <div ref={ref} className={className}>\n <Popover.Trigger asChild disabled={effectiveDisabled}>\n <button\n ref={triggerRef}\n id={effectiveId}\n type=\"button\"\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `<button>` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={triggerVariants({ size, tone: effectiveTone })}\n >\n <span className={displayText ? 'ds:text-foreground' : 'ds:text-muted-foreground'}>\n {displayText || placeholderText}\n </span>\n <span aria-hidden=\"true\" className={calendarIconVariants({ size })}>\n <Calendar />\n </span>\n </button>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n sideOffset={4}\n align=\"start\"\n className={popoverContentVariants()}\n >\n <div className=\"ds:flex ds:flex-col ds:sm:flex-row ds:gap-[var(--spacing-md)]\">\n {/* Calendar region */}\n <div role=\"region\" aria-label={calendarLabel}>\n <DayPicker\n mode=\"single\"\n selected={draftDate}\n onSelect={handleDaySelect}\n month={month}\n onMonthChange={setMonth}\n disabled={disabledMatcher}\n locale={locale}\n showOutsideDays\n fixedWeeks\n components={{ Chevron: CalendarChevron }}\n />\n </div>\n\n {/* Time + Apply region */}\n <div\n role=\"region\"\n aria-label={timeLabel}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:sm:border-s ds:sm:border-border ds:sm:ps-[var(--spacing-md)] ds:min-w-[10rem]\"\n >\n <TimePicker\n value={\n draftDate\n ? { hours: draftDate.getHours(), minutes: draftDate.getMinutes() }\n : { hours: 0, minutes: 0 }\n }\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n size={size}\n />\n\n {/* Timezone annotation */}\n {timezoneLabel ? (\n <span\n className=\"type-meta ds:text-muted-foreground\"\n >\n {timezoneLabel}\n </span>\n ) : null}\n\n {/* Range error */}\n {rangeError ? (\n <span\n role=\"alert\"\n className=\"type-meta ds:text-destructive\"\n >\n {outOfRangeLabel}\n </span>\n ) : null}\n\n {/* Apply button */}\n <button\n type=\"button\"\n onClick={handleApply}\n disabled={!draftDate || rangeError}\n className={applyButtonVariants({ size })}\n >\n {applyLabel}\n </button>\n </div>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n },\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n"],"names":["setHours","date","hours","options","_date","toDate","setMinutes","minutes","date_","getTimezoneLabel","locale","timezone","opts","_a","p","tzDiffersFromBrowser","browserTz","applyButtonVariants","cva","DateTimePicker","forwardRef","value","defaultValue","onChange","showTimezoneProp","minDate","maxDate","hour12","minuteStep","size","disabled","placeholder","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","effectiveDisabled","effectiveTone","getDateFnsLocale","placeholderText","applyLabel","outOfRangeLabel","timezoneLabel","isControlled","internalValue","setInternalValue","useState","currentValue","draftDate","setDraftDate","open","setOpen","month","setMonth","rangeError","setRangeError","triggerRef","useRef","emit","useCallback","disabledMatcher","buildDisabledMatcher","isInRange","isBefore","isAfter","handleOpenChange","nextOpen","handleDaySelect","prev","merged","handleTimeChange","time","handleApply","displayText","fnsFormat","calendarLabel","timeLabel","jsx","Popover","jsxs","triggerVariants","calendarIconVariants","Calendar","popoverContentVariants","DayPicker","CalendarChevron","TimePicker"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"date-time-picker-CmGiTU__.js","sources":["../../node_modules/date-fns/setHours.js","../../node_modules/date-fns/setMinutes.js","../../src/components/date-time-picker/date-time-picker.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(hours);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n const date_ = toDate(date, options?.in);\n date_.setMinutes(minutes);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as Popover from '@radix-ui/react-popover';\nimport { DayPicker } from 'react-day-picker';\nimport {\n format as fnsFormat,\n isBefore,\n isAfter,\n setHours,\n setMinutes,\n} from 'date-fns';\nimport { Calendar } from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport {\n getDateFnsLocale,\n buildDisabledMatcher,\n CalendarChevron,\n triggerVariants,\n calendarIconVariants,\n popoverContentVariants,\n} from '../_shared';\nimport { TimePicker } from '../time-picker/time-picker';\nimport type { TimeValue } from '../_shared/time';\nimport '../../tokens/themes/bridges/react-day-picker.css';\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/** Get timezone short name. */\nfunction getTimezoneLabel(locale: string, timezone?: string): string {\n try {\n const opts: Intl.DateTimeFormatOptions = { timeZoneName: 'short' };\n if (timezone && timezone !== 'local') {\n opts.timeZone = timezone === 'utc' ? 'UTC' : timezone;\n }\n const parts = new Intl.DateTimeFormat(locale, opts).formatToParts(new Date());\n return parts.find((p) => p.type === 'timeZoneName')?.value ?? '';\n } catch {\n return '';\n }\n}\n\n/** Check if a timezone differs from the browser's. */\nfunction tzDiffersFromBrowser(timezone?: string): boolean {\n if (!timezone || timezone === 'local') return false;\n try {\n const browserTz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (timezone === 'utc') return browserTz !== 'UTC';\n return browserTz !== timezone;\n } catch {\n return false;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA variants */\n/* -------------------------------------------------------------------------- */\n\nconst applyButtonVariants = cva(\n [\n 'ds:w-full ds:rounded-[var(--radius-sm)]',\n 'ds:bg-primary ds:text-primary-foreground',\n 'ds:hover:bg-primary-hover ds:cursor-pointer',\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 ].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 },\n defaultVariants: { size: 'md' },\n },\n);\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface DateTimePickerProps\n extends Pick<VariantProps<typeof triggerVariants>, 'size'> {\n /** Current datetime — controlled. */\n value?: Date;\n /** Default datetime — uncontrolled. */\n defaultValue?: Date;\n /** Called when the datetime changes. */\n onChange?: (date: Date | undefined) => void;\n /** Timezone — IANA string, 'local', or 'utc'. */\n timezone?: string;\n /** Show timezone annotation. Defaults to true when tz differs from browser. */\n showTimezone?: boolean;\n /** Minimum datetime. */\n minDate?: Date;\n /** Maximum datetime. */\n maxDate?: Date;\n /** Force 12h/24h mode. */\n hour12?: boolean;\n /** Minute step for TimePicker. */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Placeholder text. */\n placeholder?: string;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const DateTimePicker = forwardRef<HTMLDivElement, DateTimePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n timezone,\n showTimezone: showTimezoneProp,\n minDate,\n maxDate,\n hour12,\n minuteStep = 1,\n size = 'md',\n disabled,\n placeholder,\n className,\n id,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const effectiveId = id ?? ctx.id;\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : 'default';\n\n const locale = getDateFnsLocale(i18n.language);\n const placeholderText =\n placeholder ?? t('ui.inputs.dateTimePicker.placeholder', 'Select date and time');\n const applyLabel = t('ui.inputs.dateTimePicker.apply', 'Apply');\n const outOfRangeLabel = t(\n 'ui.inputs.dateTimePicker.outOfRange',\n 'Date/time is out of allowed range',\n );\n\n const showTimezone =\n showTimezoneProp !== undefined ? showTimezoneProp : tzDiffersFromBrowser(timezone);\n const timezoneLabel = showTimezone\n ? getTimezoneLabel(i18n.language, timezone)\n : '';\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<Date | undefined>(\n value ?? defaultValue,\n );\n const currentValue = isControlled ? value : internalValue;\n\n // Draft state while popover is open\n const [draftDate, setDraftDate] = useState<Date | undefined>(currentValue);\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date>(currentValue ?? new Date());\n const [rangeError, setRangeError] = useState(false);\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const emit = useCallback(\n (date: Date | undefined) => {\n if (!isControlled) setInternalValue(date);\n onChange?.(date);\n },\n [isControlled, onChange],\n );\n\n const disabledMatcher = buildDisabledMatcher(minDate, maxDate);\n\n /** Check if a full datetime is within range. */\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (minDate && isBefore(date, minDate)) return false;\n if (maxDate && isAfter(date, maxDate)) return false;\n return true;\n },\n [minDate, maxDate],\n );\n\n // Sync draft when popover opens\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen) {\n setDraftDate(currentValue ?? new Date());\n setMonth(currentValue ?? new Date());\n setRangeError(false);\n }\n setOpen(nextOpen);\n };\n\n const handleDaySelect = (date: Date | undefined) => {\n if (!date) return;\n const prev = draftDate ?? new Date();\n const merged = setMinutes(setHours(date, prev.getHours()), prev.getMinutes());\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleTimeChange = (time: TimeValue) => {\n const prev = draftDate ?? new Date();\n const merged = setMinutes(setHours(prev, time.hours), time.minutes);\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleApply = () => {\n if (!draftDate) return;\n if (!isInRange(draftDate)) {\n setRangeError(true);\n return;\n }\n emit(draftDate);\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n // Format display text\n const displayText = currentValue\n ? fnsFormat(currentValue, 'MMM d, yyyy HH:mm', { locale })\n : '';\n\n const calendarLabel = t('ui.inputs.datePicker.gridLabel', 'Calendar');\n const timeLabel = t('ui.inputs.timePicker.groupLabel', 'Time');\n\n return (\n <Popover.Root open={open} onOpenChange={handleOpenChange}>\n <div ref={ref} className={className} data-component=\"date-time-picker\">\n <Popover.Trigger asChild disabled={effectiveDisabled}>\n <button\n ref={triggerRef}\n id={effectiveId}\n type=\"button\"\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `<button>` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={triggerVariants({ size, tone: effectiveTone })}\n >\n <span className={displayText ? 'ds:text-foreground' : 'ds:text-muted-foreground'}>\n {displayText || placeholderText}\n </span>\n <span aria-hidden=\"true\" className={calendarIconVariants({ size })}>\n <Calendar />\n </span>\n </button>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n sideOffset={4}\n align=\"start\"\n className={popoverContentVariants()}\n >\n <div className=\"ds:flex ds:flex-col ds:sm:flex-row ds:gap-[var(--spacing-md)]\">\n {/* Calendar region */}\n <div role=\"region\" aria-label={calendarLabel}>\n <DayPicker\n mode=\"single\"\n selected={draftDate}\n onSelect={handleDaySelect}\n month={month}\n onMonthChange={setMonth}\n disabled={disabledMatcher}\n locale={locale}\n showOutsideDays\n fixedWeeks\n components={{ Chevron: CalendarChevron }}\n />\n </div>\n\n {/* Time + Apply region */}\n <div\n role=\"region\"\n aria-label={timeLabel}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:sm:border-s ds:sm:border-border ds:sm:ps-[var(--spacing-md)] ds:min-w-[10rem]\"\n >\n <TimePicker\n value={\n draftDate\n ? { hours: draftDate.getHours(), minutes: draftDate.getMinutes() }\n : { hours: 0, minutes: 0 }\n }\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n size={size}\n />\n\n {/* Timezone annotation */}\n {timezoneLabel ? (\n <span\n className=\"type-meta ds:text-muted-foreground\"\n >\n {timezoneLabel}\n </span>\n ) : null}\n\n {/* Range error */}\n {rangeError ? (\n <span\n role=\"alert\"\n className=\"type-meta ds:text-destructive\"\n >\n {outOfRangeLabel}\n </span>\n ) : null}\n\n {/* Apply button */}\n <button\n type=\"button\"\n onClick={handleApply}\n disabled={!draftDate || rangeError}\n className={applyButtonVariants({ size })}\n >\n {applyLabel}\n </button>\n </div>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n },\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n"],"names":["setHours","date","hours","options","_date","toDate","setMinutes","minutes","date_","getTimezoneLabel","locale","timezone","opts","_a","p","tzDiffersFromBrowser","browserTz","applyButtonVariants","cva","DateTimePicker","forwardRef","value","defaultValue","onChange","showTimezoneProp","minDate","maxDate","hour12","minuteStep","size","disabled","placeholder","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","effectiveDisabled","effectiveTone","getDateFnsLocale","placeholderText","applyLabel","outOfRangeLabel","timezoneLabel","isControlled","internalValue","setInternalValue","useState","currentValue","draftDate","setDraftDate","open","setOpen","month","setMonth","rangeError","setRangeError","triggerRef","useRef","emit","useCallback","disabledMatcher","buildDisabledMatcher","isInRange","isBefore","isAfter","handleOpenChange","nextOpen","handleDaySelect","prev","merged","handleTimeChange","time","handleApply","displayText","fnsFormat","calendarLabel","timeLabel","jsx","Popover","jsxs","triggerVariants","calendarIconVariants","Calendar","popoverContentVariants","DayPicker","CalendarChevron","TimePicker"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -2,7 +2,7 @@ import { jsx as i, jsxs as C } from "react/jsx-runtime";
2
2
  import { forwardRef as n, useContext as V, useState as u, useCallback as k, createContext as R } from "react";
3
3
  import { c as d } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as _ } from "react-i18next";
5
- import { I as T } from "./icon-button-SWpSs9S6.js";
5
+ import { I as T } from "./icon-button-CNjWCD1X.js";
6
6
  import { C as P } from "./check-DPdL_Sm7.js";
7
7
  import { C as j } from "./copy-B00HK7tj.js";
8
8
  const f = R({
@@ -88,6 +88,7 @@ const f = R({
88
88
  {
89
89
  ref: m,
90
90
  className: A({ layout: e, density: s, divider: a, className: t }),
91
+ "data-component": "description-list",
91
92
  ...c,
92
93
  children: l
93
94
  }
@@ -184,4 +185,4 @@ const J = Object.assign(v, {
184
185
  export {
185
186
  J as D
186
187
  };
187
- //# sourceMappingURL=description-list-Bk3p71qY.js.map
188
+ //# sourceMappingURL=description-list-C_1NX8P3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-list-C_1NX8P3.js","sources":["../../src/components/description-list/description-list.tsx"],"sourcesContent":["import { createContext, forwardRef, useCallback, useContext, useState } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Copy, Check } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface DescriptionListContextShape {\n layout: 'inline' | 'stacked' | 'responsive';\n density: 'default' | 'compact';\n divider: 'none' | 'between' | 'bordered';\n}\n\nconst DescriptionListContext = createContext<DescriptionListContextShape>({\n layout: 'inline',\n density: 'default',\n divider: 'none',\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — root <dl> */\n/* ------------------------------------------------------------------ */\n\nconst descriptionListVariants = cva('ds:flex ds:flex-col', {\n variants: {\n layout: {\n inline: '',\n stacked: '',\n responsive: '',\n },\n density: {\n default: 'ds:gap-[var(--spacing-md)]',\n compact: 'ds:gap-[var(--spacing-sm)]',\n },\n divider: {\n none: '',\n between: '',\n bordered: '',\n },\n },\n defaultVariants: {\n layout: 'inline',\n density: 'default',\n divider: 'none',\n },\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — row <div> */\n/* ------------------------------------------------------------------ */\n\nconst descriptionListRowVariants = cva('', {\n variants: {\n layout: {\n inline: 'ds:grid ds:gap-[var(--spacing-md)]',\n stacked: 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n responsive:\n 'ds:grid ds:gap-[var(--spacing-md)] ds:max-sm:flex ds:max-sm:flex-col ds:max-sm:gap-[var(--spacing-xs)]',\n },\n divider: {\n none: '',\n between:\n 'ds:[&:not(:last-child)]:border-b ds:[&:not(:last-child)]:border-[color:var(--border)] ds:[&:not(:last-child)]:pb-[var(--spacing-md)]',\n bordered:\n 'ds:border ds:border-[color:var(--border)] ds:rounded-[var(--radius-sm)] ds:p-[var(--spacing-sm)]',\n },\n copyable: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n layout: 'inline',\n copyable: false,\n className: 'ds:grid-cols-[minmax(0,1fr)_minmax(0,2fr)]',\n },\n {\n layout: 'inline',\n copyable: true,\n className: 'ds:grid-cols-[minmax(0,1fr)_minmax(0,2fr)_auto]',\n },\n {\n layout: 'responsive',\n copyable: false,\n className: 'ds:grid-cols-[minmax(0,1fr)_minmax(0,2fr)]',\n },\n {\n layout: 'responsive',\n copyable: true,\n className: 'ds:grid-cols-[minmax(0,1fr)_minmax(0,2fr)_auto]',\n },\n ],\n defaultVariants: {\n layout: 'inline',\n divider: 'none',\n copyable: false,\n },\n});\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface DescriptionListProps extends React.HTMLAttributes<HTMLDListElement> {\n layout?: 'inline' | 'stacked' | 'responsive';\n density?: 'default' | 'compact';\n divider?: 'none' | 'between' | 'bordered';\n}\n\nexport interface DescriptionListRowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, shows a copy-to-clipboard button using KeyValuePair's established mechanism */\n copyable?: boolean;\n /** Text written to the clipboard when copyable=true */\n copyText?: string;\n /** Label used in the copy button's aria-label: \"Copy {copyLabel}\". Falls back to copyText. */\n copyLabel?: string;\n}\n\nexport interface DescriptionListTermProps extends React.HTMLAttributes<HTMLElement> {}\n\nexport interface DescriptionListDetailProps extends React.HTMLAttributes<HTMLElement> {\n /** Right-aligns numeric values via text-end */\n numeric?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root — <dl> */\n/* ------------------------------------------------------------------ */\n\nconst DescriptionListRoot = forwardRef<HTMLDListElement, DescriptionListProps>(\n (\n {\n layout = 'inline',\n density = 'default',\n divider = 'none',\n className,\n children,\n ...props\n },\n ref,\n ) => (\n <DescriptionListContext.Provider value={{ layout, density, divider }}>\n <dl\n ref={ref}\n className={descriptionListVariants({ layout, density, divider, className })}\n data-component=\"description-list\"\n {...props}\n >\n {children}\n </dl>\n </DescriptionListContext.Provider>\n ),\n);\nDescriptionListRoot.displayName = 'DescriptionList';\n\n/* ------------------------------------------------------------------ */\n/* Row — <div> that groups a <dt> with its <dd>(s) */\n/* ------------------------------------------------------------------ */\n\nconst DescriptionListRow = forwardRef<HTMLDivElement, DescriptionListRowProps>(\n (\n {\n copyable = false,\n copyText,\n copyLabel,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { layout, divider } = useContext(DescriptionListContext);\n const { t } = useTranslation();\n const [copied, setCopied] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n\n const handleCopy = useCallback(async () => {\n if (!copyText) {\n if (import.meta.env.DEV) {\n console.warn(\n 'DescriptionList.Row: copyable=true but no copyText provided. Copy is a no-op.',\n );\n }\n return;\n }\n try {\n await navigator.clipboard.writeText(copyText);\n setCopied(true);\n setAnnouncement(t('ui.keyValuePair.copied'));\n setTimeout(() => {\n setCopied(false);\n setAnnouncement('');\n }, 2000);\n } catch {\n setAnnouncement(t('ui.keyValuePair.notAvailable'));\n setTimeout(() => setAnnouncement(''), 3000);\n }\n }, [copyText, t]);\n\n const ariaLabel = t('ui.keyValuePair.copy', { label: copyLabel ?? copyText ?? '' });\n\n return (\n <div\n ref={ref}\n className={descriptionListRowVariants({ layout, divider, copyable, className })}\n {...props}\n >\n {children}\n {copyable && (\n <IconButton\n icon={copied ? <Check /> : <Copy />}\n size=\"sm\"\n aria-label={ariaLabel}\n onClick={handleCopy}\n intent=\"ghost\"\n className=\"ds:self-start\"\n />\n )}\n {copyable && (\n <span role=\"status\" className=\"ds:sr-only\">\n {announcement}\n </span>\n )}\n </div>\n );\n },\n);\nDescriptionListRow.displayName = 'DescriptionList.Row';\n\n/* ------------------------------------------------------------------ */\n/* CVA — term <dt> */\n/* ------------------------------------------------------------------ */\n\nconst descriptionListTermVariants = cva(\n 'type-label ds:text-[color:var(--muted-foreground)] ds:text-start ds:[overflow-wrap:anywhere] ds:[word-break:normal]',\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — detail <dd> */\n/* ------------------------------------------------------------------ */\n\nconst descriptionListDetailVariants = cva(\n 'type-body ds:text-[color:var(--foreground)] ds:m-0 ds:[overflow-wrap:anywhere] ds:[word-break:normal]',\n {\n variants: {\n numeric: {\n true: 'ds:text-end',\n false: 'ds:text-start',\n },\n },\n defaultVariants: {\n numeric: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Term — <dt> */\n/* ------------------------------------------------------------------ */\n\nconst DescriptionListTerm = forwardRef<HTMLElement, DescriptionListTermProps>(\n ({ className, ...props }, ref) => (\n <dt\n ref={ref as React.Ref<HTMLElement>}\n className={descriptionListTermVariants({ className })}\n {...props}\n />\n ),\n);\nDescriptionListTerm.displayName = 'DescriptionList.Term';\n\n/* ------------------------------------------------------------------ */\n/* Detail — <dd> */\n/* ------------------------------------------------------------------ */\n\nconst DescriptionListDetail = forwardRef<HTMLElement, DescriptionListDetailProps>(\n ({ numeric = false, className, ...props }, ref) => (\n <dd\n ref={ref as React.Ref<HTMLElement>}\n className={descriptionListDetailVariants({ numeric, className })}\n {...props}\n />\n ),\n);\nDescriptionListDetail.displayName = 'DescriptionList.Detail';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const DescriptionList = Object.assign(DescriptionListRoot, {\n Row: DescriptionListRow,\n Term: DescriptionListTerm,\n Detail: DescriptionListDetail,\n});\n"],"names":["DescriptionListContext","createContext","descriptionListVariants","cva","descriptionListRowVariants","DescriptionListRoot","forwardRef","layout","density","divider","className","children","props","ref","jsx","DescriptionListRow","copyable","copyText","copyLabel","useContext","t","useTranslation","copied","setCopied","useState","announcement","setAnnouncement","handleCopy","useCallback","ariaLabel","jsxs","IconButton","Check","Copy","descriptionListTermVariants","descriptionListDetailVariants","DescriptionListTerm","DescriptionListDetail","numeric","DescriptionList"],"mappings":";;;;;;;AAgBA,MAAMA,IAAyBC,EAA2C;AAAA,EACxE,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX,CAAC,GAMKC,IAA0BC,EAAI,uBAAuB;AAAA,EACzD,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,IAAA;AAAA,IAEd,SAAS;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,IAAA;AAAA,IAEX,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,IAAA;AAAA,EACZ;AAAA,EAEF,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAEb,CAAC,GAMKC,IAA6BD,EAAI,IAAI;AAAA,EACzC,UAAU;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YACE;AAAA,IAAA;AAAA,IAEJ,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SACE;AAAA,MACF,UACE;AAAA,IAAA;AAAA,IAEJ,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT;AAAA,EAEF,kBAAkB;AAAA,IAChB;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,EAAA;AAEd,CAAC,GAgCKE,IAAsBC;AAAA,EAC1B,CACE;AAAA,IACE,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAEA,gBAAAC,EAACd,EAAuB,UAAvB,EAAgC,OAAO,EAAE,QAAAO,GAAQ,SAAAC,GAAS,SAAAC,EAAA,GACzD,UAAA,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWX,EAAwB,EAAE,QAAAK,GAAQ,SAAAC,GAAS,SAAAC,GAAS,WAAAC,GAAW;AAAA,MAC1E,kBAAe;AAAA,MACd,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AACAN,EAAoB,cAAc;AAMlC,MAAMU,IAAqBT;AAAA,EACzB,CACE;AAAA,IACE,UAAAU,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAR;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,QAAAN,GAAQ,SAAAE,MAAYU,EAAWnB,CAAsB,GACvD,EAAE,GAAAoB,EAAA,IAAMC,EAAA,GACR,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpC,CAACC,GAAcC,CAAe,IAAIF,EAAS,EAAE,GAE7CG,IAAaC,EAAY,YAAY;AACzC,UAAKX;AAQL,YAAI;AACF,gBAAM,UAAU,UAAU,UAAUA,CAAQ,GAC5CM,EAAU,EAAI,GACdG,EAAgBN,EAAE,wBAAwB,CAAC,GAC3C,WAAW,MAAM;AACf,YAAAG,EAAU,EAAK,GACfG,EAAgB,EAAE;AAAA,UACpB,GAAG,GAAI;AAAA,QACT,QAAQ;AACN,UAAAA,EAAgBN,EAAE,8BAA8B,CAAC,GACjD,WAAW,MAAMM,EAAgB,EAAE,GAAG,GAAI;AAAA,QAC5C;AAAA,IACF,GAAG,CAACT,GAAUG,CAAC,CAAC,GAEVS,IAAYT,EAAE,wBAAwB,EAAE,OAAOF,KAAaD,KAAY,IAAI;AAElF,WACE,gBAAAa;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAjB;AAAA,QACA,WAAWT,EAA2B,EAAE,QAAAG,GAAQ,SAAAE,GAAS,UAAAO,GAAU,WAAAN,GAAW;AAAA,QAC7E,GAAGE;AAAA,QAEH,UAAA;AAAA,UAAAD;AAAA,UACAK,KACC,gBAAAF;AAAA,YAACiB;AAAA,YAAA;AAAA,cACC,MAAMT,IAAS,gBAAAR,EAACkB,GAAA,CAAA,CAAM,sBAAMC,GAAA,EAAK;AAAA,cACjC,MAAK;AAAA,cACL,cAAYJ;AAAA,cACZ,SAASF;AAAA,cACT,QAAO;AAAA,cACP,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAGbX,KACC,gBAAAF,EAAC,QAAA,EAAK,MAAK,UAAS,WAAU,cAC3B,UAAAW,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AACAV,EAAmB,cAAc;AAMjC,MAAMmB,IAA8B/B;AAAA,EAClC;AACF,GAMMgC,IAAgChC;AAAA,EACpC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAMMiC,IAAsB9B;AAAA,EAC1B,CAAC,EAAE,WAAAI,GAAW,GAAGE,EAAA,GAASC,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWqB,EAA4B,EAAE,WAAAxB,GAAW;AAAA,MACnD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AACAwB,EAAoB,cAAc;AAMlC,MAAMC,IAAwB/B;AAAA,EAC5B,CAAC,EAAE,SAAAgC,IAAU,IAAO,WAAA5B,GAAW,GAAGE,EAAA,GAASC,MACzC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWsB,EAA8B,EAAE,SAAAG,GAAS,WAAA5B,GAAW;AAAA,MAC9D,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AACAyB,EAAsB,cAAc;AAM7B,MAAME,IAAkB,OAAO,OAAOlC,GAAqB;AAAA,EAChE,KAAKU;AAAA,EACL,MAAMqB;AAAA,EACN,QAAQC;AACV,CAAC;"}
@@ -3,7 +3,7 @@ import { forwardRef as d } from "react";
3
3
  import * as s from "@radix-ui/react-dialog";
4
4
  import { c as h } from "./index-D2ZczOXr.js";
5
5
  import { useTranslation as w } from "react-i18next";
6
- import { I as C } from "./icon-button-SWpSs9S6.js";
6
+ import { I as C } from "./icon-button-CNjWCD1X.js";
7
7
  import { X as T } from "./x-CCcI3eJp.js";
8
8
  const j = [
9
9
  "fixed inset-0 z-[var(--z-modal-backdrop)]",
@@ -144,4 +144,4 @@ export {
144
144
  S as D,
145
145
  F as d
146
146
  };
147
- //# sourceMappingURL=dialog.agent-CtMkDinJ.js.map
147
+ //# sourceMappingURL=dialog.agent-C2lP9H0h.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.agent-CtMkDinJ.js","sources":["../../src/components/dialog/dialog.tsx","../../src/components/dialog/dialog.agent.ts"],"sourcesContent":["import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixDialog from '@radix-ui/react-dialog';\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\nconst OVERLAY_CLASSES = [\n 'fixed inset-0 z-[var(--z-modal-backdrop)]',\n 'bg-[var(--background)]/[var(--opacity-70)]',\n 'backdrop-blur-sm',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n 'duration-[var(--animation-duration)] motion-reduce:transition-none',\n].join(' ');\n\nconst CONTENT_BASE = [\n 'fixed z-[var(--z-modal)]',\n 'bg-[var(--popover)] text-[var(--popover-foreground)]',\n 'shadow-[var(--shadow-xl)]',\n 'p-[var(--spacing-lg)]',\n 'focus-visible:outline-none',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'duration-[var(--animation-duration)] motion-reduce:transition-none',\n].join(' ');\n\nconst CENTERED = 'start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[calc(100%-var(--spacing-lg)*2)]';\n\nconst contentVariants = cva(CONTENT_BASE, {\n variants: {\n size: {\n sm: `${CENTERED} ds:max-w-[448px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n md: `${CENTERED} ds:max-w-[560px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n lg: `${CENTERED} ds:max-w-[720px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n fullscreen: 'ds:start-0 ds:top-0 ds:w-[100dvw] ds:h-[100dvh] ds:max-w-none ds:rounded-none ds:overflow-y-auto',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst DialogRoot = ({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof RadixDialog.Root>) => (\n <RadixDialog.Root {...props}>{children}</RadixDialog.Root>\n);\nDialogRoot.displayName = 'Dialog.Root';\n\nconst DialogTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Trigger ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n));\nDialogTrigger.displayName = 'Dialog.Trigger';\n\nconst DialogClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nDialogClose.displayName = 'Dialog.Close';\n\nexport interface DialogContentProps\n extends Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'role'>,\n VariantProps<typeof contentVariants> {\n size?: 'sm' | 'md' | 'lg' | 'fullscreen';\n variant?: 'default' | 'alert' | 'confirmation';\n hideCloseButton?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n size = 'md',\n variant = 'default',\n hideCloseButton = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const role = variant === 'alert' ? 'alertdialog' : undefined;\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay className={OVERLAY_CLASSES} />\n <RadixDialog.Content\n ref={ref}\n role={role}\n className={contentVariants({ size, className })}\n {...props}\n >\n {children}\n\n {!hideCloseButton && (\n <div className=\"ds:absolute ds:end-[var(--spacing-md)] ds:top-[var(--spacing-md)]\">\n <RadixDialog.Close asChild>\n <IconButton\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('ui.common.close', 'Close')}\n />\n </RadixDialog.Close>\n </div>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\nconst DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:pe-[var(--spacing-xl)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = 'Dialog.Header';\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogTitle.displayName = 'Dialog.Title';\n\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Description>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Description\n ref={ref}\n className={['type-body-sm ds:text-[var(--muted-foreground)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogDescription.displayName = 'Dialog.Description';\n\ninterface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n divider?: boolean;\n}\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, divider = false, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:mt-[var(--spacing-md)]',\n divider && 'ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = 'Dialog.Footer';\n\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\nexport type { DialogFooterProps };\n","import type { AgentAdapter } from '../../agent/types';\n\n/**\n * Dialog wraps Radix Dialog. Opening / closing is consumer-controlled via\n * `open` + `onOpenChange` props — there is no imperative handle. The agent\n * surface here is declarative: the kit emits `data-component=\"dialog\"` so a\n * future MCP UI bridge can locate live dialogs, and the host pattern owns\n * how the dialog opens / dismisses.\n */\nexport const dialogAgent: AgentAdapter<unknown> = {\n id: 'dialog',\n capabilities: ['open', 'close', 'dismiss'],\n state: {},\n actions: {},\n domHooks: {\n root: { attr: 'data-component', value: 'dialog' },\n },\n};\n"],"names":["OVERLAY_CLASSES","CONTENT_BASE","CENTERED","contentVariants","cva","DialogRoot","children","props","RadixDialog","DialogTrigger","forwardRef","ref","jsx","DialogClose","DialogContent","size","variant","hideCloseButton","className","t","useTranslation","role","jsxs","IconButton","X","DialogHeader","DialogTitle","DialogDescription","DialogFooter","divider","Dialog","dialogAgent"],"mappings":";;;;;;;AAYA,MAAMA,IAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,IAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,IAAW,0FAEXC,IAAkBC,EAAIH,GAAc;AAAA,EACxC,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI,GAAGC,CAAQ;AAAA,MACf,IAAI,GAAGA,CAAQ;AAAA,MACf,IAAI,GAAGA,CAAQ;AAAA,MACf,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF,iBAAiB,EAAE,MAAM,KAAA;AAC3B,CAAC,GAEKG,IAAa,CAAC;AAAA,EAClB,UAAAC;AAAA,EACA,GAAGC;AACL,wBACGC,EAAY,MAAZ,EAAkB,GAAGD,GAAQ,UAAAD,GAAS;AAEzCD,EAAW,cAAc;AAEzB,MAAMI,IAAgBC,EAGpB,CAAC,EAAE,UAAAJ,GAAU,GAAGC,EAAA,GAASI,MACzB,gBAAAC,EAACJ,EAAY,SAAZ,EAAoB,KAAAG,GAAW,GAAGJ,GAChC,UAAAD,GACH,CACD;AACDG,EAAc,cAAc;AAE5B,MAAMI,IAAcH,EAGlB,CAAC,EAAE,UAAAJ,GAAU,GAAGC,EAAA,GAASI,MACzB,gBAAAC,EAACJ,EAAY,OAAZ,EAAkB,KAAAG,GAAW,GAAGJ,GAC9B,UAAAD,GACH,CACD;AACDO,EAAY,cAAc;AAY1B,MAAMC,IAAgBJ;AAAA,EACpB,CACE;AAAA,IACE,MAAAK,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,iBAAAC,IAAkB;AAAA,IAClB,WAAAC;AAAA,IACA,UAAAZ;AAAA,IACA,GAAGC;AAAA,EAAA,GAELI,MACG;AACH,UAAM,EAAE,GAAAQ,EAAA,IAAMC,EAAA,GACRC,IAAOL,MAAY,UAAU,gBAAgB;AAEnD,WACE,gBAAAM,EAACd,EAAY,QAAZ,EACC,UAAA;AAAA,MAAA,gBAAAI,EAACJ,EAAY,SAAZ,EAAoB,WAAWR,EAAA,CAAiB;AAAA,MACjD,gBAAAsB;AAAA,QAACd,EAAY;AAAA,QAAZ;AAAA,UACC,KAAAG;AAAA,UACA,MAAAU;AAAA,UACA,WAAWlB,EAAgB,EAAE,MAAAY,GAAM,WAAAG,GAAW;AAAA,UAC7C,GAAGX;AAAA,UAEH,UAAA;AAAA,YAAAD;AAAA,YAEA,CAACW,KACA,gBAAAL,EAAC,OAAA,EAAI,WAAU,qEACb,UAAA,gBAAAA,EAACJ,EAAY,OAAZ,EAAkB,SAAO,IACxB,UAAA,gBAAAI;AAAA,cAACW;AAAA,cAAA;AAAA,gBACC,wBAAOC,GAAA,EAAE;AAAA,gBACT,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,cAAYL,EAAE,mBAAmB,OAAO;AAAA,cAAA;AAAA,YAAA,GAE5C,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,GACF;AAAA,EAEJ;AACF;AACAL,EAAc,cAAc;AAE5B,MAAMW,IAAef;AAAA,EACnB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAW,CAAC,4EAA4EO,CAAS,EAC9F,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGX;AAAA,IAAA;AAAA,EAAA;AAGV;AACAkB,EAAa,cAAc;AAE3B,MAAMC,IAAchB,EAGlB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MAC1B,gBAAAC;AAAA,EAACJ,EAAY;AAAA,EAAZ;AAAA,IACC,KAAAG;AAAA,IACA,WAAW,CAAC,kCAAkCO,CAAS,EACpD,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACV,GAAGX;AAAA,EAAA;AACN,CACD;AACDmB,EAAY,cAAc;AAE1B,MAAMC,IAAoBjB,EAGxB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MAC1B,gBAAAC;AAAA,EAACJ,EAAY;AAAA,EAAZ;AAAA,IACC,KAAAG;AAAA,IACA,WAAW,CAAC,kDAAkDO,CAAS,EACpE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACV,GAAGX;AAAA,EAAA;AACN,CACD;AACDoB,EAAkB,cAAc;AAMhC,MAAMC,IAAelB;AAAA,EACnB,CAAC,EAAE,WAAAQ,GAAW,SAAAW,IAAU,IAAO,GAAGtB,EAAA,GAASI,MACzC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACAkB,KAAW;AAAA,QACXX;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGX;AAAA,IAAA;AAAA,EAAA;AAGV;AACAqB,EAAa,cAAc;AAEpB,MAAME,IAAS,OAAO,OAAOzB,GAAY;AAAA,EAC9C,MAAMA;AAAA,EACN,SAASI;AAAA,EACT,SAASK;AAAA,EACT,QAAQW;AAAA,EACR,OAAOC;AAAA,EACP,aAAaC;AAAA,EACb,QAAQC;AAAA,EACR,OAAOf;AACT,CAAC,GChMYkB,IAAqC;AAAA,EAChD,IAAI;AAAA,EACJ,cAAc,CAAC,QAAQ,SAAS,SAAS;AAAA,EACzC,OAAO,CAAA;AAAA,EACP,SAAS,CAAA;AAAA,EACT,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,SAAA;AAAA,EAAS;AAEpD;"}
1
+ {"version":3,"file":"dialog.agent-C2lP9H0h.js","sources":["../../src/components/dialog/dialog.tsx","../../src/components/dialog/dialog.agent.ts"],"sourcesContent":["import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixDialog from '@radix-ui/react-dialog';\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\nconst OVERLAY_CLASSES = [\n 'fixed inset-0 z-[var(--z-modal-backdrop)]',\n 'bg-[var(--background)]/[var(--opacity-70)]',\n 'backdrop-blur-sm',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0',\n 'duration-[var(--animation-duration)] motion-reduce:transition-none',\n].join(' ');\n\nconst CONTENT_BASE = [\n 'fixed z-[var(--z-modal)]',\n 'bg-[var(--popover)] text-[var(--popover-foreground)]',\n 'shadow-[var(--shadow-xl)]',\n 'p-[var(--spacing-lg)]',\n 'focus-visible:outline-none',\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'duration-[var(--animation-duration)] motion-reduce:transition-none',\n].join(' ');\n\nconst CENTERED = 'start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[calc(100%-var(--spacing-lg)*2)]';\n\nconst contentVariants = cva(CONTENT_BASE, {\n variants: {\n size: {\n sm: `${CENTERED} ds:max-w-[448px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n md: `${CENTERED} ds:max-w-[560px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n lg: `${CENTERED} ds:max-w-[720px] ds:rounded-[var(--radius-lg)] ds:overflow-y-auto ds:max-h-[85dvh]`,\n fullscreen: 'ds:start-0 ds:top-0 ds:w-[100dvw] ds:h-[100dvh] ds:max-w-none ds:rounded-none ds:overflow-y-auto',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst DialogRoot = ({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof RadixDialog.Root>) => (\n <RadixDialog.Root {...props}>{children}</RadixDialog.Root>\n);\nDialogRoot.displayName = 'Dialog.Root';\n\nconst DialogTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Trigger ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n));\nDialogTrigger.displayName = 'Dialog.Trigger';\n\nconst DialogClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nDialogClose.displayName = 'Dialog.Close';\n\nexport interface DialogContentProps\n extends Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'role'>,\n VariantProps<typeof contentVariants> {\n size?: 'sm' | 'md' | 'lg' | 'fullscreen';\n variant?: 'default' | 'alert' | 'confirmation';\n hideCloseButton?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n size = 'md',\n variant = 'default',\n hideCloseButton = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const role = variant === 'alert' ? 'alertdialog' : undefined;\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay className={OVERLAY_CLASSES} />\n <RadixDialog.Content\n ref={ref}\n role={role}\n className={contentVariants({ size, className })}\n {...props}\n >\n {children}\n\n {!hideCloseButton && (\n <div className=\"ds:absolute ds:end-[var(--spacing-md)] ds:top-[var(--spacing-md)]\">\n <RadixDialog.Close asChild>\n <IconButton\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('ui.common.close', 'Close')}\n />\n </RadixDialog.Close>\n </div>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\nconst DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:pe-[var(--spacing-xl)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = 'Dialog.Header';\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogTitle.displayName = 'Dialog.Title';\n\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Description>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Description\n ref={ref}\n className={['type-body-sm ds:text-[var(--muted-foreground)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogDescription.displayName = 'Dialog.Description';\n\ninterface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n divider?: boolean;\n}\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, divider = false, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:mt-[var(--spacing-md)]',\n divider && 'ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = 'Dialog.Footer';\n\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\nexport type { DialogFooterProps };\n","import type { AgentAdapter } from '../../agent/types';\n\n/**\n * Dialog wraps Radix Dialog. Opening / closing is consumer-controlled via\n * `open` + `onOpenChange` props — there is no imperative handle. The agent\n * surface here is declarative: the kit emits `data-component=\"dialog\"` so a\n * future MCP UI bridge can locate live dialogs, and the host pattern owns\n * how the dialog opens / dismisses.\n */\nexport const dialogAgent: AgentAdapter<unknown> = {\n id: 'dialog',\n capabilities: ['open', 'close', 'dismiss'],\n state: {},\n actions: {},\n domHooks: {\n root: { attr: 'data-component', value: 'dialog' },\n },\n};\n"],"names":["OVERLAY_CLASSES","CONTENT_BASE","CENTERED","contentVariants","cva","DialogRoot","children","props","RadixDialog","DialogTrigger","forwardRef","ref","jsx","DialogClose","DialogContent","size","variant","hideCloseButton","className","t","useTranslation","role","jsxs","IconButton","X","DialogHeader","DialogTitle","DialogDescription","DialogFooter","divider","Dialog","dialogAgent"],"mappings":";;;;;;;AAYA,MAAMA,IAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,IAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,IAAW,0FAEXC,IAAkBC,EAAIH,GAAc;AAAA,EACxC,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI,GAAGC,CAAQ;AAAA,MACf,IAAI,GAAGA,CAAQ;AAAA,MACf,IAAI,GAAGA,CAAQ;AAAA,MACf,YAAY;AAAA,IAAA;AAAA,EACd;AAAA,EAEF,iBAAiB,EAAE,MAAM,KAAA;AAC3B,CAAC,GAEKG,IAAa,CAAC;AAAA,EAClB,UAAAC;AAAA,EACA,GAAGC;AACL,wBACGC,EAAY,MAAZ,EAAkB,GAAGD,GAAQ,UAAAD,GAAS;AAEzCD,EAAW,cAAc;AAEzB,MAAMI,IAAgBC,EAGpB,CAAC,EAAE,UAAAJ,GAAU,GAAGC,EAAA,GAASI,MACzB,gBAAAC,EAACJ,EAAY,SAAZ,EAAoB,KAAAG,GAAW,GAAGJ,GAChC,UAAAD,GACH,CACD;AACDG,EAAc,cAAc;AAE5B,MAAMI,IAAcH,EAGlB,CAAC,EAAE,UAAAJ,GAAU,GAAGC,EAAA,GAASI,MACzB,gBAAAC,EAACJ,EAAY,OAAZ,EAAkB,KAAAG,GAAW,GAAGJ,GAC9B,UAAAD,GACH,CACD;AACDO,EAAY,cAAc;AAY1B,MAAMC,IAAgBJ;AAAA,EACpB,CACE;AAAA,IACE,MAAAK,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,iBAAAC,IAAkB;AAAA,IAClB,WAAAC;AAAA,IACA,UAAAZ;AAAA,IACA,GAAGC;AAAA,EAAA,GAELI,MACG;AACH,UAAM,EAAE,GAAAQ,EAAA,IAAMC,EAAA,GACRC,IAAOL,MAAY,UAAU,gBAAgB;AAEnD,WACE,gBAAAM,EAACd,EAAY,QAAZ,EACC,UAAA;AAAA,MAAA,gBAAAI,EAACJ,EAAY,SAAZ,EAAoB,WAAWR,EAAA,CAAiB;AAAA,MACjD,gBAAAsB;AAAA,QAACd,EAAY;AAAA,QAAZ;AAAA,UACC,KAAAG;AAAA,UACA,MAAAU;AAAA,UACA,WAAWlB,EAAgB,EAAE,MAAAY,GAAM,WAAAG,GAAW;AAAA,UAC7C,GAAGX;AAAA,UAEH,UAAA;AAAA,YAAAD;AAAA,YAEA,CAACW,KACA,gBAAAL,EAAC,OAAA,EAAI,WAAU,qEACb,UAAA,gBAAAA,EAACJ,EAAY,OAAZ,EAAkB,SAAO,IACxB,UAAA,gBAAAI;AAAA,cAACW;AAAA,cAAA;AAAA,gBACC,wBAAOC,GAAA,EAAE;AAAA,gBACT,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,cAAYL,EAAE,mBAAmB,OAAO;AAAA,cAAA;AAAA,YAAA,GAE5C,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ,GACF;AAAA,EAEJ;AACF;AACAL,EAAc,cAAc;AAE5B,MAAMW,IAAef;AAAA,EACnB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAW,CAAC,4EAA4EO,CAAS,EAC9F,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGX;AAAA,IAAA;AAAA,EAAA;AAGV;AACAkB,EAAa,cAAc;AAE3B,MAAMC,IAAchB,EAGlB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MAC1B,gBAAAC;AAAA,EAACJ,EAAY;AAAA,EAAZ;AAAA,IACC,KAAAG;AAAA,IACA,WAAW,CAAC,kCAAkCO,CAAS,EACpD,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACV,GAAGX;AAAA,EAAA;AACN,CACD;AACDmB,EAAY,cAAc;AAE1B,MAAMC,IAAoBjB,EAGxB,CAAC,EAAE,WAAAQ,GAAW,GAAGX,EAAA,GAASI,MAC1B,gBAAAC;AAAA,EAACJ,EAAY;AAAA,EAAZ;AAAA,IACC,KAAAG;AAAA,IACA,WAAW,CAAC,kDAAkDO,CAAS,EACpE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACV,GAAGX;AAAA,EAAA;AACN,CACD;AACDoB,EAAkB,cAAc;AAMhC,MAAMC,IAAelB;AAAA,EACnB,CAAC,EAAE,WAAAQ,GAAW,SAAAW,IAAU,IAAO,GAAGtB,EAAA,GAASI,MACzC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACAkB,KAAW;AAAA,QACXX;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGX;AAAA,IAAA;AAAA,EAAA;AAGV;AACAqB,EAAa,cAAc;AAEpB,MAAME,IAAS,OAAO,OAAOzB,GAAY;AAAA,EAC9C,MAAMA;AAAA,EACN,SAASI;AAAA,EACT,SAASK;AAAA,EACT,QAAQW;AAAA,EACR,OAAOC;AAAA,EACP,aAAaC;AAAA,EACb,QAAQC;AAAA,EACR,OAAOf;AACT,CAAC,GChMYkB,IAAqC;AAAA,EAChD,IAAI;AAAA,EACJ,cAAc,CAAC,QAAQ,SAAS,SAAS;AAAA,EACzC,OAAO,CAAA;AAAA,EACP,SAAS,CAAA;AAAA,EACT,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,SAAA;AAAA,EAAS;AAEpD;"}
@@ -2,8 +2,8 @@ import { jsx as s, jsxs as t } from "react/jsx-runtime";
2
2
  import { forwardRef as r } from "react";
3
3
  import * as d from "@radix-ui/react-dropdown-menu";
4
4
  import { c as l } from "./index-D2ZczOXr.js";
5
- import { S as M } from "./separator-BRQHi8s0.js";
6
- import { K as m } from "./kbd-DTcIjYA7.js";
5
+ import { S as M } from "./separator-B4wXDLNC.js";
6
+ import { K as m } from "./kbd-8baVw3KU.js";
7
7
  import { a as j } from "./use-direction-D6rvvG9G.js";
8
8
  import { C as k } from "./chevron-right-BrpYejk0.js";
9
9
  import { C as p } from "./check-DPdL_Sm7.js";
@@ -61,6 +61,7 @@ const T = d.Trigger, G = d.Portal, P = d.Group, L = d.RadioGroup, v = r(({ class
61
61
  ref: n,
62
62
  sideOffset: e,
63
63
  className: u({ className: o }),
64
+ "data-component": "dropdown-menu",
64
65
  ...a
65
66
  }
66
67
  ) }));
@@ -207,4 +208,4 @@ const Q = {
207
208
  export {
208
209
  Q as D
209
210
  };
210
- //# sourceMappingURL=dropdown-menu-BnVUeVG3.js.map
211
+ //# sourceMappingURL=dropdown-menu-2HgU1Emf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu-2HgU1Emf.js","sources":["../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from 'react';\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, ChevronRight } from 'lucide-react';\nimport { Separator as DsSeparator } from '../separator/separator';\nimport { Kbd, type KbdNamedKey } from '../kbd/kbd';\nimport { useDocumentDirection } from '../_shared/use-direction';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst contentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n 'ds:min-w-[8rem]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n // Motion — gated on --animation-duration via Tailwind's animate-in\n // preset. motion-reduce disables via the no-preference query.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:data-[state=open]:zoom-in-95 ds:data-[state=closed]:zoom-out-95',\n 'ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n);\n\nconst itemClasses = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:text-[length:var(--font-size-sm)] ds:text-[color:var(--foreground)]',\n 'ds:cursor-pointer ds:select-none ds:outline-none',\n // Highlighted + hover state\n 'ds:data-[highlighted]:bg-[color:var(--muted)]/40',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n // Disabled\n 'ds:data-[disabled]:opacity-50 ds:data-[disabled]:cursor-not-allowed',\n 'ds:data-[disabled]:pointer-events-none',\n ].join(' '),\n);\n\nconst labelClasses = cva(\n [\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'type-eyebrow ds:text-[color:var(--muted-foreground)]',\n 'ds:select-none',\n ].join(' '),\n);\n\nconst indicatorSlotClasses =\n 'inline-flex items-center justify-center size-4 shrink-0';\n\n/* ------------------------------------------------------------------ */\n/* Root / Trigger / Portal */\n/* ------------------------------------------------------------------ */\n\ntype DropdownMenuRootProps = ComponentPropsWithoutRef<typeof RadixDropdownMenu.Root>;\n\nconst Root = ({ dir, ...props }: DropdownMenuRootProps) => {\n const autoDir = useDocumentDirection();\n return <RadixDropdownMenu.Root dir={dir ?? autoDir} {...props} />;\n};\nRoot.displayName = 'DropdownMenu.Root';\n\nconst Trigger = RadixDropdownMenu.Trigger;\nconst Portal = RadixDropdownMenu.Portal;\nconst RadixGroup = RadixDropdownMenu.Group;\nconst RadixRadioGroup = RadixDropdownMenu.RadioGroup;\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuContentProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.Content>,\n VariantProps<typeof contentVariants> {}\n\nconst Content = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Content>,\n DropdownMenuContentProps\n>(({ className, sideOffset = 8, ...props }, ref) => (\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n className={contentVariants({ className })}\n data-component=\"dropdown-menu\"\n {...props}\n />\n </RadixDropdownMenu.Portal>\n));\nContent.displayName = 'DropdownMenu.Content';\n\n/* ------------------------------------------------------------------ */\n/* Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuItemProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.Item> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n description?: ReactNode;\n /** Convenience — renders a DS <Kbd keys={…}> on the inline-end. */\n shortcut?: Array<KbdNamedKey | string>;\n}\n\nconst Item = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Item>,\n DropdownMenuItemProps\n>(\n (\n { className, startIcon, endIcon, description, shortcut, children, ...props },\n ref,\n ) => (\n <RadixDropdownMenu.Item\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:flex ds:flex-col ds:min-w-0\">\n <span className=\"ds:truncate\">{children}</span>\n {description ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:truncate\">\n {description}\n </span>\n ) : null}\n </span>\n {shortcut ? (\n <span className=\"ds:ms-auto\">\n <Kbd keys={shortcut} size=\"sm\" />\n </span>\n ) : endIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:ms-auto ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {endIcon}\n </span>\n ) : null}\n </RadixDropdownMenu.Item>\n ),\n);\nItem.displayName = 'DropdownMenu.Item';\n\n/* ------------------------------------------------------------------ */\n/* CheckboxItem */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuCheckboxItemProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.CheckboxItem> {}\n\nconst CheckboxItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.CheckboxItem>,\n DropdownMenuCheckboxItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.CheckboxItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n <span className={indicatorSlotClasses}>\n <RadixDropdownMenu.ItemIndicator>\n <Check aria-hidden className=\"ds:size-4\" />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.CheckboxItem>\n));\nCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\n/* ------------------------------------------------------------------ */\n/* RadioGroup / RadioItem */\n/* ------------------------------------------------------------------ */\n\nconst RadioGroup = RadixRadioGroup;\n\nexport interface DropdownMenuRadioItemProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.RadioItem> {}\n\nconst RadioItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.RadioItem>,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.RadioItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n <span className={indicatorSlotClasses}>\n <RadixDropdownMenu.ItemIndicator>\n <Check\n aria-hidden\n className=\"ds:size-4 ds:text-[color:var(--accent)]\"\n />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.RadioItem>\n));\nRadioItem.displayName = 'DropdownMenu.RadioItem';\n\n/* ------------------------------------------------------------------ */\n/* Label */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuLabelProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.Label> {}\n\nconst Label = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Label>,\n DropdownMenuLabelProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Label\n ref={ref}\n className={labelClasses({ className })}\n {...props}\n />\n));\nLabel.displayName = 'DropdownMenu.Label';\n\n/* ------------------------------------------------------------------ */\n/* Separator */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuSeparatorProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.Separator> {}\n\nconst MenuSeparator = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Separator>,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Separator ref={ref} asChild {...props}>\n <DsSeparator\n className={['ds:my-[calc(var(--spacing-xs)/2)]', className ?? '']\n .filter(Boolean)\n .join(' ')}\n />\n </RadixDropdownMenu.Separator>\n));\nMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut — thin wrapper over DS Kbd for the right side of an Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuShortcutProps {\n keys: Array<KbdNamedKey | string>;\n separator?: 'none' | 'plus' | 'then';\n}\n\nconst Shortcut = forwardRef<HTMLSpanElement, DropdownMenuShortcutProps>(\n ({ keys, separator = 'none' }, ref) => (\n <span ref={ref} className=\"ds:ms-auto ds:ps-[var(--spacing-sm)]\">\n <Kbd keys={keys} separator={separator} size=\"sm\" />\n </span>\n ),\n);\nShortcut.displayName = 'DropdownMenu.Shortcut';\n\n/* ------------------------------------------------------------------ */\n/* Sub-menu */\n/* ------------------------------------------------------------------ */\n\nconst Sub = RadixDropdownMenu.Sub;\n\nexport interface DropdownMenuSubTriggerProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.SubTrigger> {\n startIcon?: ReactNode;\n}\n\nconst SubTrigger = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(({ className, startIcon, children, ...props }, ref) => (\n <RadixDropdownMenu.SubTrigger\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n <ChevronRight\n aria-hidden\n className=\"ds:ms-auto ds:size-4 ds:shrink-0 ds:rtl:-scale-x-100\"\n />\n </RadixDropdownMenu.SubTrigger>\n));\nSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\nexport interface DropdownMenuSubContentProps\n extends ComponentPropsWithoutRef<typeof RadixDropdownMenu.SubContent> {}\n\nconst SubContent = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubContent>,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.SubContent\n ref={ref}\n sideOffset={8}\n className={contentVariants({ className })}\n {...props}\n />\n </RadixDropdownMenu.Portal>\n));\nSubContent.displayName = 'DropdownMenu.SubContent';\n\n/* ------------------------------------------------------------------ */\n/* Assembled namespace export */\n/* ------------------------------------------------------------------ */\n\nexport const DropdownMenu = {\n Root,\n Trigger,\n Portal,\n Content,\n Group: RadixGroup,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n Label,\n Separator: MenuSeparator,\n Shortcut,\n Sub,\n SubTrigger,\n SubContent,\n};\n"],"names":["contentVariants","cva","itemClasses","labelClasses","indicatorSlotClasses","Root","dir","props","autoDir","useDocumentDirection","jsx","RadixDropdownMenu","Trigger","Portal","RadixGroup","RadixRadioGroup","Content","forwardRef","className","sideOffset","ref","Item","startIcon","endIcon","description","shortcut","children","jsxs","Kbd","CheckboxItem","Check","RadioGroup","RadioItem","Label","MenuSeparator","DsSeparator","Shortcut","keys","separator","Sub","SubTrigger","ChevronRight","SubContent","DropdownMenu"],"mappings":"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"}
@@ -256,6 +256,7 @@ const C = u(
256
256
  "aria-labelledby": T || !f ? z : void 0,
257
257
  ...L,
258
258
  className: J({ size: s, className: c }),
259
+ "data-component": "empty-state",
259
260
  ...I,
260
261
  children: f ?? /* @__PURE__ */ d(U, { children: [
261
262
  /* @__PURE__ */ d(g, { children: [
@@ -300,4 +301,4 @@ const lt = Object.assign(C, {
300
301
  export {
301
302
  lt as E
302
303
  };
303
- //# sourceMappingURL=empty-state-DPUnQp0A.js.map
304
+ //# sourceMappingURL=empty-state-BHrItOiE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state-DPUnQp0A.js","sources":["../../src/components/empty-state/empty-state.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../button/button';\n\n/* ------------------------------------------------------------------ */\n/* Ref helper */\n/* ------------------------------------------------------------------ */\n\nfunction setRef<T>(ref: Ref<T>, value: T | null) {\n if (!ref) return;\n if (typeof ref === 'function') ref(value);\n else (ref as { current: T | null }).current = value;\n}\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface EmptyStateContextValue {\n size: 'sm' | 'md' | 'lg';\n variant: 'first-use' | 'no-results' | 'error';\n titleId: string;\n registerTitle: () => void;\n}\n\nconst EmptyStateContext = createContext<EmptyStateContextValue>({\n size: 'md',\n variant: 'first-use',\n titleId: '',\n registerTitle: () => {},\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst emptyStateVariants = cva(\n 'ds:flex ds:flex-col ds:items-center ds:text-center ds:max-w-md ds:ms-auto ds:me-auto ds:w-full',\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-md)] ds:gap-[var(--spacing-sm)]',\n md: 'ds:p-[var(--spacing-lg)] ds:gap-[var(--spacing-md)]',\n lg: 'ds:p-[var(--spacing-lg)] ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst illustrationVariants = cva(\n 'ds:flex ds:items-center ds:justify-center ds:flex-shrink-0',\n {\n variants: {\n size: {\n sm: 'ds:w-[80px] ds:h-[80px]',\n md: 'ds:w-[160px] ds:h-[160px]',\n lg: 'ds:w-[240px] ds:h-[240px]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst titleVariants = cva('type-title-card ds:text-[var(--foreground)]', {\n variants: {\n size: {\n sm: 'ds:[--type-title-card-size:var(--font-size-sm)]',\n md: '',\n lg: 'ds:[--type-title-card-size:var(--font-size-xl)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst descriptionVariants = cva('type-body-sm ds:text-[var(--muted-foreground)]', {\n variants: {\n size: {\n sm: 'ds:[--type-body-sm-size:var(--font-size-xs)]',\n md: '',\n lg: 'ds:[--type-body-sm-size:var(--font-size-base)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Built-in illustrations */\n/* ------------------------------------------------------------------ */\n\nfunction FirstUseIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <circle\n cx=\"60\"\n cy=\"60\"\n r=\"50\"\n fill=\"var(--color-violet-50)\"\n stroke=\"var(--color-violet-200)\"\n strokeWidth=\"2\"\n />\n <rect x=\"55\" y=\"30\" width=\"10\" height=\"60\" rx=\"5\" fill=\"var(--color-violet-400)\" />\n <rect x=\"30\" y=\"55\" width=\"60\" height=\"10\" rx=\"5\" fill=\"var(--color-purple-400)\" />\n </svg>\n );\n}\n\nfunction NoResultsIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <circle cx=\"52\" cy=\"52\" r=\"28\" stroke=\"var(--muted)\" strokeWidth=\"6\" />\n <line\n x1=\"72\"\n y1=\"72\"\n x2=\"92\"\n y2=\"92\"\n stroke=\"var(--muted)\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"42\"\n y1=\"52\"\n x2=\"62\"\n y2=\"52\"\n stroke=\"var(--muted-foreground)\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction ErrorIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <path\n d=\"M60 15 L110 95 H10 Z\"\n fill=\"var(--destructive)\"\n fillOpacity=\"0.1\"\n stroke=\"var(--destructive)\"\n strokeOpacity=\"0.4\"\n strokeWidth=\"3\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"56\"\n y=\"45\"\n width=\"8\"\n height=\"26\"\n rx=\"4\"\n fill=\"var(--destructive)\"\n fillOpacity=\"0.6\"\n />\n <circle cx=\"60\" cy=\"82\" r=\"5\" fill=\"var(--destructive)\" fillOpacity=\"0.6\" />\n </svg>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Subcomponents */\n/* ------------------------------------------------------------------ */\n\nconst EmptyStateIllustration = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ children, className, ...props }, ref) => {\n const { size } = useContext(EmptyStateContext);\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={illustrationVariants({ size, className })}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nEmptyStateIllustration.displayName = 'EmptyState.Illustration';\n\nconst EmptyStateTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ children, className, ...props }, ref) => {\n const { size, titleId, registerTitle } = useContext(EmptyStateContext);\n const callbackRef = useCallback(\n (node: HTMLHeadingElement | null) => {\n if (node) registerTitle();\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as { current: HTMLHeadingElement | null }).current = node;\n },\n [ref, registerTitle],\n );\n return (\n <h3\n ref={callbackRef}\n id={titleId}\n className={titleVariants({ size, className })}\n {...props}\n >\n {children}\n </h3>\n );\n },\n);\nEmptyStateTitle.displayName = 'EmptyState.Title';\n\nconst EmptyStateDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ children, className, ...props }, ref) => {\n const { size } = useContext(EmptyStateContext);\n return (\n <p\n ref={ref}\n className={descriptionVariants({ size, className })}\n {...props}\n >\n {children}\n </p>\n );\n});\nEmptyStateDescription.displayName = 'EmptyState.Description';\n\nconst actionsVariants = cva(\n 'ds:flex ds:flex-row ds:flex-wrap ds:items-center ds:justify-center ds:gap-[var(--spacing-md)]',\n);\n\nconst EmptyStateActions = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={actionsVariants({ className })}\n {...props}\n >\n {children}\n </div>\n ),\n);\nEmptyStateActions.displayName = 'EmptyState.Actions';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface EmptyStateProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'title'>,\n VariantProps<typeof emptyStateVariants> {\n variant: 'first-use' | 'no-results' | 'error';\n size?: 'sm' | 'md' | 'lg';\n title?: string;\n description?: string;\n primaryAction?: { label: string; onClick: () => void };\n secondaryAction?: { label: string; onClick: () => void; href?: string };\n autoFocus?: boolean;\n children?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nconst EmptyStateRoot = forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n variant,\n size = 'md',\n title,\n description,\n primaryAction,\n secondaryAction,\n autoFocus = false,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const titleId = useId();\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [hasTitle, setHasTitle] = useState(false);\n const registerTitle = useCallback(() => setHasTitle(true), []);\n\n useEffect(() => {\n if (!autoFocus) return;\n const firstBtn = containerRef.current?.querySelector<HTMLElement>(\n 'button:not([disabled]), a[href]',\n );\n firstBtn?.focus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const roleProps =\n variant === 'no-results'\n ? ({ role: 'status' as const, 'aria-live': 'polite' as const })\n : ({ role: 'region' as const });\n\n const defaultTitle =\n variant === 'first-use'\n ? t('emptyState.firstUse.title')\n : variant === 'no-results'\n ? t('emptyState.noResults.title')\n : t('emptyState.error.title');\n\n const defaultDescription =\n variant === 'first-use'\n ? t('emptyState.firstUse.description')\n : variant === 'no-results'\n ? t('emptyState.noResults.description')\n : t('emptyState.error.description');\n\n const defaultCtaLabel =\n variant === 'first-use'\n ? t('emptyState.firstUse.cta')\n : variant === 'no-results'\n ? t('emptyState.noResults.cta')\n : t('emptyState.error.cta');\n\n const buttonSize = size === 'sm' ? ('sm' as const) : ('md' as const);\n\n const safeHref = (href: string) =>\n /^(https?:\\/\\/|\\/|#)/.test(href) ? href : '#';\n\n return (\n <EmptyStateContext.Provider value={{ size, variant, titleId, registerTitle }}>\n <div\n ref={(node) => {\n containerRef.current = node;\n setRef(ref, node);\n }}\n aria-labelledby={hasTitle || !children ? titleId : undefined}\n {...roleProps}\n className={emptyStateVariants({ size, className })}\n {...props}\n >\n {children ?? (\n <>\n <EmptyStateIllustration>\n {variant === 'first-use' && <FirstUseIllustration />}\n {variant === 'no-results' && <NoResultsIllustration />}\n {variant === 'error' && <ErrorIllustration />}\n </EmptyStateIllustration>\n <EmptyStateTitle>{title ?? defaultTitle}</EmptyStateTitle>\n <EmptyStateDescription>\n {description ?? defaultDescription}\n </EmptyStateDescription>\n {(primaryAction || secondaryAction) && (\n <EmptyStateActions>\n {primaryAction && (\n <Button\n intent=\"primary\"\n size={buttonSize}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label ?? defaultCtaLabel}\n </Button>\n )}\n {secondaryAction &&\n (secondaryAction.href ? (\n <Button intent=\"ghost\" size={buttonSize} asChild>\n <a href={safeHref(secondaryAction.href!)} onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </a>\n </Button>\n ) : (\n <Button\n intent=\"ghost\"\n size={buttonSize}\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n ))}\n </EmptyStateActions>\n )}\n </>\n )}\n </div>\n </EmptyStateContext.Provider>\n );\n },\n);\nEmptyStateRoot.displayName = 'EmptyState';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const EmptyState = Object.assign(EmptyStateRoot, {\n Illustration: EmptyStateIllustration,\n Title: EmptyStateTitle,\n Description: EmptyStateDescription,\n Actions: EmptyStateActions,\n});\n"],"names":["setRef","ref","value","EmptyStateContext","createContext","emptyStateVariants","cva","illustrationVariants","titleVariants","descriptionVariants","FirstUseIllustration","jsxs","jsx","NoResultsIllustration","ErrorIllustration","EmptyStateIllustration","forwardRef","children","className","props","size","useContext","EmptyStateTitle","titleId","registerTitle","callbackRef","useCallback","node","EmptyStateDescription","actionsVariants","EmptyStateActions","EmptyStateRoot","variant","title","description","primaryAction","secondaryAction","autoFocus","t","useTranslation","useId","containerRef","useRef","hasTitle","setHasTitle","useState","useEffect","firstBtn","_a","roleProps","defaultTitle","defaultDescription","defaultCtaLabel","buttonSize","safeHref","href","Fragment","Button","EmptyState"],"mappings":"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"}
1
+ {"version":3,"file":"empty-state-BHrItOiE.js","sources":["../../src/components/empty-state/empty-state.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../button/button';\n\n/* ------------------------------------------------------------------ */\n/* Ref helper */\n/* ------------------------------------------------------------------ */\n\nfunction setRef<T>(ref: Ref<T>, value: T | null) {\n if (!ref) return;\n if (typeof ref === 'function') ref(value);\n else (ref as { current: T | null }).current = value;\n}\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface EmptyStateContextValue {\n size: 'sm' | 'md' | 'lg';\n variant: 'first-use' | 'no-results' | 'error';\n titleId: string;\n registerTitle: () => void;\n}\n\nconst EmptyStateContext = createContext<EmptyStateContextValue>({\n size: 'md',\n variant: 'first-use',\n titleId: '',\n registerTitle: () => {},\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst emptyStateVariants = cva(\n 'ds:flex ds:flex-col ds:items-center ds:text-center ds:max-w-md ds:ms-auto ds:me-auto ds:w-full',\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-md)] ds:gap-[var(--spacing-sm)]',\n md: 'ds:p-[var(--spacing-lg)] ds:gap-[var(--spacing-md)]',\n lg: 'ds:p-[var(--spacing-lg)] ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst illustrationVariants = cva(\n 'ds:flex ds:items-center ds:justify-center ds:flex-shrink-0',\n {\n variants: {\n size: {\n sm: 'ds:w-[80px] ds:h-[80px]',\n md: 'ds:w-[160px] ds:h-[160px]',\n lg: 'ds:w-[240px] ds:h-[240px]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst titleVariants = cva('type-title-card ds:text-[var(--foreground)]', {\n variants: {\n size: {\n sm: 'ds:[--type-title-card-size:var(--font-size-sm)]',\n md: '',\n lg: 'ds:[--type-title-card-size:var(--font-size-xl)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst descriptionVariants = cva('type-body-sm ds:text-[var(--muted-foreground)]', {\n variants: {\n size: {\n sm: 'ds:[--type-body-sm-size:var(--font-size-xs)]',\n md: '',\n lg: 'ds:[--type-body-sm-size:var(--font-size-base)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Built-in illustrations */\n/* ------------------------------------------------------------------ */\n\nfunction FirstUseIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <circle\n cx=\"60\"\n cy=\"60\"\n r=\"50\"\n fill=\"var(--color-violet-50)\"\n stroke=\"var(--color-violet-200)\"\n strokeWidth=\"2\"\n />\n <rect x=\"55\" y=\"30\" width=\"10\" height=\"60\" rx=\"5\" fill=\"var(--color-violet-400)\" />\n <rect x=\"30\" y=\"55\" width=\"60\" height=\"10\" rx=\"5\" fill=\"var(--color-purple-400)\" />\n </svg>\n );\n}\n\nfunction NoResultsIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <circle cx=\"52\" cy=\"52\" r=\"28\" stroke=\"var(--muted)\" strokeWidth=\"6\" />\n <line\n x1=\"72\"\n y1=\"72\"\n x2=\"92\"\n y2=\"92\"\n stroke=\"var(--muted)\"\n strokeWidth=\"6\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"42\"\n y1=\"52\"\n x2=\"62\"\n y2=\"52\"\n stroke=\"var(--muted-foreground)\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction ErrorIllustration() {\n return (\n <svg\n viewBox=\"0 0 120 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n className=\"ds:w-full ds:h-full\"\n >\n <path\n d=\"M60 15 L110 95 H10 Z\"\n fill=\"var(--destructive)\"\n fillOpacity=\"0.1\"\n stroke=\"var(--destructive)\"\n strokeOpacity=\"0.4\"\n strokeWidth=\"3\"\n strokeLinejoin=\"round\"\n />\n <rect\n x=\"56\"\n y=\"45\"\n width=\"8\"\n height=\"26\"\n rx=\"4\"\n fill=\"var(--destructive)\"\n fillOpacity=\"0.6\"\n />\n <circle cx=\"60\" cy=\"82\" r=\"5\" fill=\"var(--destructive)\" fillOpacity=\"0.6\" />\n </svg>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Subcomponents */\n/* ------------------------------------------------------------------ */\n\nconst EmptyStateIllustration = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ children, className, ...props }, ref) => {\n const { size } = useContext(EmptyStateContext);\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={illustrationVariants({ size, className })}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nEmptyStateIllustration.displayName = 'EmptyState.Illustration';\n\nconst EmptyStateTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(\n ({ children, className, ...props }, ref) => {\n const { size, titleId, registerTitle } = useContext(EmptyStateContext);\n const callbackRef = useCallback(\n (node: HTMLHeadingElement | null) => {\n if (node) registerTitle();\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as { current: HTMLHeadingElement | null }).current = node;\n },\n [ref, registerTitle],\n );\n return (\n <h3\n ref={callbackRef}\n id={titleId}\n className={titleVariants({ size, className })}\n {...props}\n >\n {children}\n </h3>\n );\n },\n);\nEmptyStateTitle.displayName = 'EmptyState.Title';\n\nconst EmptyStateDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ children, className, ...props }, ref) => {\n const { size } = useContext(EmptyStateContext);\n return (\n <p\n ref={ref}\n className={descriptionVariants({ size, className })}\n {...props}\n >\n {children}\n </p>\n );\n});\nEmptyStateDescription.displayName = 'EmptyState.Description';\n\nconst actionsVariants = cva(\n 'ds:flex ds:flex-row ds:flex-wrap ds:items-center ds:justify-center ds:gap-[var(--spacing-md)]',\n);\n\nconst EmptyStateActions = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={actionsVariants({ className })}\n {...props}\n >\n {children}\n </div>\n ),\n);\nEmptyStateActions.displayName = 'EmptyState.Actions';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface EmptyStateProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'title'>,\n VariantProps<typeof emptyStateVariants> {\n variant: 'first-use' | 'no-results' | 'error';\n size?: 'sm' | 'md' | 'lg';\n title?: string;\n description?: string;\n primaryAction?: { label: string; onClick: () => void };\n secondaryAction?: { label: string; onClick: () => void; href?: string };\n autoFocus?: boolean;\n children?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nconst EmptyStateRoot = forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n variant,\n size = 'md',\n title,\n description,\n primaryAction,\n secondaryAction,\n autoFocus = false,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const titleId = useId();\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [hasTitle, setHasTitle] = useState(false);\n const registerTitle = useCallback(() => setHasTitle(true), []);\n\n useEffect(() => {\n if (!autoFocus) return;\n const firstBtn = containerRef.current?.querySelector<HTMLElement>(\n 'button:not([disabled]), a[href]',\n );\n firstBtn?.focus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const roleProps =\n variant === 'no-results'\n ? ({ role: 'status' as const, 'aria-live': 'polite' as const })\n : ({ role: 'region' as const });\n\n const defaultTitle =\n variant === 'first-use'\n ? t('emptyState.firstUse.title')\n : variant === 'no-results'\n ? t('emptyState.noResults.title')\n : t('emptyState.error.title');\n\n const defaultDescription =\n variant === 'first-use'\n ? t('emptyState.firstUse.description')\n : variant === 'no-results'\n ? t('emptyState.noResults.description')\n : t('emptyState.error.description');\n\n const defaultCtaLabel =\n variant === 'first-use'\n ? t('emptyState.firstUse.cta')\n : variant === 'no-results'\n ? t('emptyState.noResults.cta')\n : t('emptyState.error.cta');\n\n const buttonSize = size === 'sm' ? ('sm' as const) : ('md' as const);\n\n const safeHref = (href: string) =>\n /^(https?:\\/\\/|\\/|#)/.test(href) ? href : '#';\n\n return (\n <EmptyStateContext.Provider value={{ size, variant, titleId, registerTitle }}>\n <div\n ref={(node) => {\n containerRef.current = node;\n setRef(ref, node);\n }}\n aria-labelledby={hasTitle || !children ? titleId : undefined}\n {...roleProps}\n className={emptyStateVariants({ size, className })}\n data-component=\"empty-state\"\n {...props}\n >\n {children ?? (\n <>\n <EmptyStateIllustration>\n {variant === 'first-use' && <FirstUseIllustration />}\n {variant === 'no-results' && <NoResultsIllustration />}\n {variant === 'error' && <ErrorIllustration />}\n </EmptyStateIllustration>\n <EmptyStateTitle>{title ?? defaultTitle}</EmptyStateTitle>\n <EmptyStateDescription>\n {description ?? defaultDescription}\n </EmptyStateDescription>\n {(primaryAction || secondaryAction) && (\n <EmptyStateActions>\n {primaryAction && (\n <Button\n intent=\"primary\"\n size={buttonSize}\n onClick={primaryAction.onClick}\n >\n {primaryAction.label ?? defaultCtaLabel}\n </Button>\n )}\n {secondaryAction &&\n (secondaryAction.href ? (\n <Button intent=\"ghost\" size={buttonSize} asChild>\n <a href={safeHref(secondaryAction.href!)} onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </a>\n </Button>\n ) : (\n <Button\n intent=\"ghost\"\n size={buttonSize}\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n ))}\n </EmptyStateActions>\n )}\n </>\n )}\n </div>\n </EmptyStateContext.Provider>\n );\n },\n);\nEmptyStateRoot.displayName = 'EmptyState';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const EmptyState = Object.assign(EmptyStateRoot, {\n Illustration: EmptyStateIllustration,\n Title: EmptyStateTitle,\n Description: EmptyStateDescription,\n Actions: EmptyStateActions,\n});\n"],"names":["setRef","ref","value","EmptyStateContext","createContext","emptyStateVariants","cva","illustrationVariants","titleVariants","descriptionVariants","FirstUseIllustration","jsxs","jsx","NoResultsIllustration","ErrorIllustration","EmptyStateIllustration","forwardRef","children","className","props","size","useContext","EmptyStateTitle","titleId","registerTitle","callbackRef","useCallback","node","EmptyStateDescription","actionsVariants","EmptyStateActions","EmptyStateRoot","variant","title","description","primaryAction","secondaryAction","autoFocus","t","useTranslation","useId","containerRef","useRef","hasTitle","setHasTitle","useState","useEffect","firstBtn","_a","roleProps","defaultTitle","defaultDescription","defaultCtaLabel","buttonSize","safeHref","href","Fragment","Button","EmptyState"],"mappings":"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"}
@@ -612,7 +612,7 @@ const Je = xe(
612
612
  }
613
613
  )
614
614
  ] }) : null;
615
- return /* @__PURE__ */ m("div", { children: [
615
+ return /* @__PURE__ */ m("div", { "data-component": "file-upload", children: [
616
616
  he(),
617
617
  ge(),
618
618
  me(),
@@ -646,4 +646,4 @@ export {
646
646
  Je as F,
647
647
  os as f
648
648
  };
649
- //# sourceMappingURL=file-upload.agent-DVMxMeDA.js.map
649
+ //# sourceMappingURL=file-upload.agent-LlC0W468.js.map