@alfadocs/ui-kit-debug 0.25.1 → 0.30.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 (361) hide show
  1. package/dist/_chunks/{agenda-card-BmpaUG1h.js → agenda-card-CznB7K8e.js} +2 -2
  2. package/dist/_chunks/{agenda-card-BmpaUG1h.js.map → agenda-card-CznB7K8e.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-DiInnVqk.js → agenda-tray-C_bha7oK.js} +4 -4
  4. package/dist/_chunks/{agenda-tray-DiInnVqk.js.map → agenda-tray-C_bha7oK.js.map} +1 -1
  5. package/dist/_chunks/{ai-prompt-input-B5MdixzR.js → ai-prompt-input-Bka3jX3i.js} +2 -2
  6. package/dist/_chunks/{ai-prompt-input-B5MdixzR.js.map → ai-prompt-input-Bka3jX3i.js.map} +1 -1
  7. package/dist/_chunks/{alia-sidebar-CUi2UCbY.js → alia-sidebar-CnvXq95r.js} +92 -109
  8. package/dist/_chunks/alia-sidebar-CnvXq95r.js.map +1 -0
  9. package/dist/_chunks/{audio-recorder-D4xM3H5i.js → audio-recorder-OB6IV9B1.js} +2 -2
  10. package/dist/_chunks/{audio-recorder-D4xM3H5i.js.map → audio-recorder-OB6IV9B1.js.map} +1 -1
  11. package/dist/_chunks/{autocomplete-C7xq06bP.js → autocomplete-CUh0f7Dj.js} +2 -2
  12. package/dist/_chunks/{autocomplete-C7xq06bP.js.map → autocomplete-CUh0f7Dj.js.map} +1 -1
  13. package/dist/_chunks/{avatar-BpFohgWG.js → avatar-D_H4emLo.js} +7 -7
  14. package/dist/_chunks/avatar-D_H4emLo.js.map +1 -0
  15. package/dist/_chunks/{benefit-card-DXmrAyfn.js → benefit-card-CjYM8vNr.js} +29 -29
  16. package/dist/_chunks/benefit-card-CjYM8vNr.js.map +1 -0
  17. package/dist/_chunks/booking-BYuc_8HV.js +2250 -0
  18. package/dist/_chunks/booking-BYuc_8HV.js.map +1 -0
  19. package/dist/_chunks/{calendar-zy0tUUVG.js → calendar-WWNx448i.js} +114 -142
  20. package/dist/_chunks/calendar-WWNx448i.js.map +1 -0
  21. package/dist/_chunks/{card-C353dU-H.js → card-DKTMLVrw.js} +11 -11
  22. package/dist/_chunks/card-DKTMLVrw.js.map +1 -0
  23. package/dist/_chunks/{carousel.agent-DnPiqijR.js → carousel.agent-C9swH-Uf.js} +2 -2
  24. package/dist/_chunks/{carousel.agent-DnPiqijR.js.map → carousel.agent-C9swH-Uf.js.map} +1 -1
  25. package/dist/_chunks/{chat-input-B3XmFGDw.js → chat-input-BfDcz1Yi.js} +2 -2
  26. package/dist/_chunks/{chat-input-B3XmFGDw.js.map → chat-input-BfDcz1Yi.js.map} +1 -1
  27. package/dist/_chunks/{chat-message-W3k8rLOA.js → chat-message-fg221-yx.js} +2 -2
  28. package/dist/_chunks/{chat-message-W3k8rLOA.js.map → chat-message-fg221-yx.js.map} +1 -1
  29. package/dist/_chunks/checkbox-mwbrPZDY.js.map +1 -1
  30. package/dist/_chunks/{command-palette-DkL-aW4O.js → command-palette-11BieSNq.js} +2 -2
  31. package/dist/_chunks/{command-palette-DkL-aW4O.js.map → command-palette-11BieSNq.js.map} +1 -1
  32. package/dist/_chunks/{contact-card-CjG7c-1q.js → contact-card-DYbp--s-.js} +3 -3
  33. package/dist/_chunks/{contact-card-CjG7c-1q.js.map → contact-card-DYbp--s-.js.map} +1 -1
  34. package/dist/_chunks/{date-picker-BIoSLRly.js → date-picker-D0Ry1dMz.js} +26 -27
  35. package/dist/_chunks/{date-picker-BIoSLRly.js.map → date-picker-D0Ry1dMz.js.map} +1 -1
  36. package/dist/_chunks/{date-range-picker-9gANFNG9.js → date-range-picker-DYgHzMOo.js} +19 -20
  37. package/dist/_chunks/{date-range-picker-9gANFNG9.js.map → date-range-picker-DYgHzMOo.js.map} +1 -1
  38. package/dist/_chunks/{date-time-picker-DG7BiGdb.js → date-time-picker-CGmGtcyc.js} +10 -11
  39. package/dist/_chunks/{date-time-picker-DG7BiGdb.js.map → date-time-picker-CGmGtcyc.js.map} +1 -1
  40. package/dist/_chunks/{description-list-Bsga4IW8.js → description-list-yl3y3QKg.js} +34 -24
  41. package/dist/_chunks/description-list-yl3y3QKg.js.map +1 -0
  42. package/dist/_chunks/{dialog-DUomPCRS.js → dialog-BBXqpZIt.js} +2 -2
  43. package/dist/_chunks/{dialog-DUomPCRS.js.map → dialog-BBXqpZIt.js.map} +1 -1
  44. package/dist/_chunks/{editable-currency-cell-renderer-DJB5MxAI.js → editable-currency-cell-renderer-DSReCae7.js} +7 -7
  45. package/dist/_chunks/{editable-currency-cell-renderer-DJB5MxAI.js.map → editable-currency-cell-renderer-DSReCae7.js.map} +1 -1
  46. package/dist/_chunks/{empty-state-3CLJIXSj.js → empty-state-BLy7tigq.js} +13 -33
  47. package/dist/_chunks/empty-state-BLy7tigq.js.map +1 -0
  48. package/dist/_chunks/eye-LHlSU38h.js +21 -0
  49. package/dist/_chunks/eye-LHlSU38h.js.map +1 -0
  50. package/dist/_chunks/{freemium-paywall-CM6V1zNf.js → freemium-paywall-B9c8Ylww.js} +11 -11
  51. package/dist/_chunks/{freemium-paywall-CM6V1zNf.js.map → freemium-paywall-B9c8Ylww.js.map} +1 -1
  52. package/dist/_chunks/{header-DqmKROIY.js → header-CkMb1TZS.js} +24 -24
  53. package/dist/_chunks/header-CkMb1TZS.js.map +1 -0
  54. package/dist/_chunks/heart-pulse-CvuyFKHB.js +21 -0
  55. package/dist/_chunks/heart-pulse-CvuyFKHB.js.map +1 -0
  56. package/dist/_chunks/icon-button-BRHSSFmZ.js +70 -0
  57. package/dist/_chunks/icon-button-BRHSSFmZ.js.map +1 -0
  58. package/dist/_chunks/{isSameDay-ecuM8PBB.js → isSameDay-DHG8Xade.js} +4 -4
  59. package/dist/_chunks/{isSameDay-ecuM8PBB.js.map → isSameDay-DHG8Xade.js.map} +1 -1
  60. package/dist/_chunks/{key-value-pair-DBuOCtIc.js → key-value-pair-CqeKiP__.js} +2 -2
  61. package/dist/_chunks/{key-value-pair-DBuOCtIc.js.map → key-value-pair-CqeKiP__.js.map} +1 -1
  62. package/dist/_chunks/{link-DmM5IevO.js → link-DrD_cRUg.js} +50 -45
  63. package/dist/_chunks/link-DrD_cRUg.js.map +1 -0
  64. package/dist/_chunks/{locale-picker-BxEUUPW7.js → locale-picker-BHxbTNmR.js} +297 -208
  65. package/dist/_chunks/locale-picker-BHxbTNmR.js.map +1 -0
  66. package/dist/_chunks/{map-view-CcwycFQX.js → map-view-DyB8tr6c.js} +9 -9
  67. package/dist/_chunks/{map-view-CcwycFQX.js.map → map-view-DyB8tr6c.js.map} +1 -1
  68. package/dist/_chunks/{matrix-rain-CRPMXcVx.js → matrix-rain-sDOUUwZp.js} +35 -35
  69. package/dist/_chunks/matrix-rain-sDOUUwZp.js.map +1 -0
  70. package/dist/_chunks/{message-card-i61k1TGc.js → message-card-DjRtA8GG.js} +3 -3
  71. package/dist/_chunks/{message-card-i61k1TGc.js.map → message-card-DjRtA8GG.js.map} +1 -1
  72. package/dist/_chunks/{message-tray-DrV7G-wR.js → message-tray-DfsAMncP.js} +3 -3
  73. package/dist/_chunks/{message-tray-DrV7G-wR.js.map → message-tray-DfsAMncP.js.map} +1 -1
  74. package/dist/_chunks/monitor-D-SFdbrU.js +16 -0
  75. package/dist/_chunks/monitor-D-SFdbrU.js.map +1 -0
  76. package/dist/_chunks/{notification-card-ejOw5g6g.js → notification-card-B_847w5g.js} +3 -3
  77. package/dist/_chunks/notification-card-B_847w5g.js.map +1 -0
  78. package/dist/_chunks/{notification-tray-D_69dXFY.js → notification-tray-6f7smmT1.js} +22 -19
  79. package/dist/_chunks/notification-tray-6f7smmT1.js.map +1 -0
  80. package/dist/_chunks/parseISO-Dk4xa7q6.js +120 -0
  81. package/dist/_chunks/parseISO-Dk4xa7q6.js.map +1 -0
  82. package/dist/_chunks/patient-search-BhlxYAI3.js +1102 -0
  83. package/dist/_chunks/patient-search-BhlxYAI3.js.map +1 -0
  84. package/dist/_chunks/patient-shell-CAXYzbRw.js +173 -0
  85. package/dist/_chunks/{patient-shell-B164drIa.js.map → patient-shell-CAXYzbRw.js.map} +1 -1
  86. package/dist/_chunks/{payment-form-F7uh0Rqr.js → payment-form-Ds3rxvad.js} +2 -2
  87. package/dist/_chunks/{payment-form-F7uh0Rqr.js.map → payment-form-Ds3rxvad.js.map} +1 -1
  88. package/dist/_chunks/{pdf-viewer-CuYaVR1I.js → pdf-viewer-CIuaocnq.js} +2 -2
  89. package/dist/_chunks/{pdf-viewer-CuYaVR1I.js.map → pdf-viewer-CIuaocnq.js.map} +1 -1
  90. package/dist/_chunks/{popover--derJ_wq.js → popover-D0slaBB9.js} +17 -13
  91. package/dist/_chunks/popover-D0slaBB9.js.map +1 -0
  92. package/dist/_chunks/{privacy-lock-BKsI6ReN.js → privacy-lock-BI4vi9Ud.js} +2 -2
  93. package/dist/_chunks/{privacy-lock-BKsI6ReN.js.map → privacy-lock-BI4vi9Ud.js.map} +1 -1
  94. package/dist/_chunks/public-footer.agent-CA29gxHJ.js +516 -0
  95. package/dist/_chunks/public-footer.agent-CA29gxHJ.js.map +1 -0
  96. package/dist/_chunks/{public-header.agent-BQ3r6Hgq.js → public-header.agent-5U3S9QiC.js} +49 -41
  97. package/dist/_chunks/public-header.agent-5U3S9QiC.js.map +1 -0
  98. package/dist/_chunks/react-day-picker-D3yzgvDB.js +3127 -0
  99. package/dist/_chunks/react-day-picker-D3yzgvDB.js.map +1 -0
  100. package/dist/_chunks/{recaptcha-widget-Kp1XntuE.js → recaptcha-widget-BtBNb6tB.js} +2 -2
  101. package/dist/_chunks/{recaptcha-widget-Kp1XntuE.js.map → recaptcha-widget-BtBNb6tB.js.map} +1 -1
  102. package/dist/_chunks/reviews-panel-CFttsfuC.js +513 -0
  103. package/dist/_chunks/reviews-panel-CFttsfuC.js.map +1 -0
  104. package/dist/_chunks/{search-bar-DORSAzNt.js → search-bar-BRMW1-WG.js} +2 -2
  105. package/dist/_chunks/{search-bar-DORSAzNt.js.map → search-bar-BRMW1-WG.js.map} +1 -1
  106. package/dist/_chunks/{search-input-BtEJAJHa.js → search-input-CIA6pPfn.js} +2 -2
  107. package/dist/_chunks/{search-input-BtEJAJHa.js.map → search-input-CIA6pPfn.js.map} +1 -1
  108. package/dist/_chunks/{sheet-BT0izeoI.js → sheet-D8M8hf8B.js} +2 -2
  109. package/dist/_chunks/{sheet-BT0izeoI.js.map → sheet-D8M8hf8B.js.map} +1 -1
  110. package/dist/_chunks/{sign-in-with-alfadocs-button-4zZC-I6y.js → sign-in-with-alfadocs-button-BI0fVonM.js} +2 -2
  111. package/dist/_chunks/{sign-in-with-alfadocs-button-4zZC-I6y.js.map → sign-in-with-alfadocs-button-BI0fVonM.js.map} +1 -1
  112. package/dist/_chunks/slot-grid-B2zprPcv.js +387 -0
  113. package/dist/_chunks/slot-grid-B2zprPcv.js.map +1 -0
  114. package/dist/_chunks/sparkles-CuYXqQLg.js +23 -0
  115. package/dist/_chunks/sparkles-CuYXqQLg.js.map +1 -0
  116. package/dist/_chunks/{spinner-DirtWZNG.js → spinner-CCByyvcb.js} +2 -2
  117. package/dist/_chunks/spinner-CCByyvcb.js.map +1 -0
  118. package/dist/_chunks/stepper-accordion-BfS6lUB9.js +257 -0
  119. package/dist/_chunks/stepper-accordion-BfS6lUB9.js.map +1 -0
  120. package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js +71 -0
  121. package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js.map +1 -0
  122. package/dist/_chunks/stethoscope-DT5qCW8Y.js +18 -0
  123. package/dist/_chunks/stethoscope-DT5qCW8Y.js.map +1 -0
  124. package/dist/_chunks/{sun-Eweh5fvi.js → sun-BuXE0xUS.js} +3 -15
  125. package/dist/_chunks/sun-BuXE0xUS.js.map +1 -0
  126. package/dist/_chunks/{task-tray-B3A2fRGR.js → task-tray-Bcmrrs8m.js} +3 -3
  127. package/dist/_chunks/{task-tray-B3A2fRGR.js.map → task-tray-Bcmrrs8m.js.map} +1 -1
  128. package/dist/_chunks/{theme-toggle-FrotC2VI.js → theme-toggle-nPzb378f.js} +37 -36
  129. package/dist/_chunks/{theme-toggle-FrotC2VI.js.map → theme-toggle-nPzb378f.js.map} +1 -1
  130. package/dist/_chunks/{timeline-jmd7lfDf.js → timeline-CR7HjZCK.js} +3 -3
  131. package/dist/_chunks/{timeline-jmd7lfDf.js.map → timeline-CR7HjZCK.js.map} +1 -1
  132. package/dist/_chunks/{toast.agent-32WNQ-_x.js → toast.agent-CTF6nIj5.js} +2 -2
  133. package/dist/_chunks/{toast.agent-32WNQ-_x.js.map → toast.agent-CTF6nIj5.js.map} +1 -1
  134. package/dist/_chunks/{transcript-panel-DUrjx5sa.js → transcript-panel-QUQ9XJmf.js} +2 -2
  135. package/dist/_chunks/{transcript-panel-DUrjx5sa.js.map → transcript-panel-QUQ9XJmf.js.map} +1 -1
  136. package/dist/_chunks/{use-password-requirements-C9vKBSVn.js → use-password-requirements-E0sSfx5X.js} +38 -53
  137. package/dist/_chunks/use-password-requirements-E0sSfx5X.js.map +1 -0
  138. package/dist/_chunks/use-theme-C2dHKUAN.js +145 -0
  139. package/dist/_chunks/use-theme-C2dHKUAN.js.map +1 -0
  140. package/dist/_chunks/{workflow-map-BR6txfFX.js → workflow-map-BKsKdYvZ.js} +5 -5
  141. package/dist/_chunks/{workflow-map-BR6txfFX.js.map → workflow-map-BKsKdYvZ.js.map} +1 -1
  142. package/dist/agent-catalog.json +151 -51
  143. package/dist/components/agenda-card/index.js +1 -1
  144. package/dist/components/agenda-tray/index.js +1 -1
  145. package/dist/components/ai-prompt-input/index.js +1 -1
  146. package/dist/components/audio-recorder/index.js +1 -1
  147. package/dist/components/autocomplete/index.js +1 -1
  148. package/dist/components/avatar/avatar.d.ts.map +1 -1
  149. package/dist/components/avatar/index.js +1 -1
  150. package/dist/components/benefit-card/benefit-card.d.ts.map +1 -1
  151. package/dist/components/benefit-card/index.js +1 -1
  152. package/dist/components/booking/booking-types.d.ts +145 -0
  153. package/dist/components/booking/booking-types.d.ts.map +1 -0
  154. package/dist/components/booking/booking.agent.d.ts +4 -0
  155. package/dist/components/booking/booking.agent.d.ts.map +1 -0
  156. package/dist/components/booking/booking.d.ts +6 -0
  157. package/dist/components/booking/booking.d.ts.map +1 -0
  158. package/dist/components/booking/cascade.d.ts +96 -0
  159. package/dist/components/booking/cascade.d.ts.map +1 -0
  160. package/dist/components/booking/details-form.d.ts +32 -0
  161. package/dist/components/booking/details-form.d.ts.map +1 -0
  162. package/dist/components/booking/index.d.ts +5 -0
  163. package/dist/components/booking/index.d.ts.map +1 -0
  164. package/dist/components/booking/index.js +8 -0
  165. package/dist/components/button/icon-button.d.ts.map +1 -1
  166. package/dist/components/button/index.js +1 -1
  167. package/dist/components/calendar/index.js +1 -1
  168. package/dist/components/card/card.d.ts.map +1 -1
  169. package/dist/components/card/index.js +1 -1
  170. package/dist/components/carousel/index.js +1 -1
  171. package/dist/components/chat-input/index.js +1 -1
  172. package/dist/components/chat-message/index.js +1 -1
  173. package/dist/components/checkbox/checkbox.d.ts +6 -2
  174. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  175. package/dist/components/command-palette/index.js +1 -1
  176. package/dist/components/contact-card/index.js +1 -1
  177. package/dist/components/data-table/index.js +1 -1
  178. package/dist/components/date-picker/index.js +1 -1
  179. package/dist/components/date-range-picker/index.js +1 -1
  180. package/dist/components/date-time-picker/index.js +1 -1
  181. package/dist/components/description-list/description-list.d.ts.map +1 -1
  182. package/dist/components/description-list/index.js +1 -1
  183. package/dist/components/dialog/index.js +1 -1
  184. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  185. package/dist/components/empty-state/index.js +1 -1
  186. package/dist/components/freemium-paywall/index.js +1 -1
  187. package/dist/components/header/index.js +1 -1
  188. package/dist/components/header-settings/index.js +16 -15
  189. package/dist/components/header-settings/index.js.map +1 -1
  190. package/dist/components/icon-button/index.js +1 -1
  191. package/dist/components/index.d.ts +4 -1
  192. package/dist/components/index.d.ts.map +1 -1
  193. package/dist/components/key-value-pair/index.js +1 -1
  194. package/dist/components/link/index.js +1 -1
  195. package/dist/components/link/link.d.ts +7 -0
  196. package/dist/components/link/link.d.ts.map +1 -1
  197. package/dist/components/locale-picker/index.js +1 -1
  198. package/dist/components/map-view/index.js +1 -1
  199. package/dist/components/matrix-rain/index.js +1 -1
  200. package/dist/components/message-card/index.js +1 -1
  201. package/dist/components/message-tray/index.js +1 -1
  202. package/dist/components/notification-card/index.js +1 -1
  203. package/dist/components/notification-tray/index.js +1 -1
  204. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  205. package/dist/components/password-input/index.js +1 -1
  206. package/dist/components/patient-search/index.d.ts +4 -0
  207. package/dist/components/patient-search/index.d.ts.map +1 -0
  208. package/dist/components/patient-search/index.js +6 -0
  209. package/dist/components/patient-search/index.js.map +1 -0
  210. package/dist/components/patient-search/patient-search.agent.d.ts +4 -0
  211. package/dist/components/patient-search/patient-search.agent.d.ts.map +1 -0
  212. package/dist/components/patient-search/patient-search.d.ts +103 -0
  213. package/dist/components/patient-search/patient-search.d.ts.map +1 -0
  214. package/dist/components/payment-form/index.js +1 -1
  215. package/dist/components/pdf-viewer/index.js +1 -1
  216. package/dist/components/popover/index.js +1 -1
  217. package/dist/components/popover/popover.d.ts.map +1 -1
  218. package/dist/components/privacy-lock/index.js +1 -1
  219. package/dist/components/public-footer/index.d.ts +6 -0
  220. package/dist/components/public-footer/index.d.ts.map +1 -0
  221. package/dist/components/public-footer/index.js +10 -0
  222. package/dist/components/public-footer/index.js.map +1 -0
  223. package/dist/components/public-footer/legal-urls.d.ts +18 -0
  224. package/dist/components/public-footer/legal-urls.d.ts.map +1 -0
  225. package/dist/components/public-footer/public-footer.agent.d.ts +4 -0
  226. package/dist/components/public-footer/public-footer.agent.d.ts.map +1 -0
  227. package/dist/components/public-footer/public-footer.d.ts +51 -0
  228. package/dist/components/public-footer/public-footer.d.ts.map +1 -0
  229. package/dist/components/public-footer/socials.d.ts +9 -0
  230. package/dist/components/public-footer/socials.d.ts.map +1 -0
  231. package/dist/components/public-header/index.js +1 -1
  232. package/dist/components/public-header/public-header.d.ts.map +1 -1
  233. package/dist/components/recaptcha-widget/index.js +1 -1
  234. package/dist/components/reviews-panel/index.d.ts +4 -0
  235. package/dist/components/reviews-panel/index.d.ts.map +1 -0
  236. package/dist/components/reviews-panel/index.js +6 -0
  237. package/dist/components/reviews-panel/index.js.map +1 -0
  238. package/dist/components/reviews-panel/reviews-panel.agent.d.ts +4 -0
  239. package/dist/components/reviews-panel/reviews-panel.agent.d.ts.map +1 -0
  240. package/dist/components/reviews-panel/reviews-panel.d.ts +76 -0
  241. package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -0
  242. package/dist/components/search-bar/index.js +1 -1
  243. package/dist/components/search-input/index.js +1 -1
  244. package/dist/components/sheet/index.js +1 -1
  245. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  246. package/dist/components/slot-grid/index.js +1 -1
  247. package/dist/components/spinner/index.js +1 -1
  248. package/dist/components/stepper-accordion/index.js +4 -3
  249. package/dist/components/stepper-accordion/index.js.map +1 -1
  250. package/dist/components/task-tray/index.js +1 -1
  251. package/dist/components/theme-toggle/index.js +1 -1
  252. package/dist/components/timeline/index.js +1 -1
  253. package/dist/components/toast/index.js +1 -1
  254. package/dist/components/transcript-panel/index.js +1 -1
  255. package/dist/components/workflow/index.js +1 -1
  256. package/dist/hooks/index.js +1 -1
  257. package/dist/hooks/use-theme.d.ts.map +1 -1
  258. package/dist/i18n/config.js +4923 -49
  259. package/dist/i18n/config.js.map +1 -1
  260. package/dist/i18n/locales/ar.d.ts +272 -0
  261. package/dist/i18n/locales/ar.d.ts.map +1 -1
  262. package/dist/i18n/locales/de.d.ts +272 -0
  263. package/dist/i18n/locales/de.d.ts.map +1 -1
  264. package/dist/i18n/locales/el.d.ts +272 -0
  265. package/dist/i18n/locales/el.d.ts.map +1 -1
  266. package/dist/i18n/locales/es.d.ts +272 -0
  267. package/dist/i18n/locales/es.d.ts.map +1 -1
  268. package/dist/i18n/locales/fr.d.ts +272 -0
  269. package/dist/i18n/locales/fr.d.ts.map +1 -1
  270. package/dist/i18n/locales/hi.d.ts +272 -0
  271. package/dist/i18n/locales/hi.d.ts.map +1 -1
  272. package/dist/i18n/locales/ja.d.ts +272 -0
  273. package/dist/i18n/locales/ja.d.ts.map +1 -1
  274. package/dist/i18n/locales/nl.d.ts +272 -0
  275. package/dist/i18n/locales/nl.d.ts.map +1 -1
  276. package/dist/i18n/locales/pl.d.ts +272 -0
  277. package/dist/i18n/locales/pl.d.ts.map +1 -1
  278. package/dist/i18n/locales/pt.d.ts +272 -0
  279. package/dist/i18n/locales/pt.d.ts.map +1 -1
  280. package/dist/i18n/locales/ro.d.ts +272 -0
  281. package/dist/i18n/locales/ro.d.ts.map +1 -1
  282. package/dist/i18n/locales/ru.d.ts +272 -0
  283. package/dist/i18n/locales/ru.d.ts.map +1 -1
  284. package/dist/i18n/locales/sq.d.ts +272 -0
  285. package/dist/i18n/locales/sq.d.ts.map +1 -1
  286. package/dist/i18n/locales/sv.d.ts +272 -0
  287. package/dist/i18n/locales/sv.d.ts.map +1 -1
  288. package/dist/i18n/locales/tr.d.ts +272 -0
  289. package/dist/i18n/locales/tr.d.ts.map +1 -1
  290. package/dist/i18n/locales/zh.d.ts +272 -0
  291. package/dist/i18n/locales/zh.d.ts.map +1 -1
  292. package/dist/i18n/resources.d.ts +544 -0
  293. package/dist/i18n/resources.d.ts.map +1 -1
  294. package/dist/index.js +364 -348
  295. package/dist/index.js.map +1 -1
  296. package/dist/locales/ar.json +273 -1
  297. package/dist/locales/de.json +273 -1
  298. package/dist/locales/el.json +273 -1
  299. package/dist/locales/en.json +273 -1
  300. package/dist/locales/es.json +273 -1
  301. package/dist/locales/fr.json +273 -1
  302. package/dist/locales/hi.json +273 -1
  303. package/dist/locales/it.json +273 -1
  304. package/dist/locales/ja.json +273 -1
  305. package/dist/locales/nl.json +273 -1
  306. package/dist/locales/pl.json +273 -1
  307. package/dist/locales/pt.json +273 -1
  308. package/dist/locales/ro.json +273 -1
  309. package/dist/locales/ru.json +273 -1
  310. package/dist/locales/sq.json +273 -1
  311. package/dist/locales/sv.json +273 -1
  312. package/dist/locales/tr.json +273 -1
  313. package/dist/locales/zh.json +273 -1
  314. package/dist/patterns/alia-assistant/index.js +1 -1
  315. package/dist/patterns/patient-shell/index.js +1 -1
  316. package/dist/patterns/patient-shell/patient-shell.d.ts.map +1 -1
  317. package/dist/tokens.css +1 -1
  318. package/package.json +17 -1
  319. package/dist/_chunks/alia-sidebar-CUi2UCbY.js.map +0 -1
  320. package/dist/_chunks/avatar-BpFohgWG.js.map +0 -1
  321. package/dist/_chunks/benefit-card-DXmrAyfn.js.map +0 -1
  322. package/dist/_chunks/calendar-zy0tUUVG.js.map +0 -1
  323. package/dist/_chunks/card-C353dU-H.js.map +0 -1
  324. package/dist/_chunks/description-list-Bsga4IW8.js.map +0 -1
  325. package/dist/_chunks/empty-state-3CLJIXSj.js.map +0 -1
  326. package/dist/_chunks/header-DqmKROIY.js.map +0 -1
  327. package/dist/_chunks/icon-button-C4CGcYuz.js +0 -54
  328. package/dist/_chunks/icon-button-C4CGcYuz.js.map +0 -1
  329. package/dist/_chunks/isSameMonth-5wNF2f4I.js +0 -1307
  330. package/dist/_chunks/isSameMonth-5wNF2f4I.js.map +0 -1
  331. package/dist/_chunks/link-DmM5IevO.js.map +0 -1
  332. package/dist/_chunks/locale-picker-BxEUUPW7.js.map +0 -1
  333. package/dist/_chunks/matrix-rain-CRPMXcVx.js.map +0 -1
  334. package/dist/_chunks/notification-card-ejOw5g6g.js.map +0 -1
  335. package/dist/_chunks/notification-tray-D_69dXFY.js.map +0 -1
  336. package/dist/_chunks/patient-shell-B164drIa.js +0 -173
  337. package/dist/_chunks/popover--derJ_wq.js.map +0 -1
  338. package/dist/_chunks/public-header.agent-BQ3r6Hgq.js.map +0 -1
  339. package/dist/_chunks/react-day-picker-C5F3-TTX.js +0 -1827
  340. package/dist/_chunks/react-day-picker-C5F3-TTX.js.map +0 -1
  341. package/dist/_chunks/slot-grid-CgpYgBkW.js +0 -502
  342. package/dist/_chunks/slot-grid-CgpYgBkW.js.map +0 -1
  343. package/dist/_chunks/spinner-DirtWZNG.js.map +0 -1
  344. package/dist/_chunks/stepper-C-sIpRRU.js +0 -7
  345. package/dist/_chunks/stepper-C-sIpRRU.js.map +0 -1
  346. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js +0 -322
  347. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js.map +0 -1
  348. package/dist/_chunks/stepper-calendar-BLOJUE0-.js +0 -648
  349. package/dist/_chunks/stepper-calendar-BLOJUE0-.js.map +0 -1
  350. package/dist/_chunks/sun-Eweh5fvi.js.map +0 -1
  351. package/dist/_chunks/use-password-requirements-C9vKBSVn.js.map +0 -1
  352. package/dist/_chunks/use-theme-B1cwAXJR.js +0 -145
  353. package/dist/_chunks/use-theme-B1cwAXJR.js.map +0 -1
  354. package/dist/components/stepper-calendar/index.d.ts +0 -4
  355. package/dist/components/stepper-calendar/index.d.ts.map +0 -1
  356. package/dist/components/stepper-calendar/index.js +0 -6
  357. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts +0 -4
  358. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts.map +0 -1
  359. package/dist/components/stepper-calendar/stepper-calendar.d.ts +0 -62
  360. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +0 -1
  361. /package/dist/components/{stepper-calendar → booking}/index.js.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button-BRHSSFmZ.js","sources":["../../src/components/button/icon-button.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { Button, type ButtonProps } from './button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Tooltip } from '../tooltip';\n\nconst iconButtonVariants = cva(\n [\n 'ds:p-0',\n // Active-state styling when an IconButton participates in an\n // IconButtonGroup's `toggle-single` / `toggle-multi` mode. The\n // group sets `aria-checked=\"true\"` (radiogroup) or\n // `aria-pressed=\"true\"` (toolbar/group) on the selected child;\n // without these utility classes the selection wouldn't read at a\n // glance — see HeaderSettings' Appearance row + ThemeToggle's\n // split variant.\n 'ds:aria-checked:bg-muted ds:aria-checked:text-foreground',\n 'ds:aria-checked:border-primary',\n 'ds:aria-pressed:bg-muted ds:aria-pressed:text-foreground',\n 'ds:aria-pressed:border-primary',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:w-8 ds:h-8',\n md: 'ds:w-10 ds:h-10',\n lg: 'ds:w-12 ds:h-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport type IconButtonProps = Omit<\n ButtonProps,\n 'startIcon' | 'endIcon' | 'children' | 'size' | 'flipIconInRtl'\n> &\n VariantProps<typeof iconButtonVariants> & {\n icon: React.ReactNode;\n tooltip?: string;\n 'aria-label'?: string;\n /**\n * Mirror the icon horizontally in RTL. Default `false` — only enable\n * for directional glyphs (arrows, chevrons). See Button.flipIconInRtl.\n */\n flipIconInRtl?: boolean;\n };\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n icon,\n size,\n intent = 'outline',\n className,\n tooltip,\n flipIconInRtl = false,\n ...props\n },\n ref,\n ) => {\n const ariaLabel = props['aria-label'] || tooltip;\n\n if (import.meta.env.DEV && !ariaLabel) {\n console.warn(\n 'IconButton: aria-label or tooltip prop is required for accessibility.',\n );\n }\n\n const iconSizeClass =\n size === 'sm'\n ? 'ds:size-4'\n : size === 'lg'\n ? 'ds:size-5'\n : 'ds:size-[18px]';\n const iconFlipClass = flipIconInRtl ? 'ds:rtl:rotate-180' : '';\n\n const button = (\n <Button\n ref={ref}\n size={size}\n intent={intent}\n className={iconButtonVariants({ size, className })}\n aria-label={ariaLabel}\n data-component=\"icon-button\"\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className={`ds:inline-flex ds:items-center ds:justify-center ${iconSizeClass} ${iconFlipClass}`.trim()}\n >\n {icon}\n </span>\n </Button>\n );\n\n if (tooltip) {\n return <Tooltip label={tooltip}>{button}</Tooltip>;\n }\n\n return button;\n },\n);\n\nIconButton.displayName = 'IconButton';\n"],"names":["iconButtonVariants","cva","IconButton","forwardRef","icon","size","intent","className","tooltip","flipIconInRtl","props","ref","ariaLabel","iconSizeClass","iconFlipClass","button","jsx","Button","Tooltip"],"mappings":";;;;;AAKA,MAAMA,IAAqBC;AAAA,EACzB;AAAA,IACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAiBaC,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAYF,EAAM,YAAY,KAAKF,GAQnCK,IACJR,MAAS,OACL,cACAA,MAAS,OACP,cACA,kBACFS,IAAgBL,IAAgB,sBAAsB,IAEtDM,IACJ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAN;AAAA,QACA,MAAAN;AAAA,QACA,QAAAC;AAAA,QACA,WAAWN,EAAmB,EAAE,MAAAK,GAAM,WAAAE,GAAW;AAAA,QACjD,cAAYK;AAAA,QACZ,kBAAe;AAAA,QACd,GAAGF;AAAA,QAEJ,UAAA,gBAAAM;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAW,oDAAoDH,CAAa,IAAIC,CAAa,GAAG,KAAA;AAAA,YAE/F,UAAAV;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAIJ,WAAII,sBACMU,GAAA,EAAQ,OAAOV,GAAU,UAAAO,GAAO,IAGnCA;AAAA,EACT;AACF;AAEAb,EAAW,cAAc;"}
@@ -26,14 +26,14 @@ function b(n, t, c) {
26
26
  }
27
27
  export {
28
28
  l as a,
29
- m as b,
29
+ D as b,
30
30
  o as c,
31
- a as d,
32
- D as e,
31
+ m as d,
32
+ a as e,
33
33
  b as i,
34
34
  y as m,
35
35
  f as n,
36
36
  e as s,
37
37
  u as t
38
38
  };
39
- //# sourceMappingURL=isSameDay-ecuM8PBB.js.map
39
+ //# sourceMappingURL=isSameDay-DHG8Xade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isSameDay-ecuM8PBB.js","sources":["../../node_modules/date-fns/constants.js","../../node_modules/date-fns/constructFrom.js","../../node_modules/date-fns/toDate.js","../../node_modules/date-fns/_lib/normalizeDates.js","../../node_modules/date-fns/startOfDay.js","../../node_modules/date-fns/isSameDay.js"],"sourcesContent":["/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n"],"names":["millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","constructFrom","date","value","toDate","argument","context","normalizeDates","dates","normalize","startOfDay","options","_date","isSameDay","laterDate","earlierDate","dateLeft_","dateRight_"],"mappings":"AA4EY,MAACA,IAAqB,QAOrBC,IAAoB,OAOpBC,IAAuB,KAOvBC,IAAqB,MAOrBC,IAAuB,KA+GvBC,IAAsB,OAAO,IAAI,mBAAmB;AClL1D,SAASC,EAAcC,GAAMC,GAAO;AACzC,SAAI,OAAOD,KAAS,aAAmBA,EAAKC,CAAK,IAE7CD,KAAQ,OAAOA,KAAS,YAAYF,KAAuBE,IACtDA,EAAKF,CAAmB,EAAEG,CAAK,IAEpCD,aAAgB,OAAa,IAAIA,EAAK,YAAYC,CAAK,IAEpD,IAAI,KAAKA,CAAK;AACvB;ACNO,SAASC,EAAOC,GAAUC,GAAS;AAExC,SAAOL,EAAcK,KAAWD,GAAUA,CAAQ;AACpD;ACzCO,SAASE,EAAeD,MAAYE,GAAO;AAChD,QAAMC,IAAYR,EAAc;AAAA,IAC9B;AAAA,IACWO,EAAM,KAAK,CAACN,MAAS,OAAOA,KAAS,QAAQ;AAAA,EAC5D;AACE,SAAOM,EAAM,IAAIC,CAAS;AAC5B;ACoBO,SAASC,EAAWR,GAAMS,GAAS;AACxC,QAAMC,IAAQR,EAAOF,GAAMS,KAAA,gBAAAA,EAAS,EAAE;AACtC,SAAAC,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;ACIO,SAASC,EAAUC,GAAWC,GAAaJ,GAAS;AACzD,QAAM,CAACK,GAAWC,CAAU,IAAIV;AAAA,IAC9BI,KAAA,gBAAAA,EAAS;AAAA,IACTG;AAAA,IACAC;AAAA,EACJ;AACE,SAAO,CAACL,EAAWM,CAAS,KAAM,CAACN,EAAWO,CAAU;AAC1D;","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"isSameDay-DHG8Xade.js","sources":["../../node_modules/date-fns/constants.js","../../node_modules/date-fns/constructFrom.js","../../node_modules/date-fns/toDate.js","../../node_modules/date-fns/_lib/normalizeDates.js","../../node_modules/date-fns/startOfDay.js","../../node_modules/date-fns/isSameDay.js"],"sourcesContent":["/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n"],"names":["millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","constructFrom","date","value","toDate","argument","context","normalizeDates","dates","normalize","startOfDay","options","_date","isSameDay","laterDate","earlierDate","dateLeft_","dateRight_"],"mappings":"AA4EY,MAACA,IAAqB,QAOrBC,IAAoB,OAOpBC,IAAuB,KAOvBC,IAAqB,MAOrBC,IAAuB,KA+GvBC,IAAsB,OAAO,IAAI,mBAAmB;AClL1D,SAASC,EAAcC,GAAMC,GAAO;AACzC,SAAI,OAAOD,KAAS,aAAmBA,EAAKC,CAAK,IAE7CD,KAAQ,OAAOA,KAAS,YAAYF,KAAuBE,IACtDA,EAAKF,CAAmB,EAAEG,CAAK,IAEpCD,aAAgB,OAAa,IAAIA,EAAK,YAAYC,CAAK,IAEpD,IAAI,KAAKA,CAAK;AACvB;ACNO,SAASC,EAAOC,GAAUC,GAAS;AAExC,SAAOL,EAAcK,KAAWD,GAAUA,CAAQ;AACpD;ACzCO,SAASE,EAAeD,MAAYE,GAAO;AAChD,QAAMC,IAAYR,EAAc;AAAA,IAC9B;AAAA,IACWO,EAAM,KAAK,CAACN,MAAS,OAAOA,KAAS,QAAQ;AAAA,EAC5D;AACE,SAAOM,EAAM,IAAIC,CAAS;AAC5B;ACoBO,SAASC,EAAWR,GAAMS,GAAS;AACxC,QAAMC,IAAQR,EAAOF,GAAMS,KAAA,gBAAAA,EAAS,EAAE;AACtC,SAAAC,EAAM,SAAS,GAAG,GAAG,GAAG,CAAC,GAClBA;AACT;ACIO,SAASC,EAAUC,GAAWC,GAAaJ,GAAS;AACzD,QAAM,CAACK,GAAWC,CAAU,IAAIV;AAAA,IAC9BI,KAAA,gBAAAA,EAAS;AAAA,IACTG;AAAA,IACAC;AAAA,EACJ;AACE,SAAO,CAACL,EAAWM,CAAS,KAAM,CAACN,EAAWO,CAAU;AAC1D;","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -2,7 +2,7 @@ import { jsxs as t, Fragment as p, jsx as s } from "react/jsx-runtime";
2
2
  import { forwardRef as z, useState as f, useCallback as b } from "react";
3
3
  import { c as P } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as I } from "react-i18next";
5
- import { I as T } from "./icon-button-C4CGcYuz.js";
5
+ import { I as T } from "./icon-button-BRHSSFmZ.js";
6
6
  import { C as j } from "./check-DPdL_Sm7.js";
7
7
  import { C as K } from "./copy-B00HK7tj.js";
8
8
  const A = P("ds:flex", {
@@ -95,4 +95,4 @@ B.displayName = "KeyValuePair";
95
95
  export {
96
96
  B as K
97
97
  };
98
- //# sourceMappingURL=key-value-pair-DBuOCtIc.js.map
98
+ //# sourceMappingURL=key-value-pair-CqeKiP__.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-value-pair-DBuOCtIc.js","sources":["../../src/components/key-value-pair/key-value-pair.tsx"],"sourcesContent":["import { forwardRef, useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Copy, Check } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\n/* ------------------------------------------------------------------ */\n/* CVA — root wrapper */\n/* */\n/* The layout variants below describe the LOGICAL flow of label/value. */\n/* When an `icon` prop is supplied, the root flips to `flex-row` and */\n/* renders the icon at the leading edge regardless of the chosen */\n/* layout — the layout then governs the inner label/value stack. Cap- */\n/* height alignment is handled by `items-start` + a small `mt` offset */\n/* on the icon wrapper so a wrapping value doesn't push the icon */\n/* downward. */\n/* ------------------------------------------------------------------ */\n\nconst keyValuePairVariants = cva('ds:flex', {\n variants: {\n layout: {\n horizontal: 'ds:flex-row ds:items-center ds:gap-[var(--spacing-sm)]',\n vertical: 'ds:flex-col ds:gap-[var(--spacing-xs)]',\n },\n /** Internal — flips the root to a horizontal flex when an icon\n is present so the icon can sit at the leading edge of both\n horizontal and vertical inner stacks. `items-start` keeps the\n icon anchored to the label row even when the value wraps. */\n hasIcon: {\n true: 'ds:flex-row ds:items-start ds:gap-[var(--spacing-sm)]',\n false: '',\n },\n },\n defaultVariants: {\n layout: 'horizontal',\n hasIcon: false,\n },\n});\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePairProps */\n/* ------------------------------------------------------------------ */\n\nexport interface KeyValuePairProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof keyValuePairVariants>, 'hasIcon'> {\n /** The label (term) */\n label: string;\n /** The value — accepts plain text, Badge, Tag, monospace code, any ReactNode */\n value: React.ReactNode;\n /** Layout direction */\n layout?: 'horizontal' | 'vertical';\n /** Render value in monospace font */\n mono?: boolean;\n /** Show a copy-to-clipboard IconButton beside the value */\n copyable?: boolean;\n /** The text to copy — defaults to `value` if value is a string */\n copyText?: string;\n /**\n * Optional decorative icon rendered at the leading edge of the pair.\n * Pass a `lucide-react` icon (or any single React element) for\n * visual consistency. The wrapper applies `aria-hidden=\"true\"` and\n * paints the icon with `var(--key-value-pair-icon-color)` (defaults\n * to `--muted-foreground`); consumers can recolour the slot via\n * that token without forking the component.\n *\n * Cap-height alignment with the label is automatic — the wrapper\n * uses `mt-0.5` so the glyph rides the label row, not the\n * geometric centre of a wrapping value.\n *\n * Type is `ReactElement` (not the broader `ReactNode`) so the\n * intent is clear at the call site: this slot is for a single\n * SVG/icon, not arbitrary fragments, strings, or numbers.\n */\n icon?: React.ReactElement | null;\n}\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePair */\n/* ------------------------------------------------------------------ */\n\nexport const KeyValuePair = forwardRef<HTMLDivElement, KeyValuePairProps>(\n (\n {\n label,\n value,\n layout = 'horizontal',\n mono = false,\n copyable = false,\n copyText,\n icon,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [copied, setCopied] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n\n const textToCopy =\n copyText ?? (typeof value === 'string' ? value : undefined);\n\n const handleCopy = useCallback(async () => {\n if (!textToCopy) {\n if (import.meta.env.DEV) {\n console.warn(\n 'KeyValuePair: copyable is true but no copyText was provided and value is not a string. Copy no-op.',\n );\n }\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setAnnouncement(t('keyValuePair.copied'));\n setTimeout(() => {\n setCopied(false);\n setAnnouncement('');\n }, 2000);\n } catch {\n setAnnouncement(t('keyValuePair.notAvailable'));\n setTimeout(() => setAnnouncement(''), 3000);\n }\n }, [textToCopy, t]);\n\n const valueClasses = [\n 'type-body ds:text-foreground ds:min-w-0 ds:shrink ds:[unicode-bidi:isolate]',\n mono ? 'ds:font-[family-name:var(--font-mono)]' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const hasIcon = icon !== undefined && icon !== null;\n\n // Inner stack — the label/value/copy block. Used only when an\n // icon is present (the root flips to a horizontal `icon + stack`\n // flex). For the horizontal layout we use `items-start` here so a\n // wrapping value doesn't push the label visually down to the row\n // centre — without `items-start`, the icon (anchored at row top\n // via the root's `items-start`) would no longer align with the\n // label's cap-height. For the vertical layout `items-start` is\n // implicit via `flex-col`.\n const innerStackClass =\n layout === 'horizontal'\n ? 'ds:flex ds:flex-row ds:items-start ds:gap-[var(--spacing-sm)] ds:min-w-0 ds:flex-1'\n : 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0 ds:flex-1';\n\n const stack = (\n <>\n <span className=\"type-label ds:text-muted-foreground ds:shrink-0\">\n {label}\n <span className=\"ds:sr-only\">: </span>\n </span>\n <span className={valueClasses}>{value}</span>\n {copyable && (\n <IconButton\n icon={copied ? <Check /> : <Copy />}\n size=\"sm\"\n aria-label={t('keyValuePair.copy', { label })}\n onClick={handleCopy}\n intent=\"ghost\"\n className={\n layout === 'horizontal'\n ? 'ds:ms-auto ds:shrink-0'\n : 'ds:self-start'\n }\n />\n )}\n </>\n );\n\n return (\n <div\n ref={ref}\n className={keyValuePairVariants({ layout, hasIcon, className })}\n data-component=\"key-value-pair\"\n {...props}\n >\n {hasIcon ? (\n <>\n {/* Decorative icon wrapper. `aria-hidden` so SR users only\n hear \"<label>: <value>\" — the icon is brand polish,\n not semantic content. `mt-0.5` mirrors Alert's left-\n icon offset so the glyph aligns with the label's cap-\n height instead of the geometric centre of the row\n (which would drift downward if the value wraps). */}\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:shrink-0 ds:mt-0.5 ds:text-[color:var(--key-value-pair-icon-color)] ds:[&_svg]:size-4\"\n >\n {icon}\n </span>\n <div className={innerStackClass}>{stack}</div>\n </>\n ) : (\n stack\n )}\n <span role=\"status\" aria-live=\"polite\" className=\"ds:sr-only\">\n {announcement}\n </span>\n </div>\n );\n },\n);\n\nKeyValuePair.displayName = 'KeyValuePair';\n"],"names":["keyValuePairVariants","cva","KeyValuePair","forwardRef","label","value","layout","mono","copyable","copyText","icon","className","props","ref","t","useTranslation","copied","setCopied","useState","announcement","setAnnouncement","textToCopy","handleCopy","useCallback","valueClasses","hasIcon","innerStackClass","stack","jsxs","Fragment","jsx","IconButton","Check","Copy"],"mappings":"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"}
1
+ {"version":3,"file":"key-value-pair-CqeKiP__.js","sources":["../../src/components/key-value-pair/key-value-pair.tsx"],"sourcesContent":["import { forwardRef, useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Copy, Check } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\n/* ------------------------------------------------------------------ */\n/* CVA — root wrapper */\n/* */\n/* The layout variants below describe the LOGICAL flow of label/value. */\n/* When an `icon` prop is supplied, the root flips to `flex-row` and */\n/* renders the icon at the leading edge regardless of the chosen */\n/* layout — the layout then governs the inner label/value stack. Cap- */\n/* height alignment is handled by `items-start` + a small `mt` offset */\n/* on the icon wrapper so a wrapping value doesn't push the icon */\n/* downward. */\n/* ------------------------------------------------------------------ */\n\nconst keyValuePairVariants = cva('ds:flex', {\n variants: {\n layout: {\n horizontal: 'ds:flex-row ds:items-center ds:gap-[var(--spacing-sm)]',\n vertical: 'ds:flex-col ds:gap-[var(--spacing-xs)]',\n },\n /** Internal — flips the root to a horizontal flex when an icon\n is present so the icon can sit at the leading edge of both\n horizontal and vertical inner stacks. `items-start` keeps the\n icon anchored to the label row even when the value wraps. */\n hasIcon: {\n true: 'ds:flex-row ds:items-start ds:gap-[var(--spacing-sm)]',\n false: '',\n },\n },\n defaultVariants: {\n layout: 'horizontal',\n hasIcon: false,\n },\n});\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePairProps */\n/* ------------------------------------------------------------------ */\n\nexport interface KeyValuePairProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof keyValuePairVariants>, 'hasIcon'> {\n /** The label (term) */\n label: string;\n /** The value — accepts plain text, Badge, Tag, monospace code, any ReactNode */\n value: React.ReactNode;\n /** Layout direction */\n layout?: 'horizontal' | 'vertical';\n /** Render value in monospace font */\n mono?: boolean;\n /** Show a copy-to-clipboard IconButton beside the value */\n copyable?: boolean;\n /** The text to copy — defaults to `value` if value is a string */\n copyText?: string;\n /**\n * Optional decorative icon rendered at the leading edge of the pair.\n * Pass a `lucide-react` icon (or any single React element) for\n * visual consistency. The wrapper applies `aria-hidden=\"true\"` and\n * paints the icon with `var(--key-value-pair-icon-color)` (defaults\n * to `--muted-foreground`); consumers can recolour the slot via\n * that token without forking the component.\n *\n * Cap-height alignment with the label is automatic — the wrapper\n * uses `mt-0.5` so the glyph rides the label row, not the\n * geometric centre of a wrapping value.\n *\n * Type is `ReactElement` (not the broader `ReactNode`) so the\n * intent is clear at the call site: this slot is for a single\n * SVG/icon, not arbitrary fragments, strings, or numbers.\n */\n icon?: React.ReactElement | null;\n}\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePair */\n/* ------------------------------------------------------------------ */\n\nexport const KeyValuePair = forwardRef<HTMLDivElement, KeyValuePairProps>(\n (\n {\n label,\n value,\n layout = 'horizontal',\n mono = false,\n copyable = false,\n copyText,\n icon,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [copied, setCopied] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n\n const textToCopy =\n copyText ?? (typeof value === 'string' ? value : undefined);\n\n const handleCopy = useCallback(async () => {\n if (!textToCopy) {\n if (import.meta.env.DEV) {\n console.warn(\n 'KeyValuePair: copyable is true but no copyText was provided and value is not a string. Copy no-op.',\n );\n }\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setAnnouncement(t('keyValuePair.copied'));\n setTimeout(() => {\n setCopied(false);\n setAnnouncement('');\n }, 2000);\n } catch {\n setAnnouncement(t('keyValuePair.notAvailable'));\n setTimeout(() => setAnnouncement(''), 3000);\n }\n }, [textToCopy, t]);\n\n const valueClasses = [\n 'type-body ds:text-foreground ds:min-w-0 ds:shrink ds:[unicode-bidi:isolate]',\n mono ? 'ds:font-[family-name:var(--font-mono)]' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const hasIcon = icon !== undefined && icon !== null;\n\n // Inner stack — the label/value/copy block. Used only when an\n // icon is present (the root flips to a horizontal `icon + stack`\n // flex). For the horizontal layout we use `items-start` here so a\n // wrapping value doesn't push the label visually down to the row\n // centre — without `items-start`, the icon (anchored at row top\n // via the root's `items-start`) would no longer align with the\n // label's cap-height. For the vertical layout `items-start` is\n // implicit via `flex-col`.\n const innerStackClass =\n layout === 'horizontal'\n ? 'ds:flex ds:flex-row ds:items-start ds:gap-[var(--spacing-sm)] ds:min-w-0 ds:flex-1'\n : 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0 ds:flex-1';\n\n const stack = (\n <>\n <span className=\"type-label ds:text-muted-foreground ds:shrink-0\">\n {label}\n <span className=\"ds:sr-only\">: </span>\n </span>\n <span className={valueClasses}>{value}</span>\n {copyable && (\n <IconButton\n icon={copied ? <Check /> : <Copy />}\n size=\"sm\"\n aria-label={t('keyValuePair.copy', { label })}\n onClick={handleCopy}\n intent=\"ghost\"\n className={\n layout === 'horizontal'\n ? 'ds:ms-auto ds:shrink-0'\n : 'ds:self-start'\n }\n />\n )}\n </>\n );\n\n return (\n <div\n ref={ref}\n className={keyValuePairVariants({ layout, hasIcon, className })}\n data-component=\"key-value-pair\"\n {...props}\n >\n {hasIcon ? (\n <>\n {/* Decorative icon wrapper. `aria-hidden` so SR users only\n hear \"<label>: <value>\" — the icon is brand polish,\n not semantic content. `mt-0.5` mirrors Alert's left-\n icon offset so the glyph aligns with the label's cap-\n height instead of the geometric centre of the row\n (which would drift downward if the value wraps). */}\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:shrink-0 ds:mt-0.5 ds:text-[color:var(--key-value-pair-icon-color)] ds:[&_svg]:size-4\"\n >\n {icon}\n </span>\n <div className={innerStackClass}>{stack}</div>\n </>\n ) : (\n stack\n )}\n <span role=\"status\" aria-live=\"polite\" className=\"ds:sr-only\">\n {announcement}\n </span>\n </div>\n );\n },\n);\n\nKeyValuePair.displayName = 'KeyValuePair';\n"],"names":["keyValuePairVariants","cva","KeyValuePair","forwardRef","label","value","layout","mono","copyable","copyText","icon","className","props","ref","t","useTranslation","copied","setCopied","useState","announcement","setAnnouncement","textToCopy","handleCopy","useCallback","valueClasses","hasIcon","innerStackClass","stack","jsxs","Fragment","jsx","IconButton","Check","Copy"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { jsxs as y, jsx as n } from "react/jsx-runtime";
2
- import { forwardRef as k } from "react";
3
- import { c as w } from "./index-D2ZczOXr.js";
4
- import { useTranslation as N } from "react-i18next";
5
- import { E as L } from "./external-link-C6F25E6k.js";
6
- const j = w(
1
+ import { jsxs as k, jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as L } from "react";
3
+ import { c as j } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as T } from "react-i18next";
5
+ import { E as z } from "./external-link-C6F25E6k.js";
6
+ const E = j(
7
7
  [
8
8
  "ds:underline-offset-4",
9
9
  "ds:rounded-[var(--radius-xs)]",
@@ -45,50 +45,51 @@ const j = w(
45
45
  hasIcon: "no"
46
46
  }
47
47
  }
48
- ), T = k(
48
+ ), I = L(
49
49
  ({
50
- href: l,
51
- external: e = !1,
52
- disabled: s = !1,
50
+ href: f,
51
+ external: s = !1,
52
+ externalIcon: u = !0,
53
+ disabled: n = !1,
53
54
  startIcon: i,
54
55
  endIcon: a,
55
56
  intent: r,
56
- weight: c,
57
- className: f,
58
- children: u,
59
- target: m,
57
+ weight: m,
58
+ className: v,
59
+ children: h,
60
+ target: p,
60
61
  rel: t,
61
62
  onClick: o,
62
- ...v
63
- }, h) => {
64
- const { t: p } = N(), g = e ? "_blank" : m, x = e ? [t, "noopener", "noreferrer"].filter(Boolean).join(" ") : t, b = p("link.opensInNewTab", "Opens in a new tab");
65
- return /* @__PURE__ */ y(
63
+ ...g
64
+ }, x) => {
65
+ const { t: b } = T(), y = s ? "_blank" : p, w = s ? [t, "noopener", "noreferrer"].filter(Boolean).join(" ") : t, d = b("link.opensInNewTab", "Opens in a new tab"), N = (c) => {
66
+ if (n) {
67
+ c.preventDefault();
68
+ return;
69
+ }
70
+ o == null || o(c);
71
+ }, l = s && u;
72
+ return /* @__PURE__ */ k(
66
73
  "a",
67
74
  {
68
- ref: h,
69
- href: s ? void 0 : l,
70
- role: s ? "link" : void 0,
71
- "aria-disabled": s || void 0,
72
- target: g,
73
- rel: x || void 0,
74
- onClick: (d) => {
75
- if (s) {
76
- d.preventDefault();
77
- return;
78
- }
79
- o == null || o(d);
80
- },
75
+ ref: x,
76
+ href: n ? void 0 : f,
77
+ role: n ? "link" : void 0,
78
+ "aria-disabled": n || void 0,
79
+ target: y,
80
+ rel: w || void 0,
81
+ onClick: N,
81
82
  "data-component": "link",
82
83
  "data-intent": r ?? "default",
83
- className: j({
84
+ className: E({
84
85
  intent: r,
85
- weight: c,
86
- hasIcon: !!(i || a || e) ? "yes" : "no",
87
- className: f
86
+ weight: m,
87
+ hasIcon: !!(i || a || l) ? "yes" : "no",
88
+ className: v
88
89
  }),
89
- ...v,
90
+ ...g,
90
91
  children: [
91
- i ? /* @__PURE__ */ n(
92
+ i ? /* @__PURE__ */ e(
92
93
  "span",
93
94
  {
94
95
  "aria-hidden": "true",
@@ -96,15 +97,19 @@ const j = w(
96
97
  children: i
97
98
  }
98
99
  ) : null,
99
- u,
100
- e ? /* @__PURE__ */ n(
100
+ h,
101
+ l ? /* @__PURE__ */ e(
101
102
  "span",
102
103
  {
103
104
  className: "ds:inline-flex ds:items-center",
104
- "aria-label": b,
105
- children: /* @__PURE__ */ n(L, { "aria-hidden": "true", className: "ds:size-[1em]" })
105
+ "aria-label": d,
106
+ children: /* @__PURE__ */ e(z, { "aria-hidden": "true", className: "ds:size-[1em]" })
106
107
  }
107
- ) : a ? /* @__PURE__ */ n(
108
+ ) : s ? (
109
+ // External wiring without the glyph — keep the SR-only
110
+ // "opens in new tab" announcement so the affordance reads.
111
+ /* @__PURE__ */ e("span", { className: "ds:sr-only", children: d })
112
+ ) : a ? /* @__PURE__ */ e(
108
113
  "span",
109
114
  {
110
115
  "aria-hidden": "true",
@@ -117,8 +122,8 @@ const j = w(
117
122
  );
118
123
  }
119
124
  );
120
- T.displayName = "Link";
125
+ I.displayName = "Link";
121
126
  export {
122
- T as L
127
+ I as L
123
128
  };
124
- //# sourceMappingURL=link-DmM5IevO.js.map
129
+ //# sourceMappingURL=link-DrD_cRUg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-DrD_cRUg.js","sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { forwardRef, type AnchorHTMLAttributes, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ExternalLink } from 'lucide-react';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\n/**\n * Link is the semantic anchor primitive for inline navigation —\n * privacy / terms in form copy, external \"remote support\" links in\n * sidebars, in-paragraph references inside info-tip body copy.\n *\n * For action affordances that *look* like a link but trigger UI rather\n * than navigation, use `<Button intent=\"link\">` instead — the semantic\n * boundary matters for screen readers and keyboard users.\n */\nconst linkVariants = cva(\n [\n 'ds:underline-offset-4',\n 'ds:rounded-[var(--radius-xs)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:aria-disabled:cursor-not-allowed ds:aria-disabled:opacity-50 ds:aria-disabled:no-underline',\n ].join(' '),\n {\n variants: {\n intent: {\n // `--primary` already maps to `magenta-700` in light-accent and\n // `magenta-500` in dark (see tokens/index.css), so the accent\n // contrast trade-off in §11 of CLAUDE.md is handled at the\n // token layer, not here.\n default:\n 'ds:text-primary ds:underline ds:hover:text-primary-hover ds:active:opacity-80',\n subtle:\n 'ds:text-muted-foreground ds:no-underline ds:hover:text-foreground ds:hover:underline ds:active:opacity-80',\n inverted:\n 'ds:text-primary-foreground ds:underline ds:hover:opacity-90 ds:active:opacity-80',\n },\n weight: {\n normal: 'ds:font-normal',\n strong: 'ds:font-semibold',\n },\n // When the link carries an icon, the anchor itself becomes a flex\n // container so glyphs centre on the text optical centre — the\n // previous `vertical-align: -0.125em` heuristic over-corrected when\n // the link was the only thing on its line (e.g. each <li> of a\n // vertical sidebar nav). Text-only links remain plain `inline` so\n // they wrap naturally inside a paragraph.\n hasIcon: {\n no: 'ds:inline',\n yes: 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n },\n },\n defaultVariants: {\n intent: 'default',\n weight: 'normal',\n hasIcon: 'no',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface LinkProps\n extends\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>,\n VariantProps<typeof linkVariants> {\n /** Anchor target. Required — the whole point of the component. */\n href: string;\n /**\n * Flag the link as opening in a new browsing context. Automatically\n * adds `target=\"_blank\"` + `rel=\"noopener noreferrer\"` and renders a\n * trailing `ExternalLink` icon with an i18n'd aria-label.\n */\n external?: boolean;\n /**\n * Render the trailing external-link glyph. Default `true` — set to\n * `false` for surfaces (footer, social rows, dense nav) where the\n * indicator adds visual noise. The `target` / `rel` / \"opens in new\n * tab\" aria-label are still applied.\n */\n externalIcon?: boolean;\n /**\n * Render the link in a non-interactive disabled state. Strips `href`,\n * adds `aria-disabled` + `role=\"link\"`, suppresses the underline.\n * Prefer hiding the link entirely when possible — disabled links are\n * a usability anti-pattern outside of state-machine flows.\n */\n disabled?: boolean;\n /** Optional leading icon (inline-start). */\n startIcon?: ReactNode;\n /** Optional trailing icon (inline-end). Ignored when `external`. */\n endIcon?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n href,\n external = false,\n externalIcon = true,\n disabled = false,\n startIcon,\n endIcon,\n intent,\n weight,\n className,\n children,\n target,\n rel,\n onClick,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const effectiveTarget = external ? '_blank' : target;\n const effectiveRel = external\n ? [rel, 'noopener', 'noreferrer'].filter(Boolean).join(' ')\n : rel;\n\n const externalLabel = t('link.opensInNewTab', 'Opens in a new tab');\n\n const handleClick: AnchorHTMLAttributes<HTMLAnchorElement>['onClick'] = (\n event,\n ) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n\n const showExternalIcon = external && externalIcon;\n const hasIcon = Boolean(startIcon || endIcon || showExternalIcon);\n\n return (\n <a\n ref={ref}\n // When disabled, drop href so the link is not actionable; pair\n // with aria-disabled + role=\"link\" so AT still announces the\n // role (the implicit role disappears once href is removed).\n href={disabled ? undefined : href}\n role={disabled ? 'link' : undefined}\n aria-disabled={disabled || undefined}\n target={effectiveTarget}\n rel={effectiveRel || undefined}\n onClick={handleClick}\n data-component=\"link\"\n data-intent={intent ?? 'default'}\n className={linkVariants({\n intent,\n weight,\n hasIcon: hasIcon ? 'yes' : 'no',\n className,\n })}\n {...rest}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:[&_svg]:size-[1em]\"\n >\n {startIcon}\n </span>\n ) : null}\n {children}\n {showExternalIcon ? (\n <span\n className=\"ds:inline-flex ds:items-center\"\n aria-label={externalLabel}\n >\n <ExternalLink aria-hidden=\"true\" className=\"ds:size-[1em]\" />\n </span>\n ) : external ? (\n // External wiring without the glyph — keep the SR-only\n // \"opens in new tab\" announcement so the affordance reads.\n <span className=\"ds:sr-only\">{externalLabel}</span>\n ) : endIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:[&_svg]:size-[1em]\"\n >\n {endIcon}\n </span>\n ) : null}\n </a>\n );\n },\n);\n\nLink.displayName = 'Link';\n"],"names":["linkVariants","cva","Link","forwardRef","href","external","externalIcon","disabled","startIcon","endIcon","intent","weight","className","children","target","rel","onClick","rest","ref","t","useTranslation","effectiveTarget","effectiveRel","externalLabel","handleClick","event","showExternalIcon","jsxs","jsx","ExternalLink"],"mappings":";;;;;AAkBA,MAAMA,IAAeC;AAAA,EACnB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,QAKN,SACE;AAAA,QACF,QACE;AAAA,QACF,UACE;AAAA,MAAA;AAAA,MAEJ,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQV,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,KAAK;AAAA,MAAA;AAAA,IACP;AAAA,IAEF,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GA0CaC,IAAOC;AAAA,EAClB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,cAAAC,IAAe;AAAA,IACf,UAAAC,IAAW;AAAA,IACX,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,KAAAC;AAAA,IACA,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GAERC,IAAkBhB,IAAW,WAAWS,GACxCQ,IAAejB,IACjB,CAACU,GAAK,YAAY,YAAY,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IACxDA,GAEEQ,IAAgBJ,EAAE,sBAAsB,oBAAoB,GAE5DK,IAAkE,CACtEC,MACG;AACH,UAAIlB,GAAU;AACZ,QAAAkB,EAAM,eAAA;AACN;AAAA,MACF;AACA,MAAAT,KAAA,QAAAA,EAAUS;AAAA,IACZ,GAEMC,IAAmBrB,KAAYC;AAGrC,WACE,gBAAAqB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QAIA,MAAMX,IAAW,SAAYH;AAAA,QAC7B,MAAMG,IAAW,SAAS;AAAA,QAC1B,iBAAeA,KAAY;AAAA,QAC3B,QAAQc;AAAA,QACR,KAAKC,KAAgB;AAAA,QACrB,SAASE;AAAA,QACT,kBAAe;AAAA,QACf,eAAad,KAAU;AAAA,QACvB,WAAWV,EAAa;AAAA,UACtB,QAAAU;AAAA,UACA,QAAAC;AAAA,UACA,SAnBU,GAAQH,KAAaC,KAAWiB,KAmBvB,QAAQ;AAAA,UAC3B,WAAAd;AAAA,QAAA,CACD;AAAA,QACA,GAAGK;AAAA,QAEH,UAAA;AAAA,UAAAT,IACC,gBAAAoB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA,cAET,UAAApB;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,UACHK;AAAA,UACAa,IACC,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAYL;AAAA,cAEZ,UAAA,gBAAAK,EAACC,GAAA,EAAa,eAAY,QAAO,WAAU,gBAAA,CAAgB;AAAA,YAAA;AAAA,UAAA,IAE3DxB;AAAA;AAAA;AAAA,YAGF,gBAAAuB,EAAC,QAAA,EAAK,WAAU,cAAc,UAAAL,EAAA,CAAc;AAAA,cAC1Cd,IACF,gBAAAmB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAU;AAAA,cAET,UAAAnB;AAAA,YAAA;AAAA,UAAA,IAED;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAP,EAAK,cAAc;"}