@alfadocs/ui-kit 0.0.19 → 0.1.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 (552) 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-Br5k7Rul.js} +36 -36
  134. package/dist/_chunks/privacy-lock-Br5k7Rul.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-BU7MP5Hg.js +44 -0
  162. package/dist/_chunks/sign-in-with-alfadocs-button-BU7MP5Hg.js.map +1 -0
  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/progress/index.js +1 -1
  320. package/dist/components/radio/index.d.ts +3 -0
  321. package/dist/components/radio/index.d.ts.map +1 -0
  322. package/dist/components/radio/index.js +5 -0
  323. package/dist/components/radio/index.js.map +1 -0
  324. package/dist/components/radio-group/index.js +4 -3
  325. package/dist/components/radio-group/index.js.map +1 -1
  326. package/dist/components/resizable/index.js +1 -1
  327. package/dist/components/rich-text-editor/index.js +1 -1
  328. package/dist/components/scroll-area/index.js +1 -1
  329. package/dist/components/search-bar/index.js +1 -1
  330. package/dist/components/search-input/index.js +1 -1
  331. package/dist/components/select/index.js +1 -1
  332. package/dist/components/separator/index.js +1 -1
  333. package/dist/components/sheet/index.js +1 -1
  334. package/dist/components/sidebar/index.js +1 -1
  335. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  336. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts +20 -0
  337. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  338. package/dist/components/signature-capture/index.js +1 -1
  339. package/dist/components/skeleton/index.js +1 -1
  340. package/dist/components/skip-link/index.d.ts +2 -0
  341. package/dist/components/skip-link/index.d.ts.map +1 -0
  342. package/dist/components/skip-link/index.js +5 -0
  343. package/dist/components/skip-link/index.js.map +1 -0
  344. package/dist/components/skip-link/skip-link.d.ts +34 -0
  345. package/dist/components/skip-link/skip-link.d.ts.map +1 -0
  346. package/dist/components/slider/index.js +1 -1
  347. package/dist/components/slot-grid/index.js +1 -1
  348. package/dist/components/sparkline/index.js +1 -1
  349. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  350. package/dist/components/spinner/index.js +1 -1
  351. package/dist/components/stat/index.js +1 -1
  352. package/dist/components/stepper-accordion/index.js +1 -1
  353. package/dist/components/stepper-calendar/index.js +1 -1
  354. package/dist/components/stepper-progress/index.js +1 -1
  355. package/dist/components/streaming-text/index.js +1 -1
  356. package/dist/components/suggestion-chip/index.js +1 -1
  357. package/dist/components/switch/index.js +1 -1
  358. package/dist/components/tabs/index.js +1 -1
  359. package/dist/components/tag/index.js +1 -1
  360. package/dist/components/task-card/index.js +1 -1
  361. package/dist/components/task-tray/index.js +1 -1
  362. package/dist/components/text-area/index.js +1 -1
  363. package/dist/components/text-input/index.js +1 -1
  364. package/dist/components/theme-toggle/index.d.ts +3 -0
  365. package/dist/components/theme-toggle/index.d.ts.map +1 -0
  366. package/dist/components/theme-toggle/index.js +5 -0
  367. package/dist/components/theme-toggle/index.js.map +1 -0
  368. package/dist/components/theme-toggle/theme-toggle.d.ts +34 -0
  369. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  370. package/dist/components/time-picker/index.js +1 -1
  371. package/dist/components/timeline/index.js +1 -1
  372. package/dist/components/timestamp/index.js +1 -1
  373. package/dist/components/toast/index.js +1 -1
  374. package/dist/components/tooltip/index.js +1 -1
  375. package/dist/components/tooth-scheme/index.js +1 -1
  376. package/dist/components/transcript-panel/index.js +1 -1
  377. package/dist/components/typing-indicator/index.js +1 -1
  378. package/dist/components/visually-hidden/index.d.ts +2 -0
  379. package/dist/components/visually-hidden/index.d.ts.map +1 -0
  380. package/dist/components/visually-hidden/index.js +5 -0
  381. package/dist/components/visually-hidden/index.js.map +1 -0
  382. package/dist/components/visually-hidden/visually-hidden.d.ts +11 -0
  383. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
  384. package/dist/components/warning-stack/index.js +1 -1
  385. package/dist/components/workflow/index.js +1 -1
  386. package/dist/hooks/index.d.ts +3 -0
  387. package/dist/hooks/index.d.ts.map +1 -1
  388. package/dist/hooks/index.js +10 -7
  389. package/dist/hooks/index.js.map +1 -1
  390. package/dist/hooks/use-locale.d.ts +27 -0
  391. package/dist/hooks/use-locale.d.ts.map +1 -0
  392. package/dist/hooks/use-media-query.d.ts +17 -0
  393. package/dist/hooks/use-media-query.d.ts.map +1 -0
  394. package/dist/i18n/config.js +59 -2
  395. package/dist/i18n/config.js.map +1 -1
  396. package/dist/i18n/resources.d.ts +57 -0
  397. package/dist/i18n/resources.d.ts.map +1 -1
  398. package/dist/index.js +442 -431
  399. package/dist/index.js.map +1 -1
  400. package/dist/locales/de.json +19 -0
  401. package/dist/locales/en.json +19 -0
  402. package/dist/locales/it.json +19 -0
  403. package/dist/patterns/leo-assistant/index.js +1 -1
  404. package/dist/patterns/patient-shell/index.js +1 -1
  405. package/dist/tokens.css +2 -2
  406. package/package.json +4 -2
  407. package/dist/_chunks/accordion-Dgcd38U_.js +0 -117
  408. package/dist/_chunks/accordion-Dgcd38U_.js.map +0 -1
  409. package/dist/_chunks/agenda-card-B2gq-gTq.js +0 -130
  410. package/dist/_chunks/agenda-card-B2gq-gTq.js.map +0 -1
  411. package/dist/_chunks/agenda-tray-twa8g_87.js +0 -119
  412. package/dist/_chunks/agenda-tray-twa8g_87.js.map +0 -1
  413. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js +0 -379
  414. package/dist/_chunks/ai-prompt-input-C6IY_Eds.js.map +0 -1
  415. package/dist/_chunks/alert-C5ud6CfE.js.map +0 -1
  416. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js +0 -17
  417. package/dist/_chunks/apexcharts-theme-cpBYmCcr.js.map +0 -1
  418. package/dist/_chunks/app-frame-CmIUp9BD.js.map +0 -1
  419. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js +0 -56
  420. package/dist/_chunks/aspect-ratio-Bo3cZXmR.js.map +0 -1
  421. package/dist/_chunks/audio-recorder-GkGNtW2X.js.map +0 -1
  422. package/dist/_chunks/audio-visualiser-CIO3yy23.js.map +0 -1
  423. package/dist/_chunks/autocomplete.agent-kb0nmr6F.js.map +0 -1
  424. package/dist/_chunks/avatar-BsV7vRA6.js.map +0 -1
  425. package/dist/_chunks/badge--CmSr7ok.js +0 -104
  426. package/dist/_chunks/badge--CmSr7ok.js.map +0 -1
  427. package/dist/_chunks/balance-cell-renderer-BQwN51rT.js.map +0 -1
  428. package/dist/_chunks/breadcrumb-DnO6eHSS.js.map +0 -1
  429. package/dist/_chunks/button-CXL8bA8G.js +0 -119
  430. package/dist/_chunks/button-CXL8bA8G.js.map +0 -1
  431. package/dist/_chunks/button-group-CI7LFxt3.js.map +0 -1
  432. package/dist/_chunks/calendar-BIXVzhkL.js.map +0 -1
  433. package/dist/_chunks/card-n97MNPP2.js +0 -158
  434. package/dist/_chunks/card-n97MNPP2.js.map +0 -1
  435. package/dist/_chunks/chart.agent-DkmVXNsI.js.map +0 -1
  436. package/dist/_chunks/chat-container-SR3UWxbL.js +0 -174
  437. package/dist/_chunks/chat-container-SR3UWxbL.js.map +0 -1
  438. package/dist/_chunks/chat-input-aphxDjZL.js.map +0 -1
  439. package/dist/_chunks/chat-message-CdJSD18D.js.map +0 -1
  440. package/dist/_chunks/checkbox-CfiZ0FZc.js +0 -116
  441. package/dist/_chunks/checkbox-CfiZ0FZc.js.map +0 -1
  442. package/dist/_chunks/checkbox-group-D1aqVI0-.js.map +0 -1
  443. package/dist/_chunks/collapsible-jBFm7Ah8.js.map +0 -1
  444. package/dist/_chunks/color-picker-CiotzQJF.js.map +0 -1
  445. package/dist/_chunks/combobox.agent-B6RwDSct.js.map +0 -1
  446. package/dist/_chunks/command-palette.agent-B87_OkmC.js.map +0 -1
  447. package/dist/_chunks/date-time-picker-CX_FMsLG.js.map +0 -1
  448. package/dist/_chunks/description-list-C5UPZgX6.js +0 -187
  449. package/dist/_chunks/description-list-C5UPZgX6.js.map +0 -1
  450. package/dist/_chunks/dialog.agent-B276rAQF.js.map +0 -1
  451. package/dist/_chunks/dropdown-menu-CJKvK7VG.js +0 -210
  452. package/dist/_chunks/dropdown-menu-CJKvK7VG.js.map +0 -1
  453. package/dist/_chunks/empty-state-DiG7vYBM.js.map +0 -1
  454. package/dist/_chunks/file-upload.agent-BMow5yDY.js.map +0 -1
  455. package/dist/_chunks/floating-action-button-BM9ib-Wf.js +0 -95
  456. package/dist/_chunks/floating-action-button-BM9ib-Wf.js.map +0 -1
  457. package/dist/_chunks/form-field-B4bwrccN.js +0 -121
  458. package/dist/_chunks/form-field-B4bwrccN.js.map +0 -1
  459. package/dist/_chunks/freemium-paywall-DVyNsQHS.js +0 -197
  460. package/dist/_chunks/freemium-paywall-DVyNsQHS.js.map +0 -1
  461. package/dist/_chunks/header-BpKaSL_v.js.map +0 -1
  462. package/dist/_chunks/icon-button-C1vpylg3.js +0 -45
  463. package/dist/_chunks/icon-button-C1vpylg3.js.map +0 -1
  464. package/dist/_chunks/icon-button-group-tERESY-n.js.map +0 -1
  465. package/dist/_chunks/kbd-0iPlQjgC.js.map +0 -1
  466. package/dist/_chunks/key-value-pair--Je59tAF.js.map +0 -1
  467. package/dist/_chunks/leo-sidebar-9A9AWBxX.js +0 -755
  468. package/dist/_chunks/leo-sidebar-9A9AWBxX.js.map +0 -1
  469. package/dist/_chunks/list-n8vI8Yvn.js.map +0 -1
  470. package/dist/_chunks/logo-UNWYb9p7.js.map +0 -1
  471. package/dist/_chunks/matrix-rain-Q7xTEpKu.js.map +0 -1
  472. package/dist/_chunks/message-card-g5VS5Q80.js +0 -275
  473. package/dist/_chunks/message-card-g5VS5Q80.js.map +0 -1
  474. package/dist/_chunks/message-tray-CAk-iibU.js +0 -302
  475. package/dist/_chunks/message-tray-CAk-iibU.js.map +0 -1
  476. package/dist/_chunks/multi-select.agent-Cf4pU636.js.map +0 -1
  477. package/dist/_chunks/navigation-menu-DBDsAmXc.js.map +0 -1
  478. package/dist/_chunks/notification-card-CQxJporb.js +0 -255
  479. package/dist/_chunks/notification-card-CQxJporb.js.map +0 -1
  480. package/dist/_chunks/notification-tray-CNWPuPZp.js.map +0 -1
  481. package/dist/_chunks/number-input-B1Th0DdC.js.map +0 -1
  482. package/dist/_chunks/otp-input-CmoBuZ4K.js.map +0 -1
  483. package/dist/_chunks/pagination.agent-B5KLDCMN.js.map +0 -1
  484. package/dist/_chunks/password-input-DnjNh-hQ.js.map +0 -1
  485. package/dist/_chunks/payment-form-Cf7U6r5L.js.map +0 -1
  486. package/dist/_chunks/pdf-viewer.agent-DXjgDItg.js.map +0 -1
  487. package/dist/_chunks/phone-input-C2dtIuxW.js.map +0 -1
  488. package/dist/_chunks/popover-D1woU9mP.js.map +0 -1
  489. package/dist/_chunks/privacy-lock-C1X42Sit.js.map +0 -1
  490. package/dist/_chunks/progress-DL3-izuO.js.map +0 -1
  491. package/dist/_chunks/radio-group-CXN9qNPe.js +0 -185
  492. package/dist/_chunks/radio-group-CXN9qNPe.js.map +0 -1
  493. package/dist/_chunks/resizable.agent-DVk_jJur.js.map +0 -1
  494. package/dist/_chunks/rich-text-editor.agent-BOjF4Xao.js.map +0 -1
  495. package/dist/_chunks/scroll-area-DXn-YWHY.js +0 -144
  496. package/dist/_chunks/scroll-area-DXn-YWHY.js.map +0 -1
  497. package/dist/_chunks/search-bar-DgSOAajC.js.map +0 -1
  498. package/dist/_chunks/search-input-D4tC_Prn.js +0 -197
  499. package/dist/_chunks/search-input-D4tC_Prn.js.map +0 -1
  500. package/dist/_chunks/select-B4m4upMg.js +0 -320
  501. package/dist/_chunks/select-B4m4upMg.js.map +0 -1
  502. package/dist/_chunks/separator-DExI4amU.js.map +0 -1
  503. package/dist/_chunks/sheet-D6XOx0fK.js +0 -188
  504. package/dist/_chunks/sheet-D6XOx0fK.js.map +0 -1
  505. package/dist/_chunks/sidebar-r645O-k9.js +0 -1076
  506. package/dist/_chunks/sidebar-r645O-k9.js.map +0 -1
  507. package/dist/_chunks/sign-in-with-alfadocs-button-y3gy-W-D.js +0 -38
  508. package/dist/_chunks/sign-in-with-alfadocs-button-y3gy-W-D.js.map +0 -1
  509. package/dist/_chunks/signature-capture.agent-L_1_-zVR.js.map +0 -1
  510. package/dist/_chunks/skeleton-vbTWUntB.js +0 -95
  511. package/dist/_chunks/skeleton-vbTWUntB.js.map +0 -1
  512. package/dist/_chunks/slider-B3DBwmcm.js +0 -273
  513. package/dist/_chunks/slider-B3DBwmcm.js.map +0 -1
  514. package/dist/_chunks/slot-grid-DL_Tuj0p.js +0 -491
  515. package/dist/_chunks/slot-grid-DL_Tuj0p.js.map +0 -1
  516. package/dist/_chunks/sparkline.agent-BDTXzTy9.js.map +0 -1
  517. package/dist/_chunks/spinner-77xUGpuX.js.map +0 -1
  518. package/dist/_chunks/stat-CrumvZWf.js +0 -208
  519. package/dist/_chunks/stat-CrumvZWf.js.map +0 -1
  520. package/dist/_chunks/stepper-accordion-BkvqQWPI.js.map +0 -1
  521. package/dist/_chunks/stepper-calendar-BQMjrwzo.js.map +0 -1
  522. package/dist/_chunks/stepper-progress-Bwfl-0rV.js +0 -128
  523. package/dist/_chunks/stepper-progress-Bwfl-0rV.js.map +0 -1
  524. package/dist/_chunks/streaming-text-Cu9YQe_1.js +0 -104
  525. package/dist/_chunks/streaming-text-Cu9YQe_1.js.map +0 -1
  526. package/dist/_chunks/suggestion-chip-XkxDJiPW.js +0 -157
  527. package/dist/_chunks/suggestion-chip-XkxDJiPW.js.map +0 -1
  528. package/dist/_chunks/switch-DyC0ThNT.js +0 -137
  529. package/dist/_chunks/switch-DyC0ThNT.js.map +0 -1
  530. package/dist/_chunks/tabs.agent-FsGU3sZL.js.map +0 -1
  531. package/dist/_chunks/tag-BucAvfTX.js +0 -194
  532. package/dist/_chunks/tag-BucAvfTX.js.map +0 -1
  533. package/dist/_chunks/task-card-uxjApfcg.js +0 -112
  534. package/dist/_chunks/task-card-uxjApfcg.js.map +0 -1
  535. package/dist/_chunks/task-tray-BdfM3p8N.js +0 -99
  536. package/dist/_chunks/task-tray-BdfM3p8N.js.map +0 -1
  537. package/dist/_chunks/text-area-CKxZ7cS3.js +0 -152
  538. package/dist/_chunks/text-area-CKxZ7cS3.js.map +0 -1
  539. package/dist/_chunks/text-input-D16CcMlL.js +0 -187
  540. package/dist/_chunks/text-input-D16CcMlL.js.map +0 -1
  541. package/dist/_chunks/time-picker-BapZq0OY.js.map +0 -1
  542. package/dist/_chunks/timeline-D3VOf4RT.js +0 -219
  543. package/dist/_chunks/timeline-D3VOf4RT.js.map +0 -1
  544. package/dist/_chunks/timestamp-BLM-jjdw.js.map +0 -1
  545. package/dist/_chunks/tooltip-DF6WjD1r.js.map +0 -1
  546. package/dist/_chunks/tooth-scheme.agent-CFKl3iQr.js.map +0 -1
  547. package/dist/_chunks/transcript-panel-aI14fHYA.js +0 -265
  548. package/dist/_chunks/transcript-panel-aI14fHYA.js.map +0 -1
  549. package/dist/_chunks/typing-indicator-BTVDEpnd.js +0 -81
  550. package/dist/_chunks/typing-indicator-BTVDEpnd.js.map +0 -1
  551. package/dist/_chunks/warning-stack-Cyf_81SL.js.map +0 -1
  552. package/dist/_chunks/workflow-map-Uf-hHAO3.js.map +0 -1
@@ -1,194 +0,0 @@
1
- import { jsx as s, jsxs as f } from "react/jsx-runtime";
2
- import { forwardRef as q, useRef as F, useState as E, useEffect as G } from "react";
3
- import { c as B } from "./index-D2ZczOXr.js";
4
- import { useTranslation as H } from "react-i18next";
5
- import { T as v } from "./tooltip-DF6WjD1r.js";
6
- import { X as J } from "./x-CCcI3eJp.js";
7
- const V = B(
8
- [
9
- "inline-flex items-center gap-[var(--spacing-xs)]",
10
- "rounded-[var(--radius-full)]",
11
- "type-eyebrow whitespace-nowrap",
12
- "transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none",
13
- "focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid",
14
- "focus-visible:outline-[color:var(--ring)] focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
15
- "aria-disabled:cursor-not-allowed aria-disabled:opacity-50",
16
- "disabled:cursor-not-allowed disabled:opacity-50"
17
- ].join(" "),
18
- {
19
- variants: {
20
- variant: {
21
- neutral: "",
22
- info: "",
23
- success: "",
24
- warning: "",
25
- error: "",
26
- brand: ""
27
- },
28
- fill: {
29
- solid: "",
30
- outline: "border bg-transparent"
31
- },
32
- size: {
33
- // Symmetric start/end padding — close button uses negative margin to stay flush.
34
- // Size is the only eyebrow-role axis that varies per Tag size; weight, transform,
35
- // tracking, line-height, and features all come from `.type-eyebrow` on the base.
36
- sm: "h-[calc(var(--spacing)*4)] ps-[var(--spacing-xs)] pe-[var(--spacing-xs)] [--type-eyebrow-size:var(--font-size-2xs)]",
37
- md: "h-[calc(var(--spacing)*5)] ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] [--type-eyebrow-size:var(--font-size-2xs)]",
38
- lg: "h-[calc(var(--spacing)*6)] ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] [--type-eyebrow-size:var(--font-size-xs)]"
39
- }
40
- },
41
- compoundVariants: [
42
- // Solid fills — foreground tokens adapt per theme
43
- { fill: "solid", variant: "neutral", className: "bg-muted/20 text-muted-foreground" },
44
- { fill: "solid", variant: "info", className: "bg-info text-[color:var(--info-solid-foreground)]" },
45
- { fill: "solid", variant: "success", className: "bg-success text-[color:var(--success-solid-foreground)]" },
46
- { fill: "solid", variant: "warning", className: "bg-warning text-foreground" },
47
- { fill: "solid", variant: "error", className: "bg-destructive text-destructive-foreground" },
48
- { fill: "solid", variant: "brand", className: "bg-primary text-primary-foreground" },
49
- // Outline fills
50
- { fill: "outline", variant: "neutral", className: "border-muted text-muted-foreground" },
51
- { fill: "outline", variant: "info", className: "border-info text-[var(--info-foreground)]" },
52
- { fill: "outline", variant: "success", className: "border-success text-[var(--success-foreground)]" },
53
- { fill: "outline", variant: "warning", className: "border-warning text-[var(--warning-foreground)]" },
54
- { fill: "outline", variant: "error", className: "border-destructive text-[var(--error-foreground)]" },
55
- { fill: "outline", variant: "brand", className: "border-primary text-primary" }
56
- ],
57
- defaultVariants: {
58
- variant: "neutral",
59
- fill: "solid",
60
- size: "md"
61
- }
62
- }
63
- ), L = B(
64
- [
65
- "inline-flex items-center justify-center shrink-0 rounded-full",
66
- // Negative end margin keeps the button flush with the pill edge
67
- "-me-[var(--spacing-xs)]",
68
- "hover:bg-foreground/10",
69
- "transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none",
70
- "focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid",
71
- "focus-visible:outline-[color:var(--ring)] focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
72
- "disabled:cursor-not-allowed disabled:opacity-50"
73
- ].join(" "),
74
- {
75
- variants: {
76
- size: {
77
- sm: "p-1 [&>svg]:size-3",
78
- md: "p-1 [&>svg]:size-3.5",
79
- lg: "p-1.5 [&>svg]:size-4"
80
- }
81
- },
82
- defaultVariants: { size: "md" }
83
- }
84
- ), M = q(
85
- ({
86
- label: n,
87
- variant: g = "neutral",
88
- fill: p = "solid",
89
- size: t = "md",
90
- leading: m,
91
- onRemove: i,
92
- onClick: b,
93
- disabled: r = !1,
94
- maxInlineSize: o = "none",
95
- className: h
96
- }, a) => {
97
- const { t: w } = H(), y = F(null), [D, C] = E(!1), [O, R] = E("");
98
- G(() => {
99
- const e = y.current;
100
- if (!e || o === "none") return;
101
- const z = () => C(e.scrollWidth > e.clientWidth), j = new ResizeObserver(z);
102
- return j.observe(e), z(), () => j.disconnect();
103
- }, [o]);
104
- const W = (e) => {
105
- (e.key === "Backspace" || e.key === "Delete") && i && !r && (e.preventDefault(), x(), setTimeout(i, 100));
106
- }, x = () => {
107
- R(w("ui.tag.removed", { label: n }));
108
- }, K = () => {
109
- !r && i && (x(), setTimeout(i, 100));
110
- }, l = !!i, N = !!b && !l, T = V({
111
- variant: g,
112
- fill: p,
113
- size: t,
114
- className: [
115
- N && !r ? "hover:brightness-90 cursor-pointer" : "",
116
- h ?? ""
117
- ].filter(Boolean).join(" ")
118
- }), c = m ? /* @__PURE__ */ s("span", { "aria-hidden": "true", className: "shrink-0 inline-flex items-center [&>svg]:size-3.5", children: m }) : null, u = /* @__PURE__ */ s(
119
- "span",
120
- {
121
- ref: y,
122
- className: o !== "none" ? "overflow-hidden text-ellipsis whitespace-nowrap" : void 0,
123
- style: o !== "none" ? { maxInlineSize: o } : void 0,
124
- children: n
125
- }
126
- ), A = /* @__PURE__ */ s("span", { role: "status", "aria-live": "polite", className: "sr-only", children: O }), X = l ? /* @__PURE__ */ s(
127
- "button",
128
- {
129
- type: "button",
130
- "aria-label": w("ui.tag.remove", { label: n }),
131
- onClick: K,
132
- disabled: r,
133
- tabIndex: -1,
134
- className: L({ size: t }),
135
- children: /* @__PURE__ */ s(J, { "aria-hidden": "true" })
136
- }
137
- ) : null, d = o !== "none" && D;
138
- if (N) {
139
- const e = /* @__PURE__ */ f(
140
- "button",
141
- {
142
- ref: a,
143
- type: "button",
144
- onClick: r ? void 0 : b,
145
- disabled: r,
146
- className: T,
147
- children: [
148
- c,
149
- u
150
- ]
151
- }
152
- );
153
- return d ? /* @__PURE__ */ s(v, { label: n, children: e }) : e;
154
- }
155
- if (l) {
156
- const e = /* @__PURE__ */ f(
157
- "span",
158
- {
159
- ref: a,
160
- role: "group",
161
- "aria-label": n,
162
- tabIndex: r ? -1 : 0,
163
- "aria-disabled": r || void 0,
164
- onKeyDown: W,
165
- className: T,
166
- children: [
167
- A,
168
- c,
169
- u,
170
- X
171
- ]
172
- }
173
- );
174
- return d ? /* @__PURE__ */ s(v, { label: n, children: e }) : e;
175
- }
176
- const k = /* @__PURE__ */ f(
177
- "span",
178
- {
179
- ref: a,
180
- className: V({ variant: g, fill: p, size: t, className: h }),
181
- children: [
182
- c,
183
- u
184
- ]
185
- }
186
- );
187
- return d ? /* @__PURE__ */ s(v, { label: n, children: k }) : k;
188
- }
189
- );
190
- M.displayName = "Tag";
191
- export {
192
- M as T
193
- };
194
- //# sourceMappingURL=tag-BucAvfTX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag-BucAvfTX.js","sources":["../../src/components/tag/tag.tsx"],"sourcesContent":["import {\n forwardRef,\n useRef,\n useState,\n useEffect,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { Tooltip } from '../tooltip';\n\n/* ------------------------------------------------------------------ */\n/* CVA — tag pill */\n/* ------------------------------------------------------------------ */\n\nconst tagVariants = cva(\n [\n 'inline-flex items-center gap-[var(--spacing-xs)]',\n 'rounded-[var(--radius-full)]',\n 'type-eyebrow whitespace-nowrap',\n 'transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none',\n 'focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid',\n 'focus-visible:outline-[color:var(--ring)] focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n variant: {\n neutral: '',\n info: '',\n success: '',\n warning: '',\n error: '',\n brand: '',\n },\n fill: {\n solid: '',\n outline: 'border bg-transparent',\n },\n size: {\n // Symmetric start/end padding — close button uses negative margin to stay flush.\n // Size is the only eyebrow-role axis that varies per Tag size; weight, transform,\n // tracking, line-height, and features all come from `.type-eyebrow` on the base.\n sm: 'h-[calc(var(--spacing)*4)] ps-[var(--spacing-xs)] pe-[var(--spacing-xs)] [--type-eyebrow-size:var(--font-size-2xs)]',\n md: 'h-[calc(var(--spacing)*5)] ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] [--type-eyebrow-size:var(--font-size-2xs)]',\n lg: 'h-[calc(var(--spacing)*6)] ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] [--type-eyebrow-size:var(--font-size-xs)]',\n },\n },\n compoundVariants: [\n // Solid fills — foreground tokens adapt per theme\n { fill: 'solid', variant: 'neutral', className: 'bg-muted/20 text-muted-foreground' },\n { fill: 'solid', variant: 'info', className: 'bg-info text-[color:var(--info-solid-foreground)]' },\n { fill: 'solid', variant: 'success', className: 'bg-success text-[color:var(--success-solid-foreground)]' },\n { fill: 'solid', variant: 'warning', className: 'bg-warning text-foreground' },\n { fill: 'solid', variant: 'error', className: 'bg-destructive text-destructive-foreground' },\n { fill: 'solid', variant: 'brand', className: 'bg-primary text-primary-foreground' },\n // Outline fills\n { fill: 'outline', variant: 'neutral', className: 'border-muted text-muted-foreground' },\n { fill: 'outline', variant: 'info', className: 'border-info text-[var(--info-foreground)]' },\n { fill: 'outline', variant: 'success', className: 'border-success text-[var(--success-foreground)]' },\n { fill: 'outline', variant: 'warning', className: 'border-warning text-[var(--warning-foreground)]' },\n { fill: 'outline', variant: 'error', className: 'border-destructive text-[var(--error-foreground)]' },\n { fill: 'outline', variant: 'brand', className: 'border-primary text-primary' },\n ],\n defaultVariants: {\n variant: 'neutral',\n fill: 'solid',\n size: 'md',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — close button */\n/* ------------------------------------------------------------------ */\n\nconst closeButtonVariants = cva(\n [\n 'inline-flex items-center justify-center shrink-0 rounded-full',\n // Negative end margin keeps the button flush with the pill edge\n '-me-[var(--spacing-xs)]',\n 'hover:bg-foreground/10',\n 'transition-colors duration-[var(--animation-duration)] motion-reduce:transition-none',\n 'focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid',\n 'focus-visible:outline-[color:var(--ring)] focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'p-1 [&>svg]:size-3',\n md: 'p-1 [&>svg]:size-3.5',\n lg: 'p-1.5 [&>svg]:size-4',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* TagProps */\n/* ------------------------------------------------------------------ */\n\nexport interface TagProps {\n /** The visible label text */\n label: string;\n /** Semantic colour variant */\n variant?: 'neutral' | 'info' | 'success' | 'warning' | 'error' | 'brand';\n /** Visual fill style */\n fill?: 'solid' | 'outline';\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Leading slot — icon element or dot */\n leading?: ReactNode;\n /** Called when the tag is removed (enables close button + Backspace/Delete) */\n onRemove?: () => void;\n /** Called when the tag is clicked (non-removable interactive tag) */\n onClick?: () => void;\n /** Disabled state */\n disabled?: boolean;\n /** Max inline size before truncation with tooltip — default 'none' */\n maxInlineSize?: string | 'none';\n /** Additional class names */\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Tag */\n/* ------------------------------------------------------------------ */\n\nexport const Tag = forwardRef<HTMLElement, TagProps>(\n (\n {\n label,\n variant = 'neutral',\n fill = 'solid',\n size = 'md',\n leading,\n onRemove,\n onClick,\n disabled = false,\n maxInlineSize = 'none',\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const labelRef = useRef<HTMLSpanElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n\n useEffect(() => {\n const el = labelRef.current;\n if (!el || maxInlineSize === 'none') return;\n\n const check = () => setIsOverflowing(el.scrollWidth > el.clientWidth);\n const observer = new ResizeObserver(check);\n observer.observe(el);\n check();\n return () => observer.disconnect();\n }, [maxInlineSize]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === 'Backspace' || e.key === 'Delete') && onRemove && !disabled) {\n e.preventDefault();\n announce();\n // Delay gives the live region one render cycle before unmount\n setTimeout(onRemove, 100);\n }\n };\n\n const announce = () => {\n setAnnouncement(t('ui.tag.removed', { label }));\n };\n\n const handleRemove = () => {\n if (!disabled && onRemove) {\n announce();\n setTimeout(onRemove, 100);\n }\n };\n\n const isRemovable = !!onRemove;\n const isClickable = !!onClick && !isRemovable;\n\n const rootClasses = tagVariants({\n variant,\n fill,\n size,\n className: [\n isClickable && !disabled ? 'hover:brightness-90 cursor-pointer' : '',\n className ?? '',\n ]\n .filter(Boolean)\n .join(' '),\n });\n\n const leadingEl = leading ? (\n <span aria-hidden=\"true\" className=\"shrink-0 inline-flex items-center [&>svg]:size-3.5\">\n {leading}\n </span>\n ) : null;\n\n // Consumer-controlled layout constraint — not a design token.\n // maxInlineSize is an arbitrary caller-supplied value that cannot be expressed\n // as a static Tailwind class; the style prop is the only cross-browser option.\n const labelEl = (\n <span\n ref={labelRef}\n className={\n maxInlineSize !== 'none'\n ? 'overflow-hidden text-ellipsis whitespace-nowrap'\n : undefined\n }\n // eslint-disable-next-line react/forbid-component-props\n style={maxInlineSize !== 'none' ? { maxInlineSize } : undefined}\n >\n {label}\n </span>\n );\n\n // Live region — only for removable tags; must be a sibling outside the button.\n const liveRegion = (\n <span role=\"status\" aria-live=\"polite\" className=\"sr-only\">\n {announcement}\n </span>\n );\n\n const closeButton = isRemovable ? (\n <button\n type=\"button\"\n aria-label={t('ui.tag.remove', { label })}\n onClick={handleRemove}\n disabled={disabled}\n // Intentionally excluded from tab order: Backspace/Delete on the focused\n // group element provides the same keyboard action.\n tabIndex={-1}\n className={closeButtonVariants({ size })}\n >\n <X aria-hidden=\"true\" />\n </button>\n ) : null;\n\n const shouldWrapTooltip = maxInlineSize !== 'none' && isOverflowing;\n\n // Clickable tag — renders as <button>; live region is a sibling, not inside button\n if (isClickable) {\n const tagEl = (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n onClick={!disabled ? onClick : undefined}\n disabled={disabled}\n className={rootClasses}\n >\n {leadingEl}\n {labelEl}\n </button>\n );\n return shouldWrapTooltip ? <Tooltip label={label}>{tagEl}</Tooltip> : tagEl;\n }\n\n // Removable tag — focusable <span> with embedded close button\n if (isRemovable) {\n const tagEl = (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n role=\"group\"\n aria-label={label}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n className={rootClasses}\n >\n {liveRegion}\n {leadingEl}\n {labelEl}\n {closeButton}\n </span>\n );\n return shouldWrapTooltip ? <Tooltip label={label}>{tagEl}</Tooltip> : tagEl;\n }\n\n // Decorative tag — plain <span>, no interactive role\n const tagEl = (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={tagVariants({ variant, fill, size, className })}\n >\n {leadingEl}\n {labelEl}\n </span>\n );\n return shouldWrapTooltip ? <Tooltip label={label}>{tagEl}</Tooltip> : tagEl;\n },\n);\n\nTag.displayName = 'Tag';\n"],"names":["tagVariants","cva","closeButtonVariants","Tag","forwardRef","label","variant","fill","size","leading","onRemove","onClick","disabled","maxInlineSize","className","ref","t","useTranslation","labelRef","useRef","isOverflowing","setIsOverflowing","useState","announcement","setAnnouncement","useEffect","el","check","observer","handleKeyDown","announce","handleRemove","isRemovable","isClickable","rootClasses","leadingEl","jsx","labelEl","liveRegion","closeButton","X","shouldWrapTooltip","tagEl","jsxs","Tooltip"],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
- import { forwardRef as v } from "react";
3
- import { c as g } from "./index-D2ZczOXr.js";
4
- import { useTranslation as b } from "react-i18next";
5
- import { C as x } from "./chevron-right-BrpYejk0.js";
6
- import { S as y } from "./square-check-big-Jr-0202D.js";
7
- import { C } from "./circle-alert-ChA9opNA.js";
8
- import { S as N } from "./square-CZoGU14v.js";
9
- const k = g(
10
- [
11
- "relative flex items-start gap-[var(--spacing-sm)]",
12
- "rounded-[var(--radius-sm)]",
13
- "transition-colors",
14
- "motion-reduce:transition-none",
15
- "text-start group",
16
- "forced-colors:border forced-colors:border-[CanvasText]"
17
- ].join(" "),
18
- {
19
- variants: {
20
- size: {
21
- sm: "p-[var(--spacing-sm)]",
22
- md: "p-[var(--spacing-md)]"
23
- },
24
- interactive: {
25
- true: "hover:bg-[color:var(--muted)]/40 cursor-pointer",
26
- false: ""
27
- }
28
- },
29
- defaultVariants: {
30
- size: "sm",
31
- interactive: !1
32
- }
33
- }
34
- ), u = [
35
- "focus-visible:outline-none",
36
- "after:content-[''] after:absolute after:inset-0 after:rounded-[var(--radius-sm)]",
37
- "after:pointer-events-auto",
38
- "focus-visible:after:outline-[length:var(--focus-ring-width)]",
39
- "focus-visible:after:outline-solid",
40
- "focus-visible:after:outline-[color:var(--ring)]",
41
- "focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]",
42
- "forced-colors:focus-visible:after:outline-[CanvasText]"
43
- ].join(" ");
44
- function S(r) {
45
- return /^(https?:\/\/(?!\/)|\/(?!\/)|#)/.test(r);
46
- }
47
- function T({ status: r, priority: a }) {
48
- const e = a === "high" ? "text-[color:var(--destructive)]" : "text-[color:var(--muted-foreground)]";
49
- return r === "done" ? /* @__PURE__ */ t(y, { "aria-hidden": "true", className: `size-4 ${e}` }) : a === "high" ? /* @__PURE__ */ t(C, { "aria-hidden": "true", className: `size-4 ${e}` }) : /* @__PURE__ */ t(N, { "aria-hidden": "true", className: `size-4 ${e}` });
50
- }
51
- const w = v(
52
- ({ item: r, size: a = "sm", onActivate: e, className: d, ...f }, p) => {
53
- const { t: m } = b(), s = !!e, h = !!r.url && S(r.url), l = m("ui.taskCard.itemLabel", {
54
- title: r.title,
55
- due: r.dueLabel ?? "",
56
- defaultValue: '{{title}}{{due, prepend, " · "}}'
57
- }), n = /* @__PURE__ */ t("span", { className: "flex-1 min-w-0 truncate type-body-sm text-[color:var(--foreground)]", children: r.title });
58
- let o;
59
- return s && h ? o = /* @__PURE__ */ t(
60
- "a",
61
- {
62
- href: r.url,
63
- "aria-label": l,
64
- className: u + " contents",
65
- onClick: (i) => {
66
- i.defaultPrevented || i.metaKey || i.ctrlKey || i.shiftKey || e == null || e(r);
67
- },
68
- children: n
69
- }
70
- ) : s ? o = /* @__PURE__ */ t(
71
- "button",
72
- {
73
- type: "button",
74
- "aria-label": l,
75
- className: u + " contents bg-transparent border-0 p-0 text-start",
76
- onClick: () => e == null ? void 0 : e(r),
77
- children: n
78
- }
79
- ) : o = n, /* @__PURE__ */ c(
80
- "div",
81
- {
82
- ref: p,
83
- role: "listitem",
84
- "data-status": r.status ?? "open",
85
- "data-priority": r.priority ?? "normal",
86
- className: k({ size: a, interactive: s, className: d }),
87
- ...f,
88
- children: [
89
- /* @__PURE__ */ t("span", { className: "mt-[var(--spacing-2xs)] shrink-0", children: /* @__PURE__ */ t(T, { status: r.status, priority: r.priority }) }),
90
- /* @__PURE__ */ c("div", { className: "flex-1 min-w-0 flex flex-col gap-[var(--spacing-2xs)]", children: [
91
- o,
92
- r.description ? /* @__PURE__ */ t("span", { className: "type-body-sm text-[color:var(--muted-foreground)] truncate", children: r.description }) : null,
93
- r.dueLabel ? /* @__PURE__ */ t("span", { className: "type-eyebrow text-[color:var(--muted-foreground)]", children: r.dueLabel }) : null
94
- ] }),
95
- s ? /* @__PURE__ */ t(
96
- x,
97
- {
98
- "aria-hidden": "true",
99
- className: "mt-[var(--spacing-2xs)] size-4 shrink-0 text-[color:var(--muted-foreground)] opacity-0 transition-opacity motion-reduce:transition-none group-hover:opacity-100 group-focus-within:opacity-100 rtl:rotate-180"
100
- }
101
- ) : null
102
- ]
103
- }
104
- );
105
- }
106
- );
107
- w.displayName = "TaskCard";
108
- export {
109
- w as T,
110
- S as i
111
- };
112
- //# sourceMappingURL=task-card-uxjApfcg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-card-uxjApfcg.js","sources":["../../src/components/task-card/task-card.tsx"],"sourcesContent":["import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CheckSquare, Square, AlertCircle, ChevronRight } from 'lucide-react';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport type TaskStatus = 'open' | 'in-progress' | 'done';\nexport type TaskPriority = 'low' | 'normal' | 'high';\n\nexport interface TaskItem {\n /** Unique identifier for the task. */\n id: string;\n /** Title — single line, primary content. */\n title: string;\n /** Optional secondary line (e.g. \"Patient A · Due today\"). */\n description?: string;\n /**\n * Localised due-date hint (e.g. \"Due today\" / \"Tomorrow\"). Rendered as a\n * trailing eyebrow chip when set; consumers compute the bucket and pass\n * the localised string.\n */\n dueLabel?: string;\n /** Lifecycle state — drives the leading icon. */\n status?: TaskStatus;\n /** Priority — `high` colours the leading icon as `--destructive`. */\n priority?: TaskPriority;\n /** Optional deep link — when present the row is an anchor. */\n url?: string;\n}\n\nexport interface TaskCardProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'role' | 'title'>,\n VariantProps<typeof taskCardVariants> {\n /** The task to render. */\n item: TaskItem;\n /** Visual density. */\n size?: 'sm' | 'md';\n /** Fires when the row is activated (click / Enter / Space). */\n onActivate?: (item: TaskItem) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst taskCardVariants = cva(\n [\n 'relative flex items-start gap-[var(--spacing-sm)]',\n 'rounded-[var(--radius-sm)]',\n 'transition-colors',\n 'motion-reduce:transition-none',\n 'text-start group',\n 'forced-colors:border forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'p-[var(--spacing-sm)]',\n md: 'p-[var(--spacing-md)]',\n },\n interactive: {\n true: 'hover:bg-[color:var(--muted)]/40 cursor-pointer',\n false: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n interactive: false,\n },\n },\n);\n\nconst stretchedLinkClass = [\n 'focus-visible:outline-none',\n \"after:content-[''] after:absolute after:inset-0 after:rounded-[var(--radius-sm)]\",\n 'after:pointer-events-auto',\n 'focus-visible:after:outline-[length:var(--focus-ring-width)]',\n 'focus-visible:after:outline-solid',\n 'focus-visible:after:outline-[color:var(--ring)]',\n 'focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]',\n 'forced-colors:focus-visible:after:outline-[CanvasText]',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nexport function isSafeTaskUrl(url: string): boolean {\n return /^(https?:\\/\\/(?!\\/)|\\/(?!\\/)|#)/.test(url);\n}\n\nfunction StatusIcon({ status, priority }: { status?: TaskStatus; priority?: TaskPriority }): ReactNode {\n const tone =\n priority === 'high'\n ? 'text-[color:var(--destructive)]'\n : 'text-[color:var(--muted-foreground)]';\n if (status === 'done') {\n return <CheckSquare aria-hidden=\"true\" className={`size-4 ${tone}`} />;\n }\n if (priority === 'high') {\n return <AlertCircle aria-hidden=\"true\" className={`size-4 ${tone}`} />;\n }\n return <Square aria-hidden=\"true\" className={`size-4 ${tone}`} />;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const TaskCard = forwardRef<HTMLDivElement, TaskCardProps>(\n ({ item, size = 'sm', onActivate, className, ...rest }, ref) => {\n const { t } = useTranslation();\n const interactive = !!onActivate;\n const hasSafeUrl = !!item.url && isSafeTaskUrl(item.url);\n const ariaLabel = t('ui.taskCard.itemLabel', {\n title: item.title,\n due: item.dueLabel ?? '',\n defaultValue: '{{title}}{{due, prepend, \" · \"}}',\n });\n\n const titleNode = (\n <span className=\"flex-1 min-w-0 truncate type-body-sm text-[color:var(--foreground)]\">\n {item.title}\n </span>\n );\n\n let activator: ReactNode;\n if (interactive && hasSafeUrl) {\n activator = (\n <a\n href={item.url}\n aria-label={ariaLabel}\n className={stretchedLinkClass + ' contents'}\n onClick={(e) => {\n if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey) return;\n onActivate?.(item);\n }}\n >\n {titleNode}\n </a>\n );\n } else if (interactive) {\n activator = (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n className={stretchedLinkClass + ' contents bg-transparent border-0 p-0 text-start'}\n onClick={() => onActivate?.(item)}\n >\n {titleNode}\n </button>\n );\n } else {\n activator = titleNode;\n }\n\n return (\n <div\n ref={ref}\n role=\"listitem\"\n data-status={item.status ?? 'open'}\n data-priority={item.priority ?? 'normal'}\n className={taskCardVariants({ size, interactive, className })}\n {...rest}\n >\n <span className=\"mt-[var(--spacing-2xs)] shrink-0\">\n <StatusIcon status={item.status} priority={item.priority} />\n </span>\n\n <div className=\"flex-1 min-w-0 flex flex-col gap-[var(--spacing-2xs)]\">\n {activator}\n {item.description ? (\n <span className=\"type-body-sm text-[color:var(--muted-foreground)] truncate\">\n {item.description}\n </span>\n ) : null}\n {item.dueLabel ? (\n <span className=\"type-eyebrow text-[color:var(--muted-foreground)]\">\n {item.dueLabel}\n </span>\n ) : null}\n </div>\n\n {interactive ? (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"mt-[var(--spacing-2xs)] size-4 shrink-0 text-[color:var(--muted-foreground)] opacity-0 transition-opacity motion-reduce:transition-none group-hover:opacity-100 group-focus-within:opacity-100 rtl:rotate-180\"\n />\n ) : null}\n </div>\n );\n },\n);\n\nTaskCard.displayName = 'TaskCard';\n"],"names":["taskCardVariants","cva","stretchedLinkClass","isSafeTaskUrl","url","StatusIcon","status","priority","tone","CheckSquare","AlertCircle","Square","TaskCard","forwardRef","item","size","onActivate","className","rest","ref","t","useTranslation","interactive","hasSafeUrl","ariaLabel","titleNode","jsx","activator","e","jsxs","ChevronRight"],"mappings":"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"}
@@ -1,99 +0,0 @@
1
- import { jsx as a, jsxs as t } from "react/jsx-runtime";
2
- import { forwardRef as x } from "react";
3
- import { c as b } from "./index-D2ZczOXr.js";
4
- import { useTranslation as T } from "react-i18next";
5
- import { I as N } from "./icon-button-C1vpylg3.js";
6
- import { S as w } from "./skeleton-vbTWUntB.js";
7
- import { E as j } from "./empty-state-DiG7vYBM.js";
8
- import { T as z } from "./task-card-uxjApfcg.js";
9
- import { c as E } from "./createLucideIcon-CrFbzy84.js";
10
- import { P as I } from "./plus-CYKNmfuA.js";
11
- /**
12
- * @license lucide-react v1.8.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */
17
- const L = [
18
- ["path", { d: "M13 5h8", key: "a7qcls" }],
19
- ["path", { d: "M13 12h8", key: "h98zly" }],
20
- ["path", { d: "M13 19h8", key: "c3s6r1" }],
21
- ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
22
- ["rect", { x: "3", y: "4", width: "6", height: "6", rx: "1", key: "cif1o7" }]
23
- ], M = E("list-todo", L), S = b(
24
- [
25
- "flex flex-col",
26
- "rounded-[var(--radius-md)] border border-[color:var(--border)]",
27
- "bg-[color:var(--card)] text-[color:var(--card-foreground)]",
28
- "overflow-hidden"
29
- ].join(" "),
30
- {
31
- variants: {
32
- size: {
33
- sm: "",
34
- md: ""
35
- }
36
- },
37
- defaultVariants: {
38
- size: "sm"
39
- }
40
- }
41
- ), q = x(
42
- ({
43
- items: i,
44
- title: n,
45
- size: o = "sm",
46
- onOpenTask: m,
47
- onAddTask: l,
48
- addLabel: p,
49
- loading: c = !1,
50
- emptyTitle: f,
51
- emptyDescription: h,
52
- className: y,
53
- ...v
54
- }, u) => {
55
- const { t: e } = T(), d = n ?? e("ui.taskTray.title", "Tasks"), k = p ?? e("ui.taskTray.add", "Add task"), g = !c && i.length === 0;
56
- let r;
57
- return c ? r = /* @__PURE__ */ a("div", { className: "flex flex-col gap-[var(--spacing-sm)] p-[var(--spacing-sm)]", children: [0, 1, 2].map((s) => /* @__PURE__ */ a(w, { variant: "rectangular", height: "2.5rem" }, s)) }) : g ? r = /* @__PURE__ */ a("div", { className: "p-[var(--spacing-md)]", children: /* @__PURE__ */ a(
58
- j,
59
- {
60
- variant: "first-use",
61
- size: "sm",
62
- title: f ?? e("ui.taskTray.empty.title", "No tasks yet"),
63
- description: h ?? e("ui.taskTray.empty.description", "New tasks will appear here.")
64
- }
65
- ) }) : r = /* @__PURE__ */ a("ul", { className: "flex list-none flex-col divide-y divide-[color:var(--border)]", children: i.map((s) => /* @__PURE__ */ a(z, { item: s, size: o, onActivate: m }, s.id)) }), /* @__PURE__ */ t(
66
- "section",
67
- {
68
- ref: u,
69
- "aria-label": d,
70
- className: S({ size: o, className: y }),
71
- ...v,
72
- children: [
73
- /* @__PURE__ */ t("header", { className: "flex items-center justify-between gap-[var(--spacing-sm)] border-b border-[color:var(--border)] p-[var(--spacing-sm)]", children: [
74
- /* @__PURE__ */ t("h3", { className: "m-0 inline-flex items-center gap-[var(--spacing-xs)] type-title-card", children: [
75
- /* @__PURE__ */ a(M, { "aria-hidden": "true", className: "size-4" }),
76
- d
77
- ] }),
78
- l ? /* @__PURE__ */ a(
79
- N,
80
- {
81
- icon: /* @__PURE__ */ a(I, {}),
82
- intent: "outline",
83
- size: "sm",
84
- "aria-label": k,
85
- onClick: l
86
- }
87
- ) : null
88
- ] }),
89
- r
90
- ]
91
- }
92
- );
93
- }
94
- );
95
- q.displayName = "TaskTray";
96
- export {
97
- q as T
98
- };
99
- //# sourceMappingURL=task-tray-BdfM3p8N.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-tray-BdfM3p8N.js","sources":["../../node_modules/lucide-react/dist/esm/icons/list-todo.js","../../src/components/task-tray/task-tray.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: \"M13 5h8\", key: \"a7qcls\" }],\n [\"path\", { d: \"M13 12h8\", key: \"h98zly\" }],\n [\"path\", { d: \"M13 19h8\", key: \"c3s6r1\" }],\n [\"path\", { d: \"m3 17 2 2 4-4\", key: \"1jhpwq\" }],\n [\"rect\", { x: \"3\", y: \"4\", width: \"6\", height: \"6\", rx: \"1\", key: \"cif1o7\" }]\n];\nconst ListTodo = createLucideIcon(\"list-todo\", __iconNode);\n\nexport { __iconNode, ListTodo as default };\n//# sourceMappingURL=list-todo.js.map\n","import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ListTodo, Plus } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { TaskCard, type TaskItem } from '../task-card';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst taskTrayVariants = cva(\n [\n 'flex flex-col',\n 'rounded-[var(--radius-md)] border border-[color:var(--border)]',\n 'bg-[color:var(--card)] text-[color:var(--card-foreground)]',\n 'overflow-hidden',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface TaskTrayProps\n extends Omit<HTMLAttributes<HTMLElement>, 'onClick'>,\n VariantProps<typeof taskTrayVariants> {\n /** Tasks rendered inside the panel. */\n items: TaskItem[];\n /** Section title — rendered in the header. Localised by the consumer. */\n title?: string;\n /** Visual density forwarded to each TaskCard. */\n size?: 'sm' | 'md';\n /** Fires when the user activates a task (click / Enter / Space). */\n onOpenTask?: (item: TaskItem) => void;\n /** Fires when the user activates the header \"Add\" affordance. */\n onAddTask?: () => void;\n /** Localised label for the \"Add\" affordance. Defaults to `ui.taskTray.add`. */\n addLabel?: string;\n /** When true the panel renders skeleton placeholders. */\n loading?: boolean;\n /** Render an empty state when `items` is empty and `loading` is false. */\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const TaskTray = forwardRef<HTMLElement, TaskTrayProps>(\n (\n {\n items,\n title,\n size = 'sm',\n onOpenTask,\n onAddTask,\n addLabel,\n loading = false,\n emptyTitle,\n emptyDescription,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const heading = title ?? t('ui.taskTray.title', 'Tasks');\n const resolvedAddLabel = addLabel ?? t('ui.taskTray.add', 'Add task');\n const isEmpty = !loading && items.length === 0;\n\n let body: ReactNode;\n if (loading) {\n body = (\n <div className=\"flex flex-col gap-[var(--spacing-sm)] p-[var(--spacing-sm)]\">\n {[0, 1, 2].map((i) => (\n <Skeleton key={i} variant=\"rectangular\" height=\"2.5rem\" />\n ))}\n </div>\n );\n } else if (isEmpty) {\n body = (\n <div className=\"p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"first-use\"\n size=\"sm\"\n title={emptyTitle ?? t('ui.taskTray.empty.title', 'No tasks yet')}\n description={\n emptyDescription ??\n t('ui.taskTray.empty.description', 'New tasks will appear here.')\n }\n />\n </div>\n );\n } else {\n body = (\n <ul className=\"flex list-none flex-col divide-y divide-[color:var(--border)]\">\n {items.map((item) => (\n <TaskCard key={item.id} item={item} size={size} onActivate={onOpenTask} />\n ))}\n </ul>\n );\n }\n\n return (\n <section\n ref={ref}\n aria-label={heading}\n className={taskTrayVariants({ size, className })}\n {...rest}\n >\n <header className=\"flex items-center justify-between gap-[var(--spacing-sm)] border-b border-[color:var(--border)] p-[var(--spacing-sm)]\">\n <h3 className=\"m-0 inline-flex items-center gap-[var(--spacing-xs)] type-title-card\">\n <ListTodo aria-hidden=\"true\" className=\"size-4\" />\n {heading}\n </h3>\n {onAddTask ? (\n <IconButton\n icon={<Plus />}\n intent=\"outline\"\n size=\"sm\"\n aria-label={resolvedAddLabel}\n onClick={onAddTask}\n />\n ) : null}\n </header>\n {body}\n </section>\n );\n },\n);\n\nTaskTray.displayName = 'TaskTray';\n"],"names":["__iconNode","ListTodo","createLucideIcon","taskTrayVariants","cva","TaskTray","forwardRef","items","title","size","onOpenTask","onAddTask","addLabel","loading","emptyTitle","emptyDescription","className","rest","ref","t","useTranslation","heading","resolvedAddLabel","isEmpty","body","jsx","i","Skeleton","EmptyState","item","TaskCard","jsxs","IconButton","Plus"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,152 +0,0 @@
1
- import { jsxs as x, jsx as A } from "react/jsx-runtime";
2
- import { forwardRef as ae, useRef as j, useCallback as H, useState as k, useLayoutEffect as se, useEffect as ce } from "react";
3
- import { c as le } from "./index-D2ZczOXr.js";
4
- import { useTranslation as de } from "react-i18next";
5
- import { u as ue } from "./form-field-context-94LwgYTQ.js";
6
- const fe = le(
7
- [
8
- "block w-full border rounded-[var(--radius-sm)] bg-background text-foreground",
9
- "leading-[var(--line-height-base)]",
10
- "ps-[var(--spacing-sm)] pe-[var(--spacing-sm)] py-[var(--spacing-xs)]",
11
- "focus:outline-none",
12
- "focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid",
13
- "focus-visible:outline-ring focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
14
- "forced-colors:focus-visible:outline-[CanvasText]",
15
- "disabled:cursor-not-allowed disabled:opacity-50",
16
- "read-only:bg-muted read-only:cursor-default",
17
- "transition-[height,color,background-color,border-color] duration-[var(--animation-duration)] motion-reduce:transition-none",
18
- "placeholder:text-muted-foreground"
19
- ].join(" "),
20
- {
21
- variants: {
22
- size: {
23
- sm: "min-h-8 text-[var(--font-size-sm)]",
24
- md: "min-h-[var(--min-target-size)] text-[var(--font-size-base)]",
25
- lg: "min-h-[calc(var(--min-target-size)*1.5)] text-[var(--font-size-lg)]"
26
- },
27
- tone: {
28
- default: "border-border",
29
- error: "border-destructive"
30
- },
31
- resize: {
32
- auto: "resize-none",
33
- manual: "resize-y"
34
- }
35
- },
36
- defaultVariants: { size: "md", tone: "default", resize: "manual" }
37
- }
38
- ), me = (n) => n >= 1 ? "text-destructive" : n >= 0.9 ? "text-warning" : "text-muted-foreground", ve = (n) => [...n].length, be = ae(
39
- ({
40
- size: n = "md",
41
- tone: M = "default",
42
- autoResize: r = !1,
43
- minRows: f = 2,
44
- maxRows: m,
45
- showCounter: S,
46
- className: q,
47
- id: E,
48
- disabled: P,
49
- value: y,
50
- defaultValue: T,
51
- maxLength: i,
52
- rows: W,
53
- onChange: o,
54
- onCompositionStart: v,
55
- onCompositionEnd: b,
56
- onInput: $,
57
- ...D
58
- }, c) => {
59
- const { t: N } = de(), a = ue(), F = E ?? a.id, O = a.disabled || P, Y = a.invalid ? "error" : M, w = j(null), _ = H(
60
- (e) => {
61
- w.current = e, typeof c == "function" ? c(e) : c && (c.current = e);
62
- },
63
- [c]
64
- ), l = y !== void 0, [G, z] = k(
65
- String(T ?? "")
66
- ), p = l ? String(y) : G, d = j(!1), g = H(() => {
67
- const e = w.current;
68
- if (!e || !r) return;
69
- const t = window.getComputedStyle(e), u = parseFloat(t.lineHeight), C = parseFloat(t.paddingTop), ee = parseFloat(t.paddingBottom), te = parseFloat(t.borderTopWidth), re = parseFloat(t.borderBottomWidth), B = C + ee + te + re, ne = (Number.isFinite(u) ? u : 24) * f + B, ie = typeof m == "number" ? (Number.isFinite(u) ? u : 24) * m + B : Number.POSITIVE_INFINITY;
70
- e.style.height = "auto";
71
- const oe = Math.max(ne, Math.min(e.scrollHeight, ie));
72
- e.style.height = `${oe}px`;
73
- }, [r, f, m]);
74
- se(() => {
75
- r && g();
76
- }, [r, g, p]);
77
- const J = (e) => {
78
- l || z(e.target.value), !d.current && (o == null || o(e));
79
- }, K = (e) => {
80
- d.current = !0, v == null || v(e);
81
- }, Q = (e) => {
82
- d.current = !1, b == null || b(e);
83
- const t = e.currentTarget;
84
- l || z(t.value), o == null || o({
85
- ...e,
86
- target: t,
87
- currentTarget: t
88
- }), r && g();
89
- }, s = typeof i == "number" && (S ?? !0) && i > 0, h = ve(p), I = s ? Math.max(0, i - h) : 0, U = s ? h / i : 0, [X, Z] = k("");
90
- ce(() => {
91
- if (!s) return;
92
- const e = window.setTimeout(() => {
93
- d.current || Z(
94
- N("ui.inputs.textarea.charactersRemaining", {
95
- count: I,
96
- defaultValue: "{{count}} characters remaining"
97
- })
98
- );
99
- }, 500);
100
- return () => window.clearTimeout(e);
101
- }, [s, I, N]);
102
- const V = s ? `${F}-counter` : void 0, L = [a.describedBy || void 0, V].filter(Boolean).join(" ") || void 0, R = r ? "auto" : "manual";
103
- return /* @__PURE__ */ x("div", { className: "flex w-full flex-col gap-[var(--spacing-xs)]", children: [
104
- /* @__PURE__ */ A(
105
- "textarea",
106
- {
107
- ref: _,
108
- id: F,
109
- value: l ? p : void 0,
110
- defaultValue: l ? void 0 : T,
111
- disabled: O,
112
- "aria-describedby": L,
113
- "aria-invalid": a.invalid || void 0,
114
- "aria-required": a.required || void 0,
115
- maxLength: i,
116
- rows: r ? f : W,
117
- onChange: J,
118
- onCompositionStart: K,
119
- onCompositionEnd: Q,
120
- onInput: $,
121
- className: fe({
122
- size: n,
123
- tone: Y,
124
- resize: R,
125
- className: q
126
- }),
127
- ...D
128
- }
129
- ),
130
- s ? /* @__PURE__ */ x(
131
- "div",
132
- {
133
- id: V,
134
- className: "flex justify-end type-meta tabular-nums",
135
- children: [
136
- /* @__PURE__ */ x("span", { "aria-hidden": "true", className: me(U), children: [
137
- h,
138
- " / ",
139
- i
140
- ] }),
141
- /* @__PURE__ */ A("span", { className: "sr-only", "aria-live": "polite", children: X })
142
- ]
143
- }
144
- ) : null
145
- ] });
146
- }
147
- );
148
- be.displayName = "TextArea";
149
- export {
150
- be as T
151
- };
152
- //# sourceMappingURL=text-area-CKxZ7cS3.js.map