admin-ui-starter-kit 0.6.5 → 0.6.6

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 (1147) hide show
  1. package/.agents/skills/component-library-rules/references/components/base__cards.md +3 -4
  2. package/.agents/skills/component-library-rules/references/components/base__table.md +32 -11
  3. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +2 -2
  4. package/dist/_shared/accordion-BRj4TDQx.js +135 -0
  5. package/dist/_shared/accordion-BRj4TDQx.js.map +1 -0
  6. package/dist/_shared/accordion-DvlDjk29.cjs +2 -0
  7. package/dist/_shared/accordion-DvlDjk29.cjs.map +1 -0
  8. package/dist/_shared/action-menu-BrHF4nss.cjs +2 -0
  9. package/dist/_shared/action-menu-BrHF4nss.cjs.map +1 -0
  10. package/dist/_shared/action-menu-Crn22LKo.js +96 -0
  11. package/dist/_shared/action-menu-Crn22LKo.js.map +1 -0
  12. package/dist/_shared/ai-artifact-BHgd3agA.js +1099 -0
  13. package/dist/_shared/ai-artifact-BHgd3agA.js.map +1 -0
  14. package/dist/_shared/ai-artifact-BRM5cvGv.cjs +3 -0
  15. package/dist/_shared/ai-artifact-BRM5cvGv.cjs.map +1 -0
  16. package/dist/_shared/alert-CMVVt2Br.js +81 -0
  17. package/dist/_shared/alert-CMVVt2Br.js.map +1 -0
  18. package/dist/_shared/alert-Dmhtbmpg.cjs +2 -0
  19. package/dist/_shared/alert-Dmhtbmpg.cjs.map +1 -0
  20. package/dist/_shared/app-shell-BZQJfTkf.cjs +2 -0
  21. package/dist/_shared/app-shell-BZQJfTkf.cjs.map +1 -0
  22. package/dist/_shared/app-shell-Da6GHxTZ.js +69 -0
  23. package/dist/_shared/app-shell-Da6GHxTZ.js.map +1 -0
  24. package/dist/_shared/auth-DZW6NkJx.cjs +2 -0
  25. package/dist/_shared/auth-DZW6NkJx.cjs.map +1 -0
  26. package/dist/_shared/auth-Dh790NI_.js +643 -0
  27. package/dist/_shared/auth-Dh790NI_.js.map +1 -0
  28. package/dist/_shared/badge-B8xGFpfM.cjs +2 -0
  29. package/dist/_shared/badge-B8xGFpfM.cjs.map +1 -0
  30. package/dist/_shared/badge-BYNwSWh5.js +110 -0
  31. package/dist/_shared/badge-BYNwSWh5.js.map +1 -0
  32. package/dist/_shared/breadcrumbs-CuT0YIfo.js +105 -0
  33. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +1 -0
  34. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +2 -0
  35. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +1 -0
  36. package/dist/_shared/button-BMiPFJIb.cjs +2 -0
  37. package/dist/_shared/button-BMiPFJIb.cjs.map +1 -0
  38. package/dist/_shared/button-vv59_uS_.js +189 -0
  39. package/dist/_shared/button-vv59_uS_.js.map +1 -0
  40. package/dist/_shared/buttons-CvqIMv3I.js +137 -0
  41. package/dist/_shared/buttons-CvqIMv3I.js.map +1 -0
  42. package/dist/_shared/buttons-tCkWktN3.cjs +2 -0
  43. package/dist/_shared/buttons-tCkWktN3.cjs.map +1 -0
  44. package/dist/_shared/card-radio-group-Bhe8gAbH.js +150 -0
  45. package/dist/_shared/card-radio-group-Bhe8gAbH.js.map +1 -0
  46. package/dist/_shared/card-radio-group-CdG1zr8M.cjs +2 -0
  47. package/dist/_shared/card-radio-group-CdG1zr8M.cjs.map +1 -0
  48. package/dist/_shared/cards-Cu6p1Brd.cjs +2 -0
  49. package/dist/_shared/cards-Cu6p1Brd.cjs.map +1 -0
  50. package/dist/_shared/cards-cQ9lL6zy.js +354 -0
  51. package/dist/_shared/cards-cQ9lL6zy.js.map +1 -0
  52. package/dist/_shared/combobox-BGYjyXeN.cjs +2 -0
  53. package/dist/_shared/combobox-BGYjyXeN.cjs.map +1 -0
  54. package/dist/_shared/combobox-DTwomOBt.js +954 -0
  55. package/dist/_shared/combobox-DTwomOBt.js.map +1 -0
  56. package/dist/_shared/comments-C97vL5km.js +952 -0
  57. package/dist/_shared/comments-C97vL5km.js.map +1 -0
  58. package/dist/_shared/comments-DBe6dP-d.cjs +2 -0
  59. package/dist/_shared/comments-DBe6dP-d.cjs.map +1 -0
  60. package/dist/_shared/copyable-BgFdERqs.js +38 -0
  61. package/dist/_shared/copyable-BgFdERqs.js.map +1 -0
  62. package/dist/_shared/copyable-Ce8rmE-V.cjs +2 -0
  63. package/dist/_shared/copyable-Ce8rmE-V.cjs.map +1 -0
  64. package/dist/_shared/data-display-DUWxoDKq.js +1873 -0
  65. package/dist/_shared/data-display-DUWxoDKq.js.map +1 -0
  66. package/dist/_shared/data-display-o-rbMuIA.cjs +2 -0
  67. package/dist/_shared/data-display-o-rbMuIA.cjs.map +1 -0
  68. package/dist/_shared/date-picker-Cxx9jllA.js +1361 -0
  69. package/dist/_shared/date-picker-Cxx9jllA.js.map +1 -0
  70. package/dist/_shared/date-picker-DE5A8yqN.cjs +2 -0
  71. package/dist/_shared/date-picker-DE5A8yqN.cjs.map +1 -0
  72. package/dist/_shared/date-pickers-Dex1Mfye.cjs +2 -0
  73. package/dist/_shared/date-pickers-Dex1Mfye.cjs.map +1 -0
  74. package/dist/_shared/date-pickers-m0dpDcqH.js +329 -0
  75. package/dist/_shared/date-pickers-m0dpDcqH.js.map +1 -0
  76. package/dist/_shared/display-Bro3Kufg.js +986 -0
  77. package/dist/_shared/display-Bro3Kufg.js.map +1 -0
  78. package/dist/_shared/display-CRQjSjgB.cjs +2 -0
  79. package/dist/_shared/display-CRQjSjgB.cjs.map +1 -0
  80. package/dist/_shared/form-sizing-DJus3nK3.cjs +2 -0
  81. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +1 -0
  82. package/dist/_shared/form-sizing-DWjJsQSR.js +42 -0
  83. package/dist/_shared/form-sizing-DWjJsQSR.js.map +1 -0
  84. package/dist/_shared/forms-D-SNQmtB.cjs +2 -0
  85. package/dist/_shared/forms-D-SNQmtB.cjs.map +1 -0
  86. package/dist/_shared/forms-p7cfzJwf.js +3533 -0
  87. package/dist/_shared/forms-p7cfzJwf.js.map +1 -0
  88. package/dist/_shared/header-8C71wVRp.js +447 -0
  89. package/dist/_shared/header-8C71wVRp.js.map +1 -0
  90. package/dist/_shared/header-CYgFCnjZ.cjs +2 -0
  91. package/dist/_shared/header-CYgFCnjZ.cjs.map +1 -0
  92. package/dist/_shared/hooks-Ci1LFWRG.js +95 -0
  93. package/dist/_shared/hooks-Ci1LFWRG.js.map +1 -0
  94. package/dist/_shared/hooks-Cjl7LJpn.cjs +2 -0
  95. package/dist/_shared/hooks-Cjl7LJpn.cjs.map +1 -0
  96. package/dist/_shared/input-BgcP6x4C.js +182 -0
  97. package/dist/_shared/input-BgcP6x4C.js.map +1 -0
  98. package/dist/_shared/input-DV3g7Fm5.cjs +2 -0
  99. package/dist/_shared/input-DV3g7Fm5.cjs.map +1 -0
  100. package/dist/_shared/item-D7GTzvhf.js +226 -0
  101. package/dist/_shared/item-D7GTzvhf.js.map +1 -0
  102. package/dist/_shared/item-DTrnHpfm.cjs +2 -0
  103. package/dist/_shared/item-DTrnHpfm.cjs.map +1 -0
  104. package/dist/_shared/layout-BExg7Vlx.js +261 -0
  105. package/dist/_shared/layout-BExg7Vlx.js.map +1 -0
  106. package/dist/_shared/layout-CKRD_goE.cjs +2 -0
  107. package/dist/_shared/layout-CKRD_goE.cjs.map +1 -0
  108. package/dist/_shared/mentions-BtGhYisA.js +506 -0
  109. package/dist/_shared/mentions-BtGhYisA.js.map +1 -0
  110. package/dist/_shared/mentions-CnVOuQJU.cjs +2 -0
  111. package/dist/_shared/mentions-CnVOuQJU.cjs.map +1 -0
  112. package/dist/_shared/money-display-BvVpRUs5.cjs +2 -0
  113. package/dist/_shared/money-display-BvVpRUs5.cjs.map +1 -0
  114. package/dist/_shared/money-display-D6Qtvyyv.js +198 -0
  115. package/dist/_shared/money-display-D6Qtvyyv.js.map +1 -0
  116. package/dist/_shared/navigation-C4dO1I82.cjs +2 -0
  117. package/dist/_shared/navigation-C4dO1I82.cjs.map +1 -0
  118. package/dist/_shared/navigation-Ct-LFlpY.js +436 -0
  119. package/dist/_shared/navigation-Ct-LFlpY.js.map +1 -0
  120. package/dist/_shared/overlays-ChyqXn0n.js +735 -0
  121. package/dist/_shared/overlays-ChyqXn0n.js.map +1 -0
  122. package/dist/_shared/overlays-Dn2bt3CL.cjs +2 -0
  123. package/dist/_shared/overlays-Dn2bt3CL.cjs.map +1 -0
  124. package/dist/_shared/popover-menu-17Dxn25O.js +93 -0
  125. package/dist/_shared/popover-menu-17Dxn25O.js.map +1 -0
  126. package/dist/_shared/popover-menu-DXVN0bvj.cjs +2 -0
  127. package/dist/_shared/popover-menu-DXVN0bvj.cjs.map +1 -0
  128. package/dist/_shared/rich-text-editor-BRpcNkj1.js +620 -0
  129. package/dist/_shared/rich-text-editor-BRpcNkj1.js.map +1 -0
  130. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs +2 -0
  131. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs.map +1 -0
  132. package/dist/_shared/settings-CW9yzfQM.js +143 -0
  133. package/dist/_shared/settings-CW9yzfQM.js.map +1 -0
  134. package/dist/_shared/settings-cCPrw7si.cjs +2 -0
  135. package/dist/_shared/settings-cCPrw7si.cjs.map +1 -0
  136. package/dist/_shared/sidebar-Cq6J_I4l.cjs +2 -0
  137. package/dist/_shared/sidebar-Cq6J_I4l.cjs.map +1 -0
  138. package/dist/_shared/sidebar-DtF_ihE3.js +548 -0
  139. package/dist/_shared/sidebar-DtF_ihE3.js.map +1 -0
  140. package/dist/_shared/spinner-DY2de3Wt.cjs +2 -0
  141. package/dist/_shared/spinner-DY2de3Wt.cjs.map +1 -0
  142. package/dist/_shared/spinner-ZmIq_zsx.js +67 -0
  143. package/dist/_shared/spinner-ZmIq_zsx.js.map +1 -0
  144. package/dist/_shared/table-BBWc-wIw.js +1377 -0
  145. package/dist/_shared/table-BBWc-wIw.js.map +1 -0
  146. package/dist/_shared/table-DMDkdLzV.cjs +2 -0
  147. package/dist/_shared/table-DMDkdLzV.cjs.map +1 -0
  148. package/dist/_shared/textarea-C1TeJ7Vt.cjs +2 -0
  149. package/dist/_shared/textarea-C1TeJ7Vt.cjs.map +1 -0
  150. package/dist/_shared/textarea-CGRkgH5z.js +118 -0
  151. package/dist/_shared/textarea-CGRkgH5z.js.map +1 -0
  152. package/dist/_shared/typography-CzFVA1w1.js +201 -0
  153. package/dist/_shared/typography-CzFVA1w1.js.map +1 -0
  154. package/dist/_shared/typography-GtkgK9QX.cjs +2 -0
  155. package/dist/_shared/typography-GtkgK9QX.cjs.map +1 -0
  156. package/dist/_shared/workspace-BF5BtDhD.cjs +2 -0
  157. package/dist/_shared/workspace-BF5BtDhD.cjs.map +1 -0
  158. package/dist/_shared/workspace-IvsczduM.js +357 -0
  159. package/dist/_shared/workspace-IvsczduM.js.map +1 -0
  160. package/dist/components/base/accordion/index.cjs +1 -1
  161. package/dist/components/base/accordion/index.js +1 -1
  162. package/dist/components/base/badge/badge.d.ts.map +1 -1
  163. package/dist/components/base/badge/index.cjs +1 -1
  164. package/dist/components/base/badge/index.js +1 -1
  165. package/dist/components/base/buttons/index.cjs +1 -1
  166. package/dist/components/base/buttons/index.js +2 -2
  167. package/dist/components/base/cards/index.cjs +1 -1
  168. package/dist/components/base/cards/index.js +1 -1
  169. package/dist/components/base/cards/smart-card.types.d.ts +3 -3
  170. package/dist/components/base/carousel/index.cjs +1 -1
  171. package/dist/components/base/carousel/index.js +1 -1
  172. package/dist/components/base/combobox/index.cjs +1 -1
  173. package/dist/components/base/combobox/index.js +1 -1
  174. package/dist/components/base/copyable/index.cjs +1 -1
  175. package/dist/components/base/copyable/index.js +1 -1
  176. package/dist/components/base/currency/index.cjs +1 -1
  177. package/dist/components/base/currency/index.js +1 -1
  178. package/dist/components/base/date-pickers/index.cjs +1 -1
  179. package/dist/components/base/date-pickers/index.js +2 -2
  180. package/dist/components/base/display/chart.cjs +1 -1
  181. package/dist/components/base/display/chart.js +1 -1
  182. package/dist/components/base/display/index.cjs +1 -1
  183. package/dist/components/base/display/index.js +3 -3
  184. package/dist/components/base/event-calendar/index.cjs +1 -1
  185. package/dist/components/base/event-calendar/index.js +3 -3
  186. package/dist/components/base/forms/index.cjs +1 -1
  187. package/dist/components/base/forms/index.js +5 -5
  188. package/dist/components/base/item/index.cjs +1 -1
  189. package/dist/components/base/item/index.js +1 -1
  190. package/dist/components/base/map/index.cjs +1 -1
  191. package/dist/components/base/map/index.js +2 -2
  192. package/dist/components/base/navigation/index.cjs +1 -1
  193. package/dist/components/base/navigation/index.js +3 -3
  194. package/dist/components/base/popover-menu/index.cjs +1 -1
  195. package/dist/components/base/popover-menu/index.js +1 -1
  196. package/dist/components/base/spinner/index.cjs +1 -1
  197. package/dist/components/base/spinner/index.js +1 -1
  198. package/dist/components/base/table/data-table.d.ts.map +1 -1
  199. package/dist/components/base/table/index.cjs +1 -1
  200. package/dist/components/base/table/index.js +1 -1
  201. package/dist/components/composed/admin/index.cjs +1 -1
  202. package/dist/components/composed/admin/index.js +11 -11
  203. package/dist/components/composed/ai/index.cjs +1 -1
  204. package/dist/components/composed/ai/index.js +8 -8
  205. package/dist/components/composed/analytics/index.cjs +1 -1
  206. package/dist/components/composed/analytics/index.js +3 -3
  207. package/dist/components/composed/cards/index.cjs +1 -1
  208. package/dist/components/composed/cards/index.js +7 -7
  209. package/dist/components/composed/commerce/index.cjs +1 -1
  210. package/dist/components/composed/commerce/index.js +8 -8
  211. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  212. package/dist/components/composed/dark-surfaces/index.js +4 -4
  213. package/dist/components/composed/data-display/index.cjs +1 -1
  214. package/dist/components/composed/data-display/index.js +1 -1
  215. package/dist/components/composed/navigation/index.cjs +1 -1
  216. package/dist/components/composed/navigation/index.js +5 -5
  217. package/dist/components/composed/onboarding/index.cjs +1 -1
  218. package/dist/components/composed/onboarding/index.js +3 -3
  219. package/dist/components/composed/timelines/index.cjs +1 -1
  220. package/dist/components/composed/timelines/index.js +3 -3
  221. package/dist/components/features/activities/index.cjs +1 -1
  222. package/dist/components/features/activities/index.js +4 -4
  223. package/dist/components/features/ai-chat/index.cjs +1 -1
  224. package/dist/components/features/ai-chat/index.js +5 -5
  225. package/dist/components/features/card/index.cjs +1 -1
  226. package/dist/components/features/card/index.js +4 -4
  227. package/dist/components/features/comments/index.cjs +1 -1
  228. package/dist/components/features/comments/index.js +2 -2
  229. package/dist/components/features/data-view/index.cjs +1 -1
  230. package/dist/components/features/data-view/index.js +2 -2
  231. package/dist/components/features/event-log/index.cjs +1 -1
  232. package/dist/components/features/event-log/index.js +4 -4
  233. package/dist/components/features/filters/index.cjs +1 -1
  234. package/dist/components/features/filters/index.js +6 -6
  235. package/dist/components/features/global-search/index.cjs +1 -1
  236. package/dist/components/features/global-search/index.js +4 -4
  237. package/dist/components/features/kanban/index.cjs +1 -1
  238. package/dist/components/features/kanban/index.js +3 -3
  239. package/dist/components/features/media-library/index.cjs +1 -1
  240. package/dist/components/features/media-library/index.js +8 -8
  241. package/dist/components/features/mentions/index.cjs +1 -1
  242. package/dist/components/features/mentions/index.js +1 -1
  243. package/dist/components/features/overlays/index.cjs +1 -1
  244. package/dist/components/features/overlays/index.js +1 -1
  245. package/dist/components/features/products/index.cjs +1 -1
  246. package/dist/components/features/products/index.js +11 -11
  247. package/dist/components/features/resource/index.cjs +1 -1
  248. package/dist/components/features/resource/index.js +4 -4
  249. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  250. package/dist/components/features/rich-text-editor/index.js +1 -1
  251. package/dist/components/features/schema-form/index.cjs +1 -1
  252. package/dist/components/features/schema-form/index.js +8 -8
  253. package/dist/components/features/suggestions/index.cjs +1 -1
  254. package/dist/components/features/suggestions/index.js +1 -1
  255. package/dist/components/features/sync/index.cjs +1 -1
  256. package/dist/components/features/sync/index.js +2 -2
  257. package/dist/components/layout/app-shell/index.cjs +1 -1
  258. package/dist/components/layout/app-shell/index.js +1 -1
  259. package/dist/components/layout/auth/index.cjs +1 -1
  260. package/dist/components/layout/auth/index.js +1 -1
  261. package/dist/components/layout/header/index.cjs +1 -1
  262. package/dist/components/layout/header/index.js +1 -1
  263. package/dist/components/layout/hooks/index.cjs +1 -1
  264. package/dist/components/layout/hooks/index.js +1 -1
  265. package/dist/components/layout/index.cjs +1 -1
  266. package/dist/components/layout/index.js +8 -8
  267. package/dist/components/layout/page/index.cjs +1 -1
  268. package/dist/components/layout/page/index.js +1 -1
  269. package/dist/components/layout/settings/index.cjs +1 -1
  270. package/dist/components/layout/settings/index.js +1 -1
  271. package/dist/components/layout/sidebar/index.cjs +1 -1
  272. package/dist/components/layout/sidebar/index.js +2 -2
  273. package/dist/components/layout/workspace/index.cjs +1 -1
  274. package/dist/components/layout/workspace/index.js +1 -1
  275. package/dist/components/typography/index.cjs +1 -1
  276. package/dist/components/typography/index.js +1 -1
  277. package/dist/services/actions/index.cjs +1 -1
  278. package/dist/services/actions/index.js +1 -1
  279. package/dist/showcase/assets/AreaChart-CsIm9z7Y.js +6 -0
  280. package/dist/showcase/assets/CompositeItem-D9zznn01.js +1 -0
  281. package/dist/showcase/assets/CompositeRoot-CvxtZ81W.js +1 -0
  282. package/dist/showcase/assets/DialogTrigger-C-osQGHu.js +1 -0
  283. package/dist/showcase/assets/LabelableContext-_EE-HBND.js +1 -0
  284. package/dist/showcase/assets/PreviewLayout-KdEsSl3b.js +1 -0
  285. package/dist/showcase/assets/RadioGroup-4jOeNTc1.js +1 -0
  286. package/dist/showcase/assets/ScrollAreaCorner-CXTdUcaE.js +1 -0
  287. package/dist/showcase/assets/Separator-CHVXO6nj.js +1 -0
  288. package/dist/showcase/assets/ToolbarRootContext-CM5tQGGX.js +1 -0
  289. package/dist/showcase/assets/accordion-CA84bxb2.js +171 -0
  290. package/dist/showcase/assets/accordion-variants-DqWzAOO3.js +1 -0
  291. package/dist/showcase/assets/action-menu-D0q5z-Kq.js +1 -0
  292. package/dist/showcase/assets/actions-DnqxABJU.js +310 -0
  293. package/dist/showcase/assets/activities-BC9hoMy9.js +500 -0
  294. package/dist/showcase/assets/activities-feed-card-D6wGLpbH.js +1 -0
  295. package/dist/showcase/assets/admin-CMnMsugJ.js +140 -0
  296. package/dist/showcase/assets/ai-B6_sE9Zg.js +207 -0
  297. package/dist/showcase/assets/ai-artifact-BVvbsSJB.js +2 -0
  298. package/dist/showcase/assets/ai-chat-lcXeqJrA.js +568 -0
  299. package/dist/showcase/assets/ai-elements-B32o_UjE.js +387 -0
  300. package/dist/showcase/assets/ai-tool-call-BLrAioKz.js +1 -0
  301. package/dist/showcase/assets/alert-B1p1Grce.js +62 -0
  302. package/dist/showcase/assets/alert-BBiffYsY.js +93 -0
  303. package/dist/showcase/assets/alert-vH0nJ8J9.js +1 -0
  304. package/dist/showcase/assets/api-key-list-BrSc6V1y.js +1 -0
  305. package/dist/showcase/assets/api-key-list-CoKe_PaL.js +73 -0
  306. package/dist/showcase/assets/app-sidebar-R93lRPB4.js +1 -0
  307. package/dist/showcase/assets/arrow-down-xxVIADbv.js +1 -0
  308. package/dist/showcase/assets/arrow-left-DxnlnN8R.js +1 -0
  309. package/dist/showcase/assets/arrow-right-S5k93UPM.js +1 -0
  310. package/dist/showcase/assets/arrow-up-OlEVG7a-.js +1 -0
  311. package/dist/showcase/assets/arrow-up-right-j55bbl4b.js +1 -0
  312. package/dist/showcase/assets/avatar-BbiXvZq7.js +67 -0
  313. package/dist/showcase/assets/avatar-Bwpw-hQo.js +57 -0
  314. package/dist/showcase/assets/avatar-D0DKQ1lK.js +1 -0
  315. package/dist/showcase/assets/avatar-WyjSBov9.js +1 -0
  316. package/dist/showcase/assets/badge-BzLZQO3L.js +31 -0
  317. package/dist/showcase/assets/badge-check-TFWm1m3F.js +1 -0
  318. package/dist/showcase/assets/bell-CmuQlO_k.js +1 -0
  319. package/dist/showcase/assets/bot-Bu518AJB.js +1 -0
  320. package/dist/showcase/assets/box-D-wrSdOJ.js +1 -0
  321. package/dist/showcase/assets/braces-CgCdmdAl.js +1 -0
  322. package/dist/showcase/assets/brain-DkHdwgHO.js +1 -0
  323. package/dist/showcase/assets/brand-CpovnVoG.js +36 -0
  324. package/dist/showcase/assets/breadcrumb-BUc0WC5d.js +1 -0
  325. package/dist/showcase/assets/breadcrumb-Do_Dazt1.js +52 -0
  326. package/dist/showcase/assets/breadcrumbs-Bj21o2zm.js +1 -0
  327. package/dist/showcase/assets/briefcase-CQBh2kok.js +1 -0
  328. package/dist/showcase/assets/building-2-D07Ej6iR.js +1 -0
  329. package/dist/showcase/assets/button-CCZ4KEGQ.js +44 -0
  330. package/dist/showcase/assets/button-group-BTjeHOvz.js +1 -0
  331. package/dist/showcase/assets/buttons-D45Wwiwn.js +272 -0
  332. package/dist/showcase/assets/calendar-BsEWULmZ.js +16 -0
  333. package/dist/showcase/assets/calendar-CkPefzIO.js +1 -0
  334. package/dist/showcase/assets/calendar-DZlT3qTq.js +1 -0
  335. package/dist/showcase/assets/calendar-days-C9awTMru.js +1 -0
  336. package/dist/showcase/assets/camera-CQhMw-RD.js +1 -0
  337. package/dist/showcase/assets/card-CKrz_UHt.js +1 -0
  338. package/dist/showcase/assets/card-DZgZgjXO.js +188 -0
  339. package/dist/showcase/assets/card-primitives-CpkDLK3Y.js +1 -0
  340. package/dist/showcase/assets/card-radio-group-BjXwMI4v.js +1 -0
  341. package/dist/showcase/assets/cards-Cd24XZ9l.js +353 -0
  342. package/dist/showcase/assets/carousel-Doon04yO.js +449 -0
  343. package/dist/showcase/assets/cell-renderers-CTay3duH.js +1 -0
  344. package/dist/showcase/assets/chart-CkvbdpWw.js +358 -0
  345. package/dist/showcase/assets/chart-column-Dz57kUMl.js +1 -0
  346. package/dist/showcase/assets/checkbox-L-L4-wvA.js +1 -0
  347. package/dist/showcase/assets/checkbox-sP254E7e.js +1 -0
  348. package/dist/showcase/assets/chevron-down-CLc_a2Ua.js +1 -0
  349. package/dist/showcase/assets/chevron-left-CMRIGOJt.js +1 -0
  350. package/dist/showcase/assets/chevron-up-BDw6LdDZ.js +1 -0
  351. package/dist/showcase/assets/chevrons-up-down-C519RKki.js +1 -0
  352. package/dist/showcase/assets/circle-B_tOHWTY.js +1 -0
  353. package/dist/showcase/assets/circle-alert-B56AFULT.js +1 -0
  354. package/dist/showcase/assets/circle-check-B4XZj4Ty.js +1 -0
  355. package/dist/showcase/assets/circle-check-big-C0iEkwPB.js +1 -0
  356. package/dist/showcase/assets/circle-dot-DPdJZkc6.js +1 -0
  357. package/dist/showcase/assets/circle-question-mark-LTetdrq6.js +1 -0
  358. package/dist/showcase/assets/circle-x-B4FwM-sI.js +1 -0
  359. package/dist/showcase/assets/clock-3-DZhjBuw8.js +1 -0
  360. package/dist/showcase/assets/clock-B9Fna2Q3.js +1 -0
  361. package/dist/showcase/assets/code-xml-B6Xb_vIg.js +1 -0
  362. package/dist/showcase/assets/collapsible-Bf7Oo37i.js +27 -0
  363. package/dist/showcase/assets/collapsible-BfLeooy8.js +1 -0
  364. package/dist/showcase/assets/combobox-4NYfJznY.js +685 -0
  365. package/dist/showcase/assets/command-7jRRucHf.js +1 -0
  366. package/dist/showcase/assets/command-D56CjgNc.js +1 -0
  367. package/dist/showcase/assets/comment-composer-BWeXIZfK.js +1 -0
  368. package/dist/showcase/assets/comment-item-ChkiK-ut.js +1 -0
  369. package/dist/showcase/assets/comments-YnEop7v3.js +357 -0
  370. package/dist/showcase/assets/commerce-7XxWJChs.js +267 -0
  371. package/dist/showcase/assets/composite-CHcyYCsk.js +1 -0
  372. package/dist/showcase/assets/contact-card-BXw-VuBm.js +65 -0
  373. package/dist/showcase/assets/content-container-C4uopCBg.js +1 -0
  374. package/dist/showcase/assets/copyable-CjVYEJ0P.js +1 -0
  375. package/dist/showcase/assets/copyable-Cz2jW7yL.js +96 -0
  376. package/dist/showcase/assets/course-card-CvK3dw9W.js +77 -0
  377. package/dist/showcase/assets/cpu-Vk5WgcC1.js +1 -0
  378. package/dist/showcase/assets/credit-card-CaigqZGk.js +1 -0
  379. package/dist/showcase/assets/css-variables-hLaBmeMt.js +1190 -0
  380. package/dist/showcase/assets/currency-yO1giHp1.js +149 -0
  381. package/dist/showcase/assets/dark-surfaces-BPQnyk9a.js +90 -0
  382. package/dist/showcase/assets/data-view-CjjXn5VT.js +124 -0
  383. package/dist/showcase/assets/data-view-DF0n8uva.js +4 -0
  384. package/dist/showcase/assets/database-ChUBDe8E.js +1 -0
  385. package/dist/showcase/assets/date-block-DUg1Oyn4.js +1 -0
  386. package/dist/showcase/assets/date-picker-CoQPZa34.js +1 -0
  387. package/dist/showcase/assets/date-pickers-B-IUbyXw.js +73 -0
  388. package/dist/showcase/assets/dense-info-zVQSWqOU.js +106 -0
  389. package/dist/showcase/assets/design-system-consistency-Bnz_h3-6.js +264 -0
  390. package/dist/showcase/assets/dialog-BtilpgxJ.js +1 -0
  391. package/dist/showcase/assets/dialog-kf9WwmTC.js +1 -0
  392. package/dist/showcase/assets/display-utilities-BBzG5EPX.js +267 -0
  393. package/dist/showcase/assets/dist-9gFIhkw-.js +45 -0
  394. package/dist/showcase/assets/dist-CGpz_7Mu.js +1 -0
  395. package/dist/showcase/assets/dollar-sign-CWbYI3Pd.js +1 -0
  396. package/dist/showcase/assets/download-Bt_z-poH.js +1 -0
  397. package/dist/showcase/assets/dropdown-menu-C1_SYTHm.js +1 -0
  398. package/dist/showcase/assets/dropzone-D5BGVTnl.js +1 -0
  399. package/dist/showcase/assets/earth-sP5mIgG3.js +1 -0
  400. package/dist/showcase/assets/ellipsis-vertical-BD7kMOzj.js +1 -0
  401. package/dist/showcase/assets/ellipsis-yqIF49C8.js +1 -0
  402. package/dist/showcase/assets/empty-DIrJgtrh.js +1 -0
  403. package/dist/showcase/assets/empty-item-GgnZk2yf.js +49 -0
  404. package/dist/showcase/assets/empty-state-ZGKkJ6sf.js +190 -0
  405. package/dist/showcase/assets/empty-state-n_Fspzt-.js +1 -0
  406. package/dist/showcase/assets/enhanced-activities-CCw_hZnZ.js +357 -0
  407. package/dist/showcase/assets/enhanced-combobox-bBF-ADDs.js +1 -0
  408. package/dist/showcase/assets/esm-CyFPn936.js +2 -0
  409. package/dist/showcase/assets/event-calendar-Czo7yBDx.js +138 -0
  410. package/dist/showcase/assets/event-log-DJ3B3nMV.js +330 -0
  411. package/dist/showcase/assets/example-eGsLGIcp.js +1 -0
  412. package/dist/showcase/assets/external-link-DPOQEVWH.js +1 -0
  413. package/dist/showcase/assets/eye-CN92NVL0.js +1 -0
  414. package/dist/showcase/assets/feature-announcement-BXkSW17e.js +34 -0
  415. package/dist/showcase/assets/file-CFHePlKG.js +1 -0
  416. package/dist/showcase/assets/file-text--WYCYQMw.js +1 -0
  417. package/dist/showcase/assets/filter-layout-B35gGmcO.js +1 -0
  418. package/dist/showcase/assets/filters-GDW_oiT3.js +139 -0
  419. package/dist/showcase/assets/flag-XsT9XFPr.js +1 -0
  420. package/dist/showcase/assets/folder-open-RtsQ8vxf.js +1 -0
  421. package/dist/showcase/assets/form-field-Bijd1Gex.js +1 -0
  422. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +1 -0
  423. package/dist/showcase/assets/format-Ckw4OM66.js +1 -0
  424. package/dist/showcase/assets/forms-00bU7LN8.js +915 -0
  425. package/dist/showcase/assets/funnel-qu25WlXD.js +1 -0
  426. package/dist/showcase/assets/generic-Bf82Wiol.js +1 -0
  427. package/dist/showcase/assets/getPseudoElementBounds-BR4_m2HH.js +1 -0
  428. package/dist/showcase/assets/gift-D4GQoqzV.js +1 -0
  429. package/dist/showcase/assets/giftcard-cards-CMutwaAY.js +85 -0
  430. package/dist/showcase/assets/git-branch-B2QG2zRg.js +1 -0
  431. package/dist/showcase/assets/global-search-CRAB9TSF.js +1 -0
  432. package/dist/showcase/assets/global-search-DY0cKfhY.js +215 -0
  433. package/dist/showcase/assets/globe-BxZW28rG.js +1 -0
  434. package/dist/showcase/assets/gradient-card-CQGnXG8r.js +58 -0
  435. package/dist/showcase/assets/hash-CsRtIoKK.js +1 -0
  436. package/dist/showcase/assets/header-DzYOgZLP.js +1 -0
  437. package/dist/showcase/assets/header-notifications-D_CJPbvs.js +1 -0
  438. package/dist/showcase/assets/heart-B2YsYprq.js +1 -0
  439. package/dist/showcase/assets/hooks-BhUMA4Tb.js +220 -0
  440. package/dist/showcase/assets/house-HeRFNhI0.js +1 -0
  441. package/dist/showcase/assets/icon-badge-CpDkc-S0.js +37 -0
  442. package/dist/showcase/assets/icon-badge-eNEGgpAV.js +1 -0
  443. package/dist/showcase/assets/image-T88JyDag.js +1 -0
  444. package/dist/showcase/assets/inbox-DLrLLnTR.js +1 -0
  445. package/dist/showcase/assets/index-DDZl6kOS.js +10 -0
  446. package/dist/showcase/assets/index-nOkXemgw.css +2 -0
  447. package/dist/showcase/assets/inertValue-BajuuRy4.js +1 -0
  448. package/dist/showcase/assets/info-CNYfw2Yz.js +1 -0
  449. package/dist/showcase/assets/inline-stat-BN6yhDR5.js +15 -0
  450. package/dist/showcase/assets/inline-stat-Bqw3lVfk.js +1 -0
  451. package/dist/showcase/assets/input-C-9K6F0N.js +1 -0
  452. package/dist/showcase/assets/input-DaZzfkZV.js +1 -0
  453. package/dist/showcase/assets/input-group-DE-Xdhv4.js +1 -0
  454. package/dist/showcase/assets/input-group-DIQZnytn.js +47 -0
  455. package/dist/showcase/assets/inputs-Cl_JgSR4.js +155 -0
  456. package/dist/showcase/assets/installation-DdhD4Dkq.js +134 -0
  457. package/dist/showcase/assets/invoice-header-DOs2ACqQ.js +36 -0
  458. package/dist/showcase/assets/invoice-items-1EuA62mF.js +36 -0
  459. package/dist/showcase/assets/invoice-mini-vCrYEtWp.js +14 -0
  460. package/dist/showcase/assets/invoice-table--mDTs1Iz.js +30 -0
  461. package/dist/showcase/assets/isSameDay-BNB1yam4.js +1 -0
  462. package/dist/showcase/assets/isToday-BugOpGJC.js +1 -0
  463. package/dist/showcase/assets/italic-Ck4UD2ZT.js +1 -0
  464. package/dist/showcase/assets/item-BcesxqFS.js +139 -0
  465. package/dist/showcase/assets/item-BgPlwUMv.js +1 -0
  466. package/dist/showcase/assets/item-CB9k_rmo.js +1 -0
  467. package/dist/showcase/assets/kanban-cPuSVqWY.js +188 -0
  468. package/dist/showcase/assets/key-round-BmYjd5dk.js +1 -0
  469. package/dist/showcase/assets/label-BTIBJBqN.js +1 -0
  470. package/dist/showcase/assets/languages-he6FNXRs.js +1 -0
  471. package/dist/showcase/assets/layers-B_48DtOz.js +1 -0
  472. package/dist/showcase/assets/layout-app-shell-zwLv6jTP.js +608 -0
  473. package/dist/showcase/assets/layout-auth-2Zv5lr52.js +790 -0
  474. package/dist/showcase/assets/layout-containers-Dzw3xlKn.js +101 -0
  475. package/dist/showcase/assets/layout-header-TJ-WVmG3.js +203 -0
  476. package/dist/showcase/assets/layout-page-CIVQCKXK.js +314 -0
  477. package/dist/showcase/assets/layout-primitives-i_O81fzT.js +34 -0
  478. package/dist/showcase/assets/layout-sidebar-eH_pwBq_.js +224 -0
  479. package/dist/showcase/assets/layout-users-CWSaFBLj.js +117 -0
  480. package/dist/showcase/assets/layout-workspace-w3oe32GE.js +191 -0
  481. package/dist/showcase/assets/lib-CoS0xjP8.js +1 -0
  482. package/dist/showcase/assets/list-checks-DecRPpK3.js +1 -0
  483. package/dist/showcase/assets/lock-D9f8uXol.js +1 -0
  484. package/dist/showcase/assets/lock-keyhole-C20eixH6.js +1 -0
  485. package/dist/showcase/assets/mail-CVgP8Qlo.js +1 -0
  486. package/dist/showcase/assets/mail-check-mplTKcSH.js +1 -0
  487. package/dist/showcase/assets/map-B6OGeOup.js +124 -0
  488. package/dist/showcase/assets/map-pin-BZXSwrzT.js +1 -0
  489. package/dist/showcase/assets/media-library-DSlVIM1Q.js +699 -0
  490. package/dist/showcase/assets/mention-inline-suggestions-CNAEeXgy.js +1 -0
  491. package/dist/showcase/assets/mentions-Cb3g4hDN.js +138 -0
  492. package/dist/showcase/assets/menus-CE0Hlj8N.js +171 -0
  493. package/dist/showcase/assets/message-square-HliU8vbW.js +1 -0
  494. package/dist/showcase/assets/metadata-list-CJ5v5Bvc.js +286 -0
  495. package/dist/showcase/assets/metadata-list-DY92-pw2.js +1 -0
  496. package/dist/showcase/assets/metric-DxMTjIvU.js +1 -0
  497. package/dist/showcase/assets/metric-bar-cW9nWCRl.js +1 -0
  498. package/dist/showcase/assets/metric-grid-CvfO52X1.js +1 -0
  499. package/dist/showcase/assets/metric-trend-chip-BmjQdRus.js +1 -0
  500. package/dist/showcase/assets/metrics-analytics-bar-BZqB5d1y.js +44 -0
  501. package/dist/showcase/assets/metrics-analytics-cards-jAhlrQCI.js +50 -0
  502. package/dist/showcase/assets/metrics-comparison-DURZ6qEL.js +76 -0
  503. package/dist/showcase/assets/metrics-heatmap-HhJDBguh.js +27 -0
  504. package/dist/showcase/assets/metrics-inline-badge-Dq5k-P6F.js +17 -0
  505. package/dist/showcase/assets/metrics-kpi-row-DXzhwa6z.js +31 -0
  506. package/dist/showcase/assets/metrics-micro-grid-C6O5b0wP.js +42 -0
  507. package/dist/showcase/assets/metrics-overview-Hv2mseb3.js +192 -0
  508. package/dist/showcase/assets/metrics-stat-cards-CW42vBCS.js +54 -0
  509. package/dist/showcase/assets/minus-BW62vCxf.js +1 -0
  510. package/dist/showcase/assets/money-display-CAdGk5Lr.js +1 -0
  511. package/dist/showcase/assets/month-year-picker-dHuvgz1E.js +1 -0
  512. package/dist/showcase/assets/navigation-C4uSLvbZ.js +90 -0
  513. package/dist/showcase/assets/navigation-SjsZrtIc.js +231 -0
  514. package/dist/showcase/assets/navigation-extras-CMVNVskk.js +43 -0
  515. package/dist/showcase/assets/onboarding-checklist-C1jwRdMU.js +119 -0
  516. package/dist/showcase/assets/overflow-tab-bar-BYFLpl5w.js +1 -0
  517. package/dist/showcase/assets/overlays-0Y8MAz39.js +159 -0
  518. package/dist/showcase/assets/overlays-ClOnjahL.js +408 -0
  519. package/dist/showcase/assets/overview-B5ztGmTp.js +184 -0
  520. package/dist/showcase/assets/package-check-MeSw6bS4.js +1 -0
  521. package/dist/showcase/assets/package-vYJ0q0QM.js +1 -0
  522. package/dist/showcase/assets/page-4lMKtBQ7.js +1 -0
  523. package/dist/showcase/assets/page-action-button-C5-TGSzy.js +1 -0
  524. package/dist/showcase/assets/page-header-C_-KYryO.js +1 -0
  525. package/dist/showcase/assets/pagination-D3L3Iwus.js +1 -0
  526. package/dist/showcase/assets/pagination-dZXPxwHx.js +42 -0
  527. package/dist/showcase/assets/paperclip-BZhdPOw8.js +1 -0
  528. package/dist/showcase/assets/password-input-CDSMtGxt.js +1 -0
  529. package/dist/showcase/assets/pencil-DiYr3CZ9.js +1 -0
  530. package/dist/showcase/assets/phone-Dm5qzlG8.js +1 -0
  531. package/dist/showcase/assets/plus-pfGaA3St.js +1 -0
  532. package/dist/showcase/assets/popover-CjVWDO7C.js +1 -0
  533. package/dist/showcase/assets/popover-menu-JcZyGV3Y.js +1 -0
  534. package/dist/showcase/assets/popover-pZ4Jbp0s.js +1 -0
  535. package/dist/showcase/assets/products-C62MKtAR.js +423 -0
  536. package/dist/showcase/assets/progress-Btw-ZUaU.js +18 -0
  537. package/dist/showcase/assets/progress-DpB5LL6R.js +1 -0
  538. package/dist/showcase/assets/props-table-Bjc9IHmp.js +1 -0
  539. package/dist/showcase/assets/quote-DcxVd1fj.js +1 -0
  540. package/dist/showcase/assets/receipt-BHns-S5Q.js +1 -0
  541. package/dist/showcase/assets/receipt-text-L0aYasyt.js +1 -0
  542. package/dist/showcase/assets/refinement-guide-BBOGBJ4I.js +189 -0
  543. package/dist/showcase/assets/refresh-cw-z6mlm0HI.js +1 -0
  544. package/dist/showcase/assets/resolveValueLabel-hsarzg5A.js +1 -0
  545. package/dist/showcase/assets/resource-CIn_zKZ4.js +139 -0
  546. package/dist/showcase/assets/resource-DxktLgEK.js +1 -0
  547. package/dist/showcase/assets/resource-selector-card-dkcEQ6bl.js +43 -0
  548. package/dist/showcase/assets/rich-text-editor-Dd-rWisw.js +124 -0
  549. package/dist/showcase/assets/rich-text-editor-DvJMFj48.js +143 -0
  550. package/dist/showcase/assets/rotate-ccw-DEz6nb5P.js +1 -0
  551. package/dist/showcase/assets/route-BeXaXTk8.js +1 -0
  552. package/dist/showcase/assets/save-EE7Tc5OT.js +1 -0
  553. package/dist/showcase/assets/schema-form-RK9Zpz1E.js +327 -0
  554. package/dist/showcase/assets/scroll-area-BejQJ0Q1.js +32 -0
  555. package/dist/showcase/assets/scroll-area-DS8LJ7LG.js +1 -0
  556. package/dist/showcase/assets/section-Cv8i4DIx.js +1 -0
  557. package/dist/showcase/assets/select-Cuy3YKW9.js +1 -0
  558. package/dist/showcase/assets/select-qFy1jm91.js +1 -0
  559. package/dist/showcase/assets/send-CXv0ST9u.js +1 -0
  560. package/dist/showcase/assets/separator-CecGyBaV.js +1 -0
  561. package/dist/showcase/assets/separator-CqtFQXrk.js +28 -0
  562. package/dist/showcase/assets/settings-2-CCeMwMOj.js +1 -0
  563. package/dist/showcase/assets/settings-CXjN6wTC.js +1 -0
  564. package/dist/showcase/assets/sheet-Csyrmkqp.js +1 -0
  565. package/dist/showcase/assets/shield-DR0ZfAFA.js +1 -0
  566. package/dist/showcase/assets/shield-alert-Bp1iFJ2q.js +1 -0
  567. package/dist/showcase/assets/shield-check-ClL4B_Cd.js +1 -0
  568. package/dist/showcase/assets/shopping-bag-DnSmbPUX.js +1 -0
  569. package/dist/showcase/assets/showcase-CQKt5VGi.js +132 -0
  570. package/dist/showcase/assets/sidebar-CXy94md1.js +1 -0
  571. package/dist/showcase/assets/sidebar.context-C8gkOwJ5.js +1 -0
  572. package/dist/showcase/assets/skeleton-B8wC5P66.js +29 -0
  573. package/dist/showcase/assets/skeleton-DBlCLlBC.js +1 -0
  574. package/dist/showcase/assets/slider-BcjkNx6W.js +1 -0
  575. package/dist/showcase/assets/smart-card-Cg6rtWH9.js +1 -0
  576. package/dist/showcase/assets/sonner-ZGBQ13wS.js +22 -0
  577. package/dist/showcase/assets/sortable.esm-CGFWc-Cn.js +5 -0
  578. package/dist/showcase/assets/sparkles-q1-9JZqa.js +1 -0
  579. package/dist/showcase/assets/spinner-CKg8QLHu.js +1 -0
  580. package/dist/showcase/assets/spinner-D1Ao9j9T.js +49 -0
  581. package/dist/showcase/assets/spinner-oahLIkgb.js +30 -0
  582. package/dist/showcase/assets/square-pen-DZ3bQJia.js +1 -0
  583. package/dist/showcase/assets/stacked-avatars-CKPtb3Hj.js +1 -0
  584. package/dist/showcase/assets/star-suetD-KI.js +1 -0
  585. package/dist/showcase/assets/startOfDay-OjIsUeiv.js +1 -0
  586. package/dist/showcase/assets/styles-1mYOoC2k.js +1 -0
  587. package/dist/showcase/assets/suggestions-DLYaI-In.js +126 -0
  588. package/dist/showcase/assets/switch-CTTrJNwo.js +1 -0
  589. package/dist/showcase/assets/switch-ChJWWmxN.js +1 -0
  590. package/dist/showcase/assets/sync-DsHYydvo.js +124 -0
  591. package/dist/showcase/assets/table-Ck2ptin2.js +686 -0
  592. package/dist/showcase/assets/table-DyJ9oADQ.js +1 -0
  593. package/dist/showcase/assets/table-actions-COU4zHfh.js +1 -0
  594. package/dist/showcase/assets/tabs-Bl_RHGIw.js +1 -0
  595. package/dist/showcase/assets/tabs-DS-4VSkb.js +19 -0
  596. package/dist/showcase/assets/tags-input-BlYzb5fF.js +1 -0
  597. package/dist/showcase/assets/text-button-OPdNs3fb.js +1 -0
  598. package/dist/showcase/assets/text-link-D27gqGeg.js +1 -0
  599. package/dist/showcase/assets/textarea-DpC7J5F-.js +1 -0
  600. package/dist/showcase/assets/textarea-JtXUjxvc.js +1 -0
  601. package/dist/showcase/assets/timelines-DQM-B4Xo.js +200 -0
  602. package/dist/showcase/assets/toggle-group-CMneKREH.js +1 -0
  603. package/dist/showcase/assets/toggles-CAXXgjO_.js +71 -0
  604. package/dist/showcase/assets/toggles-group-CHRqrpoM.js +32 -0
  605. package/dist/showcase/assets/tooltip-CwGZAioX.js +31 -0
  606. package/dist/showcase/assets/trash-2-BpMb9Zbb.js +1 -0
  607. package/dist/showcase/assets/trending-up-B1BzitCg.js +1 -0
  608. package/dist/showcase/assets/truck-CDSE5-HZ.js +1 -0
  609. package/dist/showcase/assets/typography-BoNJ1hRZ.js +223 -0
  610. package/dist/showcase/assets/ui-badge-Djh6NiB2.js +28 -0
  611. package/dist/showcase/assets/ui-card-QC_rl_H2.js +30 -0
  612. package/dist/showcase/assets/ui-table-qAGsc3qN.js +42 -0
  613. package/dist/showcase/assets/upload-tray-DKCJgW5u.js +138 -0
  614. package/dist/showcase/assets/use-layout-link-BPlsZ8Ys.js +1 -0
  615. package/dist/showcase/assets/useAnchoredPopupScrollLock-526MebAC.js +1 -0
  616. package/dist/showcase/assets/useAriaLabelledBy-CqySZiH9.js +1 -0
  617. package/dist/showcase/assets/useCollapsiblePanel-DWX7LbGX.js +1 -0
  618. package/dist/showcase/assets/useCompositeItem-DGEBUXgE.js +1 -0
  619. package/dist/showcase/assets/useCompositeListItem-B2nuNlc2.js +1 -0
  620. package/dist/showcase/assets/useLabelableId-DY4O1lpt.js +1 -0
  621. package/dist/showcase/assets/useOpenInteractionType-DxwujDvt.js +1 -0
  622. package/dist/showcase/assets/useRender-BPoNv-Lm.js +1 -0
  623. package/dist/showcase/assets/useTriggerFocusGuards-BnOSAjfy.js +1 -0
  624. package/dist/showcase/assets/useValueChanged-CXmDOWxx.js +1 -0
  625. package/dist/showcase/assets/user-BGchdtV_.js +1 -0
  626. package/dist/showcase/assets/user-plus-BifI_xVA.js +1 -0
  627. package/dist/showcase/assets/users-Cl5yYqdg.js +1 -0
  628. package/dist/showcase/assets/vendor-profile-BNW4FYna.js +37 -0
  629. package/dist/showcase/assets/video-BtQPixYN.js +1 -0
  630. package/dist/showcase/assets/wrench-CRalc5fG.js +1 -0
  631. package/dist/showcase/assets/x-D6hUY89S.js +1 -0
  632. package/dist/showcase/assets/zap-v_qbqeI5.js +1 -0
  633. package/dist/showcase/index.html +2 -2
  634. package/dist/style.css +1 -1
  635. package/package.json +1 -1
  636. package/src/css/themes/shadcn.default.css +6 -6
  637. package/src/css/tokens/foundation.css +6 -6
  638. package/dist/_shared/accordion-B9EjlZLY.js +0 -135
  639. package/dist/_shared/accordion-B9EjlZLY.js.map +0 -1
  640. package/dist/_shared/accordion-IFDIc0E7.cjs +0 -2
  641. package/dist/_shared/accordion-IFDIc0E7.cjs.map +0 -1
  642. package/dist/_shared/action-menu-B6yFRDz1.cjs +0 -2
  643. package/dist/_shared/action-menu-B6yFRDz1.cjs.map +0 -1
  644. package/dist/_shared/action-menu-CNS-fwQr.js +0 -96
  645. package/dist/_shared/action-menu-CNS-fwQr.js.map +0 -1
  646. package/dist/_shared/ai-artifact-B3qhuiKC.js +0 -1099
  647. package/dist/_shared/ai-artifact-B3qhuiKC.js.map +0 -1
  648. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +0 -3
  649. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +0 -1
  650. package/dist/_shared/alert-V0V36Sny.cjs +0 -2
  651. package/dist/_shared/alert-V0V36Sny.cjs.map +0 -1
  652. package/dist/_shared/alert-m-4s0Hqq.js +0 -81
  653. package/dist/_shared/alert-m-4s0Hqq.js.map +0 -1
  654. package/dist/_shared/app-shell-D3eGUtL-.js +0 -69
  655. package/dist/_shared/app-shell-D3eGUtL-.js.map +0 -1
  656. package/dist/_shared/app-shell-QJHARDMB.cjs +0 -2
  657. package/dist/_shared/app-shell-QJHARDMB.cjs.map +0 -1
  658. package/dist/_shared/auth-BZY91F5_.cjs +0 -2
  659. package/dist/_shared/auth-BZY91F5_.cjs.map +0 -1
  660. package/dist/_shared/auth-DcotjEbY.js +0 -643
  661. package/dist/_shared/auth-DcotjEbY.js.map +0 -1
  662. package/dist/_shared/badge-BeSKxX1u.cjs +0 -2
  663. package/dist/_shared/badge-BeSKxX1u.cjs.map +0 -1
  664. package/dist/_shared/badge-a2Z3K5aQ.js +0 -110
  665. package/dist/_shared/badge-a2Z3K5aQ.js.map +0 -1
  666. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +0 -2
  667. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +0 -1
  668. package/dist/_shared/breadcrumbs-B57Unsoe.js +0 -105
  669. package/dist/_shared/breadcrumbs-B57Unsoe.js.map +0 -1
  670. package/dist/_shared/button-Bd5bEIiB.cjs +0 -2
  671. package/dist/_shared/button-Bd5bEIiB.cjs.map +0 -1
  672. package/dist/_shared/button-DHksjMvc.js +0 -189
  673. package/dist/_shared/button-DHksjMvc.js.map +0 -1
  674. package/dist/_shared/buttons-Bek9F7qK.cjs +0 -2
  675. package/dist/_shared/buttons-Bek9F7qK.cjs.map +0 -1
  676. package/dist/_shared/buttons-DcynMPnE.js +0 -137
  677. package/dist/_shared/buttons-DcynMPnE.js.map +0 -1
  678. package/dist/_shared/card-radio-group-C2p_iBal.cjs +0 -2
  679. package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +0 -1
  680. package/dist/_shared/card-radio-group-Fdi1Cz1j.js +0 -150
  681. package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +0 -1
  682. package/dist/_shared/cards-C1ythc0Q.js +0 -354
  683. package/dist/_shared/cards-C1ythc0Q.js.map +0 -1
  684. package/dist/_shared/cards-GSYfJ-oX.cjs +0 -2
  685. package/dist/_shared/cards-GSYfJ-oX.cjs.map +0 -1
  686. package/dist/_shared/combobox-BIe72dV3.js +0 -954
  687. package/dist/_shared/combobox-BIe72dV3.js.map +0 -1
  688. package/dist/_shared/combobox-CJiFDoTi.cjs +0 -2
  689. package/dist/_shared/combobox-CJiFDoTi.cjs.map +0 -1
  690. package/dist/_shared/comments-CmljtbAW.js +0 -952
  691. package/dist/_shared/comments-CmljtbAW.js.map +0 -1
  692. package/dist/_shared/comments-ColUq7eh.cjs +0 -2
  693. package/dist/_shared/comments-ColUq7eh.cjs.map +0 -1
  694. package/dist/_shared/copyable-Dopk9pEJ.js +0 -38
  695. package/dist/_shared/copyable-Dopk9pEJ.js.map +0 -1
  696. package/dist/_shared/copyable-rQwxsTJ3.cjs +0 -2
  697. package/dist/_shared/copyable-rQwxsTJ3.cjs.map +0 -1
  698. package/dist/_shared/data-display-BTsCY7A5.js +0 -1873
  699. package/dist/_shared/data-display-BTsCY7A5.js.map +0 -1
  700. package/dist/_shared/data-display-BdGQMXit.cjs +0 -2
  701. package/dist/_shared/data-display-BdGQMXit.cjs.map +0 -1
  702. package/dist/_shared/date-picker-BiUgIkjP.cjs +0 -2
  703. package/dist/_shared/date-picker-BiUgIkjP.cjs.map +0 -1
  704. package/dist/_shared/date-picker-DFkLiveH.js +0 -1361
  705. package/dist/_shared/date-picker-DFkLiveH.js.map +0 -1
  706. package/dist/_shared/date-pickers-C86tVD8e.cjs +0 -2
  707. package/dist/_shared/date-pickers-C86tVD8e.cjs.map +0 -1
  708. package/dist/_shared/date-pickers-D4oxOOHE.js +0 -329
  709. package/dist/_shared/date-pickers-D4oxOOHE.js.map +0 -1
  710. package/dist/_shared/display-B0wLVN8t.js +0 -986
  711. package/dist/_shared/display-B0wLVN8t.js.map +0 -1
  712. package/dist/_shared/display-Bin2vVex.cjs +0 -2
  713. package/dist/_shared/display-Bin2vVex.cjs.map +0 -1
  714. package/dist/_shared/form-sizing-C51oI3Di.js +0 -42
  715. package/dist/_shared/form-sizing-C51oI3Di.js.map +0 -1
  716. package/dist/_shared/form-sizing-Co53Drri.cjs +0 -2
  717. package/dist/_shared/form-sizing-Co53Drri.cjs.map +0 -1
  718. package/dist/_shared/forms-CEE1te78.cjs +0 -2
  719. package/dist/_shared/forms-CEE1te78.cjs.map +0 -1
  720. package/dist/_shared/forms-CQoGvG7q.js +0 -3533
  721. package/dist/_shared/forms-CQoGvG7q.js.map +0 -1
  722. package/dist/_shared/header-B9IPDQRW.js +0 -447
  723. package/dist/_shared/header-B9IPDQRW.js.map +0 -1
  724. package/dist/_shared/header-C_1x4-rd.cjs +0 -2
  725. package/dist/_shared/header-C_1x4-rd.cjs.map +0 -1
  726. package/dist/_shared/hooks---vunGQ6.js +0 -95
  727. package/dist/_shared/hooks---vunGQ6.js.map +0 -1
  728. package/dist/_shared/hooks-CjVzmgvY.cjs +0 -2
  729. package/dist/_shared/hooks-CjVzmgvY.cjs.map +0 -1
  730. package/dist/_shared/input-CB6hxh-5.cjs +0 -2
  731. package/dist/_shared/input-CB6hxh-5.cjs.map +0 -1
  732. package/dist/_shared/input-CfnHBT--.js +0 -182
  733. package/dist/_shared/input-CfnHBT--.js.map +0 -1
  734. package/dist/_shared/item-Xs-fgzaT.js +0 -226
  735. package/dist/_shared/item-Xs-fgzaT.js.map +0 -1
  736. package/dist/_shared/item-eUP9Rtmg.cjs +0 -2
  737. package/dist/_shared/item-eUP9Rtmg.cjs.map +0 -1
  738. package/dist/_shared/layout-BXrQqUKq.js +0 -262
  739. package/dist/_shared/layout-BXrQqUKq.js.map +0 -1
  740. package/dist/_shared/layout-DWicdsPI.cjs +0 -2
  741. package/dist/_shared/layout-DWicdsPI.cjs.map +0 -1
  742. package/dist/_shared/mentions-BahbwDwU.js +0 -506
  743. package/dist/_shared/mentions-BahbwDwU.js.map +0 -1
  744. package/dist/_shared/mentions-aHalksbt.cjs +0 -2
  745. package/dist/_shared/mentions-aHalksbt.cjs.map +0 -1
  746. package/dist/_shared/money-display-BLPNMmiT.cjs +0 -2
  747. package/dist/_shared/money-display-BLPNMmiT.cjs.map +0 -1
  748. package/dist/_shared/money-display-D_-Cb8-9.js +0 -198
  749. package/dist/_shared/money-display-D_-Cb8-9.js.map +0 -1
  750. package/dist/_shared/navigation-BcYAwgzo.js +0 -436
  751. package/dist/_shared/navigation-BcYAwgzo.js.map +0 -1
  752. package/dist/_shared/navigation-DAB7uuBj.cjs +0 -2
  753. package/dist/_shared/navigation-DAB7uuBj.cjs.map +0 -1
  754. package/dist/_shared/overlays-DW8OIK5R.js +0 -735
  755. package/dist/_shared/overlays-DW8OIK5R.js.map +0 -1
  756. package/dist/_shared/overlays-Du65iCkx.cjs +0 -2
  757. package/dist/_shared/overlays-Du65iCkx.cjs.map +0 -1
  758. package/dist/_shared/popover-menu-qxBZlTck.js +0 -93
  759. package/dist/_shared/popover-menu-qxBZlTck.js.map +0 -1
  760. package/dist/_shared/popover-menu-z9QTjl4o.cjs +0 -2
  761. package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +0 -1
  762. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +0 -2
  763. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +0 -1
  764. package/dist/_shared/rich-text-editor-VIBlL0x3.js +0 -620
  765. package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +0 -1
  766. package/dist/_shared/settings-Bfr6PgSi.cjs +0 -2
  767. package/dist/_shared/settings-Bfr6PgSi.cjs.map +0 -1
  768. package/dist/_shared/settings-CrPaYr4A.js +0 -143
  769. package/dist/_shared/settings-CrPaYr4A.js.map +0 -1
  770. package/dist/_shared/sidebar-CDOLD8fN.js +0 -548
  771. package/dist/_shared/sidebar-CDOLD8fN.js.map +0 -1
  772. package/dist/_shared/sidebar-DcsxeNml.cjs +0 -2
  773. package/dist/_shared/sidebar-DcsxeNml.cjs.map +0 -1
  774. package/dist/_shared/spinner-D35zNriU.cjs +0 -2
  775. package/dist/_shared/spinner-D35zNriU.cjs.map +0 -1
  776. package/dist/_shared/spinner-DMC2IIml.js +0 -67
  777. package/dist/_shared/spinner-DMC2IIml.js.map +0 -1
  778. package/dist/_shared/table-B_pqCQxC.js +0 -1377
  779. package/dist/_shared/table-B_pqCQxC.js.map +0 -1
  780. package/dist/_shared/table-CGVOXtdv.cjs +0 -2
  781. package/dist/_shared/table-CGVOXtdv.cjs.map +0 -1
  782. package/dist/_shared/textarea-B24qgdmd.cjs +0 -2
  783. package/dist/_shared/textarea-B24qgdmd.cjs.map +0 -1
  784. package/dist/_shared/textarea-ChLRmmVU.js +0 -118
  785. package/dist/_shared/textarea-ChLRmmVU.js.map +0 -1
  786. package/dist/_shared/typography-CO9uwZhF.cjs +0 -2
  787. package/dist/_shared/typography-CO9uwZhF.cjs.map +0 -1
  788. package/dist/_shared/typography-DE0NGEIE.js +0 -201
  789. package/dist/_shared/typography-DE0NGEIE.js.map +0 -1
  790. package/dist/_shared/workspace-C1twu23r.cjs +0 -2
  791. package/dist/_shared/workspace-C1twu23r.cjs.map +0 -1
  792. package/dist/_shared/workspace-CkOZLdcN.js +0 -357
  793. package/dist/_shared/workspace-CkOZLdcN.js.map +0 -1
  794. package/dist/showcase/assets/AreaChart-WJREayr9.js +0 -6
  795. package/dist/showcase/assets/CompositeItem-CY3XmFuI.js +0 -1
  796. package/dist/showcase/assets/CompositeRoot-BPMF0t1F.js +0 -1
  797. package/dist/showcase/assets/DialogTrigger-BzaF3YN8.js +0 -1
  798. package/dist/showcase/assets/LabelableContext-LKvvFFnV.js +0 -1
  799. package/dist/showcase/assets/PreviewLayout-B0n7l00P.js +0 -1
  800. package/dist/showcase/assets/RadioGroup-VBtGFETg.js +0 -1
  801. package/dist/showcase/assets/ScrollAreaCorner-BimGwdGs.js +0 -1
  802. package/dist/showcase/assets/Separator-BfKe0YiY.js +0 -1
  803. package/dist/showcase/assets/ToolbarRootContext-Cscyv1PN.js +0 -1
  804. package/dist/showcase/assets/accordion-BEN0VkL4.js +0 -171
  805. package/dist/showcase/assets/accordion-variants-QFG3H38z.js +0 -1
  806. package/dist/showcase/assets/action-menu-Bfw1tFqM.js +0 -1
  807. package/dist/showcase/assets/actions-CFpHs5IC.js +0 -310
  808. package/dist/showcase/assets/activities-CDxlaghU.js +0 -500
  809. package/dist/showcase/assets/activities-feed-card-BO1kcjRK.js +0 -1
  810. package/dist/showcase/assets/admin-DFpHXeuv.js +0 -140
  811. package/dist/showcase/assets/ai-DyO6VqQP.js +0 -207
  812. package/dist/showcase/assets/ai-artifact-MVA3ikv6.js +0 -2
  813. package/dist/showcase/assets/ai-chat-D-xcp6Jf.js +0 -568
  814. package/dist/showcase/assets/ai-elements-DlFqIOYp.js +0 -387
  815. package/dist/showcase/assets/ai-tool-call-DedG9TdK.js +0 -1
  816. package/dist/showcase/assets/alert-CmRK2lOe.js +0 -1
  817. package/dist/showcase/assets/alert-DCIVryEp.js +0 -62
  818. package/dist/showcase/assets/alert-DDP3Ktic.js +0 -93
  819. package/dist/showcase/assets/api-key-list-CWa997YX.js +0 -1
  820. package/dist/showcase/assets/api-key-list-mTPebHF3.js +0 -73
  821. package/dist/showcase/assets/app-sidebar-Cnfk9z5K.js +0 -1
  822. package/dist/showcase/assets/arrow-down-CCYWFimd.js +0 -1
  823. package/dist/showcase/assets/arrow-left-CrYjfZJ0.js +0 -1
  824. package/dist/showcase/assets/arrow-right-eLxbBrdm.js +0 -1
  825. package/dist/showcase/assets/arrow-up-kA33fcPv.js +0 -1
  826. package/dist/showcase/assets/arrow-up-right-BSWGQVDB.js +0 -1
  827. package/dist/showcase/assets/avatar-BDGhB3aA.js +0 -57
  828. package/dist/showcase/assets/avatar-CLBQvnYG.js +0 -1
  829. package/dist/showcase/assets/avatar-WUMW3Qjo.js +0 -1
  830. package/dist/showcase/assets/avatar-cKSNuTzf.js +0 -67
  831. package/dist/showcase/assets/badge--mqVg8Ry.js +0 -31
  832. package/dist/showcase/assets/badge-check-D7YjWqnm.js +0 -1
  833. package/dist/showcase/assets/bell-6YyocFK6.js +0 -1
  834. package/dist/showcase/assets/bot-BC4pGAB3.js +0 -1
  835. package/dist/showcase/assets/box-CPGIu4Nv.js +0 -1
  836. package/dist/showcase/assets/braces-9jywZtTA.js +0 -1
  837. package/dist/showcase/assets/brain-wf_S427C.js +0 -1
  838. package/dist/showcase/assets/brand-78lhbKSW.js +0 -36
  839. package/dist/showcase/assets/breadcrumb-6XHObtqO.js +0 -1
  840. package/dist/showcase/assets/breadcrumb-BVrrS53_.js +0 -52
  841. package/dist/showcase/assets/breadcrumbs-BwC3Iaae.js +0 -1
  842. package/dist/showcase/assets/briefcase-BViWYew9.js +0 -1
  843. package/dist/showcase/assets/building-2-CwR3gV1I.js +0 -1
  844. package/dist/showcase/assets/button-BWwsy37B.js +0 -44
  845. package/dist/showcase/assets/button-group-BTiMRQIO.js +0 -1
  846. package/dist/showcase/assets/buttons-D9pH8hPs.js +0 -272
  847. package/dist/showcase/assets/calendar-Bzl2i1lu.js +0 -1
  848. package/dist/showcase/assets/calendar-CNMlC7Fn.js +0 -16
  849. package/dist/showcase/assets/calendar-D5NdEmaD.js +0 -1
  850. package/dist/showcase/assets/calendar-days-j8QDBUc5.js +0 -1
  851. package/dist/showcase/assets/camera-Cwb84N8a.js +0 -1
  852. package/dist/showcase/assets/card-CX3vQ2Te.js +0 -1
  853. package/dist/showcase/assets/card-FLJkfdKP.js +0 -188
  854. package/dist/showcase/assets/card-primitives-C2s13Uvp.js +0 -1
  855. package/dist/showcase/assets/card-radio-group-BP27dErL.js +0 -1
  856. package/dist/showcase/assets/cards-DcdxRM9W.js +0 -354
  857. package/dist/showcase/assets/carousel-CTKyiHD2.js +0 -449
  858. package/dist/showcase/assets/cell-renderers-ouSypXTE.js +0 -1
  859. package/dist/showcase/assets/chart-CMsMyCah.js +0 -358
  860. package/dist/showcase/assets/chart-column-BrwpEFzy.js +0 -1
  861. package/dist/showcase/assets/checkbox-4qgEfnjv.js +0 -1
  862. package/dist/showcase/assets/checkbox-ratLYBAF.js +0 -1
  863. package/dist/showcase/assets/chevron-down-BInaIfd1.js +0 -1
  864. package/dist/showcase/assets/chevron-left-Bjy3FJ_M.js +0 -1
  865. package/dist/showcase/assets/chevron-up-Ufl6UEyV.js +0 -1
  866. package/dist/showcase/assets/chevrons-up-down-CrOH-P5z.js +0 -1
  867. package/dist/showcase/assets/circle-G0dEx2Ay.js +0 -1
  868. package/dist/showcase/assets/circle-alert-CiibDCe8.js +0 -1
  869. package/dist/showcase/assets/circle-check-Bqm54c03.js +0 -1
  870. package/dist/showcase/assets/circle-check-big-BfiY_qy_.js +0 -1
  871. package/dist/showcase/assets/circle-dot-VNm7CEgH.js +0 -1
  872. package/dist/showcase/assets/circle-question-mark-mM7PKy4G.js +0 -1
  873. package/dist/showcase/assets/circle-x-2tzzp_vB.js +0 -1
  874. package/dist/showcase/assets/clock-3-CfdZnMP2.js +0 -1
  875. package/dist/showcase/assets/clock-ByB7C11p.js +0 -1
  876. package/dist/showcase/assets/code-xml-D2fN-BaU.js +0 -1
  877. package/dist/showcase/assets/collapsible-B2lI_uVI.js +0 -1
  878. package/dist/showcase/assets/collapsible-Bs5YFx-M.js +0 -27
  879. package/dist/showcase/assets/combobox-BqNSwFaM.js +0 -685
  880. package/dist/showcase/assets/command-Dcbh_YP-.js +0 -1
  881. package/dist/showcase/assets/command-Mb30xkwq.js +0 -1
  882. package/dist/showcase/assets/comment-composer-DqTw0zIM.js +0 -1
  883. package/dist/showcase/assets/comment-item-DbQAZ3yP.js +0 -1
  884. package/dist/showcase/assets/comments-CGMOOi7k.js +0 -357
  885. package/dist/showcase/assets/commerce-bVpLHwpS.js +0 -267
  886. package/dist/showcase/assets/composite-CTpmYme_.js +0 -1
  887. package/dist/showcase/assets/contact-card-nuS10UKK.js +0 -65
  888. package/dist/showcase/assets/content-container-NexBp0FV.js +0 -1
  889. package/dist/showcase/assets/copyable-CNltkC2A.js +0 -1
  890. package/dist/showcase/assets/copyable-qr6--oJx.js +0 -96
  891. package/dist/showcase/assets/course-card-0kkl37FX.js +0 -77
  892. package/dist/showcase/assets/cpu-DSD9h0l5.js +0 -1
  893. package/dist/showcase/assets/credit-card-CN0E6FU8.js +0 -1
  894. package/dist/showcase/assets/css-variables-CzmmLWxt.js +0 -1190
  895. package/dist/showcase/assets/currency-BtofP745.js +0 -149
  896. package/dist/showcase/assets/dark-surfaces-BU7kfTIi.js +0 -90
  897. package/dist/showcase/assets/data-view-3W7_KBli.js +0 -124
  898. package/dist/showcase/assets/data-view-snL5QtHe.js +0 -4
  899. package/dist/showcase/assets/database-BarEYzaF.js +0 -1
  900. package/dist/showcase/assets/date-block-dTt9Rcfd.js +0 -1
  901. package/dist/showcase/assets/date-picker-BKzZeQGc.js +0 -1
  902. package/dist/showcase/assets/date-pickers-CYERVYRo.js +0 -73
  903. package/dist/showcase/assets/dense-info-hnKZfRnQ.js +0 -106
  904. package/dist/showcase/assets/design-system-consistency-D6qngflS.js +0 -264
  905. package/dist/showcase/assets/dialog-mO0FpHmT.js +0 -1
  906. package/dist/showcase/assets/dialog-xbuhPXmf.js +0 -1
  907. package/dist/showcase/assets/display-utilities-C4IflxoK.js +0 -267
  908. package/dist/showcase/assets/dist-BFChHTWK.js +0 -45
  909. package/dist/showcase/assets/dist-BkVfs5PY.js +0 -1
  910. package/dist/showcase/assets/dollar-sign-BES-Y4q8.js +0 -1
  911. package/dist/showcase/assets/download-CuEg-4DT.js +0 -1
  912. package/dist/showcase/assets/dropdown-menu-C4Fcfk9z.js +0 -1
  913. package/dist/showcase/assets/dropzone-CrJ_k9fJ.js +0 -1
  914. package/dist/showcase/assets/earth-Cmx-Axig.js +0 -1
  915. package/dist/showcase/assets/ellipsis-Co7iTzp_.js +0 -1
  916. package/dist/showcase/assets/ellipsis-vertical-DMYJFiqQ.js +0 -1
  917. package/dist/showcase/assets/empty-Dw4ozyll.js +0 -1
  918. package/dist/showcase/assets/empty-item-DQwAsl0J.js +0 -49
  919. package/dist/showcase/assets/empty-state-BKvbnAy1.js +0 -1
  920. package/dist/showcase/assets/empty-state-Dv6f2fmP.js +0 -190
  921. package/dist/showcase/assets/enhanced-activities-Ctmivg46.js +0 -357
  922. package/dist/showcase/assets/enhanced-combobox-D0AsPZ-b.js +0 -1
  923. package/dist/showcase/assets/esm-oZ6qcNoa.js +0 -2
  924. package/dist/showcase/assets/event-calendar-ChXdeehr.js +0 -138
  925. package/dist/showcase/assets/event-log-DeOCb2tT.js +0 -330
  926. package/dist/showcase/assets/example-CDvNeHNP.js +0 -1
  927. package/dist/showcase/assets/external-link-BaiCqIx3.js +0 -1
  928. package/dist/showcase/assets/eye-zG-fqYfd.js +0 -1
  929. package/dist/showcase/assets/feature-announcement-C2XGWNgI.js +0 -34
  930. package/dist/showcase/assets/file-sAbDfDuO.js +0 -1
  931. package/dist/showcase/assets/file-text-Boa9IOND.js +0 -1
  932. package/dist/showcase/assets/filter-layout-tZmZz-2B.js +0 -1
  933. package/dist/showcase/assets/filters-D8gEkDAE.js +0 -139
  934. package/dist/showcase/assets/flag-Cu20rcE4.js +0 -1
  935. package/dist/showcase/assets/folder-open-Cuk6KKLi.js +0 -1
  936. package/dist/showcase/assets/form-field-D8sL8tat.js +0 -1
  937. package/dist/showcase/assets/form-sizing-C3UG5WKC.js +0 -1
  938. package/dist/showcase/assets/format-CaRklI--.js +0 -1
  939. package/dist/showcase/assets/forms-CNk2oX65.js +0 -915
  940. package/dist/showcase/assets/funnel-B2kBprKZ.js +0 -1
  941. package/dist/showcase/assets/generic-oWYKMvId.js +0 -1
  942. package/dist/showcase/assets/getPseudoElementBounds-GjucWEcD.js +0 -1
  943. package/dist/showcase/assets/gift-C_D_-5GL.js +0 -1
  944. package/dist/showcase/assets/giftcard-cards-B4DDGzdi.js +0 -85
  945. package/dist/showcase/assets/git-branch-DlTTLnjW.js +0 -1
  946. package/dist/showcase/assets/global-search-BjHAfaqS.js +0 -215
  947. package/dist/showcase/assets/global-search-hKQWHfrf.js +0 -1
  948. package/dist/showcase/assets/globe-D-gH7XQ2.js +0 -1
  949. package/dist/showcase/assets/gradient-card-jVxEisUP.js +0 -58
  950. package/dist/showcase/assets/hash-DySqEhph.js +0 -1
  951. package/dist/showcase/assets/header-B8hHkAVl.js +0 -1
  952. package/dist/showcase/assets/header-notifications-s180jNb1.js +0 -1
  953. package/dist/showcase/assets/heart-DDFCk8Tb.js +0 -1
  954. package/dist/showcase/assets/hooks-0A_FzYrt.js +0 -220
  955. package/dist/showcase/assets/house-BqE1X-Wf.js +0 -1
  956. package/dist/showcase/assets/icon-badge-CyiMjD7j.js +0 -37
  957. package/dist/showcase/assets/icon-badge-fJVhEHym.js +0 -1
  958. package/dist/showcase/assets/image-DCtwKHqe.js +0 -1
  959. package/dist/showcase/assets/inbox-DZA-pAGB.js +0 -1
  960. package/dist/showcase/assets/index-B37z19z3.js +0 -10
  961. package/dist/showcase/assets/index-CIsKgiSF.css +0 -2
  962. package/dist/showcase/assets/inertValue-SPYMBsOM.js +0 -1
  963. package/dist/showcase/assets/info-DrfDr3GT.js +0 -1
  964. package/dist/showcase/assets/inline-stat-BVJNx4xR.js +0 -1
  965. package/dist/showcase/assets/inline-stat-C3cWbSUK.js +0 -15
  966. package/dist/showcase/assets/input-CKTTGrnR.js +0 -1
  967. package/dist/showcase/assets/input-UHuWYPMF.js +0 -1
  968. package/dist/showcase/assets/input-group-BR_lU__a.js +0 -1
  969. package/dist/showcase/assets/input-group-iZaLbsTP.js +0 -47
  970. package/dist/showcase/assets/inputs-C7j8Xivm.js +0 -155
  971. package/dist/showcase/assets/installation-DYnTwaPR.js +0 -134
  972. package/dist/showcase/assets/invoice-header-D_0KvXQe.js +0 -36
  973. package/dist/showcase/assets/invoice-items-jcNb-sST.js +0 -36
  974. package/dist/showcase/assets/invoice-mini-DrZAbjPq.js +0 -14
  975. package/dist/showcase/assets/invoice-table-DlAw0U4U.js +0 -30
  976. package/dist/showcase/assets/isSameDay-Cl6v_syG.js +0 -1
  977. package/dist/showcase/assets/isToday-BBoFjSnJ.js +0 -1
  978. package/dist/showcase/assets/italic-j2U8krYa.js +0 -1
  979. package/dist/showcase/assets/item-B2WoC1SD.js +0 -139
  980. package/dist/showcase/assets/item-BMJ5hfT5.js +0 -1
  981. package/dist/showcase/assets/item-C_5-EHNK.js +0 -1
  982. package/dist/showcase/assets/kanban-Cv64Szxq.js +0 -188
  983. package/dist/showcase/assets/key-round-CORDYqE2.js +0 -1
  984. package/dist/showcase/assets/label-B0UjYqfw.js +0 -1
  985. package/dist/showcase/assets/languages-Njdo5y8i.js +0 -1
  986. package/dist/showcase/assets/layers-Dyew-8IP.js +0 -1
  987. package/dist/showcase/assets/layout-app-shell-DEZt0d84.js +0 -608
  988. package/dist/showcase/assets/layout-auth-BT84haSd.js +0 -790
  989. package/dist/showcase/assets/layout-containers-D6SP4vRB.js +0 -101
  990. package/dist/showcase/assets/layout-header-kLYjJnHz.js +0 -203
  991. package/dist/showcase/assets/layout-page-CmS4d8jw.js +0 -314
  992. package/dist/showcase/assets/layout-primitives-BW858Ymj.js +0 -34
  993. package/dist/showcase/assets/layout-sidebar-eIDEoyzV.js +0 -224
  994. package/dist/showcase/assets/layout-users-HyZHQIov.js +0 -117
  995. package/dist/showcase/assets/layout-workspace-BrDwVUvn.js +0 -191
  996. package/dist/showcase/assets/lib-Dhty05ZR.js +0 -1
  997. package/dist/showcase/assets/list-checks-CcWjdDq8.js +0 -1
  998. package/dist/showcase/assets/lock-CwH3bXx5.js +0 -1
  999. package/dist/showcase/assets/lock-keyhole-BdBxeIkW.js +0 -1
  1000. package/dist/showcase/assets/mail-Cn94c8yp.js +0 -1
  1001. package/dist/showcase/assets/mail-check-D-q_vPxD.js +0 -1
  1002. package/dist/showcase/assets/map-BfUZMScw.js +0 -124
  1003. package/dist/showcase/assets/map-pin-BZB9GUXP.js +0 -1
  1004. package/dist/showcase/assets/media-library-DguE2q94.js +0 -699
  1005. package/dist/showcase/assets/mention-inline-suggestions-CyGplHOl.js +0 -1
  1006. package/dist/showcase/assets/mentions-lmr_XmfN.js +0 -138
  1007. package/dist/showcase/assets/menus-D0qYbzKk.js +0 -171
  1008. package/dist/showcase/assets/message-square-7VpiUwcS.js +0 -1
  1009. package/dist/showcase/assets/metadata-list-B8O2ljIS.js +0 -1
  1010. package/dist/showcase/assets/metadata-list-BcYg9Ru3.js +0 -286
  1011. package/dist/showcase/assets/metric-HzQnjCpO.js +0 -1
  1012. package/dist/showcase/assets/metric-bar-Fr1TDnSu.js +0 -1
  1013. package/dist/showcase/assets/metric-grid-CM-P894v.js +0 -1
  1014. package/dist/showcase/assets/metric-trend-chip-DqYH_U8e.js +0 -1
  1015. package/dist/showcase/assets/metrics-analytics-bar-DKRLzyXq.js +0 -44
  1016. package/dist/showcase/assets/metrics-analytics-cards-qMbAYBbk.js +0 -50
  1017. package/dist/showcase/assets/metrics-comparison-GSWVebL_.js +0 -76
  1018. package/dist/showcase/assets/metrics-heatmap-Fj5QZoO3.js +0 -27
  1019. package/dist/showcase/assets/metrics-inline-badge-BuyhiYDl.js +0 -17
  1020. package/dist/showcase/assets/metrics-kpi-row-xNn4bjZc.js +0 -31
  1021. package/dist/showcase/assets/metrics-micro-grid-W_ZYCffp.js +0 -42
  1022. package/dist/showcase/assets/metrics-overview-D-km110k.js +0 -192
  1023. package/dist/showcase/assets/metrics-stat-cards-odVtufFY.js +0 -54
  1024. package/dist/showcase/assets/minus-DZsXg5PW.js +0 -1
  1025. package/dist/showcase/assets/money-display-C7Hp2pT3.js +0 -1
  1026. package/dist/showcase/assets/month-year-picker-Dnr4J0mO.js +0 -1
  1027. package/dist/showcase/assets/navigation-0nrtBP5O.js +0 -90
  1028. package/dist/showcase/assets/navigation-BaWNq9oa.js +0 -231
  1029. package/dist/showcase/assets/navigation-extras-B22W1Vkk.js +0 -43
  1030. package/dist/showcase/assets/onboarding-checklist-BFj7rmdZ.js +0 -119
  1031. package/dist/showcase/assets/overflow-tab-bar-D_rltswa.js +0 -1
  1032. package/dist/showcase/assets/overlays-CNfiB-zF.js +0 -408
  1033. package/dist/showcase/assets/overlays-CuxuFGC8.js +0 -159
  1034. package/dist/showcase/assets/overview-CBmdAWO6.js +0 -184
  1035. package/dist/showcase/assets/package-BwwfLMWb.js +0 -1
  1036. package/dist/showcase/assets/package-check-BepTKJLy.js +0 -1
  1037. package/dist/showcase/assets/page-_JDFUWqe.js +0 -1
  1038. package/dist/showcase/assets/page-action-button-Cf34I-B2.js +0 -1
  1039. package/dist/showcase/assets/page-header-pdHFvyTo.js +0 -1
  1040. package/dist/showcase/assets/pagination-Db1WJvjK.js +0 -42
  1041. package/dist/showcase/assets/pagination-s8_MGk9D.js +0 -1
  1042. package/dist/showcase/assets/paperclip-B9HQ47_2.js +0 -1
  1043. package/dist/showcase/assets/password-input-D-eZWMGX.js +0 -1
  1044. package/dist/showcase/assets/pencil-Dm53P6Db.js +0 -1
  1045. package/dist/showcase/assets/phone-a4Ja9xAp.js +0 -1
  1046. package/dist/showcase/assets/plus-DbOlx2x0.js +0 -1
  1047. package/dist/showcase/assets/popover-B8qrRgt3.js +0 -1
  1048. package/dist/showcase/assets/popover-Bm5wETUP.js +0 -1
  1049. package/dist/showcase/assets/popover-menu-EH4P-BuI.js +0 -1
  1050. package/dist/showcase/assets/products-n6VBSMDh.js +0 -423
  1051. package/dist/showcase/assets/progress-D9r6PSCF.js +0 -1
  1052. package/dist/showcase/assets/progress-DVnMcpeq.js +0 -18
  1053. package/dist/showcase/assets/props-table-udnF7Z46.js +0 -1
  1054. package/dist/showcase/assets/quote-qVQF4JC7.js +0 -1
  1055. package/dist/showcase/assets/receipt-DaC4l-Mr.js +0 -1
  1056. package/dist/showcase/assets/receipt-text-BnwhWHdU.js +0 -1
  1057. package/dist/showcase/assets/refinement-guide-zBbAE-vw.js +0 -189
  1058. package/dist/showcase/assets/refresh-cw-CX6ghqEe.js +0 -1
  1059. package/dist/showcase/assets/resolveValueLabel-Cjbd_80A.js +0 -1
  1060. package/dist/showcase/assets/resource-D1fXD_Pt.js +0 -139
  1061. package/dist/showcase/assets/resource-i2YV9aHL.js +0 -1
  1062. package/dist/showcase/assets/resource-selector-card-CdQEPr9U.js +0 -43
  1063. package/dist/showcase/assets/rich-text-editor-DJ2i03XV.js +0 -143
  1064. package/dist/showcase/assets/rich-text-editor-Wh8r117d.js +0 -124
  1065. package/dist/showcase/assets/rotate-ccw-2_FhUcdG.js +0 -1
  1066. package/dist/showcase/assets/route-EGSdKgEp.js +0 -1
  1067. package/dist/showcase/assets/save-nXKvyYEx.js +0 -1
  1068. package/dist/showcase/assets/schema-form-D_9UkVBe.js +0 -327
  1069. package/dist/showcase/assets/scroll-area-CB7X4JqZ.js +0 -1
  1070. package/dist/showcase/assets/scroll-area-DCHN9iYj.js +0 -32
  1071. package/dist/showcase/assets/section-C2ovQgbv.js +0 -1
  1072. package/dist/showcase/assets/select-BTOraQSw.js +0 -1
  1073. package/dist/showcase/assets/select-CE0BbUs7.js +0 -1
  1074. package/dist/showcase/assets/send-CI0r12bX.js +0 -1
  1075. package/dist/showcase/assets/separator-CmGfh7lI.js +0 -1
  1076. package/dist/showcase/assets/separator-PhQTNRIB.js +0 -28
  1077. package/dist/showcase/assets/settings-2-qkVb0lyz.js +0 -1
  1078. package/dist/showcase/assets/settings-YXjlZ9zs.js +0 -1
  1079. package/dist/showcase/assets/sheet-CFDUB2H1.js +0 -1
  1080. package/dist/showcase/assets/shield-Dr_UeG6H.js +0 -1
  1081. package/dist/showcase/assets/shield-alert-7rAVXg-K.js +0 -1
  1082. package/dist/showcase/assets/shield-check-BbzHL-nM.js +0 -1
  1083. package/dist/showcase/assets/shopping-bag-DeprN0fB.js +0 -1
  1084. package/dist/showcase/assets/showcase-BU6Fvpg_.js +0 -132
  1085. package/dist/showcase/assets/sidebar-CudnhnWN.js +0 -1
  1086. package/dist/showcase/assets/sidebar.context-CZaDhRhh.js +0 -1
  1087. package/dist/showcase/assets/skeleton-DD6VPVrv.js +0 -1
  1088. package/dist/showcase/assets/skeleton-Dc5LvW7E.js +0 -29
  1089. package/dist/showcase/assets/slider-BxvP9nxk.js +0 -1
  1090. package/dist/showcase/assets/smart-card-B0Llbpiy.js +0 -1
  1091. package/dist/showcase/assets/sonner-mszFoDWT.js +0 -22
  1092. package/dist/showcase/assets/sortable.esm-J5bJPtH9.js +0 -5
  1093. package/dist/showcase/assets/sparkles-CQSdl3Gw.js +0 -1
  1094. package/dist/showcase/assets/spinner-BSxBn2qs.js +0 -49
  1095. package/dist/showcase/assets/spinner-DJxoGJtq.js +0 -30
  1096. package/dist/showcase/assets/spinner-DihTCcve.js +0 -1
  1097. package/dist/showcase/assets/square-pen-CGMSA_p6.js +0 -1
  1098. package/dist/showcase/assets/stacked-avatars-Ct8B4doW.js +0 -1
  1099. package/dist/showcase/assets/star-DFlmmJdh.js +0 -1
  1100. package/dist/showcase/assets/startOfDay-BedffeNt.js +0 -1
  1101. package/dist/showcase/assets/styles-jR6uS97D.js +0 -1
  1102. package/dist/showcase/assets/suggestions-DnjJ-U9n.js +0 -126
  1103. package/dist/showcase/assets/switch-Dkojf4Yd.js +0 -1
  1104. package/dist/showcase/assets/switch-bTb6CSLr.js +0 -1
  1105. package/dist/showcase/assets/sync-rk8eFwoJ.js +0 -124
  1106. package/dist/showcase/assets/table-4qIerTVI.js +0 -686
  1107. package/dist/showcase/assets/table-BjMmmYd7.js +0 -1
  1108. package/dist/showcase/assets/table-actions-DqofOI1V.js +0 -1
  1109. package/dist/showcase/assets/tabs-BV6mMsfk.js +0 -19
  1110. package/dist/showcase/assets/tabs-u2fkHRw8.js +0 -1
  1111. package/dist/showcase/assets/tags-input-Cu_UwlwT.js +0 -1
  1112. package/dist/showcase/assets/text-button-Fyy21evq.js +0 -1
  1113. package/dist/showcase/assets/text-link-WRyY3ZZo.js +0 -1
  1114. package/dist/showcase/assets/textarea-BbCxWNzV.js +0 -1
  1115. package/dist/showcase/assets/textarea-CtD7JQsv.js +0 -1
  1116. package/dist/showcase/assets/timelines-BBPQpCFX.js +0 -200
  1117. package/dist/showcase/assets/toggle-group-B8mQ6wer.js +0 -1
  1118. package/dist/showcase/assets/toggles-CCClWVXZ.js +0 -71
  1119. package/dist/showcase/assets/toggles-group-DgCilPMo.js +0 -32
  1120. package/dist/showcase/assets/tooltip-ClJCWWTI.js +0 -31
  1121. package/dist/showcase/assets/trash-2-Cs7y4-K-.js +0 -1
  1122. package/dist/showcase/assets/trending-up-spYhMxs6.js +0 -1
  1123. package/dist/showcase/assets/truck-DENWgqxK.js +0 -1
  1124. package/dist/showcase/assets/typography-DMmYNFQj.js +0 -223
  1125. package/dist/showcase/assets/ui-badge-BJEtsa7X.js +0 -28
  1126. package/dist/showcase/assets/ui-card-CrPKoi3P.js +0 -30
  1127. package/dist/showcase/assets/ui-table-2HhDwPcu.js +0 -42
  1128. package/dist/showcase/assets/upload-tray-CUZAErkI.js +0 -138
  1129. package/dist/showcase/assets/use-layout-link-Co3GiFmb.js +0 -1
  1130. package/dist/showcase/assets/useAnchoredPopupScrollLock-DgIA0IXg.js +0 -1
  1131. package/dist/showcase/assets/useAriaLabelledBy-CDdoyQgg.js +0 -1
  1132. package/dist/showcase/assets/useCollapsiblePanel-BT0RSjGM.js +0 -1
  1133. package/dist/showcase/assets/useCompositeItem-DFghnuRZ.js +0 -1
  1134. package/dist/showcase/assets/useCompositeListItem-vXyRoJ2x.js +0 -1
  1135. package/dist/showcase/assets/useLabelableId-D__l5sQX.js +0 -1
  1136. package/dist/showcase/assets/useOpenInteractionType-bZIaLWfE.js +0 -1
  1137. package/dist/showcase/assets/useRender-BV0akLbc.js +0 -1
  1138. package/dist/showcase/assets/useTriggerFocusGuards-dYriJrQP.js +0 -1
  1139. package/dist/showcase/assets/useValueChanged-Dg0AWST0.js +0 -1
  1140. package/dist/showcase/assets/user-B9eCi5Vl.js +0 -1
  1141. package/dist/showcase/assets/user-plus-Uo4IAY7e.js +0 -1
  1142. package/dist/showcase/assets/users-DLep-WjV.js +0 -1
  1143. package/dist/showcase/assets/vendor-profile-BbcE51Pa.js +0 -37
  1144. package/dist/showcase/assets/video-BasdlaQE.js +0 -1
  1145. package/dist/showcase/assets/wrench-BYUVe1-z.js +0 -1
  1146. package/dist/showcase/assets/x-Bx9ayVXr.js +0 -1
  1147. package/dist/showcase/assets/zap-Mgu5HEtF.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-CYgFCnjZ.cjs","names":[],"sources":["../../src/components/layout/header/partials/header-breadcrumbs.tsx","../../src/components/layout/header/header.tsx","../../src/components/layout/header/header.types.ts","../../src/components/layout/header/partials/header-search.tsx","../../src/components/layout/header/partials/header-global-search-trigger.tsx","../../src/components/layout/header/partials/header-tool-button.tsx","../../src/components/layout/header/partials/header-tool-popover.tsx","../../src/components/layout/header/partials/header-user-menu.tsx","../../src/components/layout/header/partials/header-notifications.tsx"],"sourcesContent":["/** HeaderBreadcrumbs — breadcrumbs trail with optional sidebar trigger. */\nimport * as React from 'react';\n\nimport { Separator } from '@/components/base/display/separator';\nimport { Breadcrumbs } from '@/components/base/navigation/breadcrumbs';\nimport { SidebarTrigger } from '@/components/base/sidebar';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { BreadcrumbItem } from '../../layout.types';\nimport type { HeaderBreadcrumbsProps } from '../header.types';\n\nexport function HeaderBreadcrumbs({\n\tbreadcrumbs = [],\n\thomeBreadcrumb = null,\n\tshowSidebarTrigger = true,\n\ttriggerSlot,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: HeaderBreadcrumbsProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst items = React.useMemo<BreadcrumbItem[]>(() => {\n\t\tconst out: BreadcrumbItem[] = [];\n\t\tif (homeBreadcrumb) out.push(homeBreadcrumb);\n\t\tout.push(...breadcrumbs);\n\t\treturn out;\n\t}, [homeBreadcrumb, breadcrumbs]);\n\n\tconst showCrumbs = items.length > 0;\n\n\treturn (\n\t\t<div className={cn('relative flex min-h-9 min-w-0 items-stretch gap-3 overflow-hidden', className)}>\n\t\t\t{!!showSidebarTrigger && (\n\t\t\t\t<div className=\"relative flex min-h-9 items-center justify-center gap-2\">\n\t\t\t\t\t{triggerSlot ?? <SidebarTrigger className=\"size-7 [&_svg]:size-4\" />}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!showCrumbs && (\n\t\t\t\t<>\n\t\t\t\t\t{!!showSidebarTrigger && <Separator orientation=\"vertical\" className=\"h-auto self-stretch\" />}\n\t\t\t\t\t<div className=\"flex min-w-0 flex-1 items-center overflow-hidden\">\n\t\t\t\t\t\t<Breadcrumbs\n\t\t\t\t\t\t\tbreadcrumbs={items}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'min-w-0 overflow-hidden',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-list]]:flex-nowrap [&_[data-slot=breadcrumb-list]]:overflow-hidden [&_[data-slot=breadcrumb-list]]:break-normal',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-item]]:min-w-0 [&_[data-slot=breadcrumb-item]]:shrink',\n\t\t\t\t\t\t\t\t'[&_[data-slot=breadcrumb-link]]:truncate [&_[data-slot=breadcrumb-page]]:truncate',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","/** Header — sticky top bar with breadcrumbs and slot-driven content regions. */\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { HeaderBreadcrumbs } from './partials/header-breadcrumbs';\nimport type { HeaderProps } from './header.types';\n\nexport function Header({\n\tshowBreadcrumbs = true,\n\tbreadcrumbs = [],\n\thomeBreadcrumb = null,\n\tshowSidebarTrigger = true,\n\tbrand,\n\tleftContent,\n\tcenterContent,\n\trightContent,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tleftClassName,\n\tcenterClassName,\n\trightClassName,\n\tbreadcrumbsClassName,\n}: HeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'sticky top-0 z-40 flex min-h-shell-header items-center border-b bg-background/70 px-4 py-2 backdrop-blur-md transition-[width,height] ease-linear md:px-5',\n\t\t\t\t'dark:bg-topbar',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className={cn('flex min-h-9 min-w-0 flex-1 items-stretch gap-4', contentClassName)}>\n\t\t\t\t{!!(slots?.brand ?? brand) && (\n\t\t\t\t\t<div className=\"hidden min-w-0 shrink-0 items-center md:flex\">\n\t\t\t\t\t\t{slots?.brand ?? brand}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!showBreadcrumbs && (slots?.breadcrumbs ?? (\n\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t<HeaderBreadcrumbs\n\t\t\t\t\t\t\tbreadcrumbs={breadcrumbs}\n\t\t\t\t\t\t\thomeBreadcrumb={homeBreadcrumb}\n\t\t\t\t\t\t\tshowSidebarTrigger={showSidebarTrigger}\n\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\tclassName={breadcrumbsClassName}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\n\t\t\t\t{!!(slots?.left ?? leftContent) && (\n\t\t\t\t\t<div className={cn('flex min-w-0 items-center', leftClassName)}>\n\t\t\t\t\t\t{slots?.left ?? leftContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!(slots?.center ?? centerContent) && (\n\t\t\t\t\t<div className={cn('hidden min-w-0 shrink-0 items-center justify-center lg:flex', centerClassName)}>\n\t\t\t\t\t\t{slots?.center ?? centerContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!(slots?.right ?? rightContent) && (\n\t\t\t\t\t<div className={cn('ml-auto flex shrink-0 items-center gap-2', rightClassName)}>\n\t\t\t\t\t\t{slots?.right ?? rightContent}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</header>\n\t);\n}\n","/**\n * Header layout and partial types.\n *\n * This layer is intentionally framework-neutral: links and route state enter\n * through `renderLink`, and app-specific content enters through slots.\n */\nimport type { ComponentType, ReactNode } from 'react';\n\nimport type { StringsProp } from '@/lib/strings';\n\nimport type {\n\tBreadcrumbItem,\n\tLayoutNavigationAdapter,\n\tLayoutUser,\n\tLinkComponent,\n} from '../layout.types';\n\nexport interface HeaderBreadcrumbsProps extends LayoutNavigationAdapter {\n\tbreadcrumbs?: BreadcrumbItem[];\n\thomeBreadcrumb?: BreadcrumbItem | null;\n\tshowSidebarTrigger?: boolean;\n\ttriggerSlot?: ReactNode;\n\tclassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type NotificationTone = 'info' | 'success' | 'warning' | 'error';\n\nexport interface HeaderNotification {\n\tid: string | number;\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\ttime?: ReactNode;\n\tread?: boolean;\n\ttone?: NotificationTone;\n\thref?: string;\n}\n\nexport interface HeaderNotificationsStrings {\n\ttriggerLabel: string;\n\theading: string;\n\tmarkAllRead: string;\n\tempty: string;\n\tviewAll: string;\n}\n\nexport const defaultHeaderNotificationsStrings: HeaderNotificationsStrings = {\n\ttriggerLabel: 'Notifications',\n\theading: 'Notifications',\n\tmarkAllRead: 'Mark all as read',\n\tempty: 'No new notifications',\n\tviewAll: 'View all notifications',\n};\n\nexport interface HeaderNotificationsProps extends LayoutNavigationAdapter {\n\tnotifications?: HeaderNotification[];\n\tunreadCount?: number;\n\tonNotificationClick?: (notification: HeaderNotification) => void;\n\tonMarkAllRead?: () => void;\n\tonViewAll?: () => void;\n\tviewAllHref?: string;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tstrings?: StringsProp<HeaderNotificationsStrings>;\n\tclassName?: string;\n\tcontentClassName?: string;\n\trenderNotification?: (notification: HeaderNotification) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface HeaderSearchStrings {\n\tplaceholder: string;\n\tshortcutMac: string;\n\tshortcutPc: string;\n}\n\nexport const defaultHeaderSearchStrings: HeaderSearchStrings = {\n\tplaceholder: 'Search...',\n\tshortcutMac: '⌘K',\n\tshortcutPc: 'Ctrl+K',\n};\n\nexport interface HeaderSearchProps {\n\tonOpen?: () => void;\n\tisMac?: boolean;\n\tenableShortcut?: boolean;\n\tstrings?: StringsProp<HeaderSearchStrings>;\n\tclassName?: string;\n\ticonClassName?: string;\n\tshortcutSlot?: ReactNode;\n}\n\nexport interface HeaderGlobalSearchTriggerProps extends HeaderSearchProps {\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport interface HeaderToolButtonProps {\n\tlabel: string;\n\ticon: ComponentType<{ className?: string }>;\n\tactive?: boolean;\n\tdisabled?: boolean;\n\tbadge?: ReactNode;\n\tonClick?: () => void;\n\tclassName?: string;\n\ticonClassName?: string;\n}\n\nexport interface HeaderToolPopoverProps {\n\tlabel: string;\n\ticon: ComponentType<{ className?: string }>;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tactive?: boolean;\n\tdisabled?: boolean;\n\tbadge?: ReactNode;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tsideOffset?: number;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tcontentClassName?: string;\n\tchildren?: ReactNode;\n}\n\nexport interface HeaderUserMenuProps {\n\tuser: LayoutUser;\n\tshowEmail?: boolean;\n\tcustomContent?: ReactNode;\n\tonProfile?: () => void;\n\tonSettings?: () => void;\n\tonLogout?: () => void;\n\talign?: 'start' | 'center' | 'end';\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\tstrings?: StringsProp<HeaderUserMenuStrings>;\n\ttriggerClassName?: string;\n\tcontentClassName?: string;\n\trenderTrigger?: (user: LayoutUser) => ReactNode;\n}\n\nexport interface HeaderUserMenuStrings {\n\tprofile: string;\n\tsettings: string;\n\tlogout: string;\n}\n\nexport const defaultHeaderUserMenuStrings: HeaderUserMenuStrings = {\n\tprofile: 'Profile',\n\tsettings: 'Settings',\n\tlogout: 'Log out',\n};\n\nexport interface HeaderSlots {\n\t/** Leading brand/logo region before breadcrumbs. */\n\tbrand?: ReactNode;\n\t/** Replaces the breadcrumb/sidebar-trigger region. */\n\tbreadcrumbs?: ReactNode;\n\t/** Leading content after breadcrumbs. Prefer this over `leftContent` for new code. */\n\tleft?: ReactNode;\n\t/** Center content, usually search or a scope switcher. */\n\tcenter?: ReactNode;\n\t/** Trailing content, usually notifications/user menu/actions. */\n\tright?: ReactNode;\n}\n\nexport interface HeaderProps extends LayoutNavigationAdapter {\n\tshowBreadcrumbs?: boolean;\n\tbreadcrumbs?: BreadcrumbItem[];\n\thomeBreadcrumb?: BreadcrumbItem | null;\n\tshowSidebarTrigger?: boolean;\n\tbrand?: ReactNode;\n\t/** @deprecated Prefer `slots.left`. */\n\tleftContent?: ReactNode;\n\t/** @deprecated Prefer `slots.center`. */\n\tcenterContent?: ReactNode;\n\t/** @deprecated Prefer `slots.right`. */\n\trightContent?: ReactNode;\n\tslots?: HeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tleftClassName?: string;\n\tcenterClassName?: string;\n\trightClassName?: string;\n\tbreadcrumbsClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n","/** HeaderSearch — framework-neutral search trigger with optional Cmd/Ctrl+K. */\nimport { useMemo } from 'react';\nimport { Command, Search } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useCommandShortcut } from '../../hooks';\nimport {\n\tdefaultHeaderSearchStrings,\n\ttype HeaderSearchProps,\n} from '../header.types';\n\nfunction detectMac(): boolean {\n\tif (typeof navigator === 'undefined') return false;\n\tconst ua = (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData;\n\tif (ua?.platform) return ua.platform === 'macOS';\n\treturn /Mac|iPhone|iPad/.test(navigator.platform);\n}\n\nexport function HeaderSearch({\n\tonOpen,\n\tisMac,\n\tenableShortcut = true,\n\tstrings: stringsProp,\n\tclassName,\n\ticonClassName,\n\tshortcutSlot,\n}: HeaderSearchProps) {\n\tconst strings = useStrings(defaultHeaderSearchStrings, stringsProp);\n\tconst isMacResolved = useMemo(() => isMac ?? detectMac(), [isMac]);\n\tuseCommandShortcut({ key: 'k', enabled: enableShortcut, onTrigger: onOpen });\n\n\tconst shortcutTitle = isMacResolved ? strings.shortcutMac : strings.shortcutPc;\n\tconst shortcut = shortcutSlot ?? (\n\t\t<kbd className=\"header-search--shortcut hidden h-5 shrink-0 items-center gap-space-sm rounded-md border border-border/70 bg-background/60 px-space-sm font-mono text-xxs text-muted-foreground lg:inline-flex\">\n\t\t\t{isMacResolved ? (\n\t\t\t\t<>\n\t\t\t\t\t<Command className=\"size-icon-sm text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">K</Text>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">Ctrl+K</Text>\n\t\t\t)}\n\t\t</kbd>\n\t);\n\n\treturn (\n\t\t<Button\n\t\t\tdata-component=\"header-search\"\n\t\t\tdata-slot=\"header-search-trigger\"\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tonClick={onOpen}\n\t\t\tclassName={cn(\n\t\t\t\t'header-search--component header-search--trigger h-control-sm w-full min-w-52 justify-start gap-space-md rounded-lg border-border/80 bg-muted/40 px-control-sm text-foreground shadow-none transition-[background-color,border-color,color,box-shadow] hover:border-border hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background dark:border-border/80 dark:bg-muted dark:hover:bg-muted/60 dark:hover:text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttitle={shortcutTitle}\n\t\t>\n\t\t\t<Search data-slot=\"header-search-icon\" className={cn('header-search--icon size-icon shrink-0 text-muted-foreground', iconClassName)} aria-hidden=\"true\" />\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" data-slot=\"header-search-placeholder\" className=\"header-search--placeholder flex-1 text-left\">\n\t\t\t\t{strings.placeholder}\n\t\t\t</Text>\n\t\t\t{shortcut}\n\t\t\t<span className=\"sr-only\">{strings.placeholder}</span>\n\t\t</Button>\n\t);\n}\n","/** HeaderGlobalSearchTrigger — header search trigger with controlled open callback. */\nimport { HeaderSearch } from './header-search';\nimport type { HeaderGlobalSearchTriggerProps } from '../header.types';\n\nexport function HeaderGlobalSearchTrigger({\n\tonOpen,\n\tonOpenChange,\n\t...props\n}: HeaderGlobalSearchTriggerProps) {\n\treturn (\n\t\t<HeaderSearch\n\t\t\t{...props}\n\t\t\tonOpen={() => {\n\t\t\t\tonOpen?.();\n\t\t\t\tonOpenChange?.(true);\n\t\t\t}}\n\t\t/>\n\t);\n}\n","/** HeaderToolButton — icon control for dense app headers. */\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { cn } from '@/lib/utils';\n\nimport type { HeaderToolButtonProps } from '../header.types';\n\nexport const HeaderToolButton = React.forwardRef<\n\tHTMLButtonElement,\n\tHeaderToolButtonProps\n>((\n\t{\n\t\tlabel,\n\t\ticon: Icon,\n\t\tactive = false,\n\t\tdisabled = false,\n\t\tbadge,\n\t\tonClick,\n\t\tclassName,\n\t\ticonClassName,\n\t},\n\tref,\n) => (\n\t<Button\n\t\tref={ref}\n\t\tdata-component=\"header-tool-button\"\n\t\tdata-slot=\"header-tool-button\"\n\t\ttype=\"button\"\n\t\tvariant=\"secondary\"\n\t\tbuttonStyle=\"ghost\"\n\t\tsize=\"icon-small\"\n\t\taria-label={label}\n\t\taria-pressed={active || undefined}\n\t\ttitle={label}\n\t\tdisabled={disabled}\n\t\tonClick={onClick}\n\t\tclassName={cn(\n\t\t\t'header-tool-button--component header-tool-button--trigger relative size-control rounded-lg text-foreground transition-[background-color,color,box-shadow] hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background',\n\t\t\tactive && 'bg-accent text-accent-foreground',\n\t\t\tclassName,\n\t\t)}\n\t>\n\t\t<Icon\n\t\t\tdata-slot=\"header-tool-icon\"\n\t\t\tclassName={cn('header-tool-button--icon size-icon', iconClassName)}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t\t{!!badge && (\n\t\t\t<span data-slot=\"header-tool-badge\" className=\"header-tool-button--badge absolute right-space-xs top-space-xs flex min-h-space-lg min-w-space-lg items-center justify-center rounded-full bg-destructive px-space-2xs text-xxs font-medium leading-none text-destructive-foreground\">\n\t\t\t\t{badge}\n\t\t\t</span>\n\t\t)}\n\t\t<span className=\"sr-only\">{label}</span>\n\t</Button>\n));\n\nHeaderToolButton.displayName = 'HeaderToolButton';\n","/** HeaderToolPopover — controlled header icon trigger plus popover content. */\nimport {\n\tPopover,\n\tPopoverContent,\n\tPopoverTrigger,\n} from '@/components/base/popover';\nimport { cn } from '@/lib/utils';\n\nimport type { HeaderToolPopoverProps } from '../header.types';\nimport { HeaderToolButton } from './header-tool-button';\n\nexport function HeaderToolPopover({\n\tlabel,\n\ticon,\n\topen,\n\tdefaultOpen,\n\tonOpenChange,\n\tactive,\n\tdisabled,\n\tbadge,\n\talign = 'end',\n\tside = 'bottom',\n\tsideOffset = 8,\n\tclassName,\n\ttriggerClassName,\n\tcontentClassName,\n\tchildren,\n}: HeaderToolPopoverProps) {\n\treturn (\n\t\t<Popover\n\t\t\topen={open}\n\t\t\tdefaultOpen={defaultOpen}\n\t\t\tonOpenChange={onOpenChange}\n\t\t>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<HeaderToolButton\n\t\t\t\t\tlabel={label}\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tactive={active ?? open}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tbadge={badge}\n\t\t\t\t\tclassName={triggerClassName}\n\t\t\t\t/>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent\n\t\t\t\tdata-component=\"header-tool-popover\"\n\t\t\t\tdata-slot=\"header-tool-popover-content\"\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'header-tool-popover--component w-80 max-w-[calc(100vw-2rem)] p-0',\n\t\t\t\t\tclassName,\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","/** HeaderUserMenu — avatar/name trigger with consumer-wired menu callbacks. */\nimport type { ReactElement } from 'react';\n\nimport { ChevronsUpDown, LogOut, Settings, User } from 'lucide-react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultHeaderUserMenuStrings,\n\ttype HeaderUserMenuProps,\n} from '../header.types';\n\nfunction deriveInitials(name: string): string {\n\treturn name\n\t\t.split(' ')\n\t\t.map((part) => part[0])\n\t\t.filter(Boolean)\n\t\t.slice(0, 2)\n\t\t.join('')\n\t\t.toUpperCase();\n}\n\nexport function HeaderUserMenu({\n\tuser,\n\tshowEmail = true,\n\tcustomContent,\n\tonProfile,\n\tonSettings,\n\tonLogout,\n\talign = 'end',\n\tside = 'bottom',\n\tstrings: stringsProp,\n\ttriggerClassName,\n\tcontentClassName,\n\trenderTrigger,\n}: HeaderUserMenuProps) {\n\tconst strings = useStrings(defaultHeaderUserMenuStrings, stringsProp);\n\tconst initials = deriveInitials(user.name);\n\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{!!onProfile && (\n\t\t\t\t<DropdownMenuItem onClick={onProfile}>\n\t\t\t\t\t<User className=\"mr-space-md size-icon\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.profile}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!onSettings && (\n\t\t\t\t<DropdownMenuItem onClick={onSettings}>\n\t\t\t\t\t<Settings className=\"mr-space-md size-icon\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.settings}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t\t{!!(onProfile || onSettings) && !!onLogout && <DropdownMenuSeparator />}\n\t\t\t{!!onLogout && (\n\t\t\t\t<DropdownMenuItem onClick={onLogout}>\n\t\t\t\t\t<LogOut className=\"mr-space-md size-icon\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">{strings.logout}</Text>\n\t\t\t\t</DropdownMenuItem>\n\t\t\t)}\n\t\t</>\n\t);\n\n\tconst trigger = renderTrigger?.(user) ?? (\n\t\t<Button\n\t\t\tdata-component=\"header-user-menu\"\n\t\t\tdata-slot=\"header-user-menu-trigger\"\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tclassName={cn(\n\t\t\t\t'header-user-menu--component header-user-menu--trigger group h-control-lg max-w-56 justify-start gap-space-md rounded-lg px-space-sm pr-space-md text-foreground shadow-none hover:bg-foreground/5 data-[state=open]:bg-foreground/5',\n\t\t\t\tshowEmail ? 'py-space-sm' : 'py-space-xs',\n\t\t\t\t'dark:text-background dark:hover:bg-topbar-accent/50',\n\t\t\t\ttriggerClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Avatar data-slot=\"header-user-avatar\" className=\"header-user-menu--avatar size-avatar-sm overflow-hidden rounded-full ring-1 ring-border/60\">\n\t\t\t\t{!!user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n\t\t\t\t<AvatarFallback className=\"rounded-md bg-success text-xxs font-semibold text-background\">\n\t\t\t\t\t{initials}\n\t\t\t\t</AvatarFallback>\n\t\t\t</Avatar>\n\t\t\t<div data-slot=\"header-user-identity\" className=\"header-user-menu--identity grid min-w-0 flex-1 text-left leading-none\">\n\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"truncate\">{user.name}</Text>\n\t\t\t\t{!!showEmail && !!user.email && (\n\t\t\t\t\t<Text size=\"xxs\" type=\"secondary\" className=\"truncate\">{user.email}</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<ChevronsUpDown className=\"header-user-menu--chevron size-icon-sm shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n\t\t</Button>\n\t);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger render={trigger as ReactElement} />\n\t\t\t<DropdownMenuContent\n\t\t\t\tdata-component=\"header-user-menu-content\"\n\t\t\t\tdata-slot=\"header-user-menu-content\"\n\t\t\t\tclassName={cn('header-user-menu--content w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg p-surface-sm', contentClassName)}\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t>\n\t\t\t\t{customContent ?? defaultContent}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","/** HeaderNotifications — bell dropdown for consumer-supplied notifications. */\nimport type { ReactElement } from 'react';\n\nimport { Bell } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuLinkItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '@/components/base/navigation/dropdown-menu';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultHeaderNotificationsStrings,\n\ttype HeaderNotification,\n\ttype HeaderNotificationsProps,\n} from '../header.types';\n\nexport function HeaderNotifications({\n\tnotifications = [],\n\tunreadCount = 0,\n\tonNotificationClick,\n\tonMarkAllRead,\n\tonViewAll,\n\tviewAllHref,\n\trenderLink,\n\tLinkComponent,\n\talign = 'end',\n\tside = 'bottom',\n\tstrings: stringsProp,\n\tclassName,\n\tcontentClassName,\n\trenderNotification,\n}: HeaderNotificationsProps) {\n\tconst strings = useStrings(defaultHeaderNotificationsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst badgeText = unreadCount > 99 ? '99+' : String(unreadCount);\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-component=\"header-notifications\"\n\t\t\t\t\t\tdata-slot=\"header-notifications-trigger\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\taria-label={strings.triggerLabel}\n\t\t\t\t\t\tclassName={cn('header-notifications--component header-notifications--trigger relative', className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Bell className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\tclassName=\"absolute -right-1 -top-1 flex h-4.5 min-w-4.5 items-center justify-center rounded-full px-1 py-0 text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{badgeText}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<DropdownMenuContent\n\t\t\t\tdata-component=\"header-notifications-content\"\n\t\t\t\tdata-slot=\"header-notifications-content\"\n\t\t\t\tclassName={cn('header-notifications--content w-80 max-w-[calc(100vw-2rem)]', contentClassName)}\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t>\n\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t<DropdownMenuLabel className=\"header-notifications--label flex items-center justify-between gap-3\">\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\">{strings.heading}</Text>\n\t\t\t\t\t\t{unreadCount > 0 && !!onMarkAllRead && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={onMarkAllRead}\n\t\t\t\t\t\t\t\tclassName=\"h-auto px-1 py-0 text-xs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings.markAllRead}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t\t<DropdownMenuSeparator />\n\n\t\t\t\t\t{notifications.length === 0 ? (\n\t\t\t\t\t\t<div className=\"header-notifications--empty p-4 text-center\">\n\t\t\t\t\t\t\t<Text type=\"secondary\">{strings.empty}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"space-y-1 p-1\">\n\t\t\t\t\t\t\t{notifications.map((notification) => (\n\t\t\t\t\t\t\t\t<NotificationRow\n\t\t\t\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\t\t\t\tnotification={notification}\n\t\t\t\t\t\t\t\t\tonClick={onNotificationClick}\n\t\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\t\trenderNotification={renderNotification}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</DropdownMenuGroup>\n\n\t\t\t\t{!!(onViewAll || viewAllHref) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t{viewAllHref ? (\n\t\t\t\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\t\t\t\tresolvedRenderLink({\n\t\t\t\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\t\t\t\thref: viewAllHref,\n\t\t\t\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\t\t\t}) as ReactElement\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings.viewAll}\n\t\t\t\t\t\t\t</DropdownMenuLinkItem>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<DropdownMenuItem onClick={onViewAll}>{strings.viewAll}</DropdownMenuItem>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction NotificationRow({\n\tnotification,\n\tonClick,\n\trenderLink,\n\trenderNotification,\n}: {\n\tnotification: HeaderNotification;\n\tonClick?: (n: HeaderNotification) => void;\n\trenderLink: NonNullable<HeaderNotificationsProps['renderLink']>;\n\trenderNotification?: HeaderNotificationsProps['renderNotification'];\n}) {\n\tif (renderNotification) return renderNotification(notification);\n\n\tconst content = (\n\t\t<div className=\"header-notifications--item-content min-w-0 space-y-1\">\n\t\t\t<Text weight=\"medium\">{notification.title}</Text>\n\t\t\t{!!notification.description && <Text size=\"xs\" type=\"secondary\">{notification.description}</Text>}\n\t\t\t{!!notification.time && <Text size=\"xxs\" type=\"secondary\">{notification.time}</Text>}\n\t\t</div>\n\t);\n\n\tconst className = cn(\n\t\t'header-notifications--item items-start rounded-md px-3 py-2',\n\t\t!notification.read && 'bg-muted/40',\n\t);\n\n\tif (notification.href) {\n\t\treturn (\n\t\t\t<DropdownMenuLinkItem\n\t\t\t\thref={notification.href}\n\t\t\t\tclassName={className}\n\t\t\t\tonClick={() => onClick?.(notification)}\n\t\t\t\trender={(props) =>\n\t\t\t\t\trenderLink({\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\thref: notification.href,\n\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t}) as ReactElement\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</DropdownMenuLinkItem>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenuItem onClick={() => onClick?.(notification)} className={className}>\n\t\t\t{content}\n\t\t</DropdownMenuItem>\n\t);\n}\n\n/** @deprecated Re-exported for backwards compat — use `HeaderNotification`. */\nexport type Notification = HeaderNotification;\n"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import { t } from "./badge-BYNwSWh5.js";
3
+ import { r as n } from "./layout.types-ip8BYRa7.js";
4
+ import * as r from "react";
5
+ import { useCallback as i, useEffect as a, useMemo as o } from "react";
6
+ import { jsx as s } from "react/jsx-runtime";
7
+ //#region src/components/layout/hooks/use-layout-link.tsx
8
+ function c({ renderLink: e, LinkComponent: t } = {}) {
9
+ return o(() => n({
10
+ renderLink: e,
11
+ LinkComponent: t
12
+ }), [e, t]);
13
+ }
14
+ //#endregion
15
+ //#region src/components/layout/sidebar/sidebar.utils.tsx
16
+ function l(e) {
17
+ if (e.startsWith("#/")) return e.slice(1).split("?")[0]?.split("#")[0] || "/";
18
+ try {
19
+ return new URL(e, "http://local.invalid").pathname;
20
+ } catch {
21
+ return e;
22
+ }
23
+ }
24
+ function u(e, t) {
25
+ let n = l(e);
26
+ return n === t || n.startsWith(t + "/") || n.startsWith(t + "?");
27
+ }
28
+ function d(e) {
29
+ return e.label ?? e.title ?? "";
30
+ }
31
+ function f(e, t) {
32
+ let n = d(e);
33
+ return e.handle ?? e.href ?? (typeof n == "string" || typeof n == "number" ? n : `nav-${t ?? 0}`);
34
+ }
35
+ function p({ value: n, size: r = "default" }) {
36
+ return /* @__PURE__ */ s(t, {
37
+ variant: "secondary",
38
+ className: e("ml-auto rounded-full tabular-nums text-sidebar-foreground", r === "small" ? "h-4 min-w-4 px-1.5" : "h-5 min-w-5 px-1.5"),
39
+ children: n
40
+ });
41
+ }
42
+ function m(e, t, n) {
43
+ return e && n && n[e] != null ? n[e] : t;
44
+ }
45
+ function h({ icon: t, iconMap: n = {}, size: i = 20, className: a = "size-4", ...o }) {
46
+ if (!t) return null;
47
+ if (typeof t == "string") {
48
+ let e = n[t];
49
+ return e ? /* @__PURE__ */ s(e, { className: a }) : null;
50
+ }
51
+ return r.isValidElement(t) ? r.cloneElement(t, {
52
+ className: e(a, t.props.className),
53
+ ...o
54
+ }) : typeof t == "function" || typeof t == "object" && t && "$$typeof" in t ? /* @__PURE__ */ s(t, {
55
+ className: a,
56
+ width: i,
57
+ height: i,
58
+ ...o
59
+ }) : null;
60
+ }
61
+ function g(e, t, n, r, i) {
62
+ return e({
63
+ href: t.href,
64
+ children: n,
65
+ className: r,
66
+ active: i,
67
+ disabled: t.disabled || !t.href,
68
+ external: t.external
69
+ });
70
+ }
71
+ //#endregion
72
+ //#region src/components/layout/hooks/use-active-path.ts
73
+ function _(e = "/") {
74
+ return i((t) => !!t && u(e, l(t)), [e]);
75
+ }
76
+ //#endregion
77
+ //#region src/components/layout/hooks/use-command-shortcut.ts
78
+ function v({ key: e, enabled: t = !0, onTrigger: n, preventDefault: r = !0 }) {
79
+ a(() => {
80
+ if (!t || !n || typeof document > "u") return;
81
+ let i = (t) => {
82
+ (t.metaKey || t.ctrlKey) && t.key.toLowerCase() === e.toLowerCase() && (r && t.preventDefault(), n());
83
+ };
84
+ return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
85
+ }, [
86
+ t,
87
+ e,
88
+ n,
89
+ r
90
+ ]);
91
+ }
92
+ //#endregion
93
+ export { f as a, g as c, c as d, p as i, m as l, _ as n, d as o, h as r, u as s, v as t, l as u };
94
+
95
+ //# sourceMappingURL=hooks-Ci1LFWRG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-Ci1LFWRG.js","names":[],"sources":["../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,EAAsB,EACrC,eACA,qBAC4B,CAAC,GAAuB;CACpD,OAAO,QACA,EAA0B;EAAE;EAAY;CAAc,CAAC,GAC7D,CAAC,GAAY,CAAa,CAC3B;AACD;;;ACNA,SAAgB,EAAO,GAAsB;CAC5C,IAAI,EAAK,WAAW,IAAI,GACvB,OAAO,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,MAAM;CAGtD,IAAI;EACH,OAAO,IAAI,IAAI,GAAM,sBAAsB,EAAE;CAC9C,QAAQ;EACP,OAAO;CACR;AACD;AAEA,SAAgB,EAAY,GAAoB,GAAuB;CACtE,IAAM,IAAc,EAAO,CAAU;CACrC,OAAO,MAAgB,KAAQ,EAAY,WAAW,IAAO,GAAG,KAAK,EAAY,WAAW,IAAO,GAAG;AACvG;AAEA,SAAgB,EAAY,GAAgE;CAC3F,OAAO,EAAK,SAAS,EAAK,SAAS;AACpC;AAEA,SAAgB,EAAU,GAAsB,GAAmC;CAClF,IAAM,IAAQ,EAAY,CAAI;CAC9B,OAAO,EAAK,UAAU,EAAK,SAAS,OAAO,KAAU,YAAY,OAAO,KAAU,WAAW,IAAQ,OAAO,KAAiB;AAC9H;AAEA,SAAgB,EAAS,EACxB,UACA,UAAO,aAIL;CACF,OACC,kBAAC,GAAD;EACC,SAAQ;EACR,WAAW,EACV,6DACA,MAAS,UAAU,uBAAuB,oBAC3C;YAEC;CACK,CAAA;AAET;AAEA,SAAgB,EACf,GACA,GACA,GAC8B;CAI9B,OAHI,KAAU,KAAc,EAAW,MAAW,OAC1C,EAAW,KAEZ;AACR;AASA,SAAgB,EAAY,EAC3B,SACA,aAAU,CAAC,GACX,UAAO,IACP,eAAY,UACZ,GAAG,KACiB;CACpB,IAAI,CAAC,GAAM,OAAO;CAElB,IAAI,OAAO,KAAS,UAAU;EAC7B,IAAM,IAAgB,EAAQ;EAC9B,OAAO,IAAgB,kBAAC,GAAD,EAA0B,aAAY,CAAA,IAAI;CAClE;CAiBA,OAfI,EAAM,eAAe,CAAI,IACrB,EAAM,aAAa,GAA2D;EACpF,WAAW,EAAG,GAAY,EAAK,MAAiC,SAAS;EACzE,GAAG;CACJ,CAAC,IAID,OAAO,KAAS,cACZ,OAAO,KAAS,YAAY,KAAiB,cAAc,IAGxD,kBAAC,GAAD;EAA0B;EAAW,OAAO;EAAM,QAAQ;EAAM,GAAI;CAAQ,CAAA,IAG7E;AACR;AAEA,SAAgB,EACf,GACA,GACA,GACA,GACA,GACC;CACD,OAAO,EAAW;EACjB,MAAM,EAAK;EACX;EACA;EACA;EACA,UAAU,EAAK,YAAY,CAAC,EAAK;EACjC,UAAU,EAAK;CAChB,CAAC;AACF;;;ACrHA,SAAgB,EAAc,IAAa,KAAK;CAC/C,OAAO,GACL,MAAkB,CAAC,CAAC,KAAQ,EAAY,GAAY,EAAO,CAAI,CAAC,GACjE,CAAC,CAAU,CACZ;AACD;;;ACAA,SAAgB,EAAmB,EAClC,QACA,aAAU,IACV,cACA,oBAAiB,MACY;CAC7B,QAAgB;EACf,IAAI,CAAC,KAAW,CAAC,KAAa,OAAO,WAAa,KAAa;EAE/D,IAAM,KAAW,MAAyB;GACnC,GAAM,WAAW,EAAM,YACzB,EAAM,IAAI,YAAY,MAAM,EAAI,YAAY,MAC5C,KAAgB,EAAM,eAAe,GACzC,EAAU;EACX;EAGA,OADA,SAAS,iBAAiB,WAAW,CAAO,SAC/B,SAAS,oBAAoB,WAAW,CAAO;CAC7D,GAAG;EAAC;EAAS;EAAK;EAAW;CAAc,CAAC;AAC7C"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./badge-B8xGFpfM.cjs"),r=require("./layout.types-CXFAjJCj.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime");function o({renderLink:e,LinkComponent:t}={}){return(0,i.useMemo)(()=>r.r({renderLink:e,LinkComponent:t}),[e,t])}function s(e){if(e.startsWith(`#/`))return e.slice(1).split(`?`)[0]?.split(`#`)[0]||`/`;try{return new URL(e,`http://local.invalid`).pathname}catch{return e}}function c(e,t){let n=s(e);return n===t||n.startsWith(t+`/`)||n.startsWith(t+`?`)}function l(e){return e.label??e.title??``}function u(e,t){let n=l(e);return e.handle??e.href??(typeof n==`string`||typeof n==`number`?n:`nav-${t??0}`)}function d({value:e,size:r=`default`}){return(0,a.jsx)(n.t,{variant:`secondary`,className:t.cn(`ml-auto rounded-full tabular-nums text-sidebar-foreground`,r===`small`?`h-4 min-w-4 px-1.5`:`h-5 min-w-5 px-1.5`),children:e})}function f(e,t,n){return e&&n&&n[e]!=null?n[e]:t}function p({icon:e,iconMap:n={},size:r=20,className:o=`size-4`,...s}){if(!e)return null;if(typeof e==`string`){let t=n[e];return t?(0,a.jsx)(t,{className:o}):null}return i.isValidElement(e)?i.cloneElement(e,{className:t.cn(o,e.props.className),...s}):typeof e==`function`||typeof e==`object`&&e&&`$$typeof`in e?(0,a.jsx)(e,{className:o,width:r,height:r,...s}):null}function m(e,t,n,r,i){return e({href:t.href,children:n,className:r,active:i,disabled:t.disabled||!t.href,external:t.external})}function h(e=`/`){return(0,i.useCallback)(t=>!!t&&c(e,s(t)),[e])}function g({key:e,enabled:t=!0,onTrigger:n,preventDefault:r=!0}){(0,i.useEffect)(()=>{if(!t||!n||typeof document>`u`)return;let i=t=>{(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===e.toLowerCase()&&(r&&t.preventDefault(),n())};return document.addEventListener(`keydown`,i),()=>document.removeEventListener(`keydown`,i)},[t,e,n,r])}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return s}});
2
+ //# sourceMappingURL=hooks-Cjl7LJpn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-Cjl7LJpn.cjs","names":[],"sources":["../../src/components/layout/hooks/use-layout-link.tsx","../../src/components/layout/sidebar/sidebar.utils.tsx","../../src/components/layout/hooks/use-active-path.ts","../../src/components/layout/hooks/use-command-shortcut.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport function useLayoutLinkRenderer({\n\trenderLink,\n\tLinkComponent,\n}: LayoutNavigationAdapter = {}): LayoutLinkRenderer {\n\treturn useMemo(\n\t\t() => resolveLayoutLinkRenderer({ renderLink, LinkComponent }),\n\t\t[renderLink, LinkComponent],\n\t);\n}\n"," \n/** Sidebar utilities — pure path helpers, labels, icon rendering, badge pill. */\nimport * as React from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { LayoutIconSource, LayoutLinkRenderer } from '../layout.types';\nimport type { SidebarNavItem } from './sidebar.types';\n\nexport function toPath(href: string): string {\n\tif (href.startsWith('#/')) {\n\t\treturn href.slice(1).split('?')[0]?.split('#')[0] || '/';\n\t}\n\n\ttry {\n\t\treturn new URL(href, 'http://local.invalid').pathname;\n\t} catch {\n\t\treturn href;\n\t}\n}\n\nexport function isPathMatch(currentUrl: string, path: string): boolean {\n\tconst currentPath = toPath(currentUrl);\n\treturn currentPath === path || currentPath.startsWith(path + '/') || currentPath.startsWith(path + '?');\n}\n\nexport function getNavLabel(item: Pick<SidebarNavItem, 'label' | 'title'>): React.ReactNode {\n\treturn item.label ?? item.title ?? '';\n}\n\nexport function getNavKey(item: SidebarNavItem, fallbackIndex?: number): React.Key {\n\tconst label = getNavLabel(item);\n\treturn item.handle ?? item.href ?? (typeof label === 'string' || typeof label === 'number' ? label : `nav-${fallbackIndex ?? 0}`);\n}\n\nexport function NavBadge({\n\tvalue,\n\tsize = 'default',\n}: {\n\tvalue: string | number;\n\tsize?: 'default' | 'small';\n}) {\n\treturn (\n\t\t<Badge\n\t\t\tvariant=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\t'ml-auto rounded-full tabular-nums text-sidebar-foreground',\n\t\t\t\tsize === 'small' ? 'h-4 min-w-4 px-1.5' : 'h-5 min-w-5 px-1.5',\n\t\t\t)}\n\t\t>\n\t\t\t{value}\n\t\t</Badge>\n\t);\n}\n\nexport function resolveNavBadge(\n\thandle: string | undefined,\n\titemBadge: string | number | undefined,\n\tliveBadges: Record<string, string | number> | undefined,\n): string | number | undefined {\n\tif (handle && liveBadges && liveBadges[handle] != null) {\n\t\treturn liveBadges[handle];\n\t}\n\treturn itemBadge;\n}\n\nexport interface DynamicIconProps extends React.SVGProps<SVGSVGElement> {\n\ticon: LayoutIconSource;\n\ticonMap?: Record<string, React.ComponentType<{ className?: string }>>;\n\tsize?: number;\n\tclassName?: string;\n}\n\nexport function DynamicIcon({\n\ticon,\n\ticonMap = {},\n\tsize = 20,\n\tclassName = 'size-4',\n\t...props\n}: DynamicIconProps) {\n\tif (!icon) return null;\n\n\tif (typeof icon === 'string') {\n\t\tconst IconComponent = iconMap[icon];\n\t\treturn IconComponent ? <IconComponent className={className} /> : null;\n\t}\n\n\tif (React.isValidElement(icon)) {\n\t\treturn React.cloneElement(icon as React.ReactElement<React.SVGProps<SVGSVGElement>>, {\n\t\t\tclassName: cn(className, (icon.props as { className?: string }).className),\n\t\t\t...props,\n\t\t});\n\t}\n\n\tif (\n\t\ttypeof icon === 'function'\n\t\t|| (typeof icon === 'object' && icon !== null && '$$typeof' in icon)\n\t) {\n\t\tconst IconComponent = icon as React.ElementType<React.SVGProps<SVGSVGElement>>;\n\t\treturn <IconComponent className={className} width={size} height={size} {...props} />;\n\t}\n\n\treturn null;\n}\n\nexport function renderSidebarLink(\n\trenderLink: LayoutLinkRenderer,\n\titem: SidebarNavItem,\n\tchildren: React.ReactNode,\n\tclassName?: string,\n\tactive?: boolean,\n) {\n\treturn renderLink({\n\t\thref: item.href,\n\t\tchildren,\n\t\tclassName,\n\t\tactive,\n\t\tdisabled: item.disabled || !item.href,\n\t\texternal: item.external,\n\t});\n}\n","import { useCallback } from 'react';\n\nimport { isPathMatch, toPath } from '../sidebar/sidebar.utils';\n\nexport function useActivePath(currentUrl = '/') {\n\treturn useCallback(\n\t\t(href?: string) => !!href && isPathMatch(currentUrl, toPath(href)),\n\t\t[currentUrl],\n\t);\n}\n","import { useEffect } from 'react';\n\nexport interface UseCommandShortcutOptions {\n\tkey: string;\n\tenabled?: boolean;\n\tonTrigger?: () => void;\n\tpreventDefault?: boolean;\n}\n\nexport function useCommandShortcut({\n\tkey,\n\tenabled = true,\n\tonTrigger,\n\tpreventDefault = true,\n}: UseCommandShortcutOptions) {\n\tuseEffect(() => {\n\t\tif (!enabled || !onTrigger || typeof document === 'undefined') return;\n\n\t\tconst handler = (event: KeyboardEvent) => {\n\t\t\tif (!(event.metaKey || event.ctrlKey)) return;\n\t\t\tif (event.key.toLowerCase() !== key.toLowerCase()) return;\n\t\t\tif (preventDefault) event.preventDefault();\n\t\t\tonTrigger();\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handler);\n\t\treturn () => document.removeEventListener('keydown', handler);\n\t}, [enabled, key, onTrigger, preventDefault]);\n}\n"],"mappings":"sNAQA,SAAgB,EAAsB,CACrC,aACA,iBAC4B,CAAC,EAAuB,CACpD,OAAA,EAAA,EAAA,aACO,EAAA,EAA0B,CAAE,aAAY,eAAc,CAAC,EAC7D,CAAC,EAAY,CAAa,CAC3B,CACD,CCNA,SAAgB,EAAO,EAAsB,CAC5C,GAAI,EAAK,WAAW,IAAI,EACvB,OAAO,EAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAM,IAGtD,GAAI,CACH,OAAO,IAAI,IAAI,EAAM,sBAAsB,EAAE,QAC9C,MAAQ,CACP,OAAO,CACR,CACD,CAEA,SAAgB,EAAY,EAAoB,EAAuB,CACtE,IAAM,EAAc,EAAO,CAAU,EACrC,OAAO,IAAgB,GAAQ,EAAY,WAAW,EAAO,GAAG,GAAK,EAAY,WAAW,EAAO,GAAG,CACvG,CAEA,SAAgB,EAAY,EAAgE,CAC3F,OAAO,EAAK,OAAS,EAAK,OAAS,EACpC,CAEA,SAAgB,EAAU,EAAsB,EAAmC,CAClF,IAAM,EAAQ,EAAY,CAAI,EAC9B,OAAO,EAAK,QAAU,EAAK,OAAS,OAAO,GAAU,UAAY,OAAO,GAAU,SAAW,EAAQ,OAAO,GAAiB,IAC9H,CAEA,SAAgB,EAAS,CACxB,QACA,OAAO,WAIL,CACF,OACC,EAAA,EAAA,KAAC,EAAA,EAAD,CACC,QAAQ,YACR,UAAW,EAAA,GACV,4DACA,IAAS,QAAU,qBAAuB,oBAC3C,WAEC,CACK,CAAA,CAET,CAEA,SAAgB,EACf,EACA,EACA,EAC8B,CAI9B,OAHI,GAAU,GAAc,EAAW,IAAW,KAC1C,EAAW,GAEZ,CACR,CASA,SAAgB,EAAY,CAC3B,OACA,UAAU,CAAC,EACX,OAAO,GACP,YAAY,SACZ,GAAG,GACiB,CACpB,GAAI,CAAC,EAAM,OAAO,KAElB,GAAI,OAAO,GAAS,SAAU,CAC7B,IAAM,EAAgB,EAAQ,GAC9B,OAAO,GAAgB,EAAA,EAAA,KAAC,EAAD,CAA0B,WAAY,CAAA,EAAI,IAClE,CAiBA,OAfI,EAAM,eAAe,CAAI,EACrB,EAAM,aAAa,EAA2D,CACpF,UAAW,EAAA,GAAG,EAAY,EAAK,MAAiC,SAAS,EACzE,GAAG,CACJ,CAAC,EAID,OAAO,GAAS,YACZ,OAAO,GAAS,UAAY,GAAiB,aAAc,GAGxD,EAAA,EAAA,KAAC,EAAD,CAA0B,YAAW,MAAO,EAAM,OAAQ,EAAM,GAAI,CAAQ,CAAA,EAG7E,IACR,CAEA,SAAgB,EACf,EACA,EACA,EACA,EACA,EACC,CACD,OAAO,EAAW,CACjB,KAAM,EAAK,KACX,WACA,YACA,SACA,SAAU,EAAK,UAAY,CAAC,EAAK,KACjC,SAAU,EAAK,QAChB,CAAC,CACF,CCrHA,SAAgB,EAAc,EAAa,IAAK,CAC/C,OAAA,EAAA,EAAA,aACE,GAAkB,CAAC,CAAC,GAAQ,EAAY,EAAY,EAAO,CAAI,CAAC,EACjE,CAAC,CAAU,CACZ,CACD,CCAA,SAAgB,EAAmB,CAClC,MACA,UAAU,GACV,YACA,iBAAiB,IACY,EAC7B,EAAA,EAAA,eAAgB,CACf,GAAI,CAAC,GAAW,CAAC,GAAa,OAAO,SAAa,IAAa,OAE/D,IAAM,EAAW,GAAyB,EACnC,EAAM,SAAW,EAAM,UACzB,EAAM,IAAI,YAAY,IAAM,EAAI,YAAY,IAC5C,GAAgB,EAAM,eAAe,EACzC,EAAU,EACX,EAGA,OADA,SAAS,iBAAiB,UAAW,CAAO,MAC/B,SAAS,oBAAoB,UAAW,CAAO,CAC7D,EAAG,CAAC,EAAS,EAAK,EAAW,CAAc,CAAC,CAC7C"}
@@ -0,0 +1,182 @@
1
+ import { useStrings as e } from "../lib/strings.js";
2
+ import { o as t } from "./ui-provider-Dj6OSOZi.js";
3
+ import { cn as n } from "../lib/utils.js";
4
+ import { s as r } from "./typography-CzFVA1w1.js";
5
+ import { a as i, f as a, i as o, l as s, n as c, o as l, r as u, t as d, u as f } from "./form-sizing-DWjJsQSR.js";
6
+ import * as p from "react";
7
+ import { memo as m, useCallback as h, useId as g, useMemo as _, useRef as v, useState as y } from "react";
8
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
9
+ import { CircleXIcon as S, Loader2Icon as C } from "lucide-react";
10
+ //#region src/components/base/forms/fields/hooks/use-form-field-state.ts
11
+ function w({ controlledValue: e, defaultValue: t, maxLength: n, showCharacterCount: r, providedId: i, idPrefix: a = "field", hasOnChange: o }) {
12
+ let s = g(), c = i || `${a}${s}`, [l, u] = y(t || ""), d = e !== void 0, f = (d ? e : l) ?? "", p = !!(o && !d && !t), m = f.length, v = n !== void 0, b = r === !1 ? !1 : !!(r || v), x = f !== "", S = h((e) => v && e.length > n, [v, n]), C = h((e) => S(e) ? !1 : (d || u(e), !0), [d, S]), w = h(() => {
13
+ d || u("");
14
+ }, [d]);
15
+ return _(() => ({
16
+ id: c,
17
+ value: f,
18
+ isControlled: d,
19
+ isReactHookForm: p,
20
+ characterCount: m,
21
+ hasCharacterLimit: v,
22
+ showCount: b,
23
+ hasValue: x,
24
+ updateValue: C,
25
+ clearValue: w,
26
+ wouldExceedLimit: S
27
+ }), [
28
+ c,
29
+ f,
30
+ d,
31
+ p,
32
+ m,
33
+ v,
34
+ b,
35
+ x,
36
+ C,
37
+ w,
38
+ S
39
+ ]);
40
+ }
41
+ //#endregion
42
+ //#region src/components/base/forms/fields/input.tsx
43
+ var ee = { clear: "Clear input" }, T = (e, t, n) => {
44
+ let r = e || "";
45
+ return t && r && (r = t + r), n && r && (r += n), r;
46
+ };
47
+ function E({ className: p, type: m = "text", startIcon: g, endIcon: y, startAddon: E, endAddon: D, maxLength: O, showCharacterCount: te, clearable: ne, onClear: k, isLoading: A, returnValueWithAddons: j, invalid: re, size: M, onChange: N, value: ie, defaultValue: ae, id: oe, strings: se, ...P }, F) {
48
+ let I = v(null), ce = e(ee, se), { defaultControlSize: le } = t(), L = a(M, le), R = h((e) => {
49
+ typeof F == "function" ? F(e) : F && (F.current = e), I.current = e;
50
+ }, [F]), { id: z, value: B, isReactHookForm: V, characterCount: H, hasCharacterLimit: U, showCount: W, hasValue: G, updateValue: K, clearValue: q, wouldExceedLimit: J } = w({
51
+ controlledValue: ie,
52
+ defaultValue: ae,
53
+ maxLength: O,
54
+ showCharacterCount: te,
55
+ providedId: oe,
56
+ idPrefix: "input",
57
+ hasOnChange: N !== void 0
58
+ }), Y = !!ne, X = !!A, ue = !!y, de = !!D, Z = m === "file", Q = !!re, fe = _(() => {
59
+ let e = L === "small" ? "ps-control-sm" : "ps-control", t = L === "small" ? "pe-control-sm" : "pe-control";
60
+ return g && (e = l[L]), E && (e = d[L]), y && (t = o[L]), D && (t = u[L]), (Y && G || X) && (t = o[L]), W && (t = c[L]), `${e} ${t}`;
61
+ }, [
62
+ g,
63
+ E,
64
+ y,
65
+ D,
66
+ Y,
67
+ G,
68
+ X,
69
+ W,
70
+ L
71
+ ]), pe = h((e) => {
72
+ let t = e.target.value;
73
+ if (!J(t) && (K(t), N)) if (j) {
74
+ let n = T(t, E, D);
75
+ N({
76
+ ...e,
77
+ target: {
78
+ ...e.target,
79
+ value: n
80
+ },
81
+ currentTarget: {
82
+ ...e.currentTarget,
83
+ value: n
84
+ }
85
+ });
86
+ } else N(e);
87
+ }, [
88
+ N,
89
+ j,
90
+ E,
91
+ D,
92
+ K,
93
+ J
94
+ ]), me = h(() => {
95
+ let e = j ? T("", E, D) : "", t = {
96
+ target: { value: e },
97
+ currentTarget: { value: e }
98
+ };
99
+ q(), N?.(t), k?.(), I.current?.focus();
100
+ }, [
101
+ j,
102
+ E,
103
+ D,
104
+ q,
105
+ N,
106
+ k
107
+ ]), he = Y && G && !W && !X, ge = X && !W, $ = ue && !Y && !W && !X, _e = de && !Y && !W && !X;
108
+ return /* @__PURE__ */ x("div", {
109
+ className: n("input--component", "relative"),
110
+ children: [
111
+ /* @__PURE__ */ b("input", {
112
+ ref: R,
113
+ id: z,
114
+ type: m,
115
+ ...!V && { value: B },
116
+ onChange: pe,
117
+ maxLength: O,
118
+ "aria-invalid": Q || void 0,
119
+ disabled: P.disabled || A,
120
+ className: n("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground", "border-input flex w-full min-w-0 rounded-radius border", "transition-[color,box-shadow] outline-none", "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", f[L], s[L], "file:inline-flex file:h-control-file file:border file:bg-transparent file:px-control file:font-medium", "file:text-sm", Z ? "cursor-pointer bg-background text-foreground file:cursor-pointer file:rounded-md file:border-input file:bg-background file:text-foreground" : "bg-transparent", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:text-destructive", "aria-invalid:placeholder:text-destructive/40", Z ? "read-only:bg-background" : "read-only:bg-muted", fe, p),
121
+ ...P
122
+ }),
123
+ !!g && /* @__PURE__ */ b("div", {
124
+ className: n("pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-control", P.disabled && "opacity-50", Q ? "text-destructive" : "text-muted-foreground/80"),
125
+ children: /* @__PURE__ */ b(g, {
126
+ className: i[L],
127
+ "aria-hidden": "true"
128
+ })
129
+ }),
130
+ !!E && /* @__PURE__ */ b("span", {
131
+ className: n("pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center", L === "small" ? "ps-control-sm text-sm" : "ps-control text-sm", P.disabled && "opacity-50", Q ? "text-destructive" : "text-muted-foreground"),
132
+ children: E
133
+ }),
134
+ !!$ && !!y && /* @__PURE__ */ b("div", {
135
+ className: n("pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control", P.disabled && "opacity-50", Q ? "text-destructive" : "text-muted-foreground/80"),
136
+ children: /* @__PURE__ */ b(y, {
137
+ className: i[L],
138
+ "aria-hidden": "true"
139
+ })
140
+ }),
141
+ !!_e && /* @__PURE__ */ b("span", {
142
+ className: n("pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center", L === "small" ? "pe-control-sm text-sm" : "pe-control text-sm", P.disabled && "opacity-50", Q ? "text-destructive" : "text-muted-foreground"),
143
+ children: D
144
+ }),
145
+ !!W && /* @__PURE__ */ b("div", {
146
+ className: n("pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center tabular-nums", L === "small" ? "pe-control-sm text-sm" : "pe-control text-sm", P.disabled && "opacity-50", Q ? "text-destructive" : "text-muted-foreground"),
147
+ "aria-live": "polite",
148
+ role: "status",
149
+ children: /* @__PURE__ */ x(r, {
150
+ tag: "span",
151
+ size: L === "small" ? "xxs" : "xs",
152
+ type: Q ? "error" : "secondary",
153
+ children: [H, U ? `/${O}` : ""]
154
+ })
155
+ }),
156
+ !!ge && /* @__PURE__ */ b("div", {
157
+ className: n("pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control", Q ? "text-destructive" : "text-muted-foreground/80"),
158
+ children: /* @__PURE__ */ b(C, {
159
+ className: n(i[L], "animate-spin"),
160
+ "aria-hidden": "true"
161
+ })
162
+ }),
163
+ !!he && /* @__PURE__ */ b("button", {
164
+ type: "button",
165
+ className: "text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-control-clear items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus-visible:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
166
+ "aria-label": ce.clear,
167
+ onClick: me,
168
+ disabled: A,
169
+ children: /* @__PURE__ */ b(S, {
170
+ className: i[L],
171
+ "aria-hidden": "true"
172
+ })
173
+ })
174
+ ]
175
+ });
176
+ }
177
+ var D = m(p.forwardRef(E));
178
+ D.displayName = "Input";
179
+ //#endregion
180
+ export { w as n, D as t };
181
+
182
+ //# sourceMappingURL=input-BgcP6x4C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-BgcP6x4C.js","names":[],"sources":["../../src/components/base/forms/fields/hooks/use-form-field-state.ts","../../src/components/base/forms/fields/input.tsx"],"sourcesContent":["import { useState, useCallback, useMemo, useId } from 'react';\n\nexport interface UseFormFieldStateOptions {\n /** Controlled value from parent */\n controlledValue?: string;\n /** Default value for uncontrolled mode */\n defaultValue?: string;\n /** Maximum character length */\n maxLength?: number;\n /** Whether to show character count */\n showCharacterCount?: boolean;\n /** Provided ID or auto-generate */\n providedId?: string;\n /** Prefix for auto-generated ID */\n idPrefix?: string;\n /** Whether onChange is provided (for react-hook-form detection) */\n hasOnChange?: boolean;\n}\n\nexport interface UseFormFieldStateReturn {\n /** Generated or provided ID */\n id: string;\n /** Current value (controlled or internal) */\n value: string;\n /** Whether component is in controlled mode */\n isControlled: boolean;\n /** Whether using react-hook-form (has onChange but no controlled value) */\n isReactHookForm: boolean;\n /** Current character count */\n characterCount: number;\n /** Whether a character limit is set */\n hasCharacterLimit: boolean;\n /** Whether to show character count UI */\n showCount: boolean;\n /** Whether the field has a value */\n hasValue: boolean;\n /** Update value - returns false if blocked by character limit */\n updateValue: (newValue: string) => boolean;\n /** Clear the value */\n clearValue: () => void;\n /** Check if a new value would exceed the character limit */\n wouldExceedLimit: (newValue: string) => boolean;\n}\n\n/**\n * Shared hook for managing form field state including:\n * - Controlled vs uncontrolled value handling\n * - Character counting and limits\n * - React Hook Form compatibility detection\n * - ID generation\n */\nexport function useFormFieldState({\n controlledValue,\n defaultValue,\n maxLength,\n showCharacterCount,\n providedId,\n idPrefix = 'field',\n hasOnChange,\n}: UseFormFieldStateOptions): UseFormFieldStateReturn {\n // Generate stable ID using React 18's useId (SSR-safe)\n const reactId = useId();\n const id = providedId || `${idPrefix}${reactId}`;\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n // Determine control mode\n const isControlled = controlledValue !== undefined;\n\n // Normalize value (handle null from backend)\n const rawValue = isControlled ? controlledValue : internalValue;\n const value = rawValue ?? '';\n\n // React Hook Form detection: has onChange but no controlled value or defaultValue\n const isReactHookForm = Boolean(hasOnChange && !isControlled && !defaultValue);\n\n // Character counting\n const characterCount = value.length;\n const hasCharacterLimit = maxLength !== undefined;\n const showCount = showCharacterCount === false ? false : Boolean(showCharacterCount || hasCharacterLimit);\n const hasValue = value !== '';\n\n // Check if value would exceed limit\n const wouldExceedLimit = useCallback(\n (newValue: string) => {\n return hasCharacterLimit && newValue.length > maxLength;\n },\n [hasCharacterLimit, maxLength]\n );\n\n // Update value (respects character limit, updates internal state if uncontrolled)\n const updateValue = useCallback(\n (newValue: string): boolean => {\n if (wouldExceedLimit(newValue)) {\n return false;\n }\n if (!isControlled) {\n setInternalValue(newValue);\n }\n return true;\n },\n [isControlled, wouldExceedLimit]\n );\n\n // Clear value\n const clearValue = useCallback(() => {\n if (!isControlled) {\n setInternalValue('');\n }\n }, [isControlled]);\n\n return useMemo(\n () => ({\n id,\n value,\n isControlled,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n }),\n [\n id,\n value,\n isControlled,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n ]\n );\n}\n","import { CircleXIcon, Loader2Icon, type LucideIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useRef, useCallback, useMemo, memo } from 'react';\nimport { Text } from '@/components/typography';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport {\n formControlAddonOffsetClasses,\n formControlCountOffsetClasses,\n formControlEndAddonOffsetClasses,\n formControlEndIconOffsetClasses,\n formControlIconClasses,\n formControlIconOffsetClasses,\n formControlPaddingClasses,\n formControlSizeClasses,\n resolveFormControlSize,\n} from '../form-sizing';\nimport { useFormFieldState } from './hooks';\n\nexport interface InputStrings {\n clear: string;\n}\n\nexport const defaultInputStrings: InputStrings = {\n clear: 'Clear input',\n};\n\n/**\n * Helper function to get value with prefix/suffix\n */\nconst getValueWithAddons = (value: string, startAddon?: string, endAddon?: string): string => {\n let result = value || '';\n if (startAddon && result) result = startAddon + result;\n if (endAddon && result) result = result + endAddon;\n return result;\n};\n\nexport interface InputProps extends Omit<React.ComponentProps<'input'>, 'onChange' | 'size'> {\n // Icon props\n startIcon?: LucideIcon;\n endIcon?: LucideIcon;\n\n // Add-on props (visual prefix/suffix inside input)\n startAddon?: string;\n endAddon?: string;\n\n // Character limit\n maxLength?: number;\n showCharacterCount?: boolean;\n\n // Clear button\n clearable?: boolean;\n onClear?: () => void;\n\n // Loading state\n isLoading?: boolean;\n\n // Return value with addons in onChange\n returnValueWithAddons?: boolean;\n\n // Error state for styling (passed from FormField)\n invalid?: boolean;\n\n // Visual size\n size?: FormControlSize;\n\n // Value props\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value?: string;\n defaultValue?: string;\n\n // String overrides (e.g. clear button aria-label)\n strings?: StringsProp<InputStrings>;\n}\n\nfunction InputImpl(\n\t{\n\t\tclassName,\n\t\ttype = 'text',\n\t\tstartIcon: StartIcon,\n\t\tendIcon: EndIcon,\n\t\tstartAddon,\n\t\tendAddon,\n\t\tmaxLength,\n\t\tshowCharacterCount,\n\t\tclearable,\n\t\tonClear,\n\t\tisLoading,\n\t\treturnValueWithAddons,\n\t\tinvalid,\n\t\tsize: sizeProp,\n\t\tonChange,\n\t\tvalue: controlledValue,\n\t\tdefaultValue,\n\t\tid: providedId,\n\t\tstrings: stringsProp,\n\t\t...props\n\t}: InputProps,\n\tforwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const strings = useStrings(defaultInputStrings, stringsProp);\n const { defaultControlSize } = useFormsConfig();\n const size = resolveFormControlSize(sizeProp, defaultControlSize);\n\n // Memoize ref callback to avoid recreation on every render\n const setRefs = useCallback(\n (node: HTMLInputElement | null) => {\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n inputRef.current = node;\n },\n [forwardedRef]\n );\n\n // Use shared form field state hook\n const {\n id,\n value: inputValue,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n } = useFormFieldState({\n controlledValue,\n defaultValue,\n maxLength,\n showCharacterCount,\n providedId,\n idPrefix: 'input',\n hasOnChange: onChange !== undefined,\n });\n\n // Derive display states (simple booleans, no need for useMemo)\n const isClearable = !!clearable;\n const isShowingLoading = !!isLoading;\n const hasEndIcon = !!EndIcon;\n const hasEndAddon = !!endAddon;\n const isFileInput = type === 'file';\n const hasError = !!invalid;\n\n // Memoize padding classes based on add-ons and icons\n // Addon padding sized so the value sits adjacent to the addon — `ps-3`\n // baseline + a measured space for addon text. Wider addons can override\n // via `className` (`ps-16` etc.) at the call site.\n const inputPaddingClasses = useMemo(() => {\n let paddingStart = size === 'small' ? 'ps-control-sm' : 'ps-control';\n let paddingEnd = size === 'small' ? 'pe-control-sm' : 'pe-control';\n\n if (StartIcon) paddingStart = formControlIconOffsetClasses[size];\n if (startAddon) paddingStart = formControlAddonOffsetClasses[size];\n\n if (EndIcon) paddingEnd = formControlEndIconOffsetClasses[size];\n if (endAddon) paddingEnd = formControlEndAddonOffsetClasses[size];\n if ((isClearable && hasValue) || isShowingLoading) paddingEnd = formControlEndIconOffsetClasses[size];\n if (showCount) paddingEnd = formControlCountOffsetClasses[size];\n\n return `${paddingStart} ${paddingEnd}`;\n }, [StartIcon, startAddon, EndIcon, endAddon, isClearable, hasValue, isShowingLoading, showCount, size]);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n // Check character limit\n if (wouldExceedLimit(newValue)) {\n return;\n }\n\n // Update internal state if uncontrolled\n updateValue(newValue);\n\n // Call external onChange with modified event if addons are requested\n if (onChange) {\n if (returnValueWithAddons) {\n const valueWithAddons = getValueWithAddons(newValue, startAddon, endAddon);\n const modifiedEvent = {\n ...e,\n target: { ...e.target, value: valueWithAddons },\n currentTarget: { ...e.currentTarget, value: valueWithAddons },\n };\n onChange(modifiedEvent as React.ChangeEvent<HTMLInputElement>);\n } else {\n onChange(e);\n }\n }\n },\n [onChange, returnValueWithAddons, startAddon, endAddon, updateValue, wouldExceedLimit]\n );\n\n const handleClear = useCallback(() => {\n const clearValueWithAddons = returnValueWithAddons\n ? getValueWithAddons('', startAddon, endAddon)\n : '';\n const syntheticEvent = {\n target: { value: clearValueWithAddons },\n currentTarget: { value: clearValueWithAddons },\n } as React.ChangeEvent<HTMLInputElement>;\n\n // Clear internal state\n clearValue();\n\n // Notify parent\n onChange?.(syntheticEvent);\n\n // Execute optional onClear callback\n onClear?.();\n\n // Focus the input after clearing\n inputRef.current?.focus();\n }, [returnValueWithAddons, startAddon, endAddon, clearValue, onChange, onClear]);\n\n // Determine what to show in the end position (priority order)\n const showClearButton = isClearable && hasValue && !showCount && !isShowingLoading;\n const showLoadingSpinner = isShowingLoading && !showCount;\n const showEndIcon = hasEndIcon && !isClearable && !showCount && !isShowingLoading;\n const showEndAddon = hasEndAddon && !isClearable && !showCount && !isShowingLoading;\n\n return (\n <div className={cn('input--component', 'relative')}>\n <input\n ref={setRefs}\n id={id}\n type={type}\n {...(!isReactHookForm && { value: inputValue })}\n onChange={handleInputChange}\n maxLength={maxLength}\n aria-invalid={hasError || undefined}\n disabled={props.disabled || isLoading}\n className={cn(\n // Base styles\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',\n 'border-input flex w-full min-w-0 rounded-radius border',\n 'transition-[color,box-shadow] outline-none',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n formControlSizeClasses[size],\n formControlPaddingClasses[size],\n // File input styles\n 'file:inline-flex file:h-control-file file:border file:bg-transparent file:px-control file:font-medium',\n 'file:text-sm',\n isFileInput\n ? 'cursor-pointer bg-background text-foreground file:cursor-pointer file:rounded-md file:border-input file:bg-background file:text-foreground'\n : 'bg-transparent',\n // Focus styles\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n // Invalid/error styles — destructive border, ring, value text\n 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:text-destructive',\n 'aria-invalid:placeholder:text-destructive/40',\n // Read-only styles\n isFileInput\n ? 'read-only:bg-background'\n : 'read-only:bg-muted',\n // Dynamic padding\n inputPaddingClasses,\n className\n )}\n {...props}\n />\n\n {/* Start Icon */}\n {!!StartIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-control',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <StartIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* Start Add-on */}\n {!!startAddon && (\n <span\n className={cn(\n 'pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center',\n size === 'small' ? 'ps-control-sm text-sm' : 'ps-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n >\n {startAddon}\n </span>\n )}\n\n {/* End Icon */}\n {!!showEndIcon && !!EndIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <EndIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* End Add-on */}\n {!!showEndAddon && (\n <span\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center',\n size === 'small' ? 'pe-control-sm text-sm' : 'pe-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n >\n {endAddon}\n </span>\n )}\n\n {/* Character Count */}\n {!!showCount && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center tabular-nums',\n size === 'small' ? 'pe-control-sm text-sm' : 'pe-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n aria-live=\"polite\"\n role=\"status\"\n >\n <Text tag=\"span\" size={size === 'small' ? 'xxs' : 'xs'} type={hasError ? 'error' : 'secondary'}>\n {characterCount}\n {hasCharacterLimit ? `/${maxLength}` : ''}\n </Text>\n </div>\n )}\n\n {/* Loading Spinner */}\n {!!showLoadingSpinner && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <Loader2Icon className={cn(formControlIconClasses[size], 'animate-spin')} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* Clear Button */}\n {!!showClearButton && (\n <button\n type=\"button\"\n className=\"text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-control-clear items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus-visible:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label={strings.clear}\n onClick={handleClear}\n disabled={isLoading}\n >\n <CircleXIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n}\n\n// forwardRef + memo (needed for callers that require refs, e.g. segmented inputs)\nconst Input = memo(React.forwardRef<HTMLInputElement, InputProps>(InputImpl));\nInput.displayName = 'Input';\n\nexport { Input };\n"],"mappings":";;;;;;;;;;AAmDA,SAAgB,EAAkB,EAC9B,oBACA,iBACA,cACA,uBACA,eACA,cAAW,SACX,kBACkD;CAElD,IAAM,IAAU,EAAM,GAChB,IAAK,KAAc,GAAG,IAAW,KAGjC,CAAC,GAAe,KAAoB,EAAS,KAAgB,EAAE,GAG/D,IAAe,MAAoB,KAAA,GAInC,KADW,IAAe,IAAkB,MACxB,IAGpB,IAAkB,GAAQ,KAAe,CAAC,KAAgB,CAAC,IAG3D,IAAiB,EAAM,QACvB,IAAoB,MAAc,KAAA,GAClC,IAAY,MAAuB,KAAQ,KAAQ,GAAQ,KAAsB,IACjF,IAAW,MAAU,IAGrB,IAAmB,GACpB,MACU,KAAqB,EAAS,SAAS,GAElD,CAAC,GAAmB,CAAS,CACjC,GAGM,IAAc,GACf,MACO,EAAiB,CAAQ,IAClB,MAEN,KACD,EAAiB,CAAQ,GAEtB,KAEX,CAAC,GAAc,CAAgB,CACnC,GAGM,IAAa,QAAkB;EACjC,AAAK,KACD,EAAiB,EAAE;CAE3B,GAAG,CAAC,CAAY,CAAC;CAEjB,OAAO,SACI;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,IACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,CACJ;AACJ;;;ACpHA,IAAa,KAAoC,EAC7C,OAAO,cACX,GAKM,KAAsB,GAAe,GAAqB,MAA8B;CAC1F,IAAI,IAAS,KAAS;CAGtB,OAFI,KAAc,MAAQ,IAAS,IAAa,IAC5C,KAAY,MAAQ,KAAkB,IACnC;AACX;AAwCA,SAAS,EACR,EACC,cACA,UAAO,QACP,WAAW,GACX,SAAS,GACT,eACA,aACA,cACA,wBACA,eACA,YACA,cACA,0BACA,aACA,MAAM,GACN,aACA,OAAO,IACP,kBACA,IAAI,IACJ,SAAS,IACT,GAAG,KAEJ,GACC;CACE,IAAM,IAAW,EAAyB,IAAI,GACxC,KAAU,EAAW,IAAqB,EAAW,GACrD,EAAE,2BAAuB,EAAe,GACxC,IAAO,EAAuB,GAAU,EAAkB,GAG1D,IAAU,GACX,MAAkC;EAM/B,AALI,OAAO,KAAiB,aACxB,EAAa,CAAI,IACV,MACP,EAAa,UAAU,IAE3B,EAAS,UAAU;CACvB,GACA,CAAC,CAAY,CACjB,GAGM,EACF,OACA,OAAO,GACP,oBACA,mBACA,sBACA,cACA,aACA,gBACA,eACA,wBACA,EAAkB;EAClB;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,aAAa,MAAa,KAAA;CAC9B,CAAC,GAGK,IAAc,CAAC,CAAC,IAChB,IAAmB,CAAC,CAAC,GACrB,KAAa,CAAC,CAAC,GACf,KAAc,CAAC,CAAC,GAChB,IAAc,MAAS,QACvB,IAAW,CAAC,CAAC,IAMb,KAAsB,QAAc;EACtC,IAAI,IAAe,MAAS,UAAU,kBAAkB,cACpD,IAAa,MAAS,UAAU,kBAAkB;EAUtD,OARI,MAAW,IAAe,EAA6B,KACvD,MAAY,IAAe,EAA8B,KAEzD,MAAS,IAAa,EAAgC,KACtD,MAAU,IAAa,EAAiC,MACvD,KAAe,KAAa,OAAkB,IAAa,EAAgC,KAC5F,MAAW,IAAa,EAA8B,KAEnD,GAAG,EAAa,GAAG;CAC9B,GAAG;EAAC;EAAW;EAAY;EAAS;EAAU;EAAa;EAAU;EAAkB;EAAW;CAAI,CAAC,GAEjG,KAAoB,GACrB,MAA2C;EACxC,IAAM,IAAW,EAAE,OAAO;EAGtB,OAAiB,CAAQ,MAK7B,EAAY,CAAQ,GAGhB,IACA,IAAI,GAAuB;GACvB,IAAM,IAAkB,EAAmB,GAAU,GAAY,CAAQ;GAMzE,EAAS;IAJL,GAAG;IACH,QAAQ;KAAE,GAAG,EAAE;KAAQ,OAAO;IAAgB;IAC9C,eAAe;KAAE,GAAG,EAAE;KAAe,OAAO;IAAgB;GAEvD,CAAoD;EACjE,OACI,EAAS,CAAC;CAGtB,GACA;EAAC;EAAU;EAAuB;EAAY;EAAU;EAAa;CAAgB,CACzF,GAEM,KAAc,QAAkB;EAClC,IAAM,IAAuB,IACvB,EAAmB,IAAI,GAAY,CAAQ,IAC3C,IACA,IAAiB;GACnB,QAAQ,EAAE,OAAO,EAAqB;GACtC,eAAe,EAAE,OAAO,EAAqB;EACjD;EAYA,AATA,EAAW,GAGX,IAAW,CAAc,GAGzB,IAAU,GAGV,EAAS,SAAS,MAAM;CAC5B,GAAG;EAAC;EAAuB;EAAY;EAAU;EAAY;EAAU;CAAO,CAAC,GAGzE,KAAkB,KAAe,KAAY,CAAC,KAAa,CAAC,GAC5D,KAAqB,KAAoB,CAAC,GAC1C,IAAc,MAAc,CAAC,KAAe,CAAC,KAAa,CAAC,GAC3D,KAAe,MAAe,CAAC,KAAe,CAAC,KAAa,CAAC;CAEnE,OACI,kBAAC,OAAD;EAAK,WAAW,EAAG,oBAAoB,UAAU;YAAjD;GACI,kBAAC,SAAD;IACI,KAAK;IACD;IACE;IACN,GAAK,CAAC,KAAmB,EAAE,OAAO,EAAW;IAC7C,UAAU;IACC;IACX,gBAAc,KAAY,KAAA;IAC1B,UAAU,EAAM,YAAY;IAC5B,WAAW,EAEP,iHACA,0DACA,8CACA,gFACA,EAAuB,IACvB,EAA0B,IAE1B,yGACA,gBACA,IACM,+IACA,kBAEN,iFAEA,kGACA,gDAEA,IACM,4BACA,sBAEN,IACA,CACJ;IACA,GAAI;GACP,CAAA;GAGA,CAAC,CAAC,KACC,kBAAC,OAAD;IACI,WAAW,EACP,8FACA,EAAM,YAAY,cAClB,IAAW,qBAAqB,0BACpC;cAEA,kBAAC,GAAD;KAAW,WAAW,EAAuB;KAAO,eAAY;IAAQ,CAAA;GACvE,CAAA;GAIR,CAAC,CAAC,KACC,kBAAC,QAAD;IACI,WAAW,EACP,mFACA,MAAS,UAAU,0BAA0B,sBAC7C,EAAM,YAAY,cAClB,IAAW,qBAAqB,uBACpC;cAEC;GACC,CAAA;GAIT,CAAC,CAAC,KAAe,CAAC,CAAC,KAChB,kBAAC,OAAD;IACI,WAAW,EACP,4FACA,EAAM,YAAY,cAClB,IAAW,qBAAqB,0BACpC;cAEA,kBAAC,GAAD;KAAS,WAAW,EAAuB;KAAO,eAAY;IAAQ,CAAA;GACrE,CAAA;GAIR,CAAC,CAAC,MACC,kBAAC,QAAD;IACI,WAAW,EACP,iFACA,MAAS,UAAU,0BAA0B,sBAC7C,EAAM,YAAY,cAClB,IAAW,qBAAqB,uBACpC;cAEC;GACC,CAAA;GAIT,CAAC,CAAC,KACC,kBAAC,OAAD;IACI,WAAW,EACP,8FACA,MAAS,UAAU,0BAA0B,sBAC7C,EAAM,YAAY,cAClB,IAAW,qBAAqB,uBACpC;IACA,aAAU;IACV,MAAK;cAEL,kBAAC,GAAD;KAAM,KAAI;KAAO,MAAM,MAAS,UAAU,QAAQ;KAAM,MAAM,IAAW,UAAU;eAAnF,CACK,GACA,IAAoB,IAAI,MAAc,EACrC;;GACL,CAAA;GAIR,CAAC,CAAC,MACC,kBAAC,OAAD;IACI,WAAW,EACP,4FACA,IAAW,qBAAqB,0BACpC;cAEA,kBAAC,GAAD;KAAa,WAAW,EAAG,EAAuB,IAAO,cAAc;KAAG,eAAY;IAAQ,CAAA;GAC7F,CAAA;GAIR,CAAC,CAAC,MACC,kBAAC,UAAD;IACI,MAAK;IACL,WAAU;IACV,cAAY,GAAQ;IACpB,SAAS;IACT,UAAU;cAEV,kBAAC,GAAD;KAAa,WAAW,EAAuB;KAAO,eAAY;IAAQ,CAAA;GACtE,CAAA;EAEX;;AAEb;AAGA,IAAM,IAAQ,EAAK,EAAM,WAAyC,CAAS,CAAC;AAC5E,EAAM,cAAc"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("./ui-provider-DZWtUXf2.cjs"),r=require("../lib/utils.cjs"),i=require("./typography-GtkgK9QX.cjs"),a=require("./form-sizing-DJus3nK3.cjs");let o=require("react");o=e.t(o,1);let s=require("react/jsx-runtime"),c=require("lucide-react");function l({controlledValue:e,defaultValue:t,maxLength:n,showCharacterCount:r,providedId:i,idPrefix:a=`field`,hasOnChange:s}){let c=(0,o.useId)(),l=i||`${a}${c}`,[u,d]=(0,o.useState)(t||``),f=e!==void 0,p=(f?e:u)??``,m=!!(s&&!f&&!t),h=p.length,g=n!==void 0,_=r===!1?!1:!!(r||g),v=p!==``,y=(0,o.useCallback)(e=>g&&e.length>n,[g,n]),b=(0,o.useCallback)(e=>y(e)?!1:(f||d(e),!0),[f,y]),x=(0,o.useCallback)(()=>{f||d(``)},[f]);return(0,o.useMemo)(()=>({id:l,value:p,isControlled:f,isReactHookForm:m,characterCount:h,hasCharacterLimit:g,showCount:_,hasValue:v,updateValue:b,clearValue:x,wouldExceedLimit:y}),[l,p,f,m,h,g,_,v,b,x,y])}var u={clear:`Clear input`},d=(e,t,n)=>{let r=e||``;return t&&r&&(r=t+r),n&&r&&(r+=n),r};function f({className:e,type:f=`text`,startIcon:p,endIcon:m,startAddon:h,endAddon:g,maxLength:_,showCharacterCount:v,clearable:y,onClear:b,isLoading:x,returnValueWithAddons:S,invalid:C,size:w,onChange:T,value:E,defaultValue:D,id:O,strings:k,...A},j){let M=(0,o.useRef)(null),N=t.useStrings(u,k),{defaultControlSize:P}=n.o(),F=a.f(w,P),I=(0,o.useCallback)(e=>{typeof j==`function`?j(e):j&&(j.current=e),M.current=e},[j]),{id:L,value:R,isReactHookForm:z,characterCount:B,hasCharacterLimit:V,showCount:H,hasValue:U,updateValue:W,clearValue:G,wouldExceedLimit:K}=l({controlledValue:E,defaultValue:D,maxLength:_,showCharacterCount:v,providedId:O,idPrefix:`input`,hasOnChange:T!==void 0}),q=!!y,J=!!x,Y=!!m,X=!!g,Z=f===`file`,Q=!!C,$=(0,o.useMemo)(()=>{let e=F===`small`?`ps-control-sm`:`ps-control`,t=F===`small`?`pe-control-sm`:`pe-control`;return p&&(e=a.o[F]),h&&(e=a.t[F]),m&&(t=a.i[F]),g&&(t=a.r[F]),(q&&U||J)&&(t=a.i[F]),H&&(t=a.n[F]),`${e} ${t}`},[p,h,m,g,q,U,J,H,F]),ee=(0,o.useCallback)(e=>{let t=e.target.value;if(!K(t)&&(W(t),T))if(S){let n=d(t,h,g);T({...e,target:{...e.target,value:n},currentTarget:{...e.currentTarget,value:n}})}else T(e)},[T,S,h,g,W,K]),te=(0,o.useCallback)(()=>{let e=S?d(``,h,g):``,t={target:{value:e},currentTarget:{value:e}};G(),T?.(t),b?.(),M.current?.focus()},[S,h,g,G,T,b]),ne=q&&U&&!H&&!J,re=J&&!H,ie=Y&&!q&&!H&&!J,ae=X&&!q&&!H&&!J;return(0,s.jsxs)(`div`,{className:r.cn(`input--component`,`relative`),children:[(0,s.jsx)(`input`,{ref:I,id:L,type:f,...!z&&{value:R},onChange:ee,maxLength:_,"aria-invalid":Q||void 0,disabled:A.disabled||x,className:r.cn(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground`,`border-input flex w-full min-w-0 rounded-radius border`,`transition-[color,box-shadow] outline-none`,`disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,a.u[F],a.l[F],`file:inline-flex file:h-control-file file:border file:bg-transparent file:px-control file:font-medium`,`file:text-sm`,Z?`cursor-pointer bg-background text-foreground file:cursor-pointer file:rounded-md file:border-input file:bg-background file:text-foreground`:`bg-transparent`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:text-destructive`,`aria-invalid:placeholder:text-destructive/40`,Z?`read-only:bg-background`:`read-only:bg-muted`,$,e),...A}),!!p&&(0,s.jsx)(`div`,{className:r.cn(`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-control`,A.disabled&&`opacity-50`,Q?`text-destructive`:`text-muted-foreground/80`),children:(0,s.jsx)(p,{className:a.a[F],"aria-hidden":`true`})}),!!h&&(0,s.jsx)(`span`,{className:r.cn(`pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center`,F===`small`?`ps-control-sm text-sm`:`ps-control text-sm`,A.disabled&&`opacity-50`,Q?`text-destructive`:`text-muted-foreground`),children:h}),!!ie&&!!m&&(0,s.jsx)(`div`,{className:r.cn(`pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control`,A.disabled&&`opacity-50`,Q?`text-destructive`:`text-muted-foreground/80`),children:(0,s.jsx)(m,{className:a.a[F],"aria-hidden":`true`})}),!!ae&&(0,s.jsx)(`span`,{className:r.cn(`pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center`,F===`small`?`pe-control-sm text-sm`:`pe-control text-sm`,A.disabled&&`opacity-50`,Q?`text-destructive`:`text-muted-foreground`),children:g}),!!H&&(0,s.jsx)(`div`,{className:r.cn(`pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center tabular-nums`,F===`small`?`pe-control-sm text-sm`:`pe-control text-sm`,A.disabled&&`opacity-50`,Q?`text-destructive`:`text-muted-foreground`),"aria-live":`polite`,role:`status`,children:(0,s.jsxs)(i.s,{tag:`span`,size:F===`small`?`xxs`:`xs`,type:Q?`error`:`secondary`,children:[B,V?`/${_}`:``]})}),!!re&&(0,s.jsx)(`div`,{className:r.cn(`pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control`,Q?`text-destructive`:`text-muted-foreground/80`),children:(0,s.jsx)(c.Loader2Icon,{className:r.cn(a.a[F],`animate-spin`),"aria-hidden":`true`})}),!!ne&&(0,s.jsx)(`button`,{type:`button`,className:`text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-control-clear items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus-visible:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,"aria-label":N.clear,onClick:te,disabled:x,children:(0,s.jsx)(c.CircleXIcon,{className:a.a[F],"aria-hidden":`true`})})]})}var p=(0,o.memo)(o.forwardRef(f));p.displayName=`Input`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
2
+ //# sourceMappingURL=input-DV3g7Fm5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-DV3g7Fm5.cjs","names":[],"sources":["../../src/components/base/forms/fields/hooks/use-form-field-state.ts","../../src/components/base/forms/fields/input.tsx"],"sourcesContent":["import { useState, useCallback, useMemo, useId } from 'react';\n\nexport interface UseFormFieldStateOptions {\n /** Controlled value from parent */\n controlledValue?: string;\n /** Default value for uncontrolled mode */\n defaultValue?: string;\n /** Maximum character length */\n maxLength?: number;\n /** Whether to show character count */\n showCharacterCount?: boolean;\n /** Provided ID or auto-generate */\n providedId?: string;\n /** Prefix for auto-generated ID */\n idPrefix?: string;\n /** Whether onChange is provided (for react-hook-form detection) */\n hasOnChange?: boolean;\n}\n\nexport interface UseFormFieldStateReturn {\n /** Generated or provided ID */\n id: string;\n /** Current value (controlled or internal) */\n value: string;\n /** Whether component is in controlled mode */\n isControlled: boolean;\n /** Whether using react-hook-form (has onChange but no controlled value) */\n isReactHookForm: boolean;\n /** Current character count */\n characterCount: number;\n /** Whether a character limit is set */\n hasCharacterLimit: boolean;\n /** Whether to show character count UI */\n showCount: boolean;\n /** Whether the field has a value */\n hasValue: boolean;\n /** Update value - returns false if blocked by character limit */\n updateValue: (newValue: string) => boolean;\n /** Clear the value */\n clearValue: () => void;\n /** Check if a new value would exceed the character limit */\n wouldExceedLimit: (newValue: string) => boolean;\n}\n\n/**\n * Shared hook for managing form field state including:\n * - Controlled vs uncontrolled value handling\n * - Character counting and limits\n * - React Hook Form compatibility detection\n * - ID generation\n */\nexport function useFormFieldState({\n controlledValue,\n defaultValue,\n maxLength,\n showCharacterCount,\n providedId,\n idPrefix = 'field',\n hasOnChange,\n}: UseFormFieldStateOptions): UseFormFieldStateReturn {\n // Generate stable ID using React 18's useId (SSR-safe)\n const reactId = useId();\n const id = providedId || `${idPrefix}${reactId}`;\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n // Determine control mode\n const isControlled = controlledValue !== undefined;\n\n // Normalize value (handle null from backend)\n const rawValue = isControlled ? controlledValue : internalValue;\n const value = rawValue ?? '';\n\n // React Hook Form detection: has onChange but no controlled value or defaultValue\n const isReactHookForm = Boolean(hasOnChange && !isControlled && !defaultValue);\n\n // Character counting\n const characterCount = value.length;\n const hasCharacterLimit = maxLength !== undefined;\n const showCount = showCharacterCount === false ? false : Boolean(showCharacterCount || hasCharacterLimit);\n const hasValue = value !== '';\n\n // Check if value would exceed limit\n const wouldExceedLimit = useCallback(\n (newValue: string) => {\n return hasCharacterLimit && newValue.length > maxLength;\n },\n [hasCharacterLimit, maxLength]\n );\n\n // Update value (respects character limit, updates internal state if uncontrolled)\n const updateValue = useCallback(\n (newValue: string): boolean => {\n if (wouldExceedLimit(newValue)) {\n return false;\n }\n if (!isControlled) {\n setInternalValue(newValue);\n }\n return true;\n },\n [isControlled, wouldExceedLimit]\n );\n\n // Clear value\n const clearValue = useCallback(() => {\n if (!isControlled) {\n setInternalValue('');\n }\n }, [isControlled]);\n\n return useMemo(\n () => ({\n id,\n value,\n isControlled,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n }),\n [\n id,\n value,\n isControlled,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n ]\n );\n}\n","import { CircleXIcon, Loader2Icon, type LucideIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useRef, useCallback, useMemo, memo } from 'react';\nimport { Text } from '@/components/typography';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport {\n formControlAddonOffsetClasses,\n formControlCountOffsetClasses,\n formControlEndAddonOffsetClasses,\n formControlEndIconOffsetClasses,\n formControlIconClasses,\n formControlIconOffsetClasses,\n formControlPaddingClasses,\n formControlSizeClasses,\n resolveFormControlSize,\n} from '../form-sizing';\nimport { useFormFieldState } from './hooks';\n\nexport interface InputStrings {\n clear: string;\n}\n\nexport const defaultInputStrings: InputStrings = {\n clear: 'Clear input',\n};\n\n/**\n * Helper function to get value with prefix/suffix\n */\nconst getValueWithAddons = (value: string, startAddon?: string, endAddon?: string): string => {\n let result = value || '';\n if (startAddon && result) result = startAddon + result;\n if (endAddon && result) result = result + endAddon;\n return result;\n};\n\nexport interface InputProps extends Omit<React.ComponentProps<'input'>, 'onChange' | 'size'> {\n // Icon props\n startIcon?: LucideIcon;\n endIcon?: LucideIcon;\n\n // Add-on props (visual prefix/suffix inside input)\n startAddon?: string;\n endAddon?: string;\n\n // Character limit\n maxLength?: number;\n showCharacterCount?: boolean;\n\n // Clear button\n clearable?: boolean;\n onClear?: () => void;\n\n // Loading state\n isLoading?: boolean;\n\n // Return value with addons in onChange\n returnValueWithAddons?: boolean;\n\n // Error state for styling (passed from FormField)\n invalid?: boolean;\n\n // Visual size\n size?: FormControlSize;\n\n // Value props\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value?: string;\n defaultValue?: string;\n\n // String overrides (e.g. clear button aria-label)\n strings?: StringsProp<InputStrings>;\n}\n\nfunction InputImpl(\n\t{\n\t\tclassName,\n\t\ttype = 'text',\n\t\tstartIcon: StartIcon,\n\t\tendIcon: EndIcon,\n\t\tstartAddon,\n\t\tendAddon,\n\t\tmaxLength,\n\t\tshowCharacterCount,\n\t\tclearable,\n\t\tonClear,\n\t\tisLoading,\n\t\treturnValueWithAddons,\n\t\tinvalid,\n\t\tsize: sizeProp,\n\t\tonChange,\n\t\tvalue: controlledValue,\n\t\tdefaultValue,\n\t\tid: providedId,\n\t\tstrings: stringsProp,\n\t\t...props\n\t}: InputProps,\n\tforwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n const strings = useStrings(defaultInputStrings, stringsProp);\n const { defaultControlSize } = useFormsConfig();\n const size = resolveFormControlSize(sizeProp, defaultControlSize);\n\n // Memoize ref callback to avoid recreation on every render\n const setRefs = useCallback(\n (node: HTMLInputElement | null) => {\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n inputRef.current = node;\n },\n [forwardedRef]\n );\n\n // Use shared form field state hook\n const {\n id,\n value: inputValue,\n isReactHookForm,\n characterCount,\n hasCharacterLimit,\n showCount,\n hasValue,\n updateValue,\n clearValue,\n wouldExceedLimit,\n } = useFormFieldState({\n controlledValue,\n defaultValue,\n maxLength,\n showCharacterCount,\n providedId,\n idPrefix: 'input',\n hasOnChange: onChange !== undefined,\n });\n\n // Derive display states (simple booleans, no need for useMemo)\n const isClearable = !!clearable;\n const isShowingLoading = !!isLoading;\n const hasEndIcon = !!EndIcon;\n const hasEndAddon = !!endAddon;\n const isFileInput = type === 'file';\n const hasError = !!invalid;\n\n // Memoize padding classes based on add-ons and icons\n // Addon padding sized so the value sits adjacent to the addon — `ps-3`\n // baseline + a measured space for addon text. Wider addons can override\n // via `className` (`ps-16` etc.) at the call site.\n const inputPaddingClasses = useMemo(() => {\n let paddingStart = size === 'small' ? 'ps-control-sm' : 'ps-control';\n let paddingEnd = size === 'small' ? 'pe-control-sm' : 'pe-control';\n\n if (StartIcon) paddingStart = formControlIconOffsetClasses[size];\n if (startAddon) paddingStart = formControlAddonOffsetClasses[size];\n\n if (EndIcon) paddingEnd = formControlEndIconOffsetClasses[size];\n if (endAddon) paddingEnd = formControlEndAddonOffsetClasses[size];\n if ((isClearable && hasValue) || isShowingLoading) paddingEnd = formControlEndIconOffsetClasses[size];\n if (showCount) paddingEnd = formControlCountOffsetClasses[size];\n\n return `${paddingStart} ${paddingEnd}`;\n }, [StartIcon, startAddon, EndIcon, endAddon, isClearable, hasValue, isShowingLoading, showCount, size]);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n // Check character limit\n if (wouldExceedLimit(newValue)) {\n return;\n }\n\n // Update internal state if uncontrolled\n updateValue(newValue);\n\n // Call external onChange with modified event if addons are requested\n if (onChange) {\n if (returnValueWithAddons) {\n const valueWithAddons = getValueWithAddons(newValue, startAddon, endAddon);\n const modifiedEvent = {\n ...e,\n target: { ...e.target, value: valueWithAddons },\n currentTarget: { ...e.currentTarget, value: valueWithAddons },\n };\n onChange(modifiedEvent as React.ChangeEvent<HTMLInputElement>);\n } else {\n onChange(e);\n }\n }\n },\n [onChange, returnValueWithAddons, startAddon, endAddon, updateValue, wouldExceedLimit]\n );\n\n const handleClear = useCallback(() => {\n const clearValueWithAddons = returnValueWithAddons\n ? getValueWithAddons('', startAddon, endAddon)\n : '';\n const syntheticEvent = {\n target: { value: clearValueWithAddons },\n currentTarget: { value: clearValueWithAddons },\n } as React.ChangeEvent<HTMLInputElement>;\n\n // Clear internal state\n clearValue();\n\n // Notify parent\n onChange?.(syntheticEvent);\n\n // Execute optional onClear callback\n onClear?.();\n\n // Focus the input after clearing\n inputRef.current?.focus();\n }, [returnValueWithAddons, startAddon, endAddon, clearValue, onChange, onClear]);\n\n // Determine what to show in the end position (priority order)\n const showClearButton = isClearable && hasValue && !showCount && !isShowingLoading;\n const showLoadingSpinner = isShowingLoading && !showCount;\n const showEndIcon = hasEndIcon && !isClearable && !showCount && !isShowingLoading;\n const showEndAddon = hasEndAddon && !isClearable && !showCount && !isShowingLoading;\n\n return (\n <div className={cn('input--component', 'relative')}>\n <input\n ref={setRefs}\n id={id}\n type={type}\n {...(!isReactHookForm && { value: inputValue })}\n onChange={handleInputChange}\n maxLength={maxLength}\n aria-invalid={hasError || undefined}\n disabled={props.disabled || isLoading}\n className={cn(\n // Base styles\n 'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',\n 'border-input flex w-full min-w-0 rounded-radius border',\n 'transition-[color,box-shadow] outline-none',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n formControlSizeClasses[size],\n formControlPaddingClasses[size],\n // File input styles\n 'file:inline-flex file:h-control-file file:border file:bg-transparent file:px-control file:font-medium',\n 'file:text-sm',\n isFileInput\n ? 'cursor-pointer bg-background text-foreground file:cursor-pointer file:rounded-md file:border-input file:bg-background file:text-foreground'\n : 'bg-transparent',\n // Focus styles\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n // Invalid/error styles — destructive border, ring, value text\n 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:text-destructive',\n 'aria-invalid:placeholder:text-destructive/40',\n // Read-only styles\n isFileInput\n ? 'read-only:bg-background'\n : 'read-only:bg-muted',\n // Dynamic padding\n inputPaddingClasses,\n className\n )}\n {...props}\n />\n\n {/* Start Icon */}\n {!!StartIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-control',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <StartIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* Start Add-on */}\n {!!startAddon && (\n <span\n className={cn(\n 'pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center',\n size === 'small' ? 'ps-control-sm text-sm' : 'ps-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n >\n {startAddon}\n </span>\n )}\n\n {/* End Icon */}\n {!!showEndIcon && !!EndIcon && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <EndIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* End Add-on */}\n {!!showEndAddon && (\n <span\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center',\n size === 'small' ? 'pe-control-sm text-sm' : 'pe-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n >\n {endAddon}\n </span>\n )}\n\n {/* Character Count */}\n {!!showCount && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center tabular-nums',\n size === 'small' ? 'pe-control-sm text-sm' : 'pe-control text-sm',\n props.disabled && 'opacity-50',\n hasError ? 'text-destructive' : 'text-muted-foreground'\n )}\n aria-live=\"polite\"\n role=\"status\"\n >\n <Text tag=\"span\" size={size === 'small' ? 'xxs' : 'xs'} type={hasError ? 'error' : 'secondary'}>\n {characterCount}\n {hasCharacterLimit ? `/${maxLength}` : ''}\n </Text>\n </div>\n )}\n\n {/* Loading Spinner */}\n {!!showLoadingSpinner && (\n <div\n className={cn(\n 'pointer-events-none absolute inset-y-0 end-0 flex items-center justify-center pe-control',\n hasError ? 'text-destructive' : 'text-muted-foreground/80'\n )}\n >\n <Loader2Icon className={cn(formControlIconClasses[size], 'animate-spin')} aria-hidden=\"true\" />\n </div>\n )}\n\n {/* Clear Button */}\n {!!showClearButton && (\n <button\n type=\"button\"\n className=\"text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-control-clear items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus-visible:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label={strings.clear}\n onClick={handleClear}\n disabled={isLoading}\n >\n <CircleXIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n}\n\n// forwardRef + memo (needed for callers that require refs, e.g. segmented inputs)\nconst Input = memo(React.forwardRef<HTMLInputElement, InputProps>(InputImpl));\nInput.displayName = 'Input';\n\nexport { Input };\n"],"mappings":"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"}