@alfadocs/ui-kit 0.0.20 → 0.1.1

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 (549) hide show
  1. package/dist/_chunks/accordion-BJD1aM67.js +117 -0
  2. package/dist/_chunks/accordion-BJD1aM67.js.map +1 -0
  3. package/dist/_chunks/agenda-card-Bld47Eul.js +130 -0
  4. package/dist/_chunks/agenda-card-Bld47Eul.js.map +1 -0
  5. package/dist/_chunks/agenda-tray-D86cNIJ0.js +119 -0
  6. package/dist/_chunks/agenda-tray-D86cNIJ0.js.map +1 -0
  7. package/dist/_chunks/ai-prompt-input-CdYwt2VP.js +379 -0
  8. package/dist/_chunks/ai-prompt-input-CdYwt2VP.js.map +1 -0
  9. package/dist/_chunks/{alert-C5ud6CfE.js → alert-ETrF7Q8J.js} +51 -51
  10. package/dist/_chunks/alert-ETrF7Q8J.js.map +1 -0
  11. package/dist/_chunks/apexcharts-theme-BkSShpEy.js +48 -0
  12. package/dist/_chunks/apexcharts-theme-BkSShpEy.js.map +1 -0
  13. package/dist/_chunks/{app-frame-CmIUp9BD.js → app-frame-uq2Gy0vs.js} +37 -37
  14. package/dist/_chunks/app-frame-uq2Gy0vs.js.map +1 -0
  15. package/dist/_chunks/aspect-ratio-BqU4itGW.js +56 -0
  16. package/dist/_chunks/aspect-ratio-BqU4itGW.js.map +1 -0
  17. package/dist/_chunks/{audio-recorder-GkGNtW2X.js → audio-recorder-D2UEBF9B.js} +98 -98
  18. package/dist/_chunks/audio-recorder-D2UEBF9B.js.map +1 -0
  19. package/dist/_chunks/{audio-visualiser-CIO3yy23.js → audio-visualiser-B4u4goV5.js} +46 -46
  20. package/dist/_chunks/audio-visualiser-B4u4goV5.js.map +1 -0
  21. package/dist/_chunks/{autocomplete.agent-kb0nmr6F.js → autocomplete.agent-Bi6CiRKa.js} +111 -111
  22. package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +1 -0
  23. package/dist/_chunks/{avatar-BsV7vRA6.js → avatar-BAhxbDEu.js} +38 -38
  24. package/dist/_chunks/avatar-BAhxbDEu.js.map +1 -0
  25. package/dist/_chunks/badge-zDghajh8.js +104 -0
  26. package/dist/_chunks/badge-zDghajh8.js.map +1 -0
  27. package/dist/_chunks/{balance-cell-renderer-BQwN51rT.js → balance-cell-renderer-BGyvZWjB.js} +123 -124
  28. package/dist/_chunks/balance-cell-renderer-BGyvZWjB.js.map +1 -0
  29. package/dist/_chunks/{breadcrumb-DnO6eHSS.js → breadcrumb-pdUacgm1.js} +40 -40
  30. package/dist/_chunks/breadcrumb-pdUacgm1.js.map +1 -0
  31. package/dist/_chunks/button-DmiGFnNA.js +119 -0
  32. package/dist/_chunks/button-DmiGFnNA.js.map +1 -0
  33. package/dist/_chunks/{button-group-CI7LFxt3.js → button-group-BtTHSyU0.js} +24 -24
  34. package/dist/_chunks/button-group-BtTHSyU0.js.map +1 -0
  35. package/dist/_chunks/{calendar-BIXVzhkL.js → calendar-BkDeDTaX.js} +333 -290
  36. package/dist/_chunks/calendar-BkDeDTaX.js.map +1 -0
  37. package/dist/_chunks/card-DeItIBcV.js +158 -0
  38. package/dist/_chunks/card-DeItIBcV.js.map +1 -0
  39. package/dist/_chunks/{chart.agent-DkmVXNsI.js → chart.agent-BdS-_8MO.js} +66 -64
  40. package/dist/_chunks/chart.agent-BdS-_8MO.js.map +1 -0
  41. package/dist/_chunks/chat-container-Co8HpB64.js +174 -0
  42. package/dist/_chunks/chat-container-Co8HpB64.js.map +1 -0
  43. package/dist/_chunks/{chat-input-aphxDjZL.js → chat-input-3rstZhHR.js} +57 -57
  44. package/dist/_chunks/chat-input-3rstZhHR.js.map +1 -0
  45. package/dist/_chunks/{chat-message-CdJSD18D.js → chat-message-dDMVSYBs.js} +66 -66
  46. package/dist/_chunks/chat-message-dDMVSYBs.js.map +1 -0
  47. package/dist/_chunks/checkbox-DMzgtnqw.js +116 -0
  48. package/dist/_chunks/checkbox-DMzgtnqw.js.map +1 -0
  49. package/dist/_chunks/{checkbox-group-D1aqVI0-.js → checkbox-group-DBnIBRT_.js} +34 -34
  50. package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +1 -0
  51. package/dist/_chunks/{collapsible-jBFm7Ah8.js → collapsible-DPGQnHZh.js} +16 -16
  52. package/dist/_chunks/collapsible-DPGQnHZh.js.map +1 -0
  53. package/dist/_chunks/{color-picker-CiotzQJF.js → color-picker-OKKF3Dww.js} +158 -158
  54. package/dist/_chunks/color-picker-OKKF3Dww.js.map +1 -0
  55. package/dist/_chunks/{combobox.agent-B6RwDSct.js → combobox.agent-CfeB-IZ1.js} +107 -107
  56. package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +1 -0
  57. package/dist/_chunks/{command-palette.agent-B87_OkmC.js → command-palette.agent-XLfSGHCL.js} +27 -27
  58. package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +1 -0
  59. package/dist/_chunks/{date-picker-CdPuI3dK.js → date-picker-DXx8oSJb.js} +5 -5
  60. package/dist/_chunks/{date-picker-CdPuI3dK.js.map → date-picker-DXx8oSJb.js.map} +1 -1
  61. package/dist/_chunks/{date-range-picker-DfK4cjln.js → date-range-picker-C3CbY__H.js} +29 -29
  62. package/dist/_chunks/{date-range-picker-DfK4cjln.js.map → date-range-picker-C3CbY__H.js.map} +1 -1
  63. package/dist/_chunks/{date-time-picker-CX_FMsLG.js → date-time-picker-Bn3FPeAc.js} +58 -58
  64. package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +1 -0
  65. package/dist/_chunks/description-list-B1CL3RTG.js +187 -0
  66. package/dist/_chunks/description-list-B1CL3RTG.js.map +1 -0
  67. package/dist/_chunks/{dialog.agent-B276rAQF.js → dialog.agent-D9WeIWi2.js} +39 -39
  68. package/dist/_chunks/dialog.agent-D9WeIWi2.js.map +1 -0
  69. package/dist/_chunks/dropdown-menu-BnVUeVG3.js +210 -0
  70. package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +1 -0
  71. package/dist/_chunks/{empty-state-DiG7vYBM.js → empty-state-DV96gCnp.js} +37 -37
  72. package/dist/_chunks/empty-state-DV96gCnp.js.map +1 -0
  73. package/dist/_chunks/{file-upload.agent-BMow5yDY.js → file-upload.agent-DYFnqdxw.js} +185 -185
  74. package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +1 -0
  75. package/dist/_chunks/{flag-ChP784EM.js → flag-C3BUEwHH.js} +14 -14
  76. package/dist/_chunks/{flag-ChP784EM.js.map → flag-C3BUEwHH.js.map} +1 -1
  77. package/dist/_chunks/floating-action-button-RigP2E7o.js +95 -0
  78. package/dist/_chunks/floating-action-button-RigP2E7o.js.map +1 -0
  79. package/dist/_chunks/form-field-DI5LY5aG.js +121 -0
  80. package/dist/_chunks/form-field-DI5LY5aG.js.map +1 -0
  81. package/dist/_chunks/freemium-paywall-D0GiUFOe.js +197 -0
  82. package/dist/_chunks/freemium-paywall-D0GiUFOe.js.map +1 -0
  83. package/dist/_chunks/{header-BpKaSL_v.js → header-CW2oRd5H.js} +111 -111
  84. package/dist/_chunks/header-CW2oRd5H.js.map +1 -0
  85. package/dist/_chunks/icon-button-C482ii4y.js +45 -0
  86. package/dist/_chunks/icon-button-C482ii4y.js.map +1 -0
  87. package/dist/_chunks/{icon-button-group-tERESY-n.js → icon-button-group-BnhkUWUg.js} +56 -56
  88. package/dist/_chunks/icon-button-group-BnhkUWUg.js.map +1 -0
  89. package/dist/_chunks/{kbd-0iPlQjgC.js → kbd-DTcIjYA7.js} +52 -52
  90. package/dist/_chunks/kbd-DTcIjYA7.js.map +1 -0
  91. package/dist/_chunks/{key-value-pair--Je59tAF.js → key-value-pair-DDhSYdDL.js} +26 -26
  92. package/dist/_chunks/key-value-pair-DDhSYdDL.js.map +1 -0
  93. package/dist/_chunks/leo-sidebar-gXXcGPKk.js +755 -0
  94. package/dist/_chunks/leo-sidebar-gXXcGPKk.js.map +1 -0
  95. package/dist/_chunks/{list-n8vI8Yvn.js → list-Cwe8mcmh.js} +96 -96
  96. package/dist/_chunks/list-Cwe8mcmh.js.map +1 -0
  97. package/dist/_chunks/live-region-COggO6x6.js +57 -0
  98. package/dist/_chunks/live-region-COggO6x6.js.map +1 -0
  99. package/dist/_chunks/{logo-UNWYb9p7.js → logo-3wrZGpwg.js} +29 -29
  100. package/dist/_chunks/logo-3wrZGpwg.js.map +1 -0
  101. package/dist/_chunks/{matrix-rain-Q7xTEpKu.js → matrix-rain-gsHqSvW7.js} +75 -75
  102. package/dist/_chunks/matrix-rain-gsHqSvW7.js.map +1 -0
  103. package/dist/_chunks/message-card-DID3cXUW.js +275 -0
  104. package/dist/_chunks/message-card-DID3cXUW.js.map +1 -0
  105. package/dist/_chunks/message-tray-CVMLBnVp.js +302 -0
  106. package/dist/_chunks/message-tray-CVMLBnVp.js.map +1 -0
  107. package/dist/_chunks/{multi-select.agent-Cf4pU636.js → multi-select.agent-BUKYZJfp.js} +126 -126
  108. package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +1 -0
  109. package/dist/_chunks/{navigation-menu-DBDsAmXc.js → navigation-menu-NjwxyshT.js} +68 -97
  110. package/dist/_chunks/navigation-menu-NjwxyshT.js.map +1 -0
  111. package/dist/_chunks/notification-card-BZ33fq8H.js +255 -0
  112. package/dist/_chunks/notification-card-BZ33fq8H.js.map +1 -0
  113. package/dist/_chunks/{notification-tray-CNWPuPZp.js → notification-tray-CnEd7B2q.js} +96 -96
  114. package/dist/_chunks/notification-tray-CnEd7B2q.js.map +1 -0
  115. package/dist/_chunks/{number-input-B1Th0DdC.js → number-input-D7rSa_ef.js} +73 -73
  116. package/dist/_chunks/number-input-D7rSa_ef.js.map +1 -0
  117. package/dist/_chunks/{otp-input-CmoBuZ4K.js → otp-input-C9R9sC74.js} +42 -42
  118. package/dist/_chunks/otp-input-C9R9sC74.js.map +1 -0
  119. package/dist/_chunks/{pagination.agent-B5KLDCMN.js → pagination.agent-D75FB6XP.js} +106 -106
  120. package/dist/_chunks/pagination.agent-D75FB6XP.js.map +1 -0
  121. package/dist/_chunks/{password-input-DnjNh-hQ.js → password-input-C6PvKyQV.js} +59 -59
  122. package/dist/_chunks/password-input-C6PvKyQV.js.map +1 -0
  123. package/dist/_chunks/{patient-shell-D0RaWDMR.js → patient-shell-CGsmI5LJ.js} +9 -9
  124. package/dist/_chunks/{patient-shell-D0RaWDMR.js.map → patient-shell-CGsmI5LJ.js.map} +1 -1
  125. package/dist/_chunks/{payment-form-Cf7U6r5L.js → payment-form-l3j-gA-t.js} +108 -108
  126. package/dist/_chunks/payment-form-l3j-gA-t.js.map +1 -0
  127. package/dist/_chunks/{pdf-viewer.agent-DXjgDItg.js → pdf-viewer.agent-DuGfSoep.js} +234 -233
  128. package/dist/_chunks/pdf-viewer.agent-DuGfSoep.js.map +1 -0
  129. package/dist/_chunks/{phone-input-C2dtIuxW.js → phone-input-ZWa_FU4R.js} +112 -112
  130. package/dist/_chunks/phone-input-ZWa_FU4R.js.map +1 -0
  131. package/dist/_chunks/{popover-D1woU9mP.js → popover-CMr1pTPO.js} +58 -58
  132. package/dist/_chunks/popover-CMr1pTPO.js.map +1 -0
  133. package/dist/_chunks/{privacy-lock-C1X42Sit.js → privacy-lock-DdpkKNM2.js} +37 -36
  134. package/dist/_chunks/privacy-lock-DdpkKNM2.js.map +1 -0
  135. package/dist/_chunks/{progress-DL3-izuO.js → progress-D4ELgHG3.js} +43 -43
  136. package/dist/_chunks/progress-D4ELgHG3.js.map +1 -0
  137. package/dist/_chunks/radio-B_gvGU29.js +106 -0
  138. package/dist/_chunks/radio-B_gvGU29.js.map +1 -0
  139. package/dist/_chunks/radio-group-Bn8Wt0yc.js +88 -0
  140. package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +1 -0
  141. package/dist/_chunks/{react-day-picker-DQKDiJ37.js → react-day-picker-d0MHsyCj.js} +174 -174
  142. package/dist/_chunks/{react-day-picker-DQKDiJ37.js.map → react-day-picker-d0MHsyCj.js.map} +1 -1
  143. package/dist/_chunks/{resizable.agent-DVk_jJur.js → resizable.agent-DBpPGNdy.js} +122 -122
  144. package/dist/_chunks/resizable.agent-DBpPGNdy.js.map +1 -0
  145. package/dist/_chunks/{rich-text-editor.agent-BOjF4Xao.js → rich-text-editor.agent-C1_E7_7t.js} +225 -225
  146. package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +1 -0
  147. package/dist/_chunks/scroll-area-Ba99pJ_R.js +144 -0
  148. package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +1 -0
  149. package/dist/_chunks/{search-bar-DgSOAajC.js → search-bar-VoTqJhRp.js} +131 -131
  150. package/dist/_chunks/search-bar-VoTqJhRp.js.map +1 -0
  151. package/dist/_chunks/search-input-D6rarD0_.js +197 -0
  152. package/dist/_chunks/search-input-D6rarD0_.js.map +1 -0
  153. package/dist/_chunks/select-DbxWF3O_.js +320 -0
  154. package/dist/_chunks/select-DbxWF3O_.js.map +1 -0
  155. package/dist/_chunks/{separator-DExI4amU.js → separator-BRQHi8s0.js} +17 -17
  156. package/dist/_chunks/separator-BRQHi8s0.js.map +1 -0
  157. package/dist/_chunks/sheet-DyWqluiS.js +188 -0
  158. package/dist/_chunks/sheet-DyWqluiS.js.map +1 -0
  159. package/dist/_chunks/sidebar-B52iGGNV.js +1076 -0
  160. package/dist/_chunks/sidebar-B52iGGNV.js.map +1 -0
  161. package/dist/_chunks/{sign-in-with-alfadocs-button-BBL11-Rt.js → sign-in-with-alfadocs-button-BU7MP5Hg.js} +4 -4
  162. package/dist/_chunks/{sign-in-with-alfadocs-button-BBL11-Rt.js.map → sign-in-with-alfadocs-button-BU7MP5Hg.js.map} +1 -1
  163. package/dist/_chunks/{signature-capture.agent-L_1_-zVR.js → signature-capture.agent-4htVctJ2.js} +163 -163
  164. package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +1 -0
  165. package/dist/_chunks/skeleton-ClO1v5GE.js +95 -0
  166. package/dist/_chunks/skeleton-ClO1v5GE.js.map +1 -0
  167. package/dist/_chunks/skip-link-CASJkBOe.js +68 -0
  168. package/dist/_chunks/skip-link-CASJkBOe.js.map +1 -0
  169. package/dist/_chunks/slider-n8JWpJvT.js +273 -0
  170. package/dist/_chunks/slider-n8JWpJvT.js.map +1 -0
  171. package/dist/_chunks/slot-grid-BRAkqChA.js +491 -0
  172. package/dist/_chunks/slot-grid-BRAkqChA.js.map +1 -0
  173. package/dist/_chunks/{sparkline.agent-BDTXzTy9.js → sparkline.agent-BLY1IMyW.js} +45 -45
  174. package/dist/_chunks/sparkline.agent-BLY1IMyW.js.map +1 -0
  175. package/dist/_chunks/{spinner-77xUGpuX.js → spinner-CoAOGcDa.js} +40 -40
  176. package/dist/_chunks/spinner-CoAOGcDa.js.map +1 -0
  177. package/dist/_chunks/stat-D76MNHzK.js +208 -0
  178. package/dist/_chunks/stat-D76MNHzK.js.map +1 -0
  179. package/dist/_chunks/{stepper-accordion-BkvqQWPI.js → stepper-accordion-DHQ80A4v.js} +33 -33
  180. package/dist/_chunks/stepper-accordion-DHQ80A4v.js.map +1 -0
  181. package/dist/_chunks/{stepper-calendar-BQMjrwzo.js → stepper-calendar-vtWwa2bY.js} +159 -159
  182. package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +1 -0
  183. package/dist/_chunks/stepper-progress-DMZ5w5VR.js +128 -0
  184. package/dist/_chunks/stepper-progress-DMZ5w5VR.js.map +1 -0
  185. package/dist/_chunks/streaming-text-D0cW8pwq.js +104 -0
  186. package/dist/_chunks/streaming-text-D0cW8pwq.js.map +1 -0
  187. package/dist/_chunks/suggestion-chip-BgNFpPEE.js +157 -0
  188. package/dist/_chunks/suggestion-chip-BgNFpPEE.js.map +1 -0
  189. package/dist/_chunks/switch-DtLPKO0p.js +137 -0
  190. package/dist/_chunks/switch-DtLPKO0p.js.map +1 -0
  191. package/dist/_chunks/{tabs.agent-FsGU3sZL.js → tabs.agent-BDUlyPbJ.js} +101 -101
  192. package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +1 -0
  193. package/dist/_chunks/tag-CfSZZN2f.js +194 -0
  194. package/dist/_chunks/tag-CfSZZN2f.js.map +1 -0
  195. package/dist/_chunks/task-card-B5xfiFg5.js +112 -0
  196. package/dist/_chunks/task-card-B5xfiFg5.js.map +1 -0
  197. package/dist/_chunks/task-tray-BnpiodZ4.js +99 -0
  198. package/dist/_chunks/task-tray-BnpiodZ4.js.map +1 -0
  199. package/dist/_chunks/text-area-BqbruBWx.js +152 -0
  200. package/dist/_chunks/text-area-BqbruBWx.js.map +1 -0
  201. package/dist/_chunks/text-input-lh6kRXZS.js +187 -0
  202. package/dist/_chunks/text-input-lh6kRXZS.js.map +1 -0
  203. package/dist/_chunks/theme-toggle-BHKMiORD.js +326 -0
  204. package/dist/_chunks/theme-toggle-BHKMiORD.js.map +1 -0
  205. package/dist/_chunks/{time-picker-BapZq0OY.js → time-picker-DbpAmPux.js} +102 -102
  206. package/dist/_chunks/time-picker-DbpAmPux.js.map +1 -0
  207. package/dist/_chunks/timeline-vjsUeuq1.js +219 -0
  208. package/dist/_chunks/timeline-vjsUeuq1.js.map +1 -0
  209. package/dist/_chunks/{timestamp-BLM-jjdw.js → timestamp-DmSt92P1.js} +30 -30
  210. package/dist/_chunks/timestamp-DmSt92P1.js.map +1 -0
  211. package/dist/_chunks/{toast-DSCqnDRl.js → toast-DllSITLf.js} +151 -151
  212. package/dist/_chunks/{toast-DSCqnDRl.js.map → toast-DllSITLf.js.map} +1 -1
  213. package/dist/_chunks/{tooltip-DF6WjD1r.js → tooltip-Dp3u8jGz.js} +30 -30
  214. package/dist/_chunks/tooltip-Dp3u8jGz.js.map +1 -0
  215. package/dist/_chunks/{tooth-scheme.agent-CFKl3iQr.js → tooth-scheme.agent-BRqxWa1D.js} +75 -75
  216. package/dist/_chunks/tooth-scheme.agent-BRqxWa1D.js.map +1 -0
  217. package/dist/_chunks/transcript-panel-Bg1BTMSr.js +265 -0
  218. package/dist/_chunks/transcript-panel-Bg1BTMSr.js.map +1 -0
  219. package/dist/_chunks/typing-indicator-BRg22Rqr.js +81 -0
  220. package/dist/_chunks/typing-indicator-BRg22Rqr.js.map +1 -0
  221. package/dist/_chunks/use-locale-BuXR_Zl9.js +32 -0
  222. package/dist/_chunks/use-locale-BuXR_Zl9.js.map +1 -0
  223. package/dist/_chunks/visually-hidden-Y3jcdCv-.js +21 -0
  224. package/dist/_chunks/visually-hidden-Y3jcdCv-.js.map +1 -0
  225. package/dist/_chunks/{warning-stack-Cyf_81SL.js → warning-stack-B9N9yWet.js} +38 -38
  226. package/dist/_chunks/warning-stack-B9N9yWet.js.map +1 -0
  227. package/dist/_chunks/{workflow-map-Uf-hHAO3.js → workflow-map-gBhL_Wrs.js} +385 -385
  228. package/dist/_chunks/workflow-map-gBhL_Wrs.js.map +1 -0
  229. package/dist/agent-catalog.json +1 -1
  230. package/dist/components/_shared/index.d.ts +2 -0
  231. package/dist/components/_shared/index.d.ts.map +1 -1
  232. package/dist/components/_shared/use-focus-trap.d.ts +32 -0
  233. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -0
  234. package/dist/components/_shared/use-neutralize-hidden-focus.d.ts +3 -0
  235. package/dist/components/_shared/use-neutralize-hidden-focus.d.ts.map +1 -0
  236. package/dist/components/accordion/index.js +1 -1
  237. package/dist/components/agenda-card/index.js +1 -1
  238. package/dist/components/agenda-tray/index.js +1 -1
  239. package/dist/components/ai-prompt-input/index.js +1 -1
  240. package/dist/components/alert/index.js +1 -1
  241. package/dist/components/app-frame/index.js +1 -1
  242. package/dist/components/aspect-ratio/index.js +1 -1
  243. package/dist/components/audio-recorder/index.js +1 -1
  244. package/dist/components/audio-visualiser/index.js +1 -1
  245. package/dist/components/autocomplete/index.js +1 -1
  246. package/dist/components/avatar/index.js +1 -1
  247. package/dist/components/badge/index.js +1 -1
  248. package/dist/components/breadcrumb/index.js +1 -1
  249. package/dist/components/button/index.js +2 -2
  250. package/dist/components/button-group/index.js +1 -1
  251. package/dist/components/calendar/calendar.d.ts.map +1 -1
  252. package/dist/components/calendar/index.js +1 -1
  253. package/dist/components/card/index.js +1 -1
  254. package/dist/components/chart/chart.d.ts.map +1 -1
  255. package/dist/components/chart/index.js +1 -1
  256. package/dist/components/chat-container/index.js +1 -1
  257. package/dist/components/chat-input/index.js +1 -1
  258. package/dist/components/chat-message/index.js +1 -1
  259. package/dist/components/checkbox/index.js +1 -1
  260. package/dist/components/checkbox-group/index.js +1 -1
  261. package/dist/components/collapsible/index.js +1 -1
  262. package/dist/components/color-picker/index.js +1 -1
  263. package/dist/components/combobox/index.js +1 -1
  264. package/dist/components/command-palette/index.js +1 -1
  265. package/dist/components/data-table/index.js +1 -1
  266. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  267. package/dist/components/date-picker/index.js +1 -1
  268. package/dist/components/date-range-picker/index.js +1 -1
  269. package/dist/components/date-time-picker/index.js +1 -1
  270. package/dist/components/description-list/index.js +1 -1
  271. package/dist/components/dialog/index.js +1 -1
  272. package/dist/components/dropdown-menu/index.js +1 -1
  273. package/dist/components/empty-state/index.js +1 -1
  274. package/dist/components/file-upload/index.js +1 -1
  275. package/dist/components/flag/index.js +1 -1
  276. package/dist/components/floating-action-button/index.js +1 -1
  277. package/dist/components/form-field/index.js +1 -1
  278. package/dist/components/freemium-paywall/index.js +1 -1
  279. package/dist/components/header/index.js +1 -1
  280. package/dist/components/icon-button/index.d.ts +3 -0
  281. package/dist/components/icon-button/index.d.ts.map +1 -0
  282. package/dist/components/icon-button/index.js +5 -0
  283. package/dist/components/icon-button/index.js.map +1 -0
  284. package/dist/components/icon-button-group/index.js +1 -1
  285. package/dist/components/index.d.ts +8 -2
  286. package/dist/components/index.d.ts.map +1 -1
  287. package/dist/components/kbd/index.js +1 -1
  288. package/dist/components/key-value-pair/index.js +1 -1
  289. package/dist/components/list/index.js +1 -1
  290. package/dist/components/live-region/index.d.ts +3 -0
  291. package/dist/components/live-region/index.d.ts.map +1 -0
  292. package/dist/components/live-region/index.js +5 -0
  293. package/dist/components/live-region/index.js.map +1 -0
  294. package/dist/components/live-region/live-region.d.ts +49 -0
  295. package/dist/components/live-region/live-region.d.ts.map +1 -0
  296. package/dist/components/logo/index.js +1 -1
  297. package/dist/components/matrix-rain/index.js +1 -1
  298. package/dist/components/message-card/index.js +1 -1
  299. package/dist/components/message-tray/index.js +1 -1
  300. package/dist/components/multi-select/index.js +1 -1
  301. package/dist/components/navigation-menu/index.d.ts +4 -2
  302. package/dist/components/navigation-menu/index.d.ts.map +1 -1
  303. package/dist/components/navigation-menu/index.js +3 -2
  304. package/dist/components/navigation-menu/index.js.map +1 -1
  305. package/dist/components/navigation-menu/navigation-menu.d.ts +2 -6
  306. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  307. package/dist/components/notification-card/index.js +1 -1
  308. package/dist/components/notification-tray/index.js +1 -1
  309. package/dist/components/number-input/index.js +1 -1
  310. package/dist/components/otp-input/index.js +1 -1
  311. package/dist/components/pagination/index.js +1 -1
  312. package/dist/components/password-input/index.js +1 -1
  313. package/dist/components/payment-form/index.js +1 -1
  314. package/dist/components/pdf-viewer/index.js +1 -1
  315. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  316. package/dist/components/phone-input/index.js +1 -1
  317. package/dist/components/popover/index.js +1 -1
  318. package/dist/components/privacy-lock/index.js +1 -1
  319. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  320. package/dist/components/progress/index.js +1 -1
  321. package/dist/components/radio/index.d.ts +3 -0
  322. package/dist/components/radio/index.d.ts.map +1 -0
  323. package/dist/components/radio/index.js +5 -0
  324. package/dist/components/radio/index.js.map +1 -0
  325. package/dist/components/radio-group/index.js +4 -3
  326. package/dist/components/radio-group/index.js.map +1 -1
  327. package/dist/components/resizable/index.js +1 -1
  328. package/dist/components/rich-text-editor/index.js +1 -1
  329. package/dist/components/scroll-area/index.js +1 -1
  330. package/dist/components/search-bar/index.js +1 -1
  331. package/dist/components/search-input/index.js +1 -1
  332. package/dist/components/select/index.js +1 -1
  333. package/dist/components/separator/index.js +1 -1
  334. package/dist/components/sheet/index.js +1 -1
  335. package/dist/components/sidebar/index.js +1 -1
  336. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  337. package/dist/components/signature-capture/index.js +1 -1
  338. package/dist/components/skeleton/index.js +1 -1
  339. package/dist/components/skip-link/index.d.ts +2 -0
  340. package/dist/components/skip-link/index.d.ts.map +1 -0
  341. package/dist/components/skip-link/index.js +5 -0
  342. package/dist/components/skip-link/index.js.map +1 -0
  343. package/dist/components/skip-link/skip-link.d.ts +34 -0
  344. package/dist/components/skip-link/skip-link.d.ts.map +1 -0
  345. package/dist/components/slider/index.js +1 -1
  346. package/dist/components/slot-grid/index.js +1 -1
  347. package/dist/components/sparkline/index.js +1 -1
  348. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  349. package/dist/components/spinner/index.js +1 -1
  350. package/dist/components/stat/index.js +1 -1
  351. package/dist/components/stepper-accordion/index.js +1 -1
  352. package/dist/components/stepper-calendar/index.js +1 -1
  353. package/dist/components/stepper-progress/index.js +1 -1
  354. package/dist/components/streaming-text/index.js +1 -1
  355. package/dist/components/suggestion-chip/index.js +1 -1
  356. package/dist/components/switch/index.js +1 -1
  357. package/dist/components/tabs/index.js +1 -1
  358. package/dist/components/tag/index.js +1 -1
  359. package/dist/components/task-card/index.js +1 -1
  360. package/dist/components/task-tray/index.js +1 -1
  361. package/dist/components/text-area/index.js +1 -1
  362. package/dist/components/text-input/index.js +1 -1
  363. package/dist/components/theme-toggle/index.d.ts +3 -0
  364. package/dist/components/theme-toggle/index.d.ts.map +1 -0
  365. package/dist/components/theme-toggle/index.js +5 -0
  366. package/dist/components/theme-toggle/index.js.map +1 -0
  367. package/dist/components/theme-toggle/theme-toggle.d.ts +34 -0
  368. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  369. package/dist/components/time-picker/index.js +1 -1
  370. package/dist/components/timeline/index.js +1 -1
  371. package/dist/components/timestamp/index.js +1 -1
  372. package/dist/components/toast/index.js +1 -1
  373. package/dist/components/tooltip/index.js +1 -1
  374. package/dist/components/tooth-scheme/index.js +1 -1
  375. package/dist/components/transcript-panel/index.js +1 -1
  376. package/dist/components/typing-indicator/index.js +1 -1
  377. package/dist/components/visually-hidden/index.d.ts +2 -0
  378. package/dist/components/visually-hidden/index.d.ts.map +1 -0
  379. package/dist/components/visually-hidden/index.js +5 -0
  380. package/dist/components/visually-hidden/index.js.map +1 -0
  381. package/dist/components/visually-hidden/visually-hidden.d.ts +11 -0
  382. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
  383. package/dist/components/warning-stack/index.js +1 -1
  384. package/dist/components/workflow/index.js +1 -1
  385. package/dist/hooks/index.d.ts +3 -0
  386. package/dist/hooks/index.d.ts.map +1 -1
  387. package/dist/hooks/index.js +10 -7
  388. package/dist/hooks/index.js.map +1 -1
  389. package/dist/hooks/use-locale.d.ts +27 -0
  390. package/dist/hooks/use-locale.d.ts.map +1 -0
  391. package/dist/hooks/use-media-query.d.ts +17 -0
  392. package/dist/hooks/use-media-query.d.ts.map +1 -0
  393. package/dist/i18n/config.js +59 -2
  394. package/dist/i18n/config.js.map +1 -1
  395. package/dist/i18n/resources.d.ts +57 -0
  396. package/dist/i18n/resources.d.ts.map +1 -1
  397. package/dist/index.js +442 -431
  398. package/dist/index.js.map +1 -1
  399. package/dist/locales/de.json +19 -0
  400. package/dist/locales/en.json +19 -0
  401. package/dist/locales/it.json +19 -0
  402. package/dist/patterns/leo-assistant/index.js +1 -1
  403. package/dist/patterns/patient-shell/index.js +1 -1
  404. package/dist/tokens.css +2 -2
  405. package/package.json +4 -2
  406. package/dist/_chunks/accordion-Dgcd38U_.js +0 -117
  407. package/dist/_chunks/accordion-Dgcd38U_.js.map +0 -1
  408. package/dist/_chunks/agenda-card-B2gq-gTq.js +0 -130
  409. package/dist/_chunks/agenda-card-B2gq-gTq.js.map +0 -1
  410. package/dist/_chunks/agenda-tray-twa8g_87.js +0 -119
  411. package/dist/_chunks/agenda-tray-twa8g_87.js.map +0 -1
  412. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js +0 -379
  413. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js.map +0 -1
  414. package/dist/_chunks/alert-C5ud6CfE.js.map +0 -1
  415. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js +0 -17
  416. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js.map +0 -1
  417. package/dist/_chunks/app-frame-CmIUp9BD.js.map +0 -1
  418. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js +0 -56
  419. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js.map +0 -1
  420. package/dist/_chunks/audio-recorder-GkGNtW2X.js.map +0 -1
  421. package/dist/_chunks/audio-visualiser-CIO3yy23.js.map +0 -1
  422. package/dist/_chunks/autocomplete.agent-kb0nmr6F.js.map +0 -1
  423. package/dist/_chunks/avatar-BsV7vRA6.js.map +0 -1
  424. package/dist/_chunks/badge--CmSr7ok.js +0 -104
  425. package/dist/_chunks/badge--CmSr7ok.js.map +0 -1
  426. package/dist/_chunks/balance-cell-renderer-BQwN51rT.js.map +0 -1
  427. package/dist/_chunks/breadcrumb-DnO6eHSS.js.map +0 -1
  428. package/dist/_chunks/button-CXL8bA8G.js +0 -119
  429. package/dist/_chunks/button-CXL8bA8G.js.map +0 -1
  430. package/dist/_chunks/button-group-CI7LFxt3.js.map +0 -1
  431. package/dist/_chunks/calendar-BIXVzhkL.js.map +0 -1
  432. package/dist/_chunks/card-n97MNPP2.js +0 -158
  433. package/dist/_chunks/card-n97MNPP2.js.map +0 -1
  434. package/dist/_chunks/chart.agent-DkmVXNsI.js.map +0 -1
  435. package/dist/_chunks/chat-container-SR3UWxbL.js +0 -174
  436. package/dist/_chunks/chat-container-SR3UWxbL.js.map +0 -1
  437. package/dist/_chunks/chat-input-aphxDjZL.js.map +0 -1
  438. package/dist/_chunks/chat-message-CdJSD18D.js.map +0 -1
  439. package/dist/_chunks/checkbox-CfiZ0FZc.js +0 -116
  440. package/dist/_chunks/checkbox-CfiZ0FZc.js.map +0 -1
  441. package/dist/_chunks/checkbox-group-D1aqVI0-.js.map +0 -1
  442. package/dist/_chunks/collapsible-jBFm7Ah8.js.map +0 -1
  443. package/dist/_chunks/color-picker-CiotzQJF.js.map +0 -1
  444. package/dist/_chunks/combobox.agent-B6RwDSct.js.map +0 -1
  445. package/dist/_chunks/command-palette.agent-B87_OkmC.js.map +0 -1
  446. package/dist/_chunks/date-time-picker-CX_FMsLG.js.map +0 -1
  447. package/dist/_chunks/description-list-C5UPZgX6.js +0 -187
  448. package/dist/_chunks/description-list-C5UPZgX6.js.map +0 -1
  449. package/dist/_chunks/dialog.agent-B276rAQF.js.map +0 -1
  450. package/dist/_chunks/dropdown-menu-CJKvK7VG.js +0 -210
  451. package/dist/_chunks/dropdown-menu-CJKvK7VG.js.map +0 -1
  452. package/dist/_chunks/empty-state-DiG7vYBM.js.map +0 -1
  453. package/dist/_chunks/file-upload.agent-BMow5yDY.js.map +0 -1
  454. package/dist/_chunks/floating-action-button-BM9ib-Wf.js +0 -95
  455. package/dist/_chunks/floating-action-button-BM9ib-Wf.js.map +0 -1
  456. package/dist/_chunks/form-field-B4bwrccN.js +0 -121
  457. package/dist/_chunks/form-field-B4bwrccN.js.map +0 -1
  458. package/dist/_chunks/freemium-paywall-DVyNsQHS.js +0 -197
  459. package/dist/_chunks/freemium-paywall-DVyNsQHS.js.map +0 -1
  460. package/dist/_chunks/header-BpKaSL_v.js.map +0 -1
  461. package/dist/_chunks/icon-button-C1vpylg3.js +0 -45
  462. package/dist/_chunks/icon-button-C1vpylg3.js.map +0 -1
  463. package/dist/_chunks/icon-button-group-tERESY-n.js.map +0 -1
  464. package/dist/_chunks/kbd-0iPlQjgC.js.map +0 -1
  465. package/dist/_chunks/key-value-pair--Je59tAF.js.map +0 -1
  466. package/dist/_chunks/leo-sidebar-9A9AWBxX.js +0 -755
  467. package/dist/_chunks/leo-sidebar-9A9AWBxX.js.map +0 -1
  468. package/dist/_chunks/list-n8vI8Yvn.js.map +0 -1
  469. package/dist/_chunks/logo-UNWYb9p7.js.map +0 -1
  470. package/dist/_chunks/matrix-rain-Q7xTEpKu.js.map +0 -1
  471. package/dist/_chunks/message-card-g5VS5Q80.js +0 -275
  472. package/dist/_chunks/message-card-g5VS5Q80.js.map +0 -1
  473. package/dist/_chunks/message-tray-CAk-iibU.js +0 -302
  474. package/dist/_chunks/message-tray-CAk-iibU.js.map +0 -1
  475. package/dist/_chunks/multi-select.agent-Cf4pU636.js.map +0 -1
  476. package/dist/_chunks/navigation-menu-DBDsAmXc.js.map +0 -1
  477. package/dist/_chunks/notification-card-CQxJporb.js +0 -255
  478. package/dist/_chunks/notification-card-CQxJporb.js.map +0 -1
  479. package/dist/_chunks/notification-tray-CNWPuPZp.js.map +0 -1
  480. package/dist/_chunks/number-input-B1Th0DdC.js.map +0 -1
  481. package/dist/_chunks/otp-input-CmoBuZ4K.js.map +0 -1
  482. package/dist/_chunks/pagination.agent-B5KLDCMN.js.map +0 -1
  483. package/dist/_chunks/password-input-DnjNh-hQ.js.map +0 -1
  484. package/dist/_chunks/payment-form-Cf7U6r5L.js.map +0 -1
  485. package/dist/_chunks/pdf-viewer.agent-DXjgDItg.js.map +0 -1
  486. package/dist/_chunks/phone-input-C2dtIuxW.js.map +0 -1
  487. package/dist/_chunks/popover-D1woU9mP.js.map +0 -1
  488. package/dist/_chunks/privacy-lock-C1X42Sit.js.map +0 -1
  489. package/dist/_chunks/progress-DL3-izuO.js.map +0 -1
  490. package/dist/_chunks/radio-group-CXN9qNPe.js +0 -185
  491. package/dist/_chunks/radio-group-CXN9qNPe.js.map +0 -1
  492. package/dist/_chunks/resizable.agent-DVk_jJur.js.map +0 -1
  493. package/dist/_chunks/rich-text-editor.agent-BOjF4Xao.js.map +0 -1
  494. package/dist/_chunks/scroll-area-DXn-YWHY.js +0 -144
  495. package/dist/_chunks/scroll-area-DXn-YWHY.js.map +0 -1
  496. package/dist/_chunks/search-bar-DgSOAajC.js.map +0 -1
  497. package/dist/_chunks/search-input-D4tC_Prn.js +0 -197
  498. package/dist/_chunks/search-input-D4tC_Prn.js.map +0 -1
  499. package/dist/_chunks/select-B4m4upMg.js +0 -320
  500. package/dist/_chunks/select-B4m4upMg.js.map +0 -1
  501. package/dist/_chunks/separator-DExI4amU.js.map +0 -1
  502. package/dist/_chunks/sheet-D6XOx0fK.js +0 -188
  503. package/dist/_chunks/sheet-D6XOx0fK.js.map +0 -1
  504. package/dist/_chunks/sidebar-r645O-k9.js +0 -1076
  505. package/dist/_chunks/sidebar-r645O-k9.js.map +0 -1
  506. package/dist/_chunks/signature-capture.agent-L_1_-zVR.js.map +0 -1
  507. package/dist/_chunks/skeleton-vbTWUntB.js +0 -95
  508. package/dist/_chunks/skeleton-vbTWUntB.js.map +0 -1
  509. package/dist/_chunks/slider-B3DBwmcm.js +0 -273
  510. package/dist/_chunks/slider-B3DBwmcm.js.map +0 -1
  511. package/dist/_chunks/slot-grid-DL_Tuj0p.js +0 -491
  512. package/dist/_chunks/slot-grid-DL_Tuj0p.js.map +0 -1
  513. package/dist/_chunks/sparkline.agent-BDTXzTy9.js.map +0 -1
  514. package/dist/_chunks/spinner-77xUGpuX.js.map +0 -1
  515. package/dist/_chunks/stat-CrumvZWf.js +0 -208
  516. package/dist/_chunks/stat-CrumvZWf.js.map +0 -1
  517. package/dist/_chunks/stepper-accordion-BkvqQWPI.js.map +0 -1
  518. package/dist/_chunks/stepper-calendar-BQMjrwzo.js.map +0 -1
  519. package/dist/_chunks/stepper-progress-Bwfl-0rV.js +0 -128
  520. package/dist/_chunks/stepper-progress-Bwfl-0rV.js.map +0 -1
  521. package/dist/_chunks/streaming-text-Cu9YQe_1.js +0 -104
  522. package/dist/_chunks/streaming-text-Cu9YQe_1.js.map +0 -1
  523. package/dist/_chunks/suggestion-chip-XkxDJiPW.js +0 -157
  524. package/dist/_chunks/suggestion-chip-XkxDJiPW.js.map +0 -1
  525. package/dist/_chunks/switch-DyC0ThNT.js +0 -137
  526. package/dist/_chunks/switch-DyC0ThNT.js.map +0 -1
  527. package/dist/_chunks/tabs.agent-FsGU3sZL.js.map +0 -1
  528. package/dist/_chunks/tag-BucAvfTX.js +0 -194
  529. package/dist/_chunks/tag-BucAvfTX.js.map +0 -1
  530. package/dist/_chunks/task-card-uxjApfcg.js +0 -112
  531. package/dist/_chunks/task-card-uxjApfcg.js.map +0 -1
  532. package/dist/_chunks/task-tray-BdfM3p8N.js +0 -99
  533. package/dist/_chunks/task-tray-BdfM3p8N.js.map +0 -1
  534. package/dist/_chunks/text-area-CKxZ7cS3.js +0 -152
  535. package/dist/_chunks/text-area-CKxZ7cS3.js.map +0 -1
  536. package/dist/_chunks/text-input-D16CcMlL.js +0 -187
  537. package/dist/_chunks/text-input-D16CcMlL.js.map +0 -1
  538. package/dist/_chunks/time-picker-BapZq0OY.js.map +0 -1
  539. package/dist/_chunks/timeline-D3VOf4RT.js +0 -219
  540. package/dist/_chunks/timeline-D3VOf4RT.js.map +0 -1
  541. package/dist/_chunks/timestamp-BLM-jjdw.js.map +0 -1
  542. package/dist/_chunks/tooltip-DF6WjD1r.js.map +0 -1
  543. package/dist/_chunks/tooth-scheme.agent-CFKl3iQr.js.map +0 -1
  544. package/dist/_chunks/transcript-panel-aI14fHYA.js +0 -265
  545. package/dist/_chunks/transcript-panel-aI14fHYA.js.map +0 -1
  546. package/dist/_chunks/typing-indicator-BTVDEpnd.js +0 -81
  547. package/dist/_chunks/typing-indicator-BTVDEpnd.js.map +0 -1
  548. package/dist/_chunks/warning-stack-Cyf_81SL.js.map +0 -1
  549. package/dist/_chunks/workflow-map-Uf-hHAO3.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { jsxs as d, jsx as s } from "react/jsx-runtime";
1
+ import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
2
  import { forwardRef as M, useState as w, useCallback as t } from "react";
3
3
  import { c as f } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as F } from "react-i18next";
5
- import { T as H } from "./text-input-D16CcMlL.js";
5
+ import { T as H } from "./text-input-lh6kRXZS.js";
6
6
  import { u as _ } from "./form-field-context-94LwgYTQ.js";
7
7
  import { E as O } from "./eye-off-xEXDAh5z.js";
8
8
  import { c as $ } from "./createLucideIcon-CrFbzy84.js";
@@ -28,32 +28,32 @@ const B = [
28
28
  lg: "size-5"
29
29
  }, Q = f(
30
30
  [
31
- "absolute inset-y-0 end-0 ps-2 pe-3",
32
- "inline-flex items-center justify-center",
33
- "text-muted-foreground hover:text-foreground",
34
- "bg-transparent border-0 cursor-pointer",
35
- "rounded-[var(--radius-sm)]",
36
- "min-w-[var(--min-target-size)]",
37
- "transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none",
38
- "focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid",
39
- "focus-visible:outline-ring focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
40
- "forced-colors:focus-visible:outline-[CanvasText]",
41
- "disabled:cursor-not-allowed disabled:opacity-50"
31
+ "ds:absolute ds:inset-y-0 ds:end-0 ds:ps-2 ds:pe-3",
32
+ "ds:inline-flex ds:items-center ds:justify-center",
33
+ "ds:text-muted-foreground ds:hover:text-foreground",
34
+ "ds:bg-transparent ds:border-0 ds:cursor-pointer",
35
+ "ds:rounded-[var(--radius-sm)]",
36
+ "ds:min-w-[var(--min-target-size)]",
37
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
38
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
39
+ "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
40
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
41
+ "ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
42
42
  ].join(" ")
43
43
  ), W = f(
44
- "h-1 w-full overflow-hidden rounded-[var(--radius-full)] bg-muted"
44
+ "ds:h-1 ds:w-full ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-muted"
45
45
  ), X = f(
46
46
  [
47
- "h-full rounded-[var(--radius-full)]",
48
- "transition-all duration-[var(--animation-duration)] motion-reduce:transition-none"
47
+ "ds:h-full ds:rounded-[var(--radius-full)]",
48
+ "ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
49
49
  ].join(" "),
50
50
  {
51
51
  variants: {
52
52
  level: {
53
- 0: "w-1/4 bg-destructive",
54
- 1: "w-1/2 bg-warning",
55
- 2: "w-3/4 bg-success",
56
- 3: "w-full bg-success"
53
+ 0: "ds:w-1/4 ds:bg-destructive",
54
+ 1: "ds:w-1/2 ds:bg-warning",
55
+ 2: "ds:w-3/4 ds:bg-success",
56
+ 3: "ds:w-full ds:bg-success"
57
57
  }
58
58
  },
59
59
  defaultVariants: { level: 0 }
@@ -65,54 +65,54 @@ const B = [
65
65
  3: "strong"
66
66
  }, Z = M(
67
67
  ({
68
- onRevealChange: i,
68
+ onRevealChange: d,
69
69
  showStrength: N = !1,
70
70
  strength: u = 0,
71
71
  autoComplete: k,
72
72
  size: m = "md",
73
73
  disabled: y,
74
74
  name: z,
75
- onKeyDown: r,
76
- onKeyUp: o,
77
- onBlur: n,
75
+ onKeyDown: i,
76
+ onKeyUp: r,
77
+ onBlur: o,
78
78
  className: L,
79
79
  ...C
80
80
  }, T) => {
81
- const { t: l } = F(), g = _().disabled || y, [a, S] = w(!1), [j, v] = w(!1), I = t(() => {
82
- S((e) => {
83
- const x = !e;
84
- return i == null || i(x), x;
81
+ const { t: n } = F(), g = _().disabled || y, [a, S] = w(!1), [j, v] = w(!1), I = t(() => {
82
+ S((s) => {
83
+ const x = !s;
84
+ return d == null || d(x), x;
85
85
  });
86
- }, [i]), c = t(
87
- (e) => {
88
- typeof e.getModifierState == "function" && v(e.getModifierState("CapsLock"));
86
+ }, [d]), l = t(
87
+ (s) => {
88
+ typeof s.getModifierState == "function" && v(s.getModifierState("CapsLock"));
89
89
  },
90
90
  []
91
91
  ), P = t(
92
- (e) => {
93
- c(e), r == null || r(e);
92
+ (s) => {
93
+ l(s), i == null || i(s);
94
94
  },
95
- [c, r]
95
+ [l, i]
96
96
  ), V = t(
97
- (e) => {
98
- c(e), o == null || o(e);
97
+ (s) => {
98
+ l(s), r == null || r(s);
99
99
  },
100
- [c, o]
100
+ [l, r]
101
101
  ), A = t(
102
- (e) => {
103
- v(!1), n == null || n(e);
102
+ (s) => {
103
+ v(!1), o == null || o(s);
104
104
  },
105
- [n]
106
- ), b = J[m], E = l(
105
+ [o]
106
+ ), b = J[m], E = n(
107
107
  a ? "ui.inputs.password.toggleHide" : "ui.inputs.password.toggleShow",
108
108
  a ? "Hide password" : "Show password"
109
- ), p = Y[u], h = l(
109
+ ), p = Y[u], h = n(
110
110
  `ui.inputs.password.strength.${p}`,
111
111
  p.charAt(0).toUpperCase() + p.slice(1)
112
112
  );
113
- return /* @__PURE__ */ d("div", { className: "flex flex-col gap-[var(--spacing-xs)]", children: [
114
- /* @__PURE__ */ d("div", { className: "relative", children: [
115
- /* @__PURE__ */ s(
113
+ return /* @__PURE__ */ c("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
114
+ /* @__PURE__ */ c("div", { className: "ds:relative", children: [
115
+ /* @__PURE__ */ e(
116
116
  H,
117
117
  {
118
118
  ref: T,
@@ -127,12 +127,12 @@ const B = [
127
127
  onKeyDown: P,
128
128
  onKeyUp: V,
129
129
  onBlur: A,
130
- endAdornment: /* @__PURE__ */ s("span", { "aria-hidden": "true", className: "block size-4" }),
130
+ endAdornment: /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "ds:block ds:size-4" }),
131
131
  className: L,
132
132
  ...C
133
133
  }
134
134
  ),
135
- /* @__PURE__ */ s(
135
+ /* @__PURE__ */ e(
136
136
  "button",
137
137
  {
138
138
  type: "button",
@@ -141,44 +141,44 @@ const B = [
141
141
  disabled: g,
142
142
  onClick: I,
143
143
  className: Q(),
144
- children: a ? /* @__PURE__ */ s(O, { "aria-hidden": "true", className: b }) : /* @__PURE__ */ s(G, { "aria-hidden": "true", className: b })
144
+ children: a ? /* @__PURE__ */ e(O, { "aria-hidden": "true", className: b }) : /* @__PURE__ */ e(G, { "aria-hidden": "true", className: b })
145
145
  }
146
146
  )
147
147
  ] }),
148
- j ? /* @__PURE__ */ d(
148
+ j ? /* @__PURE__ */ c(
149
149
  "span",
150
150
  {
151
151
  role: "status",
152
152
  "aria-live": "polite",
153
- className: "inline-flex items-center gap-[var(--spacing-xs)] type-meta text-warning",
153
+ className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-meta ds:text-warning",
154
154
  children: [
155
- /* @__PURE__ */ s(q, { "aria-hidden": "true", className: "size-3.5" }),
156
- l("ui.inputs.password.capsLock", "Caps Lock is on")
155
+ /* @__PURE__ */ e(q, { "aria-hidden": "true", className: "ds:size-3.5" }),
156
+ n("ui.inputs.password.capsLock", "Caps Lock is on")
157
157
  ]
158
158
  }
159
159
  ) : null,
160
- N ? /* @__PURE__ */ d("div", { className: "flex flex-col gap-[var(--spacing-xs)]", children: [
161
- /* @__PURE__ */ s(
160
+ N ? /* @__PURE__ */ c("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
161
+ /* @__PURE__ */ e(
162
162
  "div",
163
163
  {
164
164
  role: "progressbar",
165
165
  "aria-valuenow": u,
166
166
  "aria-valuemin": 0,
167
167
  "aria-valuemax": 3,
168
- "aria-label": l(
168
+ "aria-label": n(
169
169
  "ui.inputs.password.strengthLabel",
170
170
  "Password strength"
171
171
  ),
172
172
  "aria-valuetext": h,
173
173
  className: W(),
174
- children: /* @__PURE__ */ s("div", { className: X({ level: u }) })
174
+ children: /* @__PURE__ */ e("div", { className: X({ level: u }) })
175
175
  }
176
176
  ),
177
- /* @__PURE__ */ s(
177
+ /* @__PURE__ */ e(
178
178
  "span",
179
179
  {
180
180
  "aria-hidden": "true",
181
- className: "type-meta text-muted-foreground",
181
+ className: "type-meta ds:text-muted-foreground",
182
182
  children: h
183
183
  }
184
184
  )
@@ -190,4 +190,4 @@ Z.displayName = "PasswordInput";
190
190
  export {
191
191
  Z as P
192
192
  };
193
- //# sourceMappingURL=password-input-DnjNh-hQ.js.map
193
+ //# sourceMappingURL=password-input-C6PvKyQV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-input-C6PvKyQV.js","sources":["../../node_modules/lucide-react/dist/esm/icons/eye.js","../../src/components/password-input/password-input.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","import {\n forwardRef,\n useCallback,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle, Eye, EyeOff } from 'lucide-react';\nimport { TextInput, type TextInputProps } from '../text-input';\nimport { useFormField } from '../form-field/form-field-context';\n\ntype Strength = 0 | 1 | 2 | 3;\n\ntype SizeKey = NonNullable<TextInputProps['size']>;\n\nconst iconSizeClassBySize: Record<SizeKey, string> = {\n sm: 'size-4',\n md: 'size-[18px]',\n lg: 'size-5',\n};\n\nconst toggleVariants = cva(\n [\n 'ds:absolute ds:inset-y-0 ds:end-0 ds:ps-2 ds:pe-3',\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:text-muted-foreground ds:hover:text-foreground',\n 'ds:bg-transparent ds:border-0 ds:cursor-pointer',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:min-w-[var(--min-target-size)]',\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:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n);\n\nconst strengthTrackVariants = cva(\n 'ds:h-1 ds:w-full ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-muted',\n);\n\nconst strengthBarVariants = cva(\n [\n 'ds:h-full ds:rounded-[var(--radius-full)]',\n 'ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n level: {\n 0: 'ds:w-1/4 ds:bg-destructive',\n 1: 'ds:w-1/2 ds:bg-warning',\n 2: 'ds:w-3/4 ds:bg-success',\n 3: 'ds:w-full ds:bg-success',\n },\n },\n defaultVariants: { level: 0 },\n },\n);\n\nconst strengthLabelByLevel: Record<Strength, 'weak' | 'fair' | 'good' | 'strong'> = {\n 0: 'weak',\n 1: 'fair',\n 2: 'good',\n 3: 'strong',\n};\n\nexport interface PasswordInputProps\n extends Omit<TextInputProps, 'type' | 'endAdornment' | 'startAdornment'>,\n VariantProps<typeof strengthBarVariants> {\n /** Callback when reveal state changes (for analytics). */\n onRevealChange?: (revealed: boolean) => void;\n /** Show the strength meter below the input. */\n showStrength?: boolean;\n /** Strength score: 0 = weak, 1 = fair, 2 = good, 3 = strong. */\n strength?: Strength;\n /**\n * Autocomplete hint. Defaults to 'current-password'.\n * Use 'new-password' for registration/change-password forms.\n */\n autoComplete?: 'current-password' | 'new-password' | (string & {});\n}\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (\n {\n onRevealChange,\n showStrength = false,\n strength = 0,\n autoComplete,\n size = 'md',\n disabled,\n name,\n onKeyDown,\n onKeyUp,\n onBlur,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const ctx = useFormField();\n const effectiveDisabled = ctx.disabled || disabled;\n\n const [revealed, setRevealed] = useState(false);\n const [capsLock, setCapsLock] = useState(false);\n\n const handleToggle = useCallback(() => {\n setRevealed((prev) => {\n const next = !prev;\n onRevealChange?.(next);\n return next;\n });\n }, [onRevealChange]);\n\n const detectCaps = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (typeof event.getModifierState === 'function') {\n setCapsLock(event.getModifierState('CapsLock'));\n }\n },\n [],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n detectCaps(event);\n onKeyDown?.(event);\n },\n [detectCaps, onKeyDown],\n );\n\n const handleKeyUp = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n detectCaps(event);\n onKeyUp?.(event);\n },\n [detectCaps, onKeyUp],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setCapsLock(false);\n onBlur?.(event);\n },\n [onBlur],\n );\n\n const iconSizeClass = iconSizeClassBySize[size];\n const toggleLabel = t(\n revealed ? 'ui.inputs.password.toggleHide' : 'ui.inputs.password.toggleShow',\n revealed ? 'Hide password' : 'Show password',\n );\n\n const strengthKey = strengthLabelByLevel[strength];\n const strengthText = t(\n `ui.inputs.password.strength.${strengthKey}`,\n strengthKey.charAt(0).toUpperCase() + strengthKey.slice(1),\n );\n\n return (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:relative\">\n <TextInput\n ref={ref}\n type={revealed ? 'text' : 'password'}\n autoComplete={autoComplete ?? 'current-password'}\n name={name ?? 'password'}\n spellCheck={false}\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n size={size}\n disabled={effectiveDisabled}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onBlur={handleBlur}\n endAdornment={<span aria-hidden=\"true\" className=\"ds:block ds:size-4\" />}\n className={className}\n {...rest}\n />\n <button\n type=\"button\"\n aria-pressed={revealed}\n aria-label={toggleLabel}\n disabled={effectiveDisabled}\n onClick={handleToggle}\n className={toggleVariants()}\n >\n {revealed ? (\n <EyeOff aria-hidden=\"true\" className={iconSizeClass} />\n ) : (\n <Eye aria-hidden=\"true\" className={iconSizeClass} />\n )}\n </button>\n </div>\n\n {capsLock ? (\n <span\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-meta ds:text-warning\"\n >\n <AlertTriangle aria-hidden=\"true\" className=\"ds:size-3.5\" />\n {t('ui.inputs.password.capsLock', 'Caps Lock is on')}\n </span>\n ) : null}\n\n {showStrength ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div\n role=\"progressbar\"\n aria-valuenow={strength}\n aria-valuemin={0}\n aria-valuemax={3}\n aria-label={t(\n 'ui.inputs.password.strengthLabel',\n 'Password strength',\n )}\n aria-valuetext={strengthText}\n className={strengthTrackVariants()}\n >\n <div className={strengthBarVariants({ level: strength })} />\n </div>\n <span\n aria-hidden=\"true\"\n className=\"type-meta ds:text-muted-foreground\"\n >\n {strengthText}\n </span>\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nPasswordInput.displayName = 'PasswordInput';\n"],"names":["__iconNode","Eye","createLucideIcon","iconSizeClassBySize","toggleVariants","cva","strengthTrackVariants","strengthBarVariants","strengthLabelByLevel","PasswordInput","forwardRef","onRevealChange","showStrength","strength","autoComplete","size","disabled","name","onKeyDown","onKeyUp","onBlur","className","rest","ref","t","useTranslation","effectiveDisabled","useFormField","revealed","setRevealed","useState","capsLock","setCapsLock","handleToggle","useCallback","prev","next","detectCaps","event","handleKeyDown","handleKeyUp","handleBlur","iconSizeClass","toggleLabel","strengthKey","strengthText","jsxs","jsx","TextInput","EyeOff","AlertTriangle"],"mappings":";;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,KAAK;AAAA,IACX;AAAA,EACA;AAAA,EACE,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,SAAQ,CAAE;AAC1D,GACMC,IAAMC,EAAiB,OAAOF,CAAU,GCFxCG,IAA+C;AAAA,EACnD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAiBC;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ,GAEMC,IAAwBD;AAAA,EAC5B;AACF,GAEME,IAAsBF;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MAAA;AAAA,IACL;AAAA,IAEF,iBAAiB,EAAE,OAAO,EAAA;AAAA,EAAE;AAEhC,GAEMG,IAA8E;AAAA,EAClF,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,GAkBaC,IAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,gBAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,UAAAC,IAAW;AAAA,IACX,cAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GAERC,IADMC,EAAA,EACkB,YAAYX,GAEpC,CAACY,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxC,CAACC,GAAUC,CAAW,IAAIF,EAAS,EAAK,GAExCG,IAAeC,EAAY,MAAM;AACrC,MAAAL,EAAY,CAACM,MAAS;AACpB,cAAMC,IAAO,CAACD;AACd,eAAAxB,KAAA,QAAAA,EAAiByB,IACVA;AAAA,MACT,CAAC;AAAA,IACH,GAAG,CAACzB,CAAc,CAAC,GAEb0B,IAAaH;AAAA,MACjB,CAACI,MAA2C;AAC1C,QAAI,OAAOA,EAAM,oBAAqB,cACpCN,EAAYM,EAAM,iBAAiB,UAAU,CAAC;AAAA,MAElD;AAAA,MACA,CAAA;AAAA,IAAC,GAGGC,IAAgBL;AAAA,MACpB,CAACI,MAA2C;AAC1C,QAAAD,EAAWC,CAAK,GAChBpB,KAAA,QAAAA,EAAYoB;AAAA,MACd;AAAA,MACA,CAACD,GAAYnB,CAAS;AAAA,IAAA,GAGlBsB,IAAcN;AAAA,MAClB,CAACI,MAA2C;AAC1C,QAAAD,EAAWC,CAAK,GAChBnB,KAAA,QAAAA,EAAUmB;AAAA,MACZ;AAAA,MACA,CAACD,GAAYlB,CAAO;AAAA,IAAA,GAGhBsB,IAAaP;AAAA,MACjB,CAACI,MAAwC;AACvC,QAAAN,EAAY,EAAK,GACjBZ,KAAA,QAAAA,EAASkB;AAAA,MACX;AAAA,MACA,CAAClB,CAAM;AAAA,IAAA,GAGHsB,IAAgBvC,EAAoBY,CAAI,GACxC4B,IAAcnB;AAAA,MAClBI,IAAW,kCAAkC;AAAA,MAC7CA,IAAW,kBAAkB;AAAA,IAAA,GAGzBgB,IAAcpC,EAAqBK,CAAQ,GAC3CgC,IAAerB;AAAA,MACnB,+BAA+BoB,CAAW;AAAA,MAC1CA,EAAY,OAAO,CAAC,EAAE,gBAAgBA,EAAY,MAAM,CAAC;AAAA,IAAA;AAG3D,WACE,gBAAAE,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,KAAAzB;AAAA,YACA,MAAMK,IAAW,SAAS;AAAA,YAC1B,cAAcd,KAAgB;AAAA,YAC9B,MAAMG,KAAQ;AAAA,YACd,YAAY;AAAA,YACZ,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,MAAAF;AAAA,YACA,UAAUW;AAAA,YACV,WAAWa;AAAA,YACX,SAASC;AAAA,YACT,QAAQC;AAAA,YACR,cAAc,gBAAAM,EAAC,QAAA,EAAK,eAAY,QAAO,WAAU,sBAAqB;AAAA,YACtE,WAAA1B;AAAA,YACC,GAAGC;AAAA,UAAA;AAAA,QAAA;AAAA,QAEN,gBAAAyB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,gBAAcnB;AAAA,YACd,cAAYe;AAAA,YACZ,UAAUjB;AAAA,YACV,SAASO;AAAA,YACT,WAAW7B,EAAA;AAAA,YAEV,UAAAwB,IACC,gBAAAmB,EAACE,GAAA,EAAO,eAAY,QAAO,WAAWP,EAAA,CAAe,IAErD,gBAAAK,EAAC9C,GAAA,EAAI,eAAY,QAAO,WAAWyC,EAAA,CAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAEtD,GACF;AAAA,MAECX,IACC,gBAAAe;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAC,EAACG,GAAA,EAAc,eAAY,QAAO,WAAU,eAAc;AAAA,YACzD1B,EAAE,+BAA+B,iBAAiB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,IAEnD;AAAA,MAEHZ,IACC,gBAAAkC,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,iBAAelC;AAAA,YACf,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf,cAAYW;AAAA,cACV;AAAA,cACA;AAAA,YAAA;AAAA,YAEF,kBAAgBqB;AAAA,YAChB,WAAWvC,EAAA;AAAA,YAEX,UAAA,gBAAAyC,EAAC,SAAI,WAAWxC,EAAoB,EAAE,OAAOM,EAAA,CAAU,EAAA,CAAG;AAAA,UAAA;AAAA,QAAA;AAAA,QAE5D,gBAAAkC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAAF;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF,IACE;AAAA,IAAA,GACN;AAAA,EAEJ;AACF;AAEApC,EAAc,cAAc;","x_google_ignoreList":[0]}
@@ -1,14 +1,14 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { forwardRef as k, useState as w } from "react";
3
3
  import { useTranslation as c } from "react-i18next";
4
- import { A as y } from "./app-frame-CmIUp9BD.js";
5
- import { I } from "./icon-button-C1vpylg3.js";
6
- import { D as n } from "./dropdown-menu-CJKvK7VG.js";
7
- import { H as L, g as A, f as H, e as x, a as C, c as M, d as B } from "./header-BpKaSL_v.js";
8
- import { L as N } from "./logo-UNWYb9p7.js";
9
- import { S as T, a as _, h as O, j as P, k as W, i as j } from "./sidebar-r645O-k9.js";
4
+ import { A as y } from "./app-frame-uq2Gy0vs.js";
5
+ import { I } from "./icon-button-C482ii4y.js";
6
+ import { D as n } from "./dropdown-menu-BnVUeVG3.js";
7
+ import { H as L, g as A, f as H, e as x, a as C, c as M, d as B } from "./header-CW2oRd5H.js";
8
+ import { L as N } from "./logo-3wrZGpwg.js";
9
+ import { S as T, a as _, h as O, j as P, k as W, i as j } from "./sidebar-B52iGGNV.js";
10
10
  import { T as z } from "./theme-root-vapFjsnt.js";
11
- import { a as R } from "./tooltip-DF6WjD1r.js";
11
+ import { a as R } from "./tooltip-Dp3u8jGz.js";
12
12
  import { u as D } from "./use-theme-BMUhembX.js";
13
13
  import { c as h } from "./createLucideIcon-CrFbzy84.js";
14
14
  import { L as q } from "./log-out-616hnn2-.js";
@@ -136,7 +136,7 @@ const V = k(
136
136
  ref: g,
137
137
  theme: S,
138
138
  accessible: b,
139
- className: "contents",
139
+ className: "ds:contents",
140
140
  children: /* @__PURE__ */ e(R, { children: /* @__PURE__ */ e(
141
141
  y,
142
142
  {
@@ -190,4 +190,4 @@ V.displayName = "PatientShell";
190
190
  export {
191
191
  V as P
192
192
  };
193
- //# sourceMappingURL=patient-shell-D0RaWDMR.js.map
193
+ //# sourceMappingURL=patient-shell-CGsmI5LJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patient-shell-D0RaWDMR.js","sources":["../../node_modules/lucide-react/dist/esm/icons/maximize-2.js","../../node_modules/lucide-react/dist/esm/icons/settings.js","../../src/patterns/patient-shell/patient-shell.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"m21 3-7 7\", key: \"1l2asr\" }],\n [\"path\", { d: \"m3 21 7-7\", key: \"tjx5ai\" }],\n [\"path\", { d: \"M9 21H3v-6\", key: \"wtvkvv\" }]\n];\nconst Maximize2 = createLucideIcon(\"maximize-2\", __iconNode);\n\nexport { __iconNode, Maximize2 as default };\n//# sourceMappingURL=maximize-2.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n key: \"1i5ecw\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Settings = createLucideIcon(\"settings\", __iconNode);\n\nexport { __iconNode, Settings as default };\n//# sourceMappingURL=settings.js.map\n","/**\n * Patient Shell — the chrome for AlfaDocs's patient-facing users\n * (patients managing their own appointments and records).\n *\n * Deliberately flatter than the clinician `AppFrame` composition: no\n * command palette, no favourites, no practice/chain affordances, no\n * Leo, no privacy lock. Mirrors the legacy `_header.html.twig`\n * `app.user.type == 'patient'` branch and the `knp_menu_render('pcp')`\n * flat nav menu.\n *\n * Unlike most patterns in this folder, PatientShell exports a runtime\n * component because the consuming patient-portal app mounts it in\n * production — the exports are surfaced via `src/patterns/index.ts`\n * and included in the library bundle.\n */\nimport { forwardRef, useState, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LogOut, Maximize2, Settings as SettingsIcon } from 'lucide-react';\n\nimport { AppFrame } from '../../components/app-frame';\nimport { IconButton } from '../../components/button';\nimport { DropdownMenu } from '../../components/dropdown-menu';\nimport {\n Header,\n HeaderBrand,\n HeaderCenter,\n HeaderEnd,\n HeaderMenuButton,\n HeaderSkipLink,\n HeaderStart,\n} from '../../components/header';\nimport { Logo } from '../../components/logo';\nimport {\n Sidebar,\n SidebarBody,\n SidebarItem,\n SidebarItemBadge,\n SidebarItemIcon,\n SidebarItemLabel,\n type SidebarMode,\n} from '../../components/sidebar';\nimport { ThemeRoot } from '../../components/theme-root';\nimport { TooltipProvider } from '../../components/tooltip';\nimport { useTheme } from '../../hooks/use-theme';\n\n/* ------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------ */\n\nexport interface PatientNavItem {\n id: string;\n /** Pre-translated label — patients' nav labels are emitted already\n * translated by the consuming app's backend (legacy `knp_menu`). */\n label: string;\n href: string;\n /** Optional leading icon. Pass a lucide-react or equivalent element. */\n icon?: ReactNode;\n /** Optional unseen-item count rendered as a pill badge. */\n badgeCount?: number;\n /** Mark the item as the current page (`aria-current='page'`). */\n isActive?: boolean;\n}\n\nexport interface PatientShellProps {\n /** Patient's display name. Used as the avatar fallback by consumers\n * that read the name through a slot; not rendered inside this shell\n * today because the legacy patient chrome carries no profile pill. */\n userName: string;\n /** Optional avatar URL. Reserved for future profile-pill surfaces;\n * no visible effect today. */\n userAvatarSrc?: string;\n /** Flat nav items rendered in the sidebar, in order. */\n menuItems: PatientNavItem[];\n /** URL the \"Logout\" action navigates to — typically `/logout`. */\n logoutHref: string;\n /** Fires when the user toggles fullscreen from the settings menu. */\n onToggleFullscreen?: () => void;\n /** Optional brand logo. Defaults to\n * `<Logo variant=\"monochrome\" size=\"md\" decorative />`. */\n brandLogo?: ReactNode;\n /** Link target for the brand — typically the patient dashboard. */\n brandHref?: string;\n /** Override the accessible name of the `<main>` landmark. */\n mainAriaLabel?: string;\n /**\n * Force the sidebar into a specific mode. Consuming apps typically\n * flip to `'overlay'` on narrow viewports and leave this undefined\n * elsewhere (the sidebar then defaults to `'expanded'`).\n */\n sidebarState?: SidebarMode;\n /** Children render inside the main content region. */\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Internals */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number): string {\n return count > 99 ? '99+' : String(count);\n}\n\n/**\n * Guard against `javascript:` and other non-navigation schemes before\n * handing the URL to `window.location.assign`. A consuming app that lets\n * attacker-controlled input reach `logoutHref` would otherwise execute\n * script. Allow only relative paths, hash fragments, and `http(s)` URLs.\n */\nfunction isSafeLogoutHref(href: string): boolean {\n if (href.startsWith('/') || href.startsWith('#') || href.startsWith('?')) {\n return true;\n }\n try {\n const url = new URL(href, window.location.origin);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nfunction SettingsMenu({\n logoutHref,\n onToggleFullscreen,\n}: {\n logoutHref: string;\n onToggleFullscreen?: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n icon={<SettingsIcon aria-hidden=\"true\" />}\n aria-label={t('patientShell.settings.triggerAria')}\n tooltip={t('patientShell.settings.triggerAria')}\n data-testid=\"patient-shell-settings-trigger\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Item\n startIcon={<Maximize2 aria-hidden=\"true\" />}\n onSelect={onToggleFullscreen}\n data-testid=\"patient-shell-fullscreen\"\n >\n {t('patientShell.settings.fullscreen')}\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n startIcon={<LogOut aria-hidden=\"true\" />}\n onSelect={() => {\n if (typeof window === 'undefined') return;\n if (!isSafeLogoutHref(logoutHref)) return;\n window.location.assign(logoutHref);\n }}\n data-testid=\"patient-shell-logout\"\n >\n {t('patientShell.settings.logout')}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n}\n\nfunction PatientSidebarNav({ menuItems }: { menuItems: PatientNavItem[] }) {\n return (\n <SidebarBody>\n {menuItems.map((item) => {\n const badge =\n typeof item.badgeCount === 'number' && item.badgeCount > 0\n ? item.badgeCount\n : undefined;\n return (\n <SidebarItem\n key={item.id}\n href={item.href}\n aria-label={item.label}\n isActive={item.isActive}\n >\n {item.icon ? <SidebarItemIcon>{item.icon}</SidebarItemIcon> : null}\n <SidebarItemLabel>{item.label}</SidebarItemLabel>\n {badge !== undefined ? (\n <SidebarItemBadge>{formatBadgeCount(badge)}</SidebarItemBadge>\n ) : null}\n </SidebarItem>\n );\n })}\n </SidebarBody>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const PatientShell = forwardRef<HTMLDivElement, PatientShellProps>(\n (\n {\n menuItems,\n logoutHref,\n onToggleFullscreen,\n brandLogo,\n brandHref = '/',\n mainAriaLabel,\n sidebarState,\n children,\n // `userName` and `userAvatarSrc` are declared on the public API\n // for forward-compatibility (future profile-pill work) — they are\n // intentionally unused today because the legacy patient chrome\n // carries no profile pill.\n userName: _userName,\n userAvatarSrc: _userAvatarSrc,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const { resolvedTheme } = useTheme();\n const themeBase = resolvedTheme.startsWith('dark') ? 'dark' : 'light';\n const themeAccessible = resolvedTheme.endsWith('-accessible');\n\n // Narrow-viewport overlay: `HeaderMenuButton` only renders below the\n // `md` breakpoint, and toggling opens the Sidebar's overlay Dialog.\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const resolvedLogo = brandLogo ?? (\n <Logo variant=\"monochrome\" size=\"md\" decorative />\n );\n\n return (\n <ThemeRoot\n ref={ref}\n theme={themeBase}\n accessible={themeAccessible}\n className=\"contents\"\n >\n <TooltipProvider>\n <AppFrame\n mainAriaLabel={mainAriaLabel}\n header={\n <Header>\n <HeaderStart>\n <HeaderSkipLink href=\"#main-content\" />\n <HeaderMenuButton\n onMenuOpen={() => setSidebarOpen(true)}\n />\n <HeaderBrand\n logo={resolvedLogo}\n href={brandHref}\n aria-label={t('patientShell.brand.homeAria')}\n />\n </HeaderStart>\n <HeaderCenter />\n <HeaderEnd>\n <SettingsMenu\n logoutHref={logoutHref}\n onToggleFullscreen={onToggleFullscreen}\n />\n </HeaderEnd>\n </Header>\n }\n sidebar={\n <Sidebar\n {...(sidebarState !== undefined\n ? { state: sidebarState }\n : { defaultState: 'expanded' as const })}\n open={sidebarOpen}\n onOpenChange={setSidebarOpen}\n aria-label={t('patientShell.sidebar.panelLabel')}\n data-testid=\"patient-shell-sidebar\"\n >\n <PatientSidebarNav menuItems={menuItems} />\n </Sidebar>\n }\n >\n {children}\n </AppFrame>\n </TooltipProvider>\n </ThemeRoot>\n );\n },\n);\n\nPatientShell.displayName = 'PatientShell';\n"],"names":["__iconNode","Maximize2","createLucideIcon","Settings","formatBadgeCount","count","isSafeLogoutHref","href","url","SettingsMenu","logoutHref","onToggleFullscreen","t","useTranslation","jsxs","DropdownMenu","jsx","IconButton","SettingsIcon","LogOut","PatientSidebarNav","menuItems","SidebarBody","item","badge","SidebarItem","SidebarItemIcon","SidebarItemLabel","SidebarItemBadge","PatientShell","forwardRef","brandLogo","brandHref","mainAriaLabel","sidebarState","children","_userName","_userAvatarSrc","ref","resolvedTheme","useTheme","themeBase","themeAccessible","sidebarOpen","setSidebarOpen","useState","ThemeRoot","TooltipProvider","AppFrame","Header","HeaderStart","HeaderSkipLink","HeaderMenuButton","HeaderBrand","Logo","HeaderCenter","HeaderEnd","Sidebar"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"patient-shell-CGsmI5LJ.js","sources":["../../node_modules/lucide-react/dist/esm/icons/maximize-2.js","../../node_modules/lucide-react/dist/esm/icons/settings.js","../../src/patterns/patient-shell/patient-shell.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"m21 3-7 7\", key: \"1l2asr\" }],\n [\"path\", { d: \"m3 21 7-7\", key: \"tjx5ai\" }],\n [\"path\", { d: \"M9 21H3v-6\", key: \"wtvkvv\" }]\n];\nconst Maximize2 = createLucideIcon(\"maximize-2\", __iconNode);\n\nexport { __iconNode, Maximize2 as default };\n//# sourceMappingURL=maximize-2.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n key: \"1i5ecw\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Settings = createLucideIcon(\"settings\", __iconNode);\n\nexport { __iconNode, Settings as default };\n//# sourceMappingURL=settings.js.map\n","/**\n * Patient Shell — the chrome for AlfaDocs's patient-facing users\n * (patients managing their own appointments and records).\n *\n * Deliberately flatter than the clinician `AppFrame` composition: no\n * command palette, no favourites, no practice/chain affordances, no\n * Leo, no privacy lock. Mirrors the legacy `_header.html.twig`\n * `app.user.type == 'patient'` branch and the `knp_menu_render('pcp')`\n * flat nav menu.\n *\n * Unlike most patterns in this folder, PatientShell exports a runtime\n * component because the consuming patient-portal app mounts it in\n * production — the exports are surfaced via `src/patterns/index.ts`\n * and included in the library bundle.\n */\nimport { forwardRef, useState, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LogOut, Maximize2, Settings as SettingsIcon } from 'lucide-react';\n\nimport { AppFrame } from '../../components/app-frame';\nimport { IconButton } from '../../components/button';\nimport { DropdownMenu } from '../../components/dropdown-menu';\nimport {\n Header,\n HeaderBrand,\n HeaderCenter,\n HeaderEnd,\n HeaderMenuButton,\n HeaderSkipLink,\n HeaderStart,\n} from '../../components/header';\nimport { Logo } from '../../components/logo';\nimport {\n Sidebar,\n SidebarBody,\n SidebarItem,\n SidebarItemBadge,\n SidebarItemIcon,\n SidebarItemLabel,\n type SidebarMode,\n} from '../../components/sidebar';\nimport { ThemeRoot } from '../../components/theme-root';\nimport { TooltipProvider } from '../../components/tooltip';\nimport { useTheme } from '../../hooks/use-theme';\n\n/* ------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------ */\n\nexport interface PatientNavItem {\n id: string;\n /** Pre-translated label — patients' nav labels are emitted already\n * translated by the consuming app's backend (legacy `knp_menu`). */\n label: string;\n href: string;\n /** Optional leading icon. Pass a lucide-react or equivalent element. */\n icon?: ReactNode;\n /** Optional unseen-item count rendered as a pill badge. */\n badgeCount?: number;\n /** Mark the item as the current page (`aria-current='page'`). */\n isActive?: boolean;\n}\n\nexport interface PatientShellProps {\n /** Patient's display name. Used as the avatar fallback by consumers\n * that read the name through a slot; not rendered inside this shell\n * today because the legacy patient chrome carries no profile pill. */\n userName: string;\n /** Optional avatar URL. Reserved for future profile-pill surfaces;\n * no visible effect today. */\n userAvatarSrc?: string;\n /** Flat nav items rendered in the sidebar, in order. */\n menuItems: PatientNavItem[];\n /** URL the \"Logout\" action navigates to — typically `/logout`. */\n logoutHref: string;\n /** Fires when the user toggles fullscreen from the settings menu. */\n onToggleFullscreen?: () => void;\n /** Optional brand logo. Defaults to\n * `<Logo variant=\"monochrome\" size=\"md\" decorative />`. */\n brandLogo?: ReactNode;\n /** Link target for the brand — typically the patient dashboard. */\n brandHref?: string;\n /** Override the accessible name of the `<main>` landmark. */\n mainAriaLabel?: string;\n /**\n * Force the sidebar into a specific mode. Consuming apps typically\n * flip to `'overlay'` on narrow viewports and leave this undefined\n * elsewhere (the sidebar then defaults to `'expanded'`).\n */\n sidebarState?: SidebarMode;\n /** Children render inside the main content region. */\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Internals */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number): string {\n return count > 99 ? '99+' : String(count);\n}\n\n/**\n * Guard against `javascript:` and other non-navigation schemes before\n * handing the URL to `window.location.assign`. A consuming app that lets\n * attacker-controlled input reach `logoutHref` would otherwise execute\n * script. Allow only relative paths, hash fragments, and `http(s)` URLs.\n */\nfunction isSafeLogoutHref(href: string): boolean {\n if (href.startsWith('/') || href.startsWith('#') || href.startsWith('?')) {\n return true;\n }\n try {\n const url = new URL(href, window.location.origin);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nfunction SettingsMenu({\n logoutHref,\n onToggleFullscreen,\n}: {\n logoutHref: string;\n onToggleFullscreen?: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n icon={<SettingsIcon aria-hidden=\"true\" />}\n aria-label={t('patientShell.settings.triggerAria')}\n tooltip={t('patientShell.settings.triggerAria')}\n data-testid=\"patient-shell-settings-trigger\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Item\n startIcon={<Maximize2 aria-hidden=\"true\" />}\n onSelect={onToggleFullscreen}\n data-testid=\"patient-shell-fullscreen\"\n >\n {t('patientShell.settings.fullscreen')}\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n startIcon={<LogOut aria-hidden=\"true\" />}\n onSelect={() => {\n if (typeof window === 'undefined') return;\n if (!isSafeLogoutHref(logoutHref)) return;\n window.location.assign(logoutHref);\n }}\n data-testid=\"patient-shell-logout\"\n >\n {t('patientShell.settings.logout')}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n}\n\nfunction PatientSidebarNav({ menuItems }: { menuItems: PatientNavItem[] }) {\n return (\n <SidebarBody>\n {menuItems.map((item) => {\n const badge =\n typeof item.badgeCount === 'number' && item.badgeCount > 0\n ? item.badgeCount\n : undefined;\n return (\n <SidebarItem\n key={item.id}\n href={item.href}\n aria-label={item.label}\n isActive={item.isActive}\n >\n {item.icon ? <SidebarItemIcon>{item.icon}</SidebarItemIcon> : null}\n <SidebarItemLabel>{item.label}</SidebarItemLabel>\n {badge !== undefined ? (\n <SidebarItemBadge>{formatBadgeCount(badge)}</SidebarItemBadge>\n ) : null}\n </SidebarItem>\n );\n })}\n </SidebarBody>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const PatientShell = forwardRef<HTMLDivElement, PatientShellProps>(\n (\n {\n menuItems,\n logoutHref,\n onToggleFullscreen,\n brandLogo,\n brandHref = '/',\n mainAriaLabel,\n sidebarState,\n children,\n // `userName` and `userAvatarSrc` are declared on the public API\n // for forward-compatibility (future profile-pill work) — they are\n // intentionally unused today because the legacy patient chrome\n // carries no profile pill.\n userName: _userName,\n userAvatarSrc: _userAvatarSrc,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const { resolvedTheme } = useTheme();\n const themeBase = resolvedTheme.startsWith('dark') ? 'dark' : 'light';\n const themeAccessible = resolvedTheme.endsWith('-accessible');\n\n // Narrow-viewport overlay: `HeaderMenuButton` only renders below the\n // `md` breakpoint, and toggling opens the Sidebar's overlay Dialog.\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const resolvedLogo = brandLogo ?? (\n <Logo variant=\"monochrome\" size=\"md\" decorative />\n );\n\n return (\n <ThemeRoot\n ref={ref}\n theme={themeBase}\n accessible={themeAccessible}\n className=\"ds:contents\"\n >\n <TooltipProvider>\n <AppFrame\n mainAriaLabel={mainAriaLabel}\n header={\n <Header>\n <HeaderStart>\n <HeaderSkipLink href=\"#main-content\" />\n <HeaderMenuButton\n onMenuOpen={() => setSidebarOpen(true)}\n />\n <HeaderBrand\n logo={resolvedLogo}\n href={brandHref}\n aria-label={t('patientShell.brand.homeAria')}\n />\n </HeaderStart>\n <HeaderCenter />\n <HeaderEnd>\n <SettingsMenu\n logoutHref={logoutHref}\n onToggleFullscreen={onToggleFullscreen}\n />\n </HeaderEnd>\n </Header>\n }\n sidebar={\n <Sidebar\n {...(sidebarState !== undefined\n ? { state: sidebarState }\n : { defaultState: 'expanded' as const })}\n open={sidebarOpen}\n onOpenChange={setSidebarOpen}\n aria-label={t('patientShell.sidebar.panelLabel')}\n data-testid=\"patient-shell-sidebar\"\n >\n <PatientSidebarNav menuItems={menuItems} />\n </Sidebar>\n }\n >\n {children}\n </AppFrame>\n </TooltipProvider>\n </ThemeRoot>\n );\n },\n);\n\nPatientShell.displayName = 'PatientShell';\n"],"names":["__iconNode","Maximize2","createLucideIcon","Settings","formatBadgeCount","count","isSafeLogoutHref","href","url","SettingsMenu","logoutHref","onToggleFullscreen","t","useTranslation","jsxs","DropdownMenu","jsx","IconButton","SettingsIcon","LogOut","PatientSidebarNav","menuItems","SidebarBody","item","badge","SidebarItem","SidebarItemIcon","SidebarItemLabel","SidebarItemBadge","PatientShell","forwardRef","brandLogo","brandHref","mainAriaLabel","sidebarState","children","_userName","_userAvatarSrc","ref","resolvedTheme","useTheme","themeBase","themeAccessible","sidebarOpen","setSidebarOpen","useState","ThemeRoot","TooltipProvider","AppFrame","Header","HeaderStart","HeaderSkipLink","HeaderMenuButton","HeaderBrand","Logo","HeaderCenter","HeaderEnd","Sidebar"],"mappings":"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","x_google_ignoreList":[0,1]}