@alfadocs/ui-kit-debug 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/_chunks/{agenda-card-CalZqycc.js → agenda-card-DU13wUTA.js} +4 -4
  2. package/dist/_chunks/agenda-card-DU13wUTA.js.map +1 -0
  3. package/dist/_chunks/{agenda-tray-3ffFDQZC.js → agenda-tray-gQUXklO4.js} +9 -9
  4. package/dist/_chunks/agenda-tray-gQUXklO4.js.map +1 -0
  5. package/dist/_chunks/{ai-prompt-input-DLgY8lrW.js → ai-prompt-input-bAJwYu84.js} +45 -45
  6. package/dist/_chunks/ai-prompt-input-bAJwYu84.js.map +1 -0
  7. package/dist/_chunks/{alert-CVMq99Cq.js → alert-pgdXrEO5.js} +2 -2
  8. package/dist/_chunks/{alert-CVMq99Cq.js.map → alert-pgdXrEO5.js.map} +1 -1
  9. package/dist/_chunks/{app-frame-CDJOgPXe.js → app-frame-BYx1gcV7.js} +2 -2
  10. package/dist/_chunks/{app-frame-CDJOgPXe.js.map → app-frame-BYx1gcV7.js.map} +1 -1
  11. package/dist/_chunks/{audio-recorder-cOl_Z_Pk.js → audio-recorder-BHBonrFf.js} +54 -54
  12. package/dist/_chunks/{audio-recorder-cOl_Z_Pk.js.map → audio-recorder-BHBonrFf.js.map} +1 -1
  13. package/dist/_chunks/{audio-visualiser-ByDEFLNm.js → audio-visualiser-I-T4Z7EU.js} +2 -2
  14. package/dist/_chunks/audio-visualiser-I-T4Z7EU.js.map +1 -0
  15. package/dist/_chunks/{autocomplete-D4oUZbsP.js → autocomplete-C34hbfKh.js} +6 -6
  16. package/dist/_chunks/autocomplete-C34hbfKh.js.map +1 -0
  17. package/dist/_chunks/{avatar-Dcr6XuDQ.js → avatar-I10iCDs8.js} +2 -2
  18. package/dist/_chunks/{avatar-Dcr6XuDQ.js.map → avatar-I10iCDs8.js.map} +1 -1
  19. package/dist/_chunks/{badge-DKFbntoa.js → badge-cLYVGlMh.js} +2 -2
  20. package/dist/_chunks/{badge-DKFbntoa.js.map → badge-cLYVGlMh.js.map} +1 -1
  21. package/dist/_chunks/{balance-cell-renderer-BuExGe6u.js → balance-cell-renderer-DWWtX-VM.js} +5 -5
  22. package/dist/_chunks/{balance-cell-renderer-BuExGe6u.js.map → balance-cell-renderer-DWWtX-VM.js.map} +1 -1
  23. package/dist/_chunks/{breadcrumb-D1snXjPb.js → breadcrumb--YI7lcHA.js} +4 -4
  24. package/dist/_chunks/breadcrumb--YI7lcHA.js.map +1 -0
  25. package/dist/_chunks/{button-group-CONver7M.js → button-group-Bh2g_Ng-.js} +2 -2
  26. package/dist/_chunks/button-group-Bh2g_Ng-.js.map +1 -0
  27. package/dist/_chunks/{chat-container-ClzsWXp2.js → chat-container-izziXViv.js} +4 -4
  28. package/dist/_chunks/chat-container-izziXViv.js.map +1 -0
  29. package/dist/_chunks/{chat-message-DoAhgUTj.js → chat-message-g3lxpXM_.js} +2 -2
  30. package/dist/_chunks/{chat-message-DoAhgUTj.js.map → chat-message-g3lxpXM_.js.map} +1 -1
  31. package/dist/_chunks/{checkbox-group-CarPLDIC.js → checkbox-group-Qkm3Rg1S.js} +6 -6
  32. package/dist/_chunks/checkbox-group-Qkm3Rg1S.js.map +1 -0
  33. package/dist/_chunks/{color-picker-CTIcHlDF.js → color-picker-BPfcByHH.js} +13 -13
  34. package/dist/_chunks/color-picker-BPfcByHH.js.map +1 -0
  35. package/dist/_chunks/{combobox-BLWruOxK.js → combobox-DUpWoPPk.js} +6 -6
  36. package/dist/_chunks/combobox-DUpWoPPk.js.map +1 -0
  37. package/dist/_chunks/{contact-card-DNyATxKv.js → contact-card-VJIUqKB2.js} +13 -13
  38. package/dist/_chunks/contact-card-VJIUqKB2.js.map +1 -0
  39. package/dist/_chunks/{date-picker-B1PO1ZQP.js → date-picker-BD5FYW08.js} +3 -3
  40. package/dist/_chunks/{date-picker-B1PO1ZQP.js.map → date-picker-BD5FYW08.js.map} +1 -1
  41. package/dist/_chunks/{date-range-picker-mix2nEVC.js → date-range-picker-BZLVgcXE.js} +27 -27
  42. package/dist/_chunks/date-range-picker-BZLVgcXE.js.map +1 -0
  43. package/dist/_chunks/{date-time-picker-Dnong_BY.js → date-time-picker-CCoRWX7R.js} +5 -5
  44. package/dist/_chunks/date-time-picker-CCoRWX7R.js.map +1 -0
  45. package/dist/_chunks/{description-list-BYA77Yud.js → description-list-y7Hk51KI.js} +16 -16
  46. package/dist/_chunks/description-list-y7Hk51KI.js.map +1 -0
  47. package/dist/_chunks/{dialog-W8uDfXD8.js → dialog-DRp6Dejy.js} +2 -2
  48. package/dist/_chunks/{dialog-W8uDfXD8.js.map → dialog-DRp6Dejy.js.map} +1 -1
  49. package/dist/_chunks/{file-upload-C947ACDK.js → file-upload-BVbfiANR.js} +81 -81
  50. package/dist/_chunks/file-upload-BVbfiANR.js.map +1 -0
  51. package/dist/_chunks/{floating-action-button-C8OYj8mE.js → floating-action-button-pojvb9gG.js} +6 -6
  52. package/dist/_chunks/{floating-action-button-C8OYj8mE.js.map → floating-action-button-pojvb9gG.js.map} +1 -1
  53. package/dist/_chunks/{form-field-Bmkeh7WY.js → form-field-BOm9hK35.js} +2 -2
  54. package/dist/_chunks/form-field-BOm9hK35.js.map +1 -0
  55. package/dist/_chunks/{freemium-paywall-B9kIDtm1.js → freemium-paywall-BTEiVkes.js} +29 -29
  56. package/dist/_chunks/freemium-paywall-BTEiVkes.js.map +1 -0
  57. package/dist/_chunks/{key-value-pair-CgWvAIGb.js → key-value-pair-AbrRwesr.js} +14 -14
  58. package/dist/_chunks/key-value-pair-AbrRwesr.js.map +1 -0
  59. package/dist/_chunks/{leo-sidebar-BWECDYpu.js → leo-sidebar-B054wsZm.js} +8 -8
  60. package/dist/_chunks/{leo-sidebar-BWECDYpu.js.map → leo-sidebar-B054wsZm.js.map} +1 -1
  61. package/dist/_chunks/{link-BcYW1eNM.js → link-BGpwaFik.js} +2 -2
  62. package/dist/_chunks/{link-BcYW1eNM.js.map → link-BGpwaFik.js.map} +1 -1
  63. package/dist/_chunks/{list-qP6p0NTw.js → list-DcjV0m5B.js} +2 -2
  64. package/dist/_chunks/list-DcjV0m5B.js.map +1 -0
  65. package/dist/_chunks/{message-card-DjvsB_3U.js → message-card-c6R0-qXq.js} +6 -6
  66. package/dist/_chunks/message-card-c6R0-qXq.js.map +1 -0
  67. package/dist/_chunks/{message-tray-BbnAzlLH.js → message-tray-Fsend-du.js} +21 -21
  68. package/dist/_chunks/message-tray-Fsend-du.js.map +1 -0
  69. package/dist/_chunks/{multi-select-wqqrgjUQ.js → multi-select-Bh-xR8kP.js} +10 -10
  70. package/dist/_chunks/multi-select-Bh-xR8kP.js.map +1 -0
  71. package/dist/_chunks/{navigation-menu-ClbHeawy.js → navigation-menu-Bav1d_wA.js} +2 -2
  72. package/dist/_chunks/navigation-menu-Bav1d_wA.js.map +1 -0
  73. package/dist/_chunks/{notification-card-uTPEvAQS.js → notification-card-CRIE2Cuk.js} +3 -3
  74. package/dist/_chunks/notification-card-CRIE2Cuk.js.map +1 -0
  75. package/dist/_chunks/{notification-tray-PGtMqXbP.js → notification-tray-CfXNYrxv.js} +21 -21
  76. package/dist/_chunks/notification-tray-CfXNYrxv.js.map +1 -0
  77. package/dist/_chunks/{number-input-Q7wkHnvQ.js → number-input-mpSLk-ld.js} +3 -3
  78. package/dist/_chunks/{number-input-Q7wkHnvQ.js.map → number-input-mpSLk-ld.js.map} +1 -1
  79. package/dist/_chunks/{otp-input-C9gUByF0.js → otp-input-CI-Zv5q6.js} +2 -2
  80. package/dist/_chunks/{otp-input-C9gUByF0.js.map → otp-input-CI-Zv5q6.js.map} +1 -1
  81. package/dist/_chunks/{pagination-3AC4zTsi.js → pagination-OQBlnb1H.js} +7 -7
  82. package/dist/_chunks/pagination-OQBlnb1H.js.map +1 -0
  83. package/dist/_chunks/{patient-shell-IhMULVrt.js → patient-shell-BS2V6V1b.js} +3 -3
  84. package/dist/_chunks/{patient-shell-IhMULVrt.js.map → patient-shell-BS2V6V1b.js.map} +1 -1
  85. package/dist/_chunks/{payment-form-C3HMAsGG.js → payment-form-CI77oIx1.js} +3 -3
  86. package/dist/_chunks/{payment-form-C3HMAsGG.js.map → payment-form-CI77oIx1.js.map} +1 -1
  87. package/dist/_chunks/{pdf-viewer-DO95bm2o.js → pdf-viewer-CNETPubN.js} +3 -3
  88. package/dist/_chunks/{pdf-viewer-DO95bm2o.js.map → pdf-viewer-CNETPubN.js.map} +1 -1
  89. package/dist/_chunks/{phone-input-CSHJOJ13.js → phone-input-DtBVs5fz.js} +7 -7
  90. package/dist/_chunks/phone-input-DtBVs5fz.js.map +1 -0
  91. package/dist/_chunks/{popover-DekUKNBk.js → popover--derJ_wq.js} +2 -2
  92. package/dist/_chunks/{popover-DekUKNBk.js.map → popover--derJ_wq.js.map} +1 -1
  93. package/dist/_chunks/{progress-C11tqhoI.js → progress-B-PSO5OS.js} +4 -4
  94. package/dist/_chunks/progress-B-PSO5OS.js.map +1 -0
  95. package/dist/_chunks/{recaptcha-widget-NyfOfLII.js → recaptcha-widget-Kp1XntuE.js} +3 -3
  96. package/dist/_chunks/recaptcha-widget-Kp1XntuE.js.map +1 -0
  97. package/dist/_chunks/{resizable-mpXXyIsN.js → resizable-COV-cnth.js} +3 -3
  98. package/dist/_chunks/resizable-COV-cnth.js.map +1 -0
  99. package/dist/_chunks/{search-bar-BTDfgYtg.js → search-bar-DmZZ9UvV.js} +2 -2
  100. package/dist/_chunks/{search-bar-BTDfgYtg.js.map → search-bar-DmZZ9UvV.js.map} +1 -1
  101. package/dist/_chunks/{search-input-CdJIEjFo.js → search-input-BBtSRH-Q.js} +4 -4
  102. package/dist/_chunks/{search-input-CdJIEjFo.js.map → search-input-BBtSRH-Q.js.map} +1 -1
  103. package/dist/_chunks/{select-BOU_Osnf.js → select-i9MwQeQy.js} +20 -20
  104. package/dist/_chunks/select-i9MwQeQy.js.map +1 -0
  105. package/dist/_chunks/{sheet-BAg7GY9j.js → sheet-BT0izeoI.js} +9 -9
  106. package/dist/_chunks/{sheet-BAg7GY9j.js.map → sheet-BT0izeoI.js.map} +1 -1
  107. package/dist/_chunks/{sidebar-Bx3wCDyy.js → sidebar-CoLHtVrP.js} +83 -83
  108. package/dist/_chunks/sidebar-CoLHtVrP.js.map +1 -0
  109. package/dist/_chunks/{sign-in-with-alfadocs-button-B9UrqOqH.js → sign-in-with-alfadocs-button-4zZC-I6y.js} +3 -3
  110. package/dist/_chunks/sign-in-with-alfadocs-button-4zZC-I6y.js.map +1 -0
  111. package/dist/_chunks/{skip-link-DmZ3c6cb.js → skip-link-BaSMtPwB.js} +2 -2
  112. package/dist/_chunks/{skip-link-DmZ3c6cb.js.map → skip-link-BaSMtPwB.js.map} +1 -1
  113. package/dist/_chunks/{slider-BT2bZWsy.js → slider-CkR6CLun.js} +3 -3
  114. package/dist/_chunks/slider-CkR6CLun.js.map +1 -0
  115. package/dist/_chunks/{sparkline-_gy8aJDG.js → sparkline-D4Np8ikf.js} +15 -15
  116. package/dist/_chunks/sparkline-D4Np8ikf.js.map +1 -0
  117. package/dist/_chunks/{spinner-DLaYfLPl.js → spinner-DirtWZNG.js} +2 -2
  118. package/dist/_chunks/spinner-DirtWZNG.js.map +1 -0
  119. package/dist/_chunks/{stat-B9PHSPbN.js → stat-CDQ_a0vk.js} +4 -4
  120. package/dist/_chunks/stat-CDQ_a0vk.js.map +1 -0
  121. package/dist/_chunks/{switch-C0psfIQF.js → switch-D916VW86.js} +2 -2
  122. package/dist/_chunks/{switch-C0psfIQF.js.map → switch-D916VW86.js.map} +1 -1
  123. package/dist/_chunks/{tabs-BZQy_Rmb.js → tabs-Cg794H0Q.js} +3 -3
  124. package/dist/_chunks/tabs-Cg794H0Q.js.map +1 -0
  125. package/dist/_chunks/{tag-DuLMjRbF.js → tag-CQmHRM4Y.js} +3 -3
  126. package/dist/_chunks/tag-CQmHRM4Y.js.map +1 -0
  127. package/dist/_chunks/{task-card-Dw_ZJDL8.js → task-card-BUVMh6HN.js} +2 -2
  128. package/dist/_chunks/task-card-BUVMh6HN.js.map +1 -0
  129. package/dist/_chunks/{task-tray-XlIW9ueh.js → task-tray-B3A2fRGR.js} +13 -13
  130. package/dist/_chunks/task-tray-B3A2fRGR.js.map +1 -0
  131. package/dist/_chunks/{text-area-CO9Dz0qX.js → text-area-DHtcpcLv.js} +13 -13
  132. package/dist/_chunks/{text-area-CO9Dz0qX.js.map → text-area-DHtcpcLv.js.map} +1 -1
  133. package/dist/_chunks/{text-input-DZwt9L8H.js → text-input-1oqFRbVI.js} +2 -2
  134. package/dist/_chunks/{text-input-DZwt9L8H.js.map → text-input-1oqFRbVI.js.map} +1 -1
  135. package/dist/_chunks/{theme-toggle-B3UR6ouK.js → theme-toggle-B3meAb3y.js} +14 -14
  136. package/dist/_chunks/theme-toggle-B3meAb3y.js.map +1 -0
  137. package/dist/_chunks/{time-picker-DvPUmHH-.js → time-picker-DeVZkIY2.js} +2 -2
  138. package/dist/_chunks/{time-picker-DvPUmHH-.js.map → time-picker-DeVZkIY2.js.map} +1 -1
  139. package/dist/_chunks/{timeline-BvmnQadS.js → timeline-BaSULpSJ.js} +2 -2
  140. package/dist/_chunks/{timeline-BvmnQadS.js.map → timeline-BaSULpSJ.js.map} +1 -1
  141. package/dist/_chunks/{toast.agent-DihA6MON.js → toast.agent-32WNQ-_x.js} +2 -2
  142. package/dist/_chunks/{toast.agent-DihA6MON.js.map → toast.agent-32WNQ-_x.js.map} +1 -1
  143. package/dist/_chunks/{transaction-chip-DE6DITun.js → transaction-chip-eVbolm0B.js} +2 -2
  144. package/dist/_chunks/{transaction-chip-DE6DITun.js.map → transaction-chip-eVbolm0B.js.map} +1 -1
  145. package/dist/_chunks/{transcript-panel-Bx5ANMsv.js → transcript-panel-BpJqPr7I.js} +8 -8
  146. package/dist/_chunks/transcript-panel-BpJqPr7I.js.map +1 -0
  147. package/dist/_chunks/{typing-indicator-BZ5jXZPn.js → typing-indicator-DHeVN4ob.js} +9 -9
  148. package/dist/_chunks/typing-indicator-DHeVN4ob.js.map +1 -0
  149. package/dist/_chunks/{use-password-requirements-DgEYdN4H.js → use-password-requirements-B1M8lE2t.js} +29 -32
  150. package/dist/_chunks/use-password-requirements-B1M8lE2t.js.map +1 -0
  151. package/dist/_chunks/{warning-stack-CdLIe534.js → warning-stack-CeRihME9.js} +15 -15
  152. package/dist/_chunks/warning-stack-CeRihME9.js.map +1 -0
  153. package/dist/_chunks/{workflow-map-CESZNNZe.js → workflow-map-D3MvrsZV.js} +4 -4
  154. package/dist/_chunks/{workflow-map-CESZNNZe.js.map → workflow-map-D3MvrsZV.js.map} +1 -1
  155. package/dist/agent-catalog.json +1 -1
  156. package/dist/components/agenda-card/index.js +1 -1
  157. package/dist/components/agenda-tray/index.js +1 -1
  158. package/dist/components/ai-prompt-input/index.js +1 -1
  159. package/dist/components/alert/index.js +1 -1
  160. package/dist/components/app-frame/index.js +1 -1
  161. package/dist/components/audio-recorder/index.js +1 -1
  162. package/dist/components/audio-visualiser/index.js +1 -1
  163. package/dist/components/autocomplete/index.js +1 -1
  164. package/dist/components/avatar/index.js +1 -1
  165. package/dist/components/badge/index.js +1 -1
  166. package/dist/components/breadcrumb/index.js +1 -1
  167. package/dist/components/button-group/index.js +1 -1
  168. package/dist/components/chat-container/index.js +1 -1
  169. package/dist/components/chat-message/index.js +1 -1
  170. package/dist/components/checkbox-group/index.js +1 -1
  171. package/dist/components/color-picker/index.js +1 -1
  172. package/dist/components/combobox/index.js +1 -1
  173. package/dist/components/contact-card/index.js +1 -1
  174. package/dist/components/data-table/index.js +1 -1
  175. package/dist/components/date-picker/index.js +1 -1
  176. package/dist/components/date-range-picker/index.js +1 -1
  177. package/dist/components/date-time-picker/index.js +1 -1
  178. package/dist/components/description-list/index.js +1 -1
  179. package/dist/components/dialog/index.js +1 -1
  180. package/dist/components/file-upload/index.js +1 -1
  181. package/dist/components/floating-action-button/index.js +1 -1
  182. package/dist/components/form-field/index.js +1 -1
  183. package/dist/components/freemium-paywall/freemium-paywall.d.ts +2 -2
  184. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  185. package/dist/components/freemium-paywall/index.js +1 -1
  186. package/dist/components/key-value-pair/index.js +1 -1
  187. package/dist/components/link/index.js +1 -1
  188. package/dist/components/list/index.js +1 -1
  189. package/dist/components/message-card/index.js +1 -1
  190. package/dist/components/message-tray/index.js +1 -1
  191. package/dist/components/multi-select/index.js +1 -1
  192. package/dist/components/navigation-menu/index.js +2 -2
  193. package/dist/components/notification-card/index.js +1 -1
  194. package/dist/components/notification-tray/index.js +1 -1
  195. package/dist/components/number-input/index.js +1 -1
  196. package/dist/components/otp-input/index.js +1 -1
  197. package/dist/components/pagination/index.js +1 -1
  198. package/dist/components/password-input/index.js +1 -1
  199. package/dist/components/password-input/password-input.d.ts.map +1 -1
  200. package/dist/components/payment-form/index.js +1 -1
  201. package/dist/components/pdf-viewer/index.js +1 -1
  202. package/dist/components/phone-input/index.js +1 -1
  203. package/dist/components/popover/index.js +1 -1
  204. package/dist/components/progress/index.js +1 -1
  205. package/dist/components/recaptcha-widget/index.js +1 -1
  206. package/dist/components/resizable/index.js +1 -1
  207. package/dist/components/search-bar/index.js +1 -1
  208. package/dist/components/search-input/index.js +1 -1
  209. package/dist/components/select/index.js +1 -1
  210. package/dist/components/sheet/index.js +1 -1
  211. package/dist/components/sidebar/index.js +1 -1
  212. package/dist/components/sidebar/sidebar.d.ts +1 -1
  213. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  214. package/dist/components/skip-link/index.js +1 -1
  215. package/dist/components/skip-link/skip-link.d.ts +1 -1
  216. package/dist/components/slider/index.js +1 -1
  217. package/dist/components/sparkline/index.js +1 -1
  218. package/dist/components/spinner/index.js +1 -1
  219. package/dist/components/stat/index.js +1 -1
  220. package/dist/components/switch/index.js +1 -1
  221. package/dist/components/tabs/index.js +1 -1
  222. package/dist/components/tag/index.js +1 -1
  223. package/dist/components/task-card/index.js +1 -1
  224. package/dist/components/task-tray/index.js +1 -1
  225. package/dist/components/text-area/index.js +1 -1
  226. package/dist/components/text-input/index.js +1 -1
  227. package/dist/components/theme-toggle/index.js +1 -1
  228. package/dist/components/time-picker/index.js +1 -1
  229. package/dist/components/timeline/index.js +1 -1
  230. package/dist/components/toast/index.js +1 -1
  231. package/dist/components/transaction-chip/index.js +1 -1
  232. package/dist/components/transcript-panel/index.js +1 -1
  233. package/dist/components/typing-indicator/index.js +1 -1
  234. package/dist/components/typing-indicator/typing-indicator.d.ts +1 -1
  235. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  236. package/dist/components/warning-stack/index.js +1 -1
  237. package/dist/components/workflow/index.js +1 -1
  238. package/dist/i18n/config.d.ts +2 -1
  239. package/dist/i18n/config.d.ts.map +1 -1
  240. package/dist/i18n/config.js +49 -31
  241. package/dist/i18n/config.js.map +1 -1
  242. package/dist/i18n/registerUiBundle.d.ts +15 -0
  243. package/dist/i18n/registerUiBundle.d.ts.map +1 -0
  244. package/dist/index.js +77 -77
  245. package/dist/patterns/leo-assistant/index.js +1 -1
  246. package/dist/patterns/patient-shell/index.js +1 -1
  247. package/dist/tokens.css +1 -1
  248. package/package.json +4 -3
  249. package/dist/_chunks/agenda-card-CalZqycc.js.map +0 -1
  250. package/dist/_chunks/agenda-tray-3ffFDQZC.js.map +0 -1
  251. package/dist/_chunks/ai-prompt-input-DLgY8lrW.js.map +0 -1
  252. package/dist/_chunks/audio-visualiser-ByDEFLNm.js.map +0 -1
  253. package/dist/_chunks/autocomplete-D4oUZbsP.js.map +0 -1
  254. package/dist/_chunks/breadcrumb-D1snXjPb.js.map +0 -1
  255. package/dist/_chunks/button-group-CONver7M.js.map +0 -1
  256. package/dist/_chunks/chat-container-ClzsWXp2.js.map +0 -1
  257. package/dist/_chunks/checkbox-group-CarPLDIC.js.map +0 -1
  258. package/dist/_chunks/color-picker-CTIcHlDF.js.map +0 -1
  259. package/dist/_chunks/combobox-BLWruOxK.js.map +0 -1
  260. package/dist/_chunks/contact-card-DNyATxKv.js.map +0 -1
  261. package/dist/_chunks/date-range-picker-mix2nEVC.js.map +0 -1
  262. package/dist/_chunks/date-time-picker-Dnong_BY.js.map +0 -1
  263. package/dist/_chunks/description-list-BYA77Yud.js.map +0 -1
  264. package/dist/_chunks/file-upload-C947ACDK.js.map +0 -1
  265. package/dist/_chunks/form-field-Bmkeh7WY.js.map +0 -1
  266. package/dist/_chunks/freemium-paywall-B9kIDtm1.js.map +0 -1
  267. package/dist/_chunks/key-value-pair-CgWvAIGb.js.map +0 -1
  268. package/dist/_chunks/list-qP6p0NTw.js.map +0 -1
  269. package/dist/_chunks/message-card-DjvsB_3U.js.map +0 -1
  270. package/dist/_chunks/message-tray-BbnAzlLH.js.map +0 -1
  271. package/dist/_chunks/multi-select-wqqrgjUQ.js.map +0 -1
  272. package/dist/_chunks/navigation-menu-ClbHeawy.js.map +0 -1
  273. package/dist/_chunks/notification-card-uTPEvAQS.js.map +0 -1
  274. package/dist/_chunks/notification-tray-PGtMqXbP.js.map +0 -1
  275. package/dist/_chunks/pagination-3AC4zTsi.js.map +0 -1
  276. package/dist/_chunks/phone-input-CSHJOJ13.js.map +0 -1
  277. package/dist/_chunks/progress-C11tqhoI.js.map +0 -1
  278. package/dist/_chunks/recaptcha-widget-NyfOfLII.js.map +0 -1
  279. package/dist/_chunks/resizable-mpXXyIsN.js.map +0 -1
  280. package/dist/_chunks/select-BOU_Osnf.js.map +0 -1
  281. package/dist/_chunks/sidebar-Bx3wCDyy.js.map +0 -1
  282. package/dist/_chunks/sign-in-with-alfadocs-button-B9UrqOqH.js.map +0 -1
  283. package/dist/_chunks/slider-BT2bZWsy.js.map +0 -1
  284. package/dist/_chunks/sparkline-_gy8aJDG.js.map +0 -1
  285. package/dist/_chunks/spinner-DLaYfLPl.js.map +0 -1
  286. package/dist/_chunks/stat-B9PHSPbN.js.map +0 -1
  287. package/dist/_chunks/tabs-BZQy_Rmb.js.map +0 -1
  288. package/dist/_chunks/tag-DuLMjRbF.js.map +0 -1
  289. package/dist/_chunks/task-card-Dw_ZJDL8.js.map +0 -1
  290. package/dist/_chunks/task-tray-XlIW9ueh.js.map +0 -1
  291. package/dist/_chunks/theme-toggle-B3UR6ouK.js.map +0 -1
  292. package/dist/_chunks/transcript-panel-Bx5ANMsv.js.map +0 -1
  293. package/dist/_chunks/typing-indicator-BZ5jXZPn.js.map +0 -1
  294. package/dist/_chunks/use-password-requirements-DgEYdN4H.js.map +0 -1
  295. package/dist/_chunks/warning-stack-CdLIe534.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker-DvPUmHH-.js","sources":["../../src/components/time-picker/time-picker.agent.ts","../../src/components/time-picker/time-picker.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — TimePicker. */\n/* */\n/* TimePicker is a segmented time input. It has no popover of its own — */\n/* `open` / `close` are still declared as capabilities so the adapter */\n/* shape stays consistent with the other pickers; on this component they */\n/* resolve to no-ops on the curated handle (kept for shape parity, see */\n/* PRS §26 §15 on curated handles). */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` §15. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TimePickerHandle } from './time-picker';\n\nexport const timePickerAgent: AgentAdapter<TimePickerHandle> = {\n id: 'time-picker',\n capabilities: ['pick', 'open', 'close'],\n state: {\n value: {\n type: 'HH:MM',\n descriptionKey: 'ui.agent.timePicker.state.value',\n description:\n 'Currently-selected time as 24h HH:MM (always present — defaults to 00:00 when unset).',\n read: (handle) => {\n const value = handle.getValue();\n if (!value) return null;\n const hh = String(value.hours).padStart(2, '0');\n const mm = String(value.minutes).padStart(2, '0');\n return `${hh}:${mm}`;\n },\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.timePicker.state.isOpen',\n description:\n 'Whether the time popover is open. TimePicker has no popover of its own; always false.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n set_time: {\n safety: 'write',\n argsType: '{ time: string }',\n descriptionKey: 'ui.agent.timePicker.actions.setTime',\n description: 'Set the time using a 24h HH:MM string.',\n invoke: (handle, args: { time: string }) => {\n const [hStr, mStr] = args.time.split(':');\n handle.setValue({\n hours: Number.parseInt(hStr ?? '0', 10),\n minutes: Number.parseInt(mStr ?? '0', 10),\n });\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.timePicker.actions.clear',\n description: 'Clear the time (resets to 00:00).',\n invoke: (handle) => {\n handle.clear();\n },\n },\n open: {\n safety: 'read',\n descriptionKey: 'ui.agent.timePicker.actions.open',\n description: 'No-op: TimePicker has no popover of its own.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n descriptionKey: 'ui.agent.timePicker.actions.close',\n description: 'No-op: TimePicker has no popover of its own.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'time-picker',\n description: 'Marks the TimePicker wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type FocusEvent,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport type { TimeValue } from '../_shared/time';\nimport { useAgentRegistration } from '../../agent';\nimport { timePickerAgent } from './time-picker.agent';\n\n/* -------------------------------------------------------------------------- */\n/* Imperative handle */\n/* -------------------------------------------------------------------------- */\n\n/** Curated imperative handle exposed via `ref` — also consumed by the agent adapter. */\nexport interface TimePickerHandle {\n /** Get the current time value, or null when unset. */\n getValue: () => TimeValue | null;\n /** Set the time value. */\n setValue: (value: TimeValue) => void;\n /** Clear the value (resets to 00:00). */\n clear: () => void;\n /** Whether a popover is open. TimePicker has no popover; always false. */\n isOpen: () => boolean;\n /** No-op: TimePicker has no popover. */\n open: () => void;\n /** No-op: TimePicker has no popover. */\n close: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/** Detect 12h vs 24h from the browser locale. */\nfunction detectHour12(locale: string): boolean {\n try {\n const resolved = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n }).resolvedOptions();\n return resolved.hourCycle === 'h12' || resolved.hourCycle === 'h11';\n } catch {\n return false;\n }\n}\n\n/** Get localised AM/PM labels via Intl. */\nfunction getLocalePeriodLabels(locale: string): { am: string; pm: string } {\n try {\n const am =\n new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(new Date(2000, 0, 1, 9))\n .find((p) => p.type === 'dayPeriod')?.value ?? 'AM';\n\n const pm =\n new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(new Date(2000, 0, 1, 15))\n .find((p) => p.type === 'dayPeriod')?.value ?? 'PM';\n\n return { am, pm };\n } catch {\n return { am: 'AM', pm: 'PM' };\n }\n}\n\n/** Clamp a number between min and max. */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** Round to nearest step. */\nfunction roundToStep(value: number, step: number): number {\n return Math.round(value / step) * step;\n}\n\n/** Convert 24h hour to 12h display hour. */\nfunction to12Hour(h24: number): number {\n if (h24 === 0) return 12;\n if (h24 > 12) return h24 - 12;\n return h24;\n}\n\n/** Convert 12h display hour + period to 24h hour. */\nfunction to24Hour(h12: number, isPM: boolean): number {\n if (isPM) return h12 === 12 ? 12 : h12 + 12;\n return h12 === 12 ? 0 : h12;\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA variants */\n/* -------------------------------------------------------------------------- */\n\nconst wrapperVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: 'ds:border-border',\n error: 'ds:border-destructive',\n },\n isDisabled: {\n true: 'ds:cursor-not-allowed ds:opacity-50',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n isDisabled: false,\n },\n },\n);\n\nconst segmentVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)] ds:text-center ds:tabular-nums',\n 'ds:bg-transparent ds:text-foreground',\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:select-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-w-6 ds:h-6 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:min-w-8 ds:h-8 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:min-w-10 ds:h-10 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst periodButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)] ds:text-center',\n 'ds:bg-transparent ds:text-foreground ds:cursor-pointer',\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:select-none',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-w-8 ds:h-6 ds:text-[length:var(--font-size-sm)] ds:ps-1 ds:pe-1',\n md: 'ds:min-w-10 ds:h-8 ds:text-[length:var(--font-size-base)] ds:ps-1.5 ds:pe-1.5',\n lg: 'ds:min-w-12 ds:h-10 ds:text-[length:var(--font-size-lg)] ds:ps-2 ds:pe-2',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst separatorVariants = cva('ds:text-muted-foreground ds:select-none', {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\ntype MinuteStep = 1 | 5 | 10 | 15 | 30;\n\nexport interface TimePickerProps extends Pick<\n VariantProps<typeof wrapperVariants>,\n 'size'\n> {\n /** Current value — controlled. */\n value?: TimeValue;\n /** Default value — uncontrolled. */\n defaultValue?: TimeValue;\n /** Called when the value changes. */\n onChange?: (value: TimeValue) => void;\n /** Force 12h/24h mode. Defaults to locale detection. */\n hour12?: boolean;\n /** Minute increment step. */\n minuteStep?: MinuteStep;\n /** Use full-width colon separator for CJK apps. */\n fullWidthSeparator?: boolean;\n /** Custom AM/PM labels. */\n periodLabels?: { am: string; pm: string };\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the input is disabled. */\n disabled?: boolean;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n hour12: hour12Prop,\n minuteStep = 1,\n fullWidthSeparator = false,\n periodLabels: periodLabelsProp,\n size = 'md',\n disabled,\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 isHour12 =\n hour12Prop !== undefined ? hour12Prop : detectHour12(i18n.language);\n const localePeriods = getLocalePeriodLabels(i18n.language);\n const periods = periodLabelsProp ?? localePeriods;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<TimeValue>(\n value ?? defaultValue ?? { hours: 0, minutes: 0 },\n );\n const currentValue: TimeValue = isControlled ? value : internalValue;\n\n const emit = useCallback(\n (next: TimeValue) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n\n // Segment refs\n const hourRef = useRef<HTMLSpanElement>(null);\n const minuteRef = useRef<HTMLSpanElement>(null);\n const periodRef = useRef<HTMLSpanElement>(null);\n\n // Typing buffer for each segment\n const [hourBuffer, setHourBuffer] = useState('');\n const [minuteBuffer, setMinuteBuffer] = useState('');\n const hourTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const minuteTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Clear buffers on blur\n const clearHourBuffer = useCallback(() => {\n setHourBuffer('');\n if (hourTimerRef.current) {\n clearTimeout(hourTimerRef.current);\n hourTimerRef.current = null;\n }\n }, []);\n\n const clearMinuteBuffer = useCallback(() => {\n setMinuteBuffer('');\n if (minuteTimerRef.current) {\n clearTimeout(minuteTimerRef.current);\n minuteTimerRef.current = null;\n }\n }, []);\n\n // Cleanup timers\n useEffect(() => {\n return () => {\n if (hourTimerRef.current) clearTimeout(hourTimerRef.current);\n if (minuteTimerRef.current) clearTimeout(minuteTimerRef.current);\n };\n }, []);\n\n const separator = fullWidthSeparator ? '\\uFF1A' : ':';\n\n // Display values\n const displayHour = isHour12\n ? String(to12Hour(currentValue.hours)).padStart(2, '0')\n : String(currentValue.hours).padStart(2, '0');\n const displayMinute = String(currentValue.minutes).padStart(2, '0');\n const isPM = currentValue.hours >= 12;\n\n // Hour segment keyboard handler\n const handleHourKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const delta = e.key === 'ArrowUp' ? 1 : -1;\n const maxH = 23;\n let newH = currentValue.hours + delta;\n if (newH < 0) newH = maxH;\n if (newH > maxH) newH = 0;\n emit({ ...currentValue, hours: newH });\n clearHourBuffer();\n return;\n }\n\n if (e.key === 'Tab' && !e.shiftKey) {\n e.preventDefault();\n minuteRef.current?.focus();\n clearHourBuffer();\n return;\n }\n\n if (e.key >= '0' && e.key <= '9') {\n e.preventDefault();\n const next = hourBuffer + e.key;\n setHourBuffer(next);\n\n if (hourTimerRef.current) clearTimeout(hourTimerRef.current);\n\n const num = parseInt(next, 10);\n const maxH = isHour12 ? 12 : 23;\n\n if (next.length >= 2) {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n minuteRef.current?.focus();\n } else {\n // If first digit makes it impossible to form a valid 2-digit number, commit now\n if (num > (isHour12 ? 1 : 2)) {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n minuteRef.current?.focus();\n } else {\n hourTimerRef.current = setTimeout(() => {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n }, 1000);\n }\n }\n }\n };\n\n // Minute segment keyboard handler\n const handleMinuteKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const delta = e.key === 'ArrowUp' ? minuteStep : -minuteStep;\n let newM = currentValue.minutes + delta;\n if (newM < 0) newM = 60 + newM;\n if (newM >= 60) newM = newM - 60;\n emit({ ...currentValue, minutes: newM });\n clearMinuteBuffer();\n return;\n }\n\n if (e.key === 'Tab' && !e.shiftKey && isHour12) {\n e.preventDefault();\n periodRef.current?.focus();\n clearMinuteBuffer();\n return;\n }\n\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n hourRef.current?.focus();\n clearMinuteBuffer();\n return;\n }\n\n if (e.key >= '0' && e.key <= '9') {\n e.preventDefault();\n const next = minuteBuffer + e.key;\n setMinuteBuffer(next);\n\n if (minuteTimerRef.current) clearTimeout(minuteTimerRef.current);\n\n const num = parseInt(next, 10);\n\n if (next.length >= 2) {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n if (isHour12) {\n periodRef.current?.focus();\n }\n } else {\n if (num > 5) {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n if (isHour12) {\n periodRef.current?.focus();\n }\n } else {\n minuteTimerRef.current = setTimeout(() => {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n }, 1000);\n }\n }\n }\n };\n\n // Period toggle handler\n const handlePeriodKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const newH = isPM ? currentValue.hours - 12 : currentValue.hours + 12;\n emit({ ...currentValue, hours: clamp(newH, 0, 23) });\n return;\n }\n\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n minuteRef.current?.focus();\n return;\n }\n\n // a/p keys toggle AM/PM\n if (e.key === 'a' || e.key === 'A') {\n e.preventDefault();\n if (isPM) {\n emit({ ...currentValue, hours: currentValue.hours - 12 });\n }\n }\n if (e.key === 'p' || e.key === 'P') {\n e.preventDefault();\n if (!isPM) {\n emit({ ...currentValue, hours: currentValue.hours + 12 });\n }\n }\n };\n\n const handleHourBlur = (_e: FocusEvent) => {\n clearHourBuffer();\n };\n\n const handleMinuteBlur = () => {\n clearMinuteBuffer();\n // Round to step on blur\n const rounded = roundToStep(currentValue.minutes, minuteStep);\n if (rounded !== currentValue.minutes) {\n emit({ ...currentValue, minutes: rounded });\n }\n // Prevent blur from propagating if moving within the component\n };\n\n const hourLabel = t('ui.inputs.timePicker.hour', 'Hour');\n const minuteLabel = t('ui.inputs.timePicker.minute', 'Minute');\n const periodLabel = t('ui.inputs.timePicker.period', 'Period');\n const groupLabel = t('ui.inputs.timePicker.groupLabel', 'Time');\n\n const handle = useMemo<TimePickerHandle>(\n () => ({\n getValue: () => currentValue,\n setValue: (next) => emit(next),\n clear: () => emit({ hours: 0, minutes: 0 }),\n isOpen: () => false,\n open: () => {\n /* TimePicker has no popover — no-op. */\n },\n close: () => {\n /* TimePicker has no popover — no-op. */\n },\n }),\n [currentValue, emit],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(timePickerAgent, handle, effectiveId);\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props -- aria-invalid is a global ARIA state; conveys group-level validation\n <div\n ref={rootRef}\n id={effectiveId}\n role=\"group\"\n aria-label={groupLabel}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `role=\"group\"` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-disabled={effectiveDisabled || undefined}\n data-component=\"time-picker\"\n data-component-id={effectiveId}\n className={wrapperVariants({\n size,\n tone: effectiveTone,\n isDisabled: effectiveDisabled ?? false,\n className,\n })}\n >\n {/* Hour segment */}\n <span\n ref={hourRef}\n role=\"spinbutton\"\n aria-label={hourLabel}\n aria-valuemin={isHour12 ? 1 : 0}\n aria-valuemax={isHour12 ? 12 : 23}\n aria-valuenow={\n isHour12 ? to12Hour(currentValue.hours) : currentValue.hours\n }\n aria-valuetext={displayHour}\n tabIndex={effectiveDisabled ? -1 : 0}\n inputMode=\"numeric\"\n onKeyDown={handleHourKeyDown}\n onBlur={handleHourBlur}\n className={segmentVariants({ size })}\n >\n {displayHour}\n </span>\n\n {/* Separator */}\n <span aria-hidden=\"true\" className={separatorVariants({ size })}>\n {separator}\n </span>\n\n {/* Minute segment */}\n <span\n ref={minuteRef}\n role=\"spinbutton\"\n aria-label={minuteLabel}\n aria-valuemin={0}\n aria-valuemax={59}\n aria-valuenow={currentValue.minutes}\n aria-valuetext={displayMinute}\n tabIndex={effectiveDisabled ? -1 : 0}\n inputMode=\"numeric\"\n onKeyDown={handleMinuteKeyDown}\n onBlur={handleMinuteBlur}\n className={segmentVariants({ size })}\n >\n {displayMinute}\n </span>\n\n {/* AM/PM toggle (12h mode only) */}\n {isHour12 ? (\n <span\n ref={periodRef}\n role=\"spinbutton\"\n aria-label={periodLabel}\n aria-valuemin={0}\n aria-valuemax={1}\n aria-valuenow={isPM ? 1 : 0}\n aria-valuetext={isPM ? periods.pm : periods.am}\n tabIndex={effectiveDisabled ? -1 : 0}\n onKeyDown={handlePeriodKeyDown}\n className={periodButtonVariants({ size })}\n >\n {isPM ? periods.pm : periods.am}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nTimePicker.displayName = 'TimePicker';\n"],"names":["timePickerAgent","handle","value","hh","mm","args","hStr","mStr","detectHour12","locale","resolved","getLocalePeriodLabels","am","_a","p","pm","_b","clamp","min","max","roundToStep","step","to12Hour","h24","to24Hour","h12","isPM","wrapperVariants","cva","segmentVariants","periodButtonVariants","separatorVariants","TimePicker","forwardRef","defaultValue","onChange","hour12Prop","minuteStep","fullWidthSeparator","periodLabelsProp","size","disabled","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","effectiveDisabled","effectiveTone","isHour12","localePeriods","periods","isControlled","internalValue","setInternalValue","useState","currentValue","emit","useCallback","next","hourRef","useRef","minuteRef","periodRef","hourBuffer","setHourBuffer","minuteBuffer","setMinuteBuffer","hourTimerRef","minuteTimerRef","clearHourBuffer","clearMinuteBuffer","useEffect","separator","displayHour","displayMinute","handleHourKeyDown","delta","maxH","newH","num","clamped","_c","handleMinuteKeyDown","newM","rounded","_d","handlePeriodKeyDown","handleHourBlur","_e","handleMinuteBlur","hourLabel","minuteLabel","periodLabel","groupLabel","useMemo","rootRef","useImperativeHandle","useAgentRegistration","jsxs","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"time-picker-DeVZkIY2.js","sources":["../../src/components/time-picker/time-picker.agent.ts","../../src/components/time-picker/time-picker.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — TimePicker. */\n/* */\n/* TimePicker is a segmented time input. It has no popover of its own — */\n/* `open` / `close` are still declared as capabilities so the adapter */\n/* shape stays consistent with the other pickers; on this component they */\n/* resolve to no-ops on the curated handle (kept for shape parity, see */\n/* PRS §26 §15 on curated handles). */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` §15. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TimePickerHandle } from './time-picker';\n\nexport const timePickerAgent: AgentAdapter<TimePickerHandle> = {\n id: 'time-picker',\n capabilities: ['pick', 'open', 'close'],\n state: {\n value: {\n type: 'HH:MM',\n descriptionKey: 'ui.agent.timePicker.state.value',\n description:\n 'Currently-selected time as 24h HH:MM (always present — defaults to 00:00 when unset).',\n read: (handle) => {\n const value = handle.getValue();\n if (!value) return null;\n const hh = String(value.hours).padStart(2, '0');\n const mm = String(value.minutes).padStart(2, '0');\n return `${hh}:${mm}`;\n },\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.timePicker.state.isOpen',\n description:\n 'Whether the time popover is open. TimePicker has no popover of its own; always false.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n set_time: {\n safety: 'write',\n argsType: '{ time: string }',\n descriptionKey: 'ui.agent.timePicker.actions.setTime',\n description: 'Set the time using a 24h HH:MM string.',\n invoke: (handle, args: { time: string }) => {\n const [hStr, mStr] = args.time.split(':');\n handle.setValue({\n hours: Number.parseInt(hStr ?? '0', 10),\n minutes: Number.parseInt(mStr ?? '0', 10),\n });\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.timePicker.actions.clear',\n description: 'Clear the time (resets to 00:00).',\n invoke: (handle) => {\n handle.clear();\n },\n },\n open: {\n safety: 'read',\n descriptionKey: 'ui.agent.timePicker.actions.open',\n description: 'No-op: TimePicker has no popover of its own.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n descriptionKey: 'ui.agent.timePicker.actions.close',\n description: 'No-op: TimePicker has no popover of its own.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'time-picker',\n description: 'Marks the TimePicker wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type FocusEvent,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport type { TimeValue } from '../_shared/time';\nimport { useAgentRegistration } from '../../agent';\nimport { timePickerAgent } from './time-picker.agent';\n\n/* -------------------------------------------------------------------------- */\n/* Imperative handle */\n/* -------------------------------------------------------------------------- */\n\n/** Curated imperative handle exposed via `ref` — also consumed by the agent adapter. */\nexport interface TimePickerHandle {\n /** Get the current time value, or null when unset. */\n getValue: () => TimeValue | null;\n /** Set the time value. */\n setValue: (value: TimeValue) => void;\n /** Clear the value (resets to 00:00). */\n clear: () => void;\n /** Whether a popover is open. TimePicker has no popover; always false. */\n isOpen: () => boolean;\n /** No-op: TimePicker has no popover. */\n open: () => void;\n /** No-op: TimePicker has no popover. */\n close: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/** Detect 12h vs 24h from the browser locale. */\nfunction detectHour12(locale: string): boolean {\n try {\n const resolved = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n }).resolvedOptions();\n return resolved.hourCycle === 'h12' || resolved.hourCycle === 'h11';\n } catch {\n return false;\n }\n}\n\n/** Get localised AM/PM labels via Intl. */\nfunction getLocalePeriodLabels(locale: string): { am: string; pm: string } {\n try {\n const am =\n new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(new Date(2000, 0, 1, 9))\n .find((p) => p.type === 'dayPeriod')?.value ?? 'AM';\n\n const pm =\n new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(new Date(2000, 0, 1, 15))\n .find((p) => p.type === 'dayPeriod')?.value ?? 'PM';\n\n return { am, pm };\n } catch {\n return { am: 'AM', pm: 'PM' };\n }\n}\n\n/** Clamp a number between min and max. */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** Round to nearest step. */\nfunction roundToStep(value: number, step: number): number {\n return Math.round(value / step) * step;\n}\n\n/** Convert 24h hour to 12h display hour. */\nfunction to12Hour(h24: number): number {\n if (h24 === 0) return 12;\n if (h24 > 12) return h24 - 12;\n return h24;\n}\n\n/** Convert 12h display hour + period to 24h hour. */\nfunction to24Hour(h12: number, isPM: boolean): number {\n if (isPM) return h12 === 12 ? 12 : h12 + 12;\n return h12 === 12 ? 0 : h12;\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA variants */\n/* -------------------------------------------------------------------------- */\n\nconst wrapperVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: 'ds:border-border',\n error: 'ds:border-destructive',\n },\n isDisabled: {\n true: 'ds:cursor-not-allowed ds:opacity-50',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n isDisabled: false,\n },\n },\n);\n\nconst segmentVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)] ds:text-center ds:tabular-nums',\n 'ds:bg-transparent ds:text-foreground',\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:select-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-w-6 ds:h-6 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:min-w-8 ds:h-8 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:min-w-10 ds:h-10 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst periodButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)] ds:text-center',\n 'ds:bg-transparent ds:text-foreground ds:cursor-pointer',\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:select-none',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-w-8 ds:h-6 ds:text-[length:var(--font-size-sm)] ds:ps-1 ds:pe-1',\n md: 'ds:min-w-10 ds:h-8 ds:text-[length:var(--font-size-base)] ds:ps-1.5 ds:pe-1.5',\n lg: 'ds:min-w-12 ds:h-10 ds:text-[length:var(--font-size-lg)] ds:ps-2 ds:pe-2',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst separatorVariants = cva('ds:text-muted-foreground ds:select-none', {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\ntype MinuteStep = 1 | 5 | 10 | 15 | 30;\n\nexport interface TimePickerProps extends Pick<\n VariantProps<typeof wrapperVariants>,\n 'size'\n> {\n /** Current value — controlled. */\n value?: TimeValue;\n /** Default value — uncontrolled. */\n defaultValue?: TimeValue;\n /** Called when the value changes. */\n onChange?: (value: TimeValue) => void;\n /** Force 12h/24h mode. Defaults to locale detection. */\n hour12?: boolean;\n /** Minute increment step. */\n minuteStep?: MinuteStep;\n /** Use full-width colon separator for CJK apps. */\n fullWidthSeparator?: boolean;\n /** Custom AM/PM labels. */\n periodLabels?: { am: string; pm: string };\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the input is disabled. */\n disabled?: boolean;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n hour12: hour12Prop,\n minuteStep = 1,\n fullWidthSeparator = false,\n periodLabels: periodLabelsProp,\n size = 'md',\n disabled,\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 isHour12 =\n hour12Prop !== undefined ? hour12Prop : detectHour12(i18n.language);\n const localePeriods = getLocalePeriodLabels(i18n.language);\n const periods = periodLabelsProp ?? localePeriods;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<TimeValue>(\n value ?? defaultValue ?? { hours: 0, minutes: 0 },\n );\n const currentValue: TimeValue = isControlled ? value : internalValue;\n\n const emit = useCallback(\n (next: TimeValue) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n\n // Segment refs\n const hourRef = useRef<HTMLSpanElement>(null);\n const minuteRef = useRef<HTMLSpanElement>(null);\n const periodRef = useRef<HTMLSpanElement>(null);\n\n // Typing buffer for each segment\n const [hourBuffer, setHourBuffer] = useState('');\n const [minuteBuffer, setMinuteBuffer] = useState('');\n const hourTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const minuteTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Clear buffers on blur\n const clearHourBuffer = useCallback(() => {\n setHourBuffer('');\n if (hourTimerRef.current) {\n clearTimeout(hourTimerRef.current);\n hourTimerRef.current = null;\n }\n }, []);\n\n const clearMinuteBuffer = useCallback(() => {\n setMinuteBuffer('');\n if (minuteTimerRef.current) {\n clearTimeout(minuteTimerRef.current);\n minuteTimerRef.current = null;\n }\n }, []);\n\n // Cleanup timers\n useEffect(() => {\n return () => {\n if (hourTimerRef.current) clearTimeout(hourTimerRef.current);\n if (minuteTimerRef.current) clearTimeout(minuteTimerRef.current);\n };\n }, []);\n\n const separator = fullWidthSeparator ? '\\uFF1A' : ':';\n\n // Display values\n const displayHour = isHour12\n ? String(to12Hour(currentValue.hours)).padStart(2, '0')\n : String(currentValue.hours).padStart(2, '0');\n const displayMinute = String(currentValue.minutes).padStart(2, '0');\n const isPM = currentValue.hours >= 12;\n\n // Hour segment keyboard handler\n const handleHourKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const delta = e.key === 'ArrowUp' ? 1 : -1;\n const maxH = 23;\n let newH = currentValue.hours + delta;\n if (newH < 0) newH = maxH;\n if (newH > maxH) newH = 0;\n emit({ ...currentValue, hours: newH });\n clearHourBuffer();\n return;\n }\n\n if (e.key === 'Tab' && !e.shiftKey) {\n e.preventDefault();\n minuteRef.current?.focus();\n clearHourBuffer();\n return;\n }\n\n if (e.key >= '0' && e.key <= '9') {\n e.preventDefault();\n const next = hourBuffer + e.key;\n setHourBuffer(next);\n\n if (hourTimerRef.current) clearTimeout(hourTimerRef.current);\n\n const num = parseInt(next, 10);\n const maxH = isHour12 ? 12 : 23;\n\n if (next.length >= 2) {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n minuteRef.current?.focus();\n } else {\n // If first digit makes it impossible to form a valid 2-digit number, commit now\n if (num > (isHour12 ? 1 : 2)) {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n minuteRef.current?.focus();\n } else {\n hourTimerRef.current = setTimeout(() => {\n const clamped = clamp(num, isHour12 ? 1 : 0, maxH);\n const h24 = isHour12 ? to24Hour(clamped, isPM) : clamped;\n emit({ ...currentValue, hours: h24 });\n setHourBuffer('');\n }, 1000);\n }\n }\n }\n };\n\n // Minute segment keyboard handler\n const handleMinuteKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const delta = e.key === 'ArrowUp' ? minuteStep : -minuteStep;\n let newM = currentValue.minutes + delta;\n if (newM < 0) newM = 60 + newM;\n if (newM >= 60) newM = newM - 60;\n emit({ ...currentValue, minutes: newM });\n clearMinuteBuffer();\n return;\n }\n\n if (e.key === 'Tab' && !e.shiftKey && isHour12) {\n e.preventDefault();\n periodRef.current?.focus();\n clearMinuteBuffer();\n return;\n }\n\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n hourRef.current?.focus();\n clearMinuteBuffer();\n return;\n }\n\n if (e.key >= '0' && e.key <= '9') {\n e.preventDefault();\n const next = minuteBuffer + e.key;\n setMinuteBuffer(next);\n\n if (minuteTimerRef.current) clearTimeout(minuteTimerRef.current);\n\n const num = parseInt(next, 10);\n\n if (next.length >= 2) {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n if (isHour12) {\n periodRef.current?.focus();\n }\n } else {\n if (num > 5) {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n if (isHour12) {\n periodRef.current?.focus();\n }\n } else {\n minuteTimerRef.current = setTimeout(() => {\n const clamped = clamp(num, 0, 59);\n const rounded = roundToStep(clamped, minuteStep);\n emit({ ...currentValue, minutes: rounded });\n setMinuteBuffer('');\n }, 1000);\n }\n }\n }\n };\n\n // Period toggle handler\n const handlePeriodKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const newH = isPM ? currentValue.hours - 12 : currentValue.hours + 12;\n emit({ ...currentValue, hours: clamp(newH, 0, 23) });\n return;\n }\n\n if (e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n minuteRef.current?.focus();\n return;\n }\n\n // a/p keys toggle AM/PM\n if (e.key === 'a' || e.key === 'A') {\n e.preventDefault();\n if (isPM) {\n emit({ ...currentValue, hours: currentValue.hours - 12 });\n }\n }\n if (e.key === 'p' || e.key === 'P') {\n e.preventDefault();\n if (!isPM) {\n emit({ ...currentValue, hours: currentValue.hours + 12 });\n }\n }\n };\n\n const handleHourBlur = (_e: FocusEvent) => {\n clearHourBuffer();\n };\n\n const handleMinuteBlur = () => {\n clearMinuteBuffer();\n // Round to step on blur\n const rounded = roundToStep(currentValue.minutes, minuteStep);\n if (rounded !== currentValue.minutes) {\n emit({ ...currentValue, minutes: rounded });\n }\n // Prevent blur from propagating if moving within the component\n };\n\n const hourLabel = t('inputs.timePicker.hour', 'Hour');\n const minuteLabel = t('inputs.timePicker.minute', 'Minute');\n const periodLabel = t('inputs.timePicker.period', 'Period');\n const groupLabel = t('inputs.timePicker.groupLabel', 'Time');\n\n const handle = useMemo<TimePickerHandle>(\n () => ({\n getValue: () => currentValue,\n setValue: (next) => emit(next),\n clear: () => emit({ hours: 0, minutes: 0 }),\n isOpen: () => false,\n open: () => {\n /* TimePicker has no popover — no-op. */\n },\n close: () => {\n /* TimePicker has no popover — no-op. */\n },\n }),\n [currentValue, emit],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(timePickerAgent, handle, effectiveId);\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props -- aria-invalid is a global ARIA state; conveys group-level validation\n <div\n ref={rootRef}\n id={effectiveId}\n role=\"group\"\n aria-label={groupLabel}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `role=\"group\"` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-disabled={effectiveDisabled || undefined}\n data-component=\"time-picker\"\n data-component-id={effectiveId}\n className={wrapperVariants({\n size,\n tone: effectiveTone,\n isDisabled: effectiveDisabled ?? false,\n className,\n })}\n >\n {/* Hour segment */}\n <span\n ref={hourRef}\n role=\"spinbutton\"\n aria-label={hourLabel}\n aria-valuemin={isHour12 ? 1 : 0}\n aria-valuemax={isHour12 ? 12 : 23}\n aria-valuenow={\n isHour12 ? to12Hour(currentValue.hours) : currentValue.hours\n }\n aria-valuetext={displayHour}\n tabIndex={effectiveDisabled ? -1 : 0}\n inputMode=\"numeric\"\n onKeyDown={handleHourKeyDown}\n onBlur={handleHourBlur}\n className={segmentVariants({ size })}\n >\n {displayHour}\n </span>\n\n {/* Separator */}\n <span aria-hidden=\"true\" className={separatorVariants({ size })}>\n {separator}\n </span>\n\n {/* Minute segment */}\n <span\n ref={minuteRef}\n role=\"spinbutton\"\n aria-label={minuteLabel}\n aria-valuemin={0}\n aria-valuemax={59}\n aria-valuenow={currentValue.minutes}\n aria-valuetext={displayMinute}\n tabIndex={effectiveDisabled ? -1 : 0}\n inputMode=\"numeric\"\n onKeyDown={handleMinuteKeyDown}\n onBlur={handleMinuteBlur}\n className={segmentVariants({ size })}\n >\n {displayMinute}\n </span>\n\n {/* AM/PM toggle (12h mode only) */}\n {isHour12 ? (\n <span\n ref={periodRef}\n role=\"spinbutton\"\n aria-label={periodLabel}\n aria-valuemin={0}\n aria-valuemax={1}\n aria-valuenow={isPM ? 1 : 0}\n aria-valuetext={isPM ? periods.pm : periods.am}\n tabIndex={effectiveDisabled ? -1 : 0}\n onKeyDown={handlePeriodKeyDown}\n className={periodButtonVariants({ size })}\n >\n {isPM ? periods.pm : periods.am}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nTimePicker.displayName = 'TimePicker';\n"],"names":["timePickerAgent","handle","value","hh","mm","args","hStr","mStr","detectHour12","locale","resolved","getLocalePeriodLabels","am","_a","p","pm","_b","clamp","min","max","roundToStep","step","to12Hour","h24","to24Hour","h12","isPM","wrapperVariants","cva","segmentVariants","periodButtonVariants","separatorVariants","TimePicker","forwardRef","defaultValue","onChange","hour12Prop","minuteStep","fullWidthSeparator","periodLabelsProp","size","disabled","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","effectiveDisabled","effectiveTone","isHour12","localePeriods","periods","isControlled","internalValue","setInternalValue","useState","currentValue","emit","useCallback","next","hourRef","useRef","minuteRef","periodRef","hourBuffer","setHourBuffer","minuteBuffer","setMinuteBuffer","hourTimerRef","minuteTimerRef","clearHourBuffer","clearMinuteBuffer","useEffect","separator","displayHour","displayMinute","handleHourKeyDown","delta","maxH","newH","num","clamped","_c","handleMinuteKeyDown","newM","rounded","_d","handlePeriodKeyDown","handleHourBlur","_e","handleMinuteBlur","hourLabel","minuteLabel","periodLabel","groupLabel","useMemo","rootRef","useImperativeHandle","useAgentRegistration","jsxs","jsx"],"mappings":";;;;;;AAeO,MAAMA,KAAkD;AAAA,EAC7D,IAAI;AAAA,EACJ,cAAc,CAAC,QAAQ,QAAQ,OAAO;AAAA,EACtC,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,MAAM,CAACC,MAAW;AAChB,cAAMC,IAAQD,EAAO,SAAA;AACrB,YAAI,CAACC,EAAO,QAAO;AACnB,cAAMC,IAAK,OAAOD,EAAM,KAAK,EAAE,SAAS,GAAG,GAAG,GACxCE,IAAK,OAAOF,EAAM,OAAO,EAAE,SAAS,GAAG,GAAG;AAChD,eAAO,GAAGC,CAAE,IAAIC,CAAE;AAAA,MACpB;AAAA,IAAA;AAAA,IAEF,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,MAAM,CAACH,MAAWA,EAAO,OAAA;AAAA,IAAO;AAAA,EAClC;AAAA,EAEF,SAAS;AAAA,IACP,UAAU;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,GAAQI,MAA2B;AAC1C,cAAM,CAACC,GAAMC,CAAI,IAAIF,EAAK,KAAK,MAAM,GAAG;AACxC,QAAAJ,EAAO,SAAS;AAAA,UACd,OAAO,OAAO,SAASK,KAAQ,KAAK,EAAE;AAAA,UACtC,SAAS,OAAO,SAASC,KAAQ,KAAK,EAAE;AAAA,QAAA,CACzC;AAAA,MACH;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACN,MAAW;AAClB,QAAAA,EAAO,MAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,KAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,MAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;AChDA,SAASO,GAAaC,GAAyB;AAC7C,MAAI;AACF,UAAMC,IAAW,IAAI,KAAK,eAAeD,GAAQ;AAAA,MAC/C,MAAM;AAAA,IAAA,CACP,EAAE,gBAAA;AACH,WAAOC,EAAS,cAAc,SAASA,EAAS,cAAc;AAAA,EAChE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAASC,GAAsBF,GAA4C;;AACzE,MAAI;AACF,UAAMG,MACJC,IAAA,IAAI,KAAK,eAAeJ,GAAQ;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACT,EACE,cAAc,IAAI,KAAK,KAAM,GAAG,GAAG,CAAC,CAAC,EACrC,KAAK,CAACK,MAAMA,EAAE,SAAS,WAAW,MALrC,gBAAAD,EAKwC,UAAS,MAE7CE,MACJC,IAAA,IAAI,KAAK,eAAeP,GAAQ;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACT,EACE,cAAc,IAAI,KAAK,KAAM,GAAG,GAAG,EAAE,CAAC,EACtC,KAAK,CAACK,MAAMA,EAAE,SAAS,WAAW,MALrC,gBAAAE,EAKwC,UAAS;AAEnD,WAAO,EAAE,IAAAJ,GAAI,IAAAG,EAAA;AAAA,EACf,QAAQ;AACN,WAAO,EAAE,IAAI,MAAM,IAAI,KAAA;AAAA,EACzB;AACF;AAGA,SAASE,EAAMf,GAAegB,GAAaC,GAAqB;AAC9D,SAAO,KAAK,IAAIA,GAAK,KAAK,IAAID,GAAKhB,CAAK,CAAC;AAC3C;AAGA,SAASkB,EAAYlB,GAAemB,GAAsB;AACxD,SAAO,KAAK,MAAMnB,IAAQmB,CAAI,IAAIA;AACpC;AAGA,SAASC,EAASC,GAAqB;AACrC,SAAIA,MAAQ,IAAU,KAClBA,IAAM,KAAWA,IAAM,KACpBA;AACT;AAGA,SAASC,EAASC,GAAaC,GAAuB;AACpD,SAAIA,IAAaD,MAAQ,KAAK,KAAKA,IAAM,KAClCA,MAAQ,KAAK,IAAIA;AAC1B;AAMA,MAAME,KAAkBC;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,MAET,YAAY;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,IAAA;AAAA,EACd;AAEJ,GAEMC,IAAkBD;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GAEME,KAAuBF;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GAEMG,KAAoBH,EAAI,2CAA2C;AAAA,EACvE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,KAAA;AAC3B,CAAC,GAwCYI,KAAaC;AAAA,EACxB,CACE;AAAA,IACE,OAAA/B;AAAA,IACA,cAAAgC;AAAA,IACA,UAAAC;AAAA,IACA,QAAQC;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,oBAAAC,IAAqB;AAAA,IACrB,cAAcC;AAAA,IACd,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,IAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,GAAA,GACdC,IAAMC,GAAA,GACNC,IAAcP,KAAMK,EAAI,IACxBG,IAAoBH,EAAI,YAAYP,GACpCW,KAAgBJ,EAAI,UAAU,UAAU,WAExCK,IACJjB,MAAe,SAAYA,IAAa5B,GAAasC,EAAK,QAAQ,GAC9DQ,KAAgB3C,GAAsBmC,EAAK,QAAQ,GACnDS,IAAUhB,KAAoBe,IAE9BE,IAAetD,MAAU,QACzB,CAACuD,IAAeC,EAAgB,IAAIC;AAAA,MACxCzD,KAASgC,KAAgB,EAAE,OAAO,GAAG,SAAS,EAAA;AAAA,IAAE,GAE5C0B,IAA0BJ,IAAetD,IAAQuD,IAEjDI,IAAOC;AAAA,MACX,CAACC,MAAoB;AACnB,QAAKP,KAAcE,GAAiBK,CAAI,GACxC5B,KAAA,QAAAA,EAAW4B;AAAA,MACb;AAAA,MACA,CAACP,GAAcrB,CAAQ;AAAA,IAAA,GAInB6B,IAAUC,EAAwB,IAAI,GACtCC,IAAYD,EAAwB,IAAI,GACxCE,IAAYF,EAAwB,IAAI,GAGxC,CAACG,IAAYC,CAAa,IAAIV,EAAS,EAAE,GACzC,CAACW,IAAcC,CAAe,IAAIZ,EAAS,EAAE,GAC7Ca,IAAeP,EAA6C,IAAI,GAChEQ,IAAiBR,EAA6C,IAAI,GAGlES,IAAkBZ,EAAY,MAAM;AACxC,MAAAO,EAAc,EAAE,GACZG,EAAa,YACf,aAAaA,EAAa,OAAO,GACjCA,EAAa,UAAU;AAAA,IAE3B,GAAG,CAAA,CAAE,GAECG,IAAoBb,EAAY,MAAM;AAC1C,MAAAS,EAAgB,EAAE,GACdE,EAAe,YACjB,aAAaA,EAAe,OAAO,GACnCA,EAAe,UAAU;AAAA,IAE7B,GAAG,CAAA,CAAE;AAGL,IAAAG,GAAU,MACD,MAAM;AACX,MAAIJ,EAAa,WAAS,aAAaA,EAAa,OAAO,GACvDC,EAAe,WAAS,aAAaA,EAAe,OAAO;AAAA,IACjE,GACC,CAAA,CAAE;AAEL,UAAMI,KAAYvC,IAAqB,MAAW,KAG5CwC,IAAczB,IAChB,OAAO/B,EAASsC,EAAa,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG,IACpD,OAAOA,EAAa,KAAK,EAAE,SAAS,GAAG,GAAG,GACxCmB,IAAgB,OAAOnB,EAAa,OAAO,EAAE,SAAS,GAAG,GAAG,GAC5DlC,IAAOkC,EAAa,SAAS,IAG7BoB,KAAoB,CAAC,MAAsC;;AAC/D,UAAI,CAAA7B,GAEJ;AAAA,YAAI,EAAE,QAAQ,aAAa,EAAE,QAAQ,aAAa;AAChD,YAAE,eAAA;AACF,gBAAM8B,IAAQ,EAAE,QAAQ,YAAY,IAAI,IAClCC,IAAO;AACb,cAAIC,IAAOvB,EAAa,QAAQqB;AAChC,UAAIE,IAAO,MAAGA,IAAOD,IACjBC,IAAOD,MAAMC,IAAO,IACxBtB,EAAK,EAAE,GAAGD,GAAc,OAAOuB,GAAM,GACrCT,EAAA;AACA;AAAA,QACF;AAEA,YAAI,EAAE,QAAQ,SAAS,CAAC,EAAE,UAAU;AAClC,YAAE,eAAA,IACF7D,IAAAqD,EAAU,YAAV,QAAArD,EAAmB,SACnB6D,EAAA;AACA;AAAA,QACF;AAEA,YAAI,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAChC,YAAE,eAAA;AACF,gBAAMX,IAAOK,KAAa,EAAE;AAC5B,UAAAC,EAAcN,CAAI,GAEdS,EAAa,WAAS,aAAaA,EAAa,OAAO;AAE3D,gBAAMY,IAAM,SAASrB,GAAM,EAAE,GACvBmB,IAAO7B,IAAW,KAAK;AAE7B,cAAIU,EAAK,UAAU,GAAG;AACpB,kBAAMsB,IAAUpE,EAAMmE,GAAK/B,IAAW,IAAI,GAAG6B,CAAI,GAC3C3D,IAAM8B,IAAW7B,EAAS6D,GAAS3D,CAAI,IAAI2D;AACjD,YAAAxB,EAAK,EAAE,GAAGD,GAAc,OAAOrC,GAAK,GACpC8C,EAAc,EAAE,IAChBrD,IAAAkD,EAAU,YAAV,QAAAlD,EAAmB;AAAA,UACrB,WAEMoE,KAAO/B,IAAW,IAAI,IAAI;AAC5B,kBAAMgC,IAAUpE,EAAMmE,GAAK/B,IAAW,IAAI,GAAG6B,CAAI,GAC3C3D,IAAM8B,IAAW7B,EAAS6D,GAAS3D,CAAI,IAAI2D;AACjD,YAAAxB,EAAK,EAAE,GAAGD,GAAc,OAAOrC,GAAK,GACpC8C,EAAc,EAAE,IAChBiB,IAAApB,EAAU,YAAV,QAAAoB,EAAmB;AAAA,UACrB;AACE,YAAAd,EAAa,UAAU,WAAW,MAAM;AACtC,oBAAMa,IAAUpE,EAAMmE,GAAK/B,IAAW,IAAI,GAAG6B,CAAI,GAC3C3D,IAAM8B,IAAW7B,EAAS6D,GAAS3D,CAAI,IAAI2D;AACjD,cAAAxB,EAAK,EAAE,GAAGD,GAAc,OAAOrC,GAAK,GACpC8C,EAAc,EAAE;AAAA,YAClB,GAAG,GAAI;AAAA,QAGb;AAAA;AAAA,IACF,GAGMkB,KAAsB,CAAC,MAAsC;;AACjE,UAAI,CAAApC,GAEJ;AAAA,YAAI,EAAE,QAAQ,aAAa,EAAE,QAAQ,aAAa;AAChD,YAAE,eAAA;AACF,gBAAM8B,IAAQ,EAAE,QAAQ,YAAY5C,IAAa,CAACA;AAClD,cAAImD,IAAO5B,EAAa,UAAUqB;AAClC,UAAIO,IAAO,MAAGA,IAAO,KAAKA,IACtBA,KAAQ,OAAIA,IAAOA,IAAO,KAC9B3B,EAAK,EAAE,GAAGD,GAAc,SAAS4B,GAAM,GACvCb,EAAA;AACA;AAAA,QACF;AAEA,YAAI,EAAE,QAAQ,SAAS,CAAC,EAAE,YAAYtB,GAAU;AAC9C,YAAE,eAAA,IACFxC,IAAAsD,EAAU,YAAV,QAAAtD,EAAmB,SACnB8D,EAAA;AACA;AAAA,QACF;AAEA,YAAI,EAAE,QAAQ,SAAS,EAAE,UAAU;AACjC,YAAE,eAAA,IACF3D,IAAAgD,EAAQ,YAAR,QAAAhD,EAAiB,SACjB2D,EAAA;AACA;AAAA,QACF;AAEA,YAAI,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAChC,YAAE,eAAA;AACF,gBAAMZ,IAAOO,KAAe,EAAE;AAC9B,UAAAC,EAAgBR,CAAI,GAEhBU,EAAe,WAAS,aAAaA,EAAe,OAAO;AAE/D,gBAAMW,IAAM,SAASrB,GAAM,EAAE;AAE7B,cAAIA,EAAK,UAAU,GAAG;AACpB,kBAAMsB,IAAUpE,EAAMmE,GAAK,GAAG,EAAE,GAC1BK,IAAUrE,EAAYiE,GAAShD,CAAU;AAC/C,YAAAwB,EAAK,EAAE,GAAGD,GAAc,SAAS6B,GAAS,GAC1ClB,EAAgB,EAAE,GACdlB,OACFiC,IAAAnB,EAAU,YAAV,QAAAmB,EAAmB;AAAA,UAEvB,WACMF,IAAM,GAAG;AACX,kBAAMC,IAAUpE,EAAMmE,GAAK,GAAG,EAAE,GAC1BK,IAAUrE,EAAYiE,GAAShD,CAAU;AAC/C,YAAAwB,EAAK,EAAE,GAAGD,GAAc,SAAS6B,GAAS,GAC1ClB,EAAgB,EAAE,GACdlB,OACFqC,IAAAvB,EAAU,YAAV,QAAAuB,EAAmB;AAAA,UAEvB;AACE,YAAAjB,EAAe,UAAU,WAAW,MAAM;AACxC,oBAAMY,IAAUpE,EAAMmE,GAAK,GAAG,EAAE,GAC1BK,IAAUrE,EAAYiE,GAAShD,CAAU;AAC/C,cAAAwB,EAAK,EAAE,GAAGD,GAAc,SAAS6B,GAAS,GAC1ClB,EAAgB,EAAE;AAAA,YACpB,GAAG,GAAI;AAAA,QAGb;AAAA;AAAA,IACF,GAGMoB,KAAsB,CAAC,MAAsC;;AACjE,UAAI,CAAAxC,GAEJ;AAAA,YAAI,EAAE,QAAQ,aAAa,EAAE,QAAQ,aAAa;AAChD,YAAE,eAAA;AACF,gBAAMgC,IAAOzD,IAAOkC,EAAa,QAAQ,KAAKA,EAAa,QAAQ;AACnE,UAAAC,EAAK,EAAE,GAAGD,GAAc,OAAO3C,EAAMkE,GAAM,GAAG,EAAE,GAAG;AACnD;AAAA,QACF;AAEA,YAAI,EAAE,QAAQ,SAAS,EAAE,UAAU;AACjC,YAAE,eAAA,IACFtE,IAAAqD,EAAU,YAAV,QAAArD,EAAmB;AACnB;AAAA,QACF;AAGA,SAAI,EAAE,QAAQ,OAAO,EAAE,QAAQ,SAC7B,EAAE,eAAA,GACEa,KACFmC,EAAK,EAAE,GAAGD,GAAc,OAAOA,EAAa,QAAQ,IAAI,KAGxD,EAAE,QAAQ,OAAO,EAAE,QAAQ,SAC7B,EAAE,eAAA,GACGlC,KACHmC,EAAK,EAAE,GAAGD,GAAc,OAAOA,EAAa,QAAQ,IAAI;AAAA;AAAA,IAG9D,GAEMgC,KAAiB,CAACC,MAAmB;AACzC,MAAAnB,EAAA;AAAA,IACF,GAEMoB,KAAmB,MAAM;AAC7B,MAAAnB,EAAA;AAEA,YAAMc,IAAUrE,EAAYwC,EAAa,SAASvB,CAAU;AAC5D,MAAIoD,MAAY7B,EAAa,WAC3BC,EAAK,EAAE,GAAGD,GAAc,SAAS6B,GAAS;AAAA,IAG9C,GAEMM,KAAYlD,EAAE,0BAA0B,MAAM,GAC9CmD,KAAcnD,EAAE,4BAA4B,QAAQ,GACpDoD,KAAcpD,EAAE,4BAA4B,QAAQ,GACpDqD,KAAarD,EAAE,gCAAgC,MAAM,GAErD5C,KAASkG;AAAA,MACb,OAAO;AAAA,QACL,UAAU,MAAMvC;AAAA,QAChB,UAAU,CAACG,MAASF,EAAKE,CAAI;AAAA,QAC7B,OAAO,MAAMF,EAAK,EAAE,OAAO,GAAG,SAAS,GAAG;AAAA,QAC1C,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QAEZ;AAAA,QACA,OAAO,MAAM;AAAA,QAEb;AAAA,MAAA;AAAA,MAEF,CAACD,GAAcC,CAAI;AAAA,IAAA,GAGfuC,IAAUnC,EAAuB,IAAI;AAC3C,WAAAoC,GAAoBzD,GAAK,MAAMwD,EAAQ,SAA2B,CAAA,CAAE,GACpEE,GAAqBtG,IAAiBC,IAAQiD,CAAW;AAAA,IAIvD,gBAAAqD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKH;AAAA,QACL,IAAIlD;AAAA,QACJ,MAAK;AAAA,QACL,cAAYgD;AAAA,QACZ,oBAAkBlD,EAAI,eAAe;AAAA,QACrC,gBAAcA,EAAI,WAAW;AAAA,QAI7B,iBAAeG,KAAqB;AAAA,QACpC,kBAAe;AAAA,QACf,qBAAmBD;AAAA,QACnB,WAAWvB,GAAgB;AAAA,UACzB,MAAAa;AAAA,UACA,MAAMY;AAAA,UACN,YAAYD,KAAqB;AAAA,UACjC,WAAAT;AAAA,QAAA,CACD;AAAA,QAGD,UAAA;AAAA,UAAA,gBAAA8D;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKxC;AAAA,cACL,MAAK;AAAA,cACL,cAAY+B;AAAA,cACZ,iBAAe1C,IAAW,IAAI;AAAA,cAC9B,iBAAeA,IAAW,KAAK;AAAA,cAC/B,iBACEA,IAAW/B,EAASsC,EAAa,KAAK,IAAIA,EAAa;AAAA,cAEzD,kBAAgBkB;AAAA,cAChB,UAAU3B,IAAoB,KAAK;AAAA,cACnC,WAAU;AAAA,cACV,WAAW6B;AAAA,cACX,QAAQY;AAAA,cACR,WAAW/D,EAAgB,EAAE,MAAAW,GAAM;AAAA,cAElC,UAAAsC;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,gBAAA0B,EAAC,QAAA,EAAK,eAAY,QAAO,WAAWzE,GAAkB,EAAE,MAAAS,EAAA,CAAM,GAC3D,UAAAqC,GAAA,CACH;AAAA,UAGA,gBAAA2B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKtC;AAAA,cACL,MAAK;AAAA,cACL,cAAY8B;AAAA,cACZ,iBAAe;AAAA,cACf,iBAAe;AAAA,cACf,iBAAepC,EAAa;AAAA,cAC5B,kBAAgBmB;AAAA,cAChB,UAAU5B,IAAoB,KAAK;AAAA,cACnC,WAAU;AAAA,cACV,WAAWoC;AAAA,cACX,QAAQO;AAAA,cACR,WAAWjE,EAAgB,EAAE,MAAAW,GAAM;AAAA,cAElC,UAAAuC;AAAA,YAAA;AAAA,UAAA;AAAA,UAIF1B,IACC,gBAAAmD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKrC;AAAA,cACL,MAAK;AAAA,cACL,cAAY8B;AAAA,cACZ,iBAAe;AAAA,cACf,iBAAe;AAAA,cACf,iBAAevE,IAAO,IAAI;AAAA,cAC1B,kBAAgBA,IAAO6B,EAAQ,KAAKA,EAAQ;AAAA,cAC5C,UAAUJ,IAAoB,KAAK;AAAA,cACnC,WAAWwC;AAAA,cACX,WAAW7D,GAAqB,EAAE,MAAAU,GAAM;AAAA,cAEvC,UAAAd,IAAO6B,EAAQ,KAAKA,EAAQ;AAAA,YAAA;AAAA,UAAA,IAE7B;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAvB,GAAW,cAAc;"}
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
2
  import { forwardRef as m, useMemo as p, useRef as w, useState as V, useCallback as I, useImperativeHandle as O, useContext as u, createContext as C } from "react";
3
3
  import { c as b } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as A } from "react-i18next";
5
- import { A as P } from "./avatar-Dcr6XuDQ.js";
5
+ import { A as P } from "./avatar-I10iCDs8.js";
6
6
  import { C as N } from "./card-CWzuTLYE.js";
7
7
  import { T as B } from "./timestamp-BV2lC-wV.js";
8
8
  import { u as H } from "./registry-C9nwlNyL.js";
@@ -276,4 +276,4 @@ export {
276
276
  le as T,
277
277
  K as t
278
278
  };
279
- //# sourceMappingURL=timeline-BvmnQadS.js.map
279
+ //# sourceMappingURL=timeline-BaSULpSJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline-BvmnQadS.js","sources":["../../src/components/timeline/timeline.agent.ts","../../src/components/timeline/timeline.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Timeline. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TimelineHandle } from './timeline';\n\nexport const timelineAgent: AgentAdapter<TimelineHandle> = {\n id: 'timeline',\n capabilities: ['pick', 'range_navigate'],\n state: {\n selectedEvent: {\n type: 'string | null',\n descriptionKey: 'ui.agent.timeline.state.selectedEvent',\n description: 'Opaque event id of the currently-active event, or null.',\n read: (handle) => handle.getSelectedEvent(),\n },\n },\n actions: {\n select_event: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.timeline.actions.selectEvent',\n description: 'Scroll the given event into view and mark it as selected.',\n invoke: (handle, args: { id: string }) => {\n handle.selectEvent(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'timeline',\n description: 'Marks the Timeline root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-event-id',\n description:\n 'Opaque event id emitted on each Timeline.Event when the `eventId` prop is provided.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type LiHTMLAttributes,\n type OlHTMLAttributes,\n type ReactNode,\n type TimeHTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle, Check, Circle, Info, X } from 'lucide-react';\nimport { Avatar } from '../avatar';\nimport { Card } from '../card';\nimport { Timestamp } from '../timestamp';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { timelineAgent } from './timeline.agent';\n\n// TODO: optional @tanstack/react-virtual integration for 500+ events\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ntype EventType = 'info' | 'success' | 'warning' | 'error' | 'neutral';\ntype Layout = 'rail-start' | 'rail-end' | 'alternating';\n\ninterface TimelineContextValue {\n layout: Layout;\n order: 'newest-first' | 'oldest-first';\n}\n\nconst TimelineContext = createContext<TimelineContextValue>({\n layout: 'rail-start',\n order: 'newest-first',\n});\n\ninterface TimelineEventContextValue {\n type: EventType;\n}\n\nconst TimelineEventContext = createContext<TimelineEventContextValue>({\n type: 'neutral',\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — root */\n/* ------------------------------------------------------------------ */\n\nconst timelineVariants = cva('ds:flex ds:flex-col', {\n variants: {\n layout: {\n 'rail-start': 'ds:ps-4',\n 'rail-end': 'ds:pe-4',\n alternating:\n 'ds:grid ds:grid-cols-[1fr_2rem_1fr] ds:gap-x-[var(--spacing-md)]',\n },\n order: {\n 'newest-first': 'ds:flex-col',\n 'oldest-first': 'ds:flex-col-reverse',\n },\n },\n defaultVariants: { layout: 'rail-start', order: 'newest-first' },\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — event item */\n/* ------------------------------------------------------------------ */\n\nconst eventVariants = cva(\n 'ds:relative ds:flex ds:gap-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n {\n variants: {\n layout: {\n 'rail-start': [\n 'ds:flex-row',\n // Rail: continuous border on the inline-start of the event list\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-start-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-start-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n 'rail-end': [\n 'ds:flex-row-reverse',\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-end-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-end-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n alternating: 'ds:contents',\n },\n },\n defaultVariants: { layout: 'rail-start' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — dot */\n/* ------------------------------------------------------------------ */\n\nconst dotVariants = cva(\n [\n 'ds:relative ds:z-10 ds:flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-full)] ds:shrink-0',\n 'ds:size-8',\n 'ds:ring-2 ds:ring-[var(--background)]',\n ].join(' '),\n {\n variants: {\n type: {\n info: 'ds:bg-[var(--info)] ds:text-[var(--info-solid-foreground)]',\n success:\n 'ds:bg-[var(--success)] ds:text-[var(--success-solid-foreground)]',\n warning:\n 'ds:bg-[var(--warning)] ds:text-[var(--warning-solid-foreground)]',\n error:\n 'ds:bg-[var(--destructive)] ds:text-[var(--destructive-foreground)]',\n neutral: 'ds:bg-[var(--muted)] ds:text-[var(--muted-foreground)]',\n },\n },\n defaultVariants: { type: 'neutral' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface TimelineProps\n extends\n Omit<OlHTMLAttributes<HTMLOListElement>, 'color'>,\n VariantProps<typeof timelineVariants> {\n layout?: Layout;\n order?: 'newest-first' | 'oldest-first';\n children: ReactNode;\n className?: string;\n}\n\nexport interface TimelineEventProps extends LiHTMLAttributes<HTMLLIElement> {\n type?: EventType;\n /** Opaque event id — when set, the component emits `data-event-id` for agent addressing. */\n eventId?: string;\n children: ReactNode;\n className?: string;\n}\n\n/** Curated imperative handle for agent / external automation. */\nexport interface TimelineHandle {\n getSelectedEvent: () => string | null;\n selectEvent: (id: string) => void;\n}\n\nexport interface TimelineDotProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineContentProps extends HTMLAttributes<HTMLDivElement> {\n title: string;\n description?: string;\n actor?: { name: string; src?: string };\n children?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineTimestampProps extends TimeHTMLAttributes<HTMLTimeElement> {\n date: Date | string;\n relative?: boolean;\n format?: Intl.DateTimeFormatOptions;\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Default icons per type */\n/* ------------------------------------------------------------------ */\n\nconst TYPE_ICONS: Record<EventType, ReactNode> = {\n info: <Info size={16} aria-hidden=\"true\" />,\n success: <Check size={16} aria-hidden=\"true\" />,\n warning: <AlertTriangle size={16} aria-hidden=\"true\" />,\n error: <X size={16} aria-hidden=\"true\" />,\n neutral: <Circle size={16} aria-hidden=\"true\" />,\n};\n\n/* ------------------------------------------------------------------ */\n/* Timeline root */\n/* ------------------------------------------------------------------ */\n\nconst TimelineRoot = forwardRef<HTMLOListElement, TimelineProps>(\n (\n {\n layout = 'rail-start',\n order = 'newest-first',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const ctx = useMemo(() => ({ layout, order }), [layout, order]);\n const olRef = useRef<HTMLOListElement | null>(null);\n const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n const latestRef = useRef<string | null>(null);\n latestRef.current = selectedEvent;\n\n const selectEvent = useCallback((id: string) => {\n setSelectedEvent(id);\n const target = olRef.current?.querySelector(\n `[data-event-id=\"${id}\"]`,\n ) as HTMLElement | null;\n target?.scrollIntoView({ block: 'center', behavior: 'auto' });\n }, []);\n\n const agentHandle = useMemo<TimelineHandle>(\n () => ({\n getSelectedEvent: () => latestRef.current,\n selectEvent,\n }),\n [selectEvent],\n );\n useImperativeHandle(ref, () => olRef.current as HTMLOListElement, []);\n useAgentRegistration(timelineAgent, agentHandle, props.id);\n\n return (\n <TimelineContext.Provider value={ctx}>\n <ol\n ref={olRef}\n data-component=\"timeline\"\n data-component-id={props.id}\n data-selected-event={selectedEvent ?? undefined}\n className={timelineVariants({ layout, order, className })}\n {...props}\n >\n {children}\n </ol>\n </TimelineContext.Provider>\n );\n },\n);\nTimelineRoot.displayName = 'Timeline';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Event */\n/* ------------------------------------------------------------------ */\n\nconst TimelineEvent = forwardRef<HTMLLIElement, TimelineEventProps>(\n ({ type = 'neutral', eventId, className, children, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n const { t } = useTranslation();\n\n const evtCtx = useMemo(() => ({ type }), [type]);\n\n if (layout === 'alternating') {\n // In alternating layout the <li> uses `contents` so its children\n // participate directly in the parent grid.\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n data-event-id={eventId}\n className={['ds:contents', className].filter(Boolean).join(' ')}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n }\n\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n data-event-id={eventId}\n className={eventVariants({ layout, className })}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n },\n);\nTimelineEvent.displayName = 'Timeline.Event';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Dot */\n/* ------------------------------------------------------------------ */\n\nconst TimelineDot = forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ icon, className, ...props }, ref) => {\n const { type } = useContext(TimelineEventContext);\n const { layout } = useContext(TimelineContext);\n\n const dot = (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={dotVariants({ type, className })}\n {...props}\n >\n {icon ?? TYPE_ICONS[type]}\n </div>\n );\n\n if (layout === 'alternating') {\n // In alternating grid: col 2 (centre) for the dot with the rail line\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:col-start-2 ds:flex ds:flex-col ds:items-center\"\n >\n {/* Rail segment above the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)] ds:first:hidden\" />\n {dot}\n {/* Rail segment below the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)]\" />\n </div>\n );\n }\n\n return dot;\n },\n);\nTimelineDot.displayName = 'Timeline.Dot';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Content */\n/* ------------------------------------------------------------------ */\n\nconst TimelineContent = forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ title, description, actor, children, className, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n\n const inner = (\n <div\n ref={ref}\n className={[\n 'ds:flex-1 ds:min-w-0 ds:pb-[var(--spacing-md)]',\n 'ds:[&_*]:break-normal ds:[&_*]:[overflow-wrap:anywhere]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <Card variant=\"outlined\">\n <Card.Body>\n <p className=\"type-label ds:text-[var(--foreground)]\">{title}</p>\n {description && (\n <p className=\"ds:mt-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]\">\n {description}\n </p>\n )}\n {actor && (\n <div className=\"ds:mt-[var(--spacing-sm)] ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Avatar size=\"xs\" name={actor.name} src={actor.src} />\n <span className=\"type-meta ds:text-[var(--muted-foreground)]\">\n {actor.name}\n </span>\n </div>\n )}\n {children}\n </Card.Body>\n </Card>\n </div>\n );\n\n if (layout === 'alternating') {\n // Alternating: odd events in col 1 (start), even events in col 3 (end).\n // We use CSS nth-child targeting via a wrapper that sets col placement.\n return (\n <div className=\"ds:col-span-1 ds:[li:nth-child(even)_&]:col-start-3 ds:[li:nth-child(odd)_&]:col-start-1\">\n {inner}\n </div>\n );\n }\n\n return inner;\n },\n);\nTimelineContent.displayName = 'Timeline.Content';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Timestamp — thin wrapper over the shared Timestamp */\n/* component. Keeps the existing API (`date`, `relative`, `format`) */\n/* for backward compatibility; adds tabular-nums because timeline */\n/* timestamps sit in a rail gutter and benefit from column-aligned */\n/* digits. */\n/* ------------------------------------------------------------------ */\n\nconst TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;\n\nconst TimelineTimestamp = forwardRef<HTMLTimeElement, TimelineTimestampProps>(\n (\n {\n date,\n relative = true,\n format = { dateStyle: 'medium', timeStyle: 'short' },\n className,\n ...props\n },\n ref,\n ) => (\n <Timestamp\n ref={ref}\n value={date}\n format={relative ? 'relative' : 'absolute'}\n relativeWindow={relative ? TWENTY_FOUR_HOURS_MS : undefined}\n absoluteFormat={format}\n className={[\n 'ds:text-[var(--muted-foreground)]',\n 'ds:[font-variant-numeric:var(--font-feature-tabular)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nTimelineTimestamp.displayName = 'Timeline.Timestamp';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Timeline = Object.assign(TimelineRoot, {\n Event: TimelineEvent,\n Dot: TimelineDot,\n Content: TimelineContent,\n Timestamp: TimelineTimestamp,\n});\n"],"names":["timelineAgent","handle","args","TimelineContext","createContext","TimelineEventContext","timelineVariants","cva","eventVariants","dotVariants","TYPE_ICONS","jsx","Info","Check","AlertTriangle","X","Circle","TimelineRoot","forwardRef","layout","order","className","children","props","ref","ctx","useMemo","olRef","useRef","selectedEvent","setSelectedEvent","useState","latestRef","selectEvent","useCallback","id","target","_a","agentHandle","useImperativeHandle","useAgentRegistration","TimelineEvent","type","eventId","useContext","t","useTranslation","evtCtx","jsxs","TimelineDot","icon","dot","TimelineContent","title","description","actor","inner","Card","Avatar","TWENTY_FOUR_HOURS_MS","TimelineTimestamp","date","relative","format","Timestamp","Timeline"],"mappings":"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"}
1
+ {"version":3,"file":"timeline-BaSULpSJ.js","sources":["../../src/components/timeline/timeline.agent.ts","../../src/components/timeline/timeline.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Timeline. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TimelineHandle } from './timeline';\n\nexport const timelineAgent: AgentAdapter<TimelineHandle> = {\n id: 'timeline',\n capabilities: ['pick', 'range_navigate'],\n state: {\n selectedEvent: {\n type: 'string | null',\n descriptionKey: 'ui.agent.timeline.state.selectedEvent',\n description: 'Opaque event id of the currently-active event, or null.',\n read: (handle) => handle.getSelectedEvent(),\n },\n },\n actions: {\n select_event: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.timeline.actions.selectEvent',\n description: 'Scroll the given event into view and mark it as selected.',\n invoke: (handle, args: { id: string }) => {\n handle.selectEvent(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'timeline',\n description: 'Marks the Timeline root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-event-id',\n description:\n 'Opaque event id emitted on each Timeline.Event when the `eventId` prop is provided.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type LiHTMLAttributes,\n type OlHTMLAttributes,\n type ReactNode,\n type TimeHTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle, Check, Circle, Info, X } from 'lucide-react';\nimport { Avatar } from '../avatar';\nimport { Card } from '../card';\nimport { Timestamp } from '../timestamp';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { timelineAgent } from './timeline.agent';\n\n// TODO: optional @tanstack/react-virtual integration for 500+ events\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ntype EventType = 'info' | 'success' | 'warning' | 'error' | 'neutral';\ntype Layout = 'rail-start' | 'rail-end' | 'alternating';\n\ninterface TimelineContextValue {\n layout: Layout;\n order: 'newest-first' | 'oldest-first';\n}\n\nconst TimelineContext = createContext<TimelineContextValue>({\n layout: 'rail-start',\n order: 'newest-first',\n});\n\ninterface TimelineEventContextValue {\n type: EventType;\n}\n\nconst TimelineEventContext = createContext<TimelineEventContextValue>({\n type: 'neutral',\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — root */\n/* ------------------------------------------------------------------ */\n\nconst timelineVariants = cva('ds:flex ds:flex-col', {\n variants: {\n layout: {\n 'rail-start': 'ds:ps-4',\n 'rail-end': 'ds:pe-4',\n alternating:\n 'ds:grid ds:grid-cols-[1fr_2rem_1fr] ds:gap-x-[var(--spacing-md)]',\n },\n order: {\n 'newest-first': 'ds:flex-col',\n 'oldest-first': 'ds:flex-col-reverse',\n },\n },\n defaultVariants: { layout: 'rail-start', order: 'newest-first' },\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — event item */\n/* ------------------------------------------------------------------ */\n\nconst eventVariants = cva(\n 'ds:relative ds:flex ds:gap-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n {\n variants: {\n layout: {\n 'rail-start': [\n 'ds:flex-row',\n // Rail: continuous border on the inline-start of the event list\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-start-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-start-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n 'rail-end': [\n 'ds:flex-row-reverse',\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-end-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-end-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n alternating: 'ds:contents',\n },\n },\n defaultVariants: { layout: 'rail-start' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — dot */\n/* ------------------------------------------------------------------ */\n\nconst dotVariants = cva(\n [\n 'ds:relative ds:z-10 ds:flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-full)] ds:shrink-0',\n 'ds:size-8',\n 'ds:ring-2 ds:ring-[var(--background)]',\n ].join(' '),\n {\n variants: {\n type: {\n info: 'ds:bg-[var(--info)] ds:text-[var(--info-solid-foreground)]',\n success:\n 'ds:bg-[var(--success)] ds:text-[var(--success-solid-foreground)]',\n warning:\n 'ds:bg-[var(--warning)] ds:text-[var(--warning-solid-foreground)]',\n error:\n 'ds:bg-[var(--destructive)] ds:text-[var(--destructive-foreground)]',\n neutral: 'ds:bg-[var(--muted)] ds:text-[var(--muted-foreground)]',\n },\n },\n defaultVariants: { type: 'neutral' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface TimelineProps\n extends\n Omit<OlHTMLAttributes<HTMLOListElement>, 'color'>,\n VariantProps<typeof timelineVariants> {\n layout?: Layout;\n order?: 'newest-first' | 'oldest-first';\n children: ReactNode;\n className?: string;\n}\n\nexport interface TimelineEventProps extends LiHTMLAttributes<HTMLLIElement> {\n type?: EventType;\n /** Opaque event id — when set, the component emits `data-event-id` for agent addressing. */\n eventId?: string;\n children: ReactNode;\n className?: string;\n}\n\n/** Curated imperative handle for agent / external automation. */\nexport interface TimelineHandle {\n getSelectedEvent: () => string | null;\n selectEvent: (id: string) => void;\n}\n\nexport interface TimelineDotProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineContentProps extends HTMLAttributes<HTMLDivElement> {\n title: string;\n description?: string;\n actor?: { name: string; src?: string };\n children?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineTimestampProps extends TimeHTMLAttributes<HTMLTimeElement> {\n date: Date | string;\n relative?: boolean;\n format?: Intl.DateTimeFormatOptions;\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Default icons per type */\n/* ------------------------------------------------------------------ */\n\nconst TYPE_ICONS: Record<EventType, ReactNode> = {\n info: <Info size={16} aria-hidden=\"true\" />,\n success: <Check size={16} aria-hidden=\"true\" />,\n warning: <AlertTriangle size={16} aria-hidden=\"true\" />,\n error: <X size={16} aria-hidden=\"true\" />,\n neutral: <Circle size={16} aria-hidden=\"true\" />,\n};\n\n/* ------------------------------------------------------------------ */\n/* Timeline root */\n/* ------------------------------------------------------------------ */\n\nconst TimelineRoot = forwardRef<HTMLOListElement, TimelineProps>(\n (\n {\n layout = 'rail-start',\n order = 'newest-first',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const ctx = useMemo(() => ({ layout, order }), [layout, order]);\n const olRef = useRef<HTMLOListElement | null>(null);\n const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n const latestRef = useRef<string | null>(null);\n latestRef.current = selectedEvent;\n\n const selectEvent = useCallback((id: string) => {\n setSelectedEvent(id);\n const target = olRef.current?.querySelector(\n `[data-event-id=\"${id}\"]`,\n ) as HTMLElement | null;\n target?.scrollIntoView({ block: 'center', behavior: 'auto' });\n }, []);\n\n const agentHandle = useMemo<TimelineHandle>(\n () => ({\n getSelectedEvent: () => latestRef.current,\n selectEvent,\n }),\n [selectEvent],\n );\n useImperativeHandle(ref, () => olRef.current as HTMLOListElement, []);\n useAgentRegistration(timelineAgent, agentHandle, props.id);\n\n return (\n <TimelineContext.Provider value={ctx}>\n <ol\n ref={olRef}\n data-component=\"timeline\"\n data-component-id={props.id}\n data-selected-event={selectedEvent ?? undefined}\n className={timelineVariants({ layout, order, className })}\n {...props}\n >\n {children}\n </ol>\n </TimelineContext.Provider>\n );\n },\n);\nTimelineRoot.displayName = 'Timeline';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Event */\n/* ------------------------------------------------------------------ */\n\nconst TimelineEvent = forwardRef<HTMLLIElement, TimelineEventProps>(\n ({ type = 'neutral', eventId, className, children, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n const { t } = useTranslation();\n\n const evtCtx = useMemo(() => ({ type }), [type]);\n\n if (layout === 'alternating') {\n // In alternating layout the <li> uses `contents` so its children\n // participate directly in the parent grid.\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n data-event-id={eventId}\n className={['ds:contents', className].filter(Boolean).join(' ')}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n }\n\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n data-event-id={eventId}\n className={eventVariants({ layout, className })}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n },\n);\nTimelineEvent.displayName = 'Timeline.Event';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Dot */\n/* ------------------------------------------------------------------ */\n\nconst TimelineDot = forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ icon, className, ...props }, ref) => {\n const { type } = useContext(TimelineEventContext);\n const { layout } = useContext(TimelineContext);\n\n const dot = (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={dotVariants({ type, className })}\n {...props}\n >\n {icon ?? TYPE_ICONS[type]}\n </div>\n );\n\n if (layout === 'alternating') {\n // In alternating grid: col 2 (centre) for the dot with the rail line\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:col-start-2 ds:flex ds:flex-col ds:items-center\"\n >\n {/* Rail segment above the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)] ds:first:hidden\" />\n {dot}\n {/* Rail segment below the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)]\" />\n </div>\n );\n }\n\n return dot;\n },\n);\nTimelineDot.displayName = 'Timeline.Dot';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Content */\n/* ------------------------------------------------------------------ */\n\nconst TimelineContent = forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ title, description, actor, children, className, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n\n const inner = (\n <div\n ref={ref}\n className={[\n 'ds:flex-1 ds:min-w-0 ds:pb-[var(--spacing-md)]',\n 'ds:[&_*]:break-normal ds:[&_*]:[overflow-wrap:anywhere]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <Card variant=\"outlined\">\n <Card.Body>\n <p className=\"type-label ds:text-[var(--foreground)]\">{title}</p>\n {description && (\n <p className=\"ds:mt-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]\">\n {description}\n </p>\n )}\n {actor && (\n <div className=\"ds:mt-[var(--spacing-sm)] ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Avatar size=\"xs\" name={actor.name} src={actor.src} />\n <span className=\"type-meta ds:text-[var(--muted-foreground)]\">\n {actor.name}\n </span>\n </div>\n )}\n {children}\n </Card.Body>\n </Card>\n </div>\n );\n\n if (layout === 'alternating') {\n // Alternating: odd events in col 1 (start), even events in col 3 (end).\n // We use CSS nth-child targeting via a wrapper that sets col placement.\n return (\n <div className=\"ds:col-span-1 ds:[li:nth-child(even)_&]:col-start-3 ds:[li:nth-child(odd)_&]:col-start-1\">\n {inner}\n </div>\n );\n }\n\n return inner;\n },\n);\nTimelineContent.displayName = 'Timeline.Content';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Timestamp — thin wrapper over the shared Timestamp */\n/* component. Keeps the existing API (`date`, `relative`, `format`) */\n/* for backward compatibility; adds tabular-nums because timeline */\n/* timestamps sit in a rail gutter and benefit from column-aligned */\n/* digits. */\n/* ------------------------------------------------------------------ */\n\nconst TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;\n\nconst TimelineTimestamp = forwardRef<HTMLTimeElement, TimelineTimestampProps>(\n (\n {\n date,\n relative = true,\n format = { dateStyle: 'medium', timeStyle: 'short' },\n className,\n ...props\n },\n ref,\n ) => (\n <Timestamp\n ref={ref}\n value={date}\n format={relative ? 'relative' : 'absolute'}\n relativeWindow={relative ? TWENTY_FOUR_HOURS_MS : undefined}\n absoluteFormat={format}\n className={[\n 'ds:text-[var(--muted-foreground)]',\n 'ds:[font-variant-numeric:var(--font-feature-tabular)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nTimelineTimestamp.displayName = 'Timeline.Timestamp';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Timeline = Object.assign(TimelineRoot, {\n Event: TimelineEvent,\n Dot: TimelineDot,\n Content: TimelineContent,\n Timestamp: TimelineTimestamp,\n});\n"],"names":["timelineAgent","handle","args","TimelineContext","createContext","TimelineEventContext","timelineVariants","cva","eventVariants","dotVariants","TYPE_ICONS","jsx","Info","Check","AlertTriangle","X","Circle","TimelineRoot","forwardRef","layout","order","className","children","props","ref","ctx","useMemo","olRef","useRef","selectedEvent","setSelectedEvent","useState","latestRef","selectEvent","useCallback","id","target","_a","agentHandle","useImperativeHandle","useAgentRegistration","TimelineEvent","type","eventId","useContext","t","useTranslation","evtCtx","jsxs","TimelineDot","icon","dot","TimelineContent","title","description","actor","inner","Card","Avatar","TWENTY_FOUR_HOURS_MS","TimelineTimestamp","date","relative","format","Timestamp","Timeline"],"mappings":"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"}
@@ -802,7 +802,7 @@ function je({
802
802
  className: y
803
803
  }) {
804
804
  const { t: d } = ae();
805
- $t = d("ui.common.close", "Close");
805
+ $t = d("common.close", "Close");
806
806
  const [c] = Ot(() => Nt ? !1 : (Nt = !0, !0)), b = te(null), [v, i] = Ot(
807
807
  () => typeof document < "u" && document.documentElement.dir || "ltr"
808
808
  );
@@ -983,4 +983,4 @@ export {
983
983
  Ze as e,
984
984
  aa as t
985
985
  };
986
- //# sourceMappingURL=toast.agent-DihA6MON.js.map
986
+ //# sourceMappingURL=toast.agent-32WNQ-_x.js.map