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":"cards-cQ9lL6zy.js","names":[],"sources":["../../src/components/ui/card.tsx","../../src/components/base/cards/smart-card.tokens.ts","../../src/components/base/cards/partials/has-renderable-content.ts","../../src/components/base/cards/partials/card-primitives.tsx","../../src/components/base/cards/partials/smart-card-alert.tsx","../../src/components/base/cards/partials/smart-card-actions-menu.tsx","../../src/components/base/cards/partials/smart-card-header-row.tsx","../../src/components/base/cards/smart-card.strings.ts","../../src/components/base/cards/partials/smart-card-skeleton.tsx","../../src/components/base/cards/smart-card.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base leading-normal font-medium group-data-[size=sm]/card:text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import { cn } from '@/lib/utils';\n\nimport type { CardPadding, SmartCardSurface } from './smart-card.types';\n\n/**\n * BEM-style hooks applied to every SmartCard subregion. Library\n * consumers can target them in CSS / tests / analytics without\n * relying on shadcn's data-slot attributes (which are framework\n * internals). Keep these names consistent — they are part of the\n * public DOM contract.\n */\nexport const CARD_BEM = {\n\troot: 'card--component',\n\theader: 'card--header',\n\ttitle: 'card--title',\n\tdescription: 'card--description',\n\tcontent: 'card--content',\n\tfooter: 'card--footer',\n\talert: 'card--alert',\n} as const;\n\ninterface PaddingTokens {\n\tshell: string;\n\theaderX: string;\n\tcontentX: string;\n\tcontentY: string;\n\tfooterX: string;\n\talertX: string;\n\t/** Vertical offset applied when alert sits BELOW the header (pulls it up). */\n\talertOffsetWithHeader: string;\n\t/** Vertical spacing applied when alert is the first content (no header). */\n\talertOffsetStandalone: string;\n}\n\nexport const PADDING: Record<CardPadding, PaddingTokens> = {\n\tsmall: {\n\t\tshell: 'gap-space-lg py-surface-sm',\n\t\theaderX: 'px-surface-sm',\n\t\tcontentX: 'px-surface-sm',\n\t\tcontentY: 'py-0',\n\t\tfooterX: 'px-surface-sm',\n\t\talertX: 'px-surface-sm',\n\t\talertOffsetWithHeader: '-mt-1',\n\t\talertOffsetStandalone: 'mt-0',\n\t},\n\tdefault: {\n\t\tshell: 'gap-space-xl py-[calc(var(--surface-y)+var(--space-xs))]',\n\t\theaderX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\tcontentX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\tcontentY: 'py-0',\n\t\tfooterX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\talertX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\talertOffsetWithHeader: '-mt-1',\n\t\talertOffsetStandalone: 'mt-0',\n\t},\n};\n\n/**\n * Surface-specific shell classes. The `framed` variant provides one clean\n * card surface with a soft tokenized ring, not nested borders that compete\n * with the example chrome.\n */\nexport const SURFACE_CLASSES: Record<SmartCardSurface, string> = {\n\tcard: 'rounded-lg border border-border bg-card text-card-foreground shadow-xs',\n\tflat: 'bg-transparent text-card-foreground border-none shadow-none',\n\tframed: cn(\n\t\t'rounded-lg border border-border bg-card text-card-foreground shadow-xs',\n\t\t'ring-4 ring-border/30',\n\t),\n};\n","import { Fragment, isValidElement, type ReactNode } from 'react';\n\n/**\n * Predicate used by SmartCard subregions to decide whether each slot\n * warrants rendering its wrapper. Numbers (incl. `0`) and JSX always\n * render; falsy / empty-string content is treated as absent. Fragments\n * recurse into their children.\n */\nexport function hasRenderableContent(content?: ReactNode): boolean {\n\tif (content === null || content === undefined) return false;\n\tif (typeof content === 'boolean') return false;\n\tif (typeof content === 'string') return content.trim().length > 0;\n\tif (typeof content === 'number' || typeof content === 'bigint') return true;\n\tif (Array.isArray(content)) return content.some(hasRenderableContent);\n\tif (isValidElement<{ children?: ReactNode }>(content)) {\n\t\tif (content.type === Fragment) return hasRenderableContent(content.props.children);\n\t\treturn true;\n\t}\n\treturn true;\n}\n","/**\n * Internal layout primitives — re-exported from `smart-card.tsx` for\n * advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each primitive is intentionally thin:\n * a single responsibility, a single set of default classes, no business\n * logic. The BEM hooks (`card--component`, `card--header`, etc.) are\n * applied here so the public DOM contract lives in one place.\n */\nimport {\n\ttype ComponentPropsWithRef,\n\ttype ComponentPropsWithoutRef,\n} from 'react';\n\nimport {\n\tCard as CardPrimitive,\n\tCardContent as CardContentPrimitive,\n\tCardDescription as CardDescriptionPrimitive,\n\tCardFooter as CardFooterPrimitive,\n\tCardHeader as CardHeaderPrimitive,\n\tCardTitle as CardTitlePrimitive,\n} from '@/components/ui/card';\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\n\nimport { CARD_BEM } from '../smart-card.tokens';\n\nimport { hasRenderableContent } from './has-renderable-content';\n\nexport function CardShell({ className, ...props }: ComponentPropsWithRef<'div'>) {\n\treturn (\n\t\t<CardPrimitive\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.root,\n\t\t\t\t'flex w-full flex-col gap-3 py-4 ring-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardHeader({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardHeaderPrimitive\n\t\t\tclassName={cn(CARD_BEM.header, 'flex flex-col gap-1 px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardTitle({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardTitlePrimitive\n\t\t\t\tclassName={cn(CARD_BEM.title, 'min-w-0 text-sm leading-tight font-semibold', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</CardTitlePrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-title\"\n\t\t\ttag=\"div\"\n\t\t\tweight=\"semibold\"\n\t\t\tlineHeight=\"tight\"\n\t\t\tclassName={cn(CARD_BEM.title, 'min-w-0 font-semibold', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardDescription({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardDescriptionPrimitive\n\t\t\t\tclassName={cn(\n\t\t\t\t\tCARD_BEM.description,\n\t\t\t\t\t'text-muted-foreground text-sm',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</CardDescriptionPrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-description\"\n\t\t\ttag=\"div\"\n\t\t\ttype=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.description,\n\t\t\t\t'text-muted-foreground text-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardContent({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardContentPrimitive\n\t\t\tclassName={cn(CARD_BEM.content, 'px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardFooter({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardFooterPrimitive\n\t\t\tclassName={cn(CARD_BEM.footer, 'flex items-center px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","/**\n * Inline alert banner rendered between the header and the card body.\n * Pulls itself up under the header (`alertOffsetWithHeader`) when one\n * exists so the visual gap between header bottom and alert top stays\n * tight; otherwise pushes itself down (`alertOffsetStandalone`) so it\n * doesn't kiss the card top edge.\n */\nimport type { ReactNode } from 'react';\n\nimport { Alert, AlertDescription } from '@/components/base/display/alert';\nimport { cn } from '@/lib/utils';\n\nimport { CARD_BEM, PADDING } from '../smart-card.tokens';\nimport type { CardAlertVariant, CardPadding } from '../smart-card.types';\n\ninterface AlertSlotProps {\n\talert: ReactNode | string;\n\talertVariant: CardAlertVariant;\n\thasHeader: boolean;\n\tpadding: CardPadding;\n}\n\nexport function SmartCardAlert({\n\talert,\n\talertVariant,\n\thasHeader,\n\tpadding,\n}: AlertSlotProps) {\n\tconst tokens = PADDING[padding];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.alert,\n\t\t\t\ttokens.alertX,\n\t\t\t\thasHeader ? tokens.alertOffsetWithHeader : tokens.alertOffsetStandalone,\n\t\t\t)}\n\t\t>\n\t\t\t<Alert variant={alertVariant}>\n\t\t\t\t<AlertDescription>{alert}</AlertDescription>\n\t\t\t</Alert>\n\t\t</div>\n\t);\n}\n","/**\n * SmartCard actions menu — `⋮` trigger + dropdown of consumer-supplied\n * `SmartCardAction` items. Always renders a 28×28 square trigger so it\n * reads cleanly as a circle (consumer overrides to `rounded-full`) or\n * a rectangle (default `rounded-md`).\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nimport type { SmartCardAction } from '../smart-card.types';\n\ninterface ActionsMenuProps {\n\tactions: SmartCardAction[];\n\tactionsLabel: string;\n}\n\nexport function ActionsMenu({ actions, actionsLabel }: ActionsMenuProps) {\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={actionsLabel}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inline-flex size-7 shrink-0 items-center justify-center rounded-md p-0',\n\t\t\t\t\t'text-muted-foreground hover:bg-accent hover:text-accent-foreground',\n\t\t\t\t\t'outline-none focus-visible:ring-2 focus-visible:ring-ring/50',\n\t\t\t\t\t'transition-colors',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<MoreHorizontal className=\"size-4\" />\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"end\" className=\"min-w-36\">\n\t\t\t\t{actions.map((action, index) => (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tkey={action.id ?? `${action.label}-${index}`}\n\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\tclassName=\"gap-space-lg px-row-x py-row-y text-sm\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span className=\"flex shrink-0 items-center\">{action.icon}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t))}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","/**\n * SmartCardHeaderRow — the chrome above the card body. Combines icon /\n * title / description / tooltip / suffix on the leading side with the\n * trailing `headerEnd` / `headerAction` slots and the actions menu.\n *\n * `TooltipTrigger_Info` is colocated here because it's only used by the\n * header — keeping it private avoids polluting the public partial\n * surface.\n */\nimport { Info } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from '@/components/base/display/tooltip';\nimport { cn } from '@/lib/utils';\n\nimport { PADDING } from '../smart-card.tokens';\nimport type { CardPadding, SmartCardAction } from '../smart-card.types';\n\nimport { CardHeader, CardTitle, CardDescription } from './card-primitives';\nimport { hasRenderableContent } from './has-renderable-content';\nimport { ActionsMenu } from './smart-card-actions-menu';\n\nfunction TooltipTrigger_Info({ tooltipLabel }: { tooltipLabel: string }) {\n\treturn (\n\t\t<TooltipTrigger\n\t\t\trender={(triggerProps) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst passthrough = triggerProps as Record<string, any>;\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t{...passthrough}\n\t\t\t\t\t\ttype=\"button\"\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\tclassName={cn(\n\t\t\t\t\t\t\t'h-5 w-5 text-muted-foreground',\n\t\t\t\t\t\t\tpassthrough.className,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={tooltipLabel}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Info className=\"size-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\ninterface HeaderProps {\n\ticon?: ReactNode;\n\ttitle?: ReactNode;\n\ttitleSuffix?: ReactNode;\n\tdescription?: ReactNode;\n\ttooltip?: ReactNode;\n\ttooltipLabel: string;\n\theaderStart?: ReactNode;\n\theaderEnd?: ReactNode;\n\theaderAction?: ReactNode;\n\tactions?: SmartCardAction[];\n\tactionsLabel: string;\n\tpadding: CardPadding;\n\tclassName?: string;\n}\n\nexport function SmartCardHeaderRow({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttooltip,\n\ttooltipLabel,\n\theaderStart,\n\theaderEnd,\n\theaderAction,\n\tactions,\n\tactionsLabel,\n\tpadding,\n\tclassName,\n}: HeaderProps) {\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst hasActions = cardActions.length > 0;\n\n\tconst hasIcon = hasRenderableContent(icon);\n\tconst hasTitle = hasRenderableContent(title);\n\tconst hasTitleSuffix = hasRenderableContent(titleSuffix);\n\tconst hasDescription = hasRenderableContent(description);\n\tconst hasTooltip = hasRenderableContent(tooltip);\n\tconst hasHeaderStart = hasRenderableContent(headerStart);\n\tconst hasHeaderEnd = hasRenderableContent(headerEnd);\n\tconst hasHeaderAction = hasRenderableContent(headerAction);\n\n\tconst showTitleRow = hasIcon || hasTitle || hasTitleSuffix || hasTooltip;\n\tconst showTrailing = hasHeaderEnd || hasHeaderAction || hasActions;\n\n\treturn (\n\t\t<CardHeader\n\t\t\tclassName={cn(\n\t\t\t\t'flex-row items-start justify-between gap-3 pb-0',\n\t\t\t\tPADDING[padding].headerX,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n\t\t\t\t{!!hasHeaderStart && headerStart}\n\n\t\t\t\t{!!showTitleRow && (\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1\">\n\t\t\t\t\t\t{!!hasIcon && (\n\t\t\t\t\t\t\t<span className=\"flex shrink-0 items-center text-muted-foreground\">\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<CardTitle>{title}</CardTitle>\n\t\t\t\t\t\t{!!hasTitleSuffix && (\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">{titleSuffix}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger_Info tooltipLabel={tooltipLabel} />\n\t\t\t\t\t\t\t\t<TooltipContent>{tooltip}</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\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{!!hasDescription && (\n\t\t\t\t\t<CardDescription className=\"text-left\">{description}</CardDescription>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!showTrailing && (\n\t\t\t\t<div className=\"flex shrink-0 items-center gap-2\">\n\t\t\t\t\t{!!hasHeaderEnd && headerEnd}\n\t\t\t\t\t{!!hasHeaderAction && headerAction}\n\t\t\t\t\t{!!hasActions && (\n\t\t\t\t\t\t<ActionsMenu actions={cardActions} actionsLabel={actionsLabel} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardHeader>\n\t);\n}\n","/**\n * SmartCard strings — i18n surface for the chrome the consumer doesn't\n * pass directly. Most copy (title, description, action labels, alert\n * body) flows in via props; the strings here cover the implicit\n * affordances (expand toggle).\n */\n\nexport interface SmartCardStrings {\n\texpandLabel: string;\n\tcollapseLabel: string;\n}\n\nexport const defaultSmartCardStrings: SmartCardStrings = {\n\texpandLabel: 'Expand card',\n\tcollapseLabel: 'Collapse card',\n};\n","/**\n * SmartCardSkeleton — placeholder shell rendered while a SmartCard's\n * data is loading. Picks up the canonical card surface so the loading\n * state visually matches the eventual `SmartCard` it'll replace.\n */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { SURFACE_CLASSES } from '../smart-card.tokens';\n\nimport {\n\tCardContent,\n\tCardHeader,\n\tCardShell,\n\tCardTitle,\n} from './card-primitives';\n\nexport interface SmartCardSkeletonProps {\n\ttitle?: ReactNode;\n\tlines?: number;\n\tclassName?: string;\n}\n\nexport function SmartCardSkeleton({\n\ttitle,\n\tlines = 2,\n\tclassName,\n}: SmartCardSkeletonProps) {\n\tconst SkeletonBar = ({ barClassName }: { barClassName?: string }) => (\n\t\t<div className={cn('animate-pulse rounded bg-muted', barClassName)} />\n\t);\n\n\treturn (\n\t\t<CardShell className={cn(SURFACE_CLASSES.card, 'gap-4 py-6', className)}>\n\t\t\t<CardHeader className=\"flex-col gap-1.5 px-6 pb-0\">\n\t\t\t\t{title ? <CardTitle>{title}</CardTitle> : <SkeletonBar barClassName=\"h-4 w-32\" />}\n\t\t\t</CardHeader>\n\t\t\t<CardContent className=\"space-y-3 px-6 py-0\">\n\t\t\t\t{Array.from({ length: lines }, (_, i) => (\n\t\t\t\t\t<SkeletonBar\n\t\t\t\t\t\tkey={`skel-${String(i)}`}\n\t\t\t\t\t\tbarClassName={cn('h-4', i === 0 ? 'w-full' : 'w-3/4')}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</CardContent>\n\t\t</CardShell>\n\t);\n}\n\nSmartCardSkeleton.displayName = 'SmartCardSkeleton';\n","/**\n * SmartCard — composed card with header (icon, title, suffix, description,\n * tooltip), actions menu, alert banner, header / content / footer slots,\n * surface variants (card / flat / framed), and an opt-in expandable body.\n *\n * The single card primitive everything else builds on — never reach past it\n * to shadcn `Card` directly. The CardShell / CardHeader / CardTitle /\n * CardDescription / CardContent / CardFooter primitives are re-exported\n * for advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each subregion paints a BEM-style hook\n * (`card--component`, `card--header`, `card--title`, …) for CSS / test /\n * analytics targeting independent of shadcn's data-slot internals.\n *\n * The file is a thin orchestrator. The actual chrome lives in:\n * - `./smart-card.types.ts` — public prop / variant types\n * - `./smart-card.strings.ts` — i18n (expand toggle copy)\n * - `./smart-card.tokens.ts` — PADDING + SURFACE_CLASSES + CARD_BEM\n * - `./partials/card-primitives.tsx` — CardShell + CardHeader / Title /\n * Description / Content / Footer\n * - `./partials/smart-card-header-row.tsx` — header layout + actions menu\n * - `./partials/smart-card-alert.tsx` — inline alert banner\n * - `./partials/smart-card-actions-menu.tsx` — `⋮` dropdown\n * - `./partials/smart-card-skeleton.tsx` — loading placeholder\n * - `./partials/has-renderable-content.ts` — slot-empty predicate\n */\nimport { ChevronDown } from 'lucide-react';\nimport {\n\ttype CSSProperties,\n\tforwardRef,\n\tuseCallback,\n\tuseState,\n} from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { useStrings } from '@/lib/strings';\nimport { useCardConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tCardContent,\n\tCardFooter,\n\tCardShell,\n} from './partials/card-primitives';\nimport { hasRenderableContent } from './partials/has-renderable-content';\nimport { SmartCardAlert } from './partials/smart-card-alert';\nimport { SmartCardHeaderRow } from './partials/smart-card-header-row';\nimport {\n\tdefaultSmartCardStrings,\n} from './smart-card.strings';\nimport {\n\tPADDING,\n\tSURFACE_CLASSES,\n} from './smart-card.tokens';\nimport type {\n\tCardPadding,\n\tSmartCardProps,\n\tSmartCardSurface,\n} from './smart-card.types';\n\nfunction normalizeCardPadding(padding: CardPadding | string | undefined): CardPadding {\n\tif (padding === 'small' || padding === 'default') return padding;\n\tif (padding === 'sm') return 'small';\n\tif (padding === 'base' || padding === 'lg') return 'default';\n\treturn 'default';\n}\n\nexport const SmartCard = forwardRef<HTMLDivElement, SmartCardProps>(function SmartCard({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttooltip,\n\ttooltipAriaLabel = 'Card info',\n\tfooterText,\n\talert,\n\talertVariant = 'default',\n\tsurface,\n\ttransparent = false,\n\tpadding,\n\tactions,\n\tactionsLabel = 'Card actions',\n\theaderAction,\n\theaderStart,\n\theaderEnd,\n\tcontentTop,\n\tcontentBottom,\n\tfooterSlot,\n\theaderDivider = false,\n\tfooterDivider = false,\n\texpandable = false,\n\tdefaultExpanded = false,\n\texpanded: expandedProp,\n\tonExpandedChange,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tcontentClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n}, ref) {\n\tconst { defaultPadding } = useCardConfig();\n\tconst resolvedPadding = normalizeCardPadding(padding ?? defaultPadding);\n\tconst tokens = PADDING[resolvedPadding];\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst strings = useStrings(defaultSmartCardStrings, stringsProp);\n\n\tconst isExpandable = expandable !== false && expandable !== undefined;\n\tconst collapsedMaxHeightRaw =\n\t\ttypeof expandable === 'object' && expandable?.collapsedMaxHeight !== undefined\n\t\t\t? expandable.collapsedMaxHeight\n\t\t\t: '12rem';\n\tconst collapsedMaxHeight =\n\t\ttypeof collapsedMaxHeightRaw === 'number'\n\t\t\t? `${collapsedMaxHeightRaw}px`\n\t\t\t: collapsedMaxHeightRaw;\n\n\tconst isExpandedControlled = expandedProp !== undefined;\n\tconst [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\tconst expanded = isExpandedControlled ? expandedProp : internalExpanded;\n\tconst handleToggle = useCallback(() => {\n\t\tconst next = !expanded;\n\t\tif (!isExpandedControlled) setInternalExpanded(next);\n\t\tonExpandedChange?.(next);\n\t}, [expanded, isExpandedControlled, onExpandedChange]);\n\n\tconst hasHeader =\n\t\thasRenderableContent(icon) ||\n\t\thasRenderableContent(title) ||\n\t\thasRenderableContent(description) ||\n\t\tcardActions.length > 0 ||\n\t\thasRenderableContent(headerAction) ||\n\t\thasRenderableContent(headerStart) ||\n\t\thasRenderableContent(headerEnd);\n\n\tconst hasAlert = hasRenderableContent(alert);\n\tconst hasFooterText = hasRenderableContent(footerText);\n\tconst hasFooterSlot = hasRenderableContent(footerSlot);\n\tconst hasContentTop = hasRenderableContent(contentTop);\n\tconst hasContentBottom = hasRenderableContent(contentBottom);\n\n\tconst tooltipLabel =\n\t\ttooltipAriaLabel.trim().length > 0 ? tooltipAriaLabel : 'Card info';\n\n\tconst collapseStyle: CSSProperties | undefined = isExpandable\n\t\t? {\n\t\t\t\tmaxHeight: expanded ? '' : collapsedMaxHeight,\n\t\t\t}\n\t\t: undefined;\n\n\t// Resolve surface — explicit `surface` wins, else legacy `transparent`,\n\t// else the default framed chrome.\n\tconst resolvedSurface: SmartCardSurface = surface ?? (transparent ? 'flat' : 'framed');\n\n\treturn (\n\t\t<CardShell\n\t\t\tref={ref}\n\t\t\tdata-surface={resolvedSurface}\n\t\t\tclassName={cn(\n\t\t\t\tSURFACE_CLASSES[resolvedSurface],\n\t\t\t\ttokens.shell,\n\t\t\t\t// `isExpandable` parks the chevron at `-bottom-4` outside the\n\t\t\t\t// shell — `overflow-visible` lets it render past the card\n\t\t\t\t// edge, otherwise the shadcn primitive's `overflow-hidden`\n\t\t\t\t// clips it.\n\t\t\t\tisExpandable && 'relative pb-1 !overflow-visible',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{!!hasHeader && (\n\t\t\t\t<SmartCardHeaderRow\n\t\t\t\t\ticon={icon}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleSuffix={titleSuffix}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\ttooltip={tooltip}\n\t\t\t\t\ttooltipLabel={tooltipLabel}\n\t\t\t\t\theaderStart={headerStart}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\theaderAction={headerAction}\n\t\t\t\t\tactions={cardActions}\n\t\t\t\t\tactionsLabel={actionsLabel}\n\t\t\t\t\tpadding={resolvedPadding}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\theaderDivider && 'pb-3 border-b border-border/60',\n\t\t\t\t\t\theaderClassName,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!hasAlert && (\n\t\t\t\t<SmartCardAlert\n\t\t\t\t\talert={alert}\n\t\t\t\t\talertVariant={alertVariant}\n\t\t\t\t\thasHeader={hasHeader}\n\t\t\t\t\tpadding={resolvedPadding}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttokens.contentX,\n\t\t\t\t\ttokens.contentY,\n\t\t\t\t\tisExpandable &&\n\t\t\t\t\t\t'relative overflow-hidden transition-[max-height] duration-500 ease-in-out',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t\tstyle={collapseStyle}\n\t\t\t>\n\t\t\t\t{!!hasContentTop && contentTop}\n\t\t\t\t{children}\n\t\t\t\t{!!hasContentBottom && contentBottom}\n\n\t\t\t\t{!!isExpandable && !expanded && (\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName=\"from-background pointer-events-none absolute inset-x-0 bottom-0 h-20 rounded-b-lg bg-linear-to-t to-transparent\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</CardContent>\n\n\t\t\t{!!hasFooterText && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'justify-end text-xs text-muted-foreground',\n\t\t\t\t\t\ttokens.footerX,\n\t\t\t\t\t\tfooterDivider && 'pt-3 border-t border-border/60',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footerText}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\n\t\t\t{!!hasFooterSlot && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-col items-stretch',\n\t\t\t\t\t\ttokens.footerX,\n\t\t\t\t\t\tfooterDivider && 'pt-3 border-t border-border/60',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footerSlot}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\n\t\t\t{!!isExpandable && (\n\t\t\t\t<div className=\"absolute -bottom-4 left-1/2 -translate-x-1/2 z-10\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\t\taria-expanded={expanded}\n\t\t\t\t\t\taria-label={expanded ? strings.collapseLabel : strings.expandLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'inline-flex size-8 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t'border border-border bg-background text-foreground shadow-sm',\n\t\t\t\t\t\t\t'hover:bg-muted/40 transition-colors',\n\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'size-4 transition-transform duration-300',\n\t\t\t\t\t\t\t\texpanded && 'rotate-180',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span className=\"sr-only\">\n\t\t\t\t\t\t\t{expanded ? strings.collapseLabel : strings.expandLabel}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n});\n\nSmartCard.displayName = 'SmartCard';\n\n// ──────────────────────────────────────────────────────────────────────────\n// Re-exports — public surface lives here so `import { ... } from\n// '@/components/base/cards'` keeps working through the file split.\n// ──────────────────────────────────────────────────────────────────────────\n\nexport {\n\tdefaultSmartCardStrings,\n\ttype SmartCardStrings,\n} from './smart-card.strings';\nexport type {\n\tCardAlertVariant,\n\tCardPadding,\n\tSmartCardAction,\n\tSmartCardProps,\n\tSmartCardSkeletonProps,\n\tSmartCardSurface,\n} from './smart-card.types';\nexport {\n\tCardContent,\n\tCardDescription,\n\tCardFooter,\n\tCardHeader,\n\tCardShell,\n\tCardTitle,\n} from './partials/card-primitives';\nexport { SmartCardSkeleton } from './partials/smart-card-skeleton';\n"],"mappings":"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"}
@@ -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("./button-BMiPFJIb.cjs"),a=require("./typography-GtkgK9QX.cjs"),o=require("./input-DV3g7Fm5.cjs"),s=require("./form-sizing-DJus3nK3.cjs"),c=require("./scroll-area-CIRXK7s0.cjs");let l=require("react");l=e.t(l,1);let u=require("react/jsx-runtime"),d=require("lucide-react"),f=require("@base-ui/react/combobox");var p=f.Combobox.Root;function m({className:e,...t}){return(0,u.jsx)(f.Combobox.Input,{"data-slot":`combobox-input`,className:r.cn(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-10 w-full min-w-0 rounded-md border bg-background px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive`,e),...t})}function h({className:e,children:t,...n}){return(0,u.jsxs)(f.Combobox.Trigger,{"data-slot":`combobox-trigger`,className:r.cn(`border-input file:text-foreground placeholder:text-muted-foreground flex h-10 w-full items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive`,`[&>span]:line-clamp-1`,e),...n,children:[t,(0,u.jsx)(f.Combobox.Icon,{className:`flex`,children:(0,u.jsx)(d.ChevronDownIcon,{className:`size-4 opacity-50`})})]})}function g({placeholder:e,...t}){return(0,u.jsx)(f.Combobox.Value,{"data-slot":`combobox-value`,placeholder:!!e&&(0,u.jsx)(`span`,{className:`text-muted-foreground`,children:e}),...t})}function _({className:e,...t}){return(0,u.jsx)(f.Combobox.Clear,{"data-slot":`combobox-clear`,className:r.cn(`absolute right-8 top-1/2 -translate-y-1/2 rounded-sm opacity-50 ring-offset-background transition-opacity`,`hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`disabled:pointer-events-none`,e),...t,children:(0,u.jsx)(d.XIcon,{className:`size-4`})})}var v={sm:`h-8 text-xs pl-2 pr-8`,md:`h-10 text-sm pl-3 pr-10`,lg:`h-12 text-base pl-4 pr-12`},y={sm:`pr-14`,md:`pr-16`,lg:`pr-20`},b={sm:`right-1`,md:`right-2`,lg:`right-3`},x={sm:`size-3`,md:`size-4`,lg:`size-5`};function S({className:e,showClear:t=!1,size:n=`md`,error:i,...a}){return(0,u.jsxs)(`div`,{className:`relative`,children:[(0,u.jsx)(f.Combobox.Input,{"data-slot":`combobox-input`,className:r.cn(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-md border bg-background shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive`,v[n],t&&y[n],e),"aria-invalid":i||void 0,...a}),(0,u.jsxs)(`div`,{className:r.cn(`absolute top-1/2 -translate-y-1/2 flex items-center gap-1 text-muted-foreground`,b[n]),children:[!!t&&(0,u.jsx)(f.Combobox.Clear,{"data-slot":`combobox-clear`,className:`rounded-sm p-1 opacity-50 hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,children:(0,u.jsx)(d.XIcon,{className:x[n]})}),(0,u.jsx)(f.Combobox.Trigger,{className:`rounded-sm p-1 hover:bg-accent focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,children:(0,u.jsx)(d.ChevronDownIcon,{className:x[n]})})]})]})}var C=f.Combobox.Portal;function w({className:e,sideOffset:t=4,...n}){return(0,u.jsx)(f.Combobox.Positioner,{"data-slot":`combobox-positioner`,sideOffset:t,className:r.cn(`z-50 outline-none`,e),...n})}function T({className:e,...t}){return(0,u.jsx)(f.Combobox.Popup,{"data-slot":`combobox-popup`,className:r.cn(`w-[var(--anchor-width)] min-w-[8rem] max-w-[var(--available-width)] max-h-[min(var(--available-height),24rem)]`,`overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md`,`origin-[var(--transform-origin)]`,`data-[starting-style]:opacity-0 data-[starting-style]:scale-95`,`data-[ending-style]:opacity-0 data-[ending-style]:scale-95`,`transition-[opacity,transform] duration-150`,e),...t})}function E({className:e,...t}){return(0,u.jsx)(f.Combobox.List,{"data-slot":`combobox-list`,className:r.cn(`max-h-[min(24rem,var(--available-height))] overflow-y-auto overscroll-contain p-1`,`outline-none empty:hidden`,e),...t})}var D={sm:`py-1 px-2 text-xs gap-2`,md:`py-1.5 px-2.5 text-sm gap-2`,lg:`py-2 px-3 text-base gap-2.5`},O={sm:`size-3`,md:`size-4`,lg:`size-5`};function k({className:e,children:t,size:n=`md`,...i}){return(0,u.jsxs)(f.Combobox.Item,{"data-slot":`combobox-item`,className:r.cn(`flex w-full cursor-default select-none items-center justify-between rounded-sm outline-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground`,D[n],e),...i,children:[(0,u.jsx)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2 truncate`,children:t}),(0,u.jsx)(f.Combobox.ItemIndicator,{className:r.cn(`flex shrink-0 items-center justify-center text-muted-foreground`,O[n]),children:(0,u.jsx)(d.CheckIcon,{className:O[n]})})]})}function A({className:e,children:t,...n}){return(0,u.jsx)(f.Combobox.ItemIndicator,{"data-slot":`combobox-item-indicator`,className:r.cn(e),...n,children:t??(0,u.jsx)(d.CheckIcon,{className:`size-4`})})}function j({className:e,children:t,...n}){return(0,u.jsx)(f.Combobox.Empty,{"data-slot":`combobox-empty`,className:r.cn(`py-6 text-center text-sm text-muted-foreground empty:hidden`,e),...n,children:t})}function M({className:e,...t}){return(0,u.jsx)(f.Combobox.Status,{"data-slot":`combobox-status`,className:r.cn(`flex items-center gap-2 px-3 py-2 text-sm text-muted-foreground empty:hidden`,e),...t})}function N({className:e,...t}){return(0,u.jsx)(f.Combobox.Group,{"data-slot":`combobox-group`,className:r.cn(`overflow-hidden p-1`,e),...t})}function P({className:e,...t}){return(0,u.jsx)(f.Combobox.GroupLabel,{"data-slot":`combobox-group-label`,className:r.cn(`px-2 py-1.5 text-xs font-medium text-muted-foreground`,e),...t})}var F=f.Combobox.Collection;function I({className:e,...t}){return(0,u.jsx)(f.Combobox.Separator,{"data-slot":`combobox-separator`,className:r.cn(`-mx-1 my-1 h-px bg-muted`,e),...t})}var L={sm:`min-h-8 gap-1 px-2 py-1 text-xs`,md:`min-h-10 gap-1.5 px-3 py-2 text-sm`,lg:`min-h-12 gap-2 px-4 py-2.5 text-base`};function R({className:e,size:t=`md`,error:n,...i}){return(0,u.jsx)(f.Combobox.Chips,{"data-slot":`combobox-chips`,className:r.cn(`flex flex-wrap items-center rounded-md border border-input bg-background ring-offset-background shadow-xs transition-[color,box-shadow] outline-none`,`focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]`,`aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15`,L[t],e),"aria-invalid":n||void 0,...i})}function z({className:e,children:t,...n}){return(0,u.jsxs)(f.Combobox.Chip,{"data-slot":`combobox-chip`,className:r.cn(`inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-1 text-xs font-medium text-secondary-foreground`,`data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground`,`focus-within:bg-primary focus-within:text-primary-foreground`,e),...n,children:[t,(0,u.jsx)(f.Combobox.ChipRemove,{className:`rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,children:(0,u.jsx)(d.XIcon,{className:`size-3`})})]})}function ee({className:e,...t}){return(0,u.jsx)(f.Combobox.Input,{"data-slot":`combobox-chips-input`,className:r.cn(`min-w-[80px] flex-1 bg-transparent outline-none placeholder:text-muted-foreground`,e),...t})}function B({className:e,...t}){return(0,u.jsx)(f.Combobox.Backdrop,{"data-slot":`combobox-backdrop`,className:r.cn(`fixed inset-0 z-50 bg-black/80`,`data-[starting-style]:opacity-0 data-[ending-style]:opacity-0`,`transition-opacity duration-150`,e),...t})}function V({className:e,...t}){return(0,u.jsx)(f.Combobox.Arrow,{"data-slot":`combobox-arrow`,className:r.cn(`fill-popover`,e),...t})}var H=f.Combobox.useFilter,U={placeholder:`Search...`,clear:`Clear selection`,toggle:`Open options`,searching:`Loading...`,noResults:`No results found.`,typeToSearch:`Type at least {min} characters to search...`,typeMore:`Type {remaining} more character{s} to search...`,createNew:`Create {value}`,loadingMore:`Loading...`,apply:`Apply`,cancel:`Cancel`},W=3,te=300,G=`default`,K=.8,ne=100,re=500,q=Symbol(`enhanced-combobox-create-option`);function J(e){return typeof e==`object`&&!!e&&q in e}function Y(e){if(!J(e))throw Error(`Item is not a create option`);return e[q]}function ie(e){return{[q]:e}}function X({isLoading:e,text:t,className:n}){return e?(0,u.jsxs)(`div`,{className:r.cn(`loading-more--component`,`flex items-center justify-center gap-space-sm px-control py-space-xs text-xs text-muted-foreground`,n),role:`status`,"aria-live":`polite`,children:[(0,u.jsx)(d.Loader2,{className:`size-icon-sm animate-spin`,"aria-hidden":`true`}),(0,u.jsx)(`span`,{children:t})]}):null}X.displayName=`LoadingMore`;function Z({isLoading:e,searchValue:t,minSearchLength:n,itemCount:r,strings:i}){let a=t.trim();if(e)return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(d.Loader2,{className:`size-icon-sm animate-spin`}),i.searching]});if(a===``)return i.typeToSearch.includes(`{min}`)?i.typeToSearch.replace(`{min}`,String(n)):i.typeToSearch;if(a.length<n){let e=n-a.length;return i.typeMore.includes(`{remaining}`)||i.typeMore.includes(`{s}`)?i.typeMore.replace(`{remaining}`,String(e)).replace(`{s}`,e===1?``:`s`):i.typeMore}return null}Z.displayName=`StatusContent`;var ae={small:`sm`,default:`md`},oe={small:`min-h-control-sm gap-space-lg rounded-md px-row-x py-row-y text-xs leading-tight [&>span:first-child]:gap-space-lg [&>span:first-child]:text-xs`,default:`min-h-control gap-space-lg rounded-md px-row-x py-row-y text-sm leading-tight [&>span:first-child]:gap-space-lg [&>span:first-child]:text-sm`},se=`px-row-x py-row-y text-xxs font-medium uppercase tracking-wide text-muted-foreground`;function ce({isLoading:e,showStatus:t,showEmpty:n,searchValue:r,minSearchLength:a,items:o,groupedItems:s,createOptionItem:l,renderItemContent:d,getItemReactKey:f,getItemDisabled:p,renderGroupLabel:m,isLoadingMore:h,strings:g,size:_=G,portalContainer:v,listRef:y,anchor:b,applyFooter:x}){let S=v==null?void 0:`z-[100]`,D=ae[_],O=(0,u.jsx)(w,{anchor:b,className:S,children:(0,u.jsxs)(T,{"aria-busy":e||void 0,className:`combobox-dropdown--popup rounded-radius border-border/70 shadow-sm`,children:[!!t&&(0,u.jsx)(M,{className:`gap-space-sm px-control py-space-xs text-xs text-muted-foreground`,children:(0,u.jsx)(Z,{isLoading:e,searchValue:r,minSearchLength:a,itemCount:o.length,strings:g})}),!!n&&(0,u.jsx)(j,{className:`px-control py-space-xs text-center text-xs text-muted-foreground`,children:g.noResults}),(0,u.jsx)(c.t,{viewportRef:y,className:`max-h-[min(20rem,var(--available-height))]`,children:(0,u.jsx)(E,{className:`combobox-dropdown--list max-h-none overflow-visible p-space-sm`,children:s?(0,u.jsxs)(u.Fragment,{children:[Array.from(s.entries()).map(([e,t])=>(0,u.jsxs)(N,{className:`combobox-dropdown--group p-0`,items:t,children:[(0,u.jsx)(P,{className:se,children:typeof m==`function`?m(e):e}),(0,u.jsx)(F,{children:e=>(0,u.jsx)(k,{value:e,size:D,className:oe[_],disabled:p?.(e),children:d(e)},f(e))})]},e)),l!=null&&(0,u.jsx)(k,{value:l,size:D,className:oe[_],children:d(l)},f(l))]}):(0,u.jsx)(F,{children:e=>(0,u.jsx)(k,{value:e,size:D,className:oe[_],disabled:p?.(e),children:d(e)},f(e))})})}),(0,u.jsx)(X,{isLoading:!!h,text:g.loadingMore}),!!x&&(0,u.jsxs)(`div`,{className:`flex items-center justify-end gap-space-md border-t border-border/60 px-control py-space-xs`,children:[(0,u.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:e=>{e.preventDefault(),e.stopPropagation(),x.onCancel()},children:x.cancelLabel}),(0,u.jsx)(i.t,{type:`button`,variant:`primary`,onClick:e=>{e.preventDefault(),e.stopPropagation(),x.onApply()},children:x.applyLabel})]})]})});return v?(0,u.jsx)(C,{container:v,children:O}):(0,u.jsx)(C,{children:O})}ce.displayName=`ComboboxDropdown`;var le={small:`text-xs mt-space-sm`,default:`text-sm mt-space-md`};function ue({error:e,size:t,className:n}){return e?(0,u.jsx)(`p`,{className:r.cn(`error-message--component`,`text-destructive`,le[t],n),role:`alert`,"aria-live":`polite`,children:e}):null}ue.displayName=`ErrorMessage`;function Q(e){return e.replace(/[$()*+.?[\\\]^{|}]/g,`\\$&`)}function $({text:e,highlight:t,highlightClassName:n=`rounded-sm bg-warning/20 px-0.5 text-warning-foreground dark:bg-warning/25`}){if(!t.trim())return e;let r=RegExp(`(${Q(t)})`,`gi`),i=e.split(r),a=0;return(0,u.jsx)(u.Fragment,{children:i.map((e,t)=>{let r=t%2==1,i=String(a);return a+=e.length,r?(0,u.jsx)(`mark`,{className:n,children:e},i):(0,u.jsx)(`span`,{children:e},i)})})}$.displayName=`HighlightedText`;function de({searchValue:e,onSearch:t,debounceMs:n=300,minSearchLength:r=3}){let i=(0,l.useRef)(null),a=(0,l.useRef)(t);(0,l.useEffect)(()=>{a.current=t},[t]),(0,l.useEffect)(()=>{if(!a.current)return;i.current&&clearTimeout(i.current);let t=e.trim();return t.length>=r&&(i.current=setTimeout(()=>{a.current?.(t)},n)),()=>{i.current&&clearTimeout(i.current)}},[e,n,r])}function fe({items:e,getItemGroup:t}){return(0,l.useMemo)(()=>{if(!t)return null;let n=new Map;for(let r of e){let e=t(r),i=n.get(e);i?i.push(r):n.set(e,[r])}return n},[e,t])}function pe({hasMore:e,onLoadMore:t,isLoadingMore:n}){let r=(0,l.useRef)(!1),i=(0,l.useRef)(null),a=(0,l.useCallback)(a=>{if(!e||!t||n||r.current)return;let{scrollHeight:o,scrollTop:s,clientHeight:c}=a.target;(s+c)/o>=.8&&(i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{r.current=!0,t(),setTimeout(()=>{r.current=!1},500)},100))},[e,t,n]);return(0,l.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]),{handleScroll:a}}function me(e){return t.useStrings(U,e)}function he(e,t,n){let r=t.toLowerCase();return e.some(e=>n(e).toLowerCase()===r)}function ge({items:e,searchValue:t,getItemLabel:n,getItemKey:i,isLoading:o=!1,minSearchLength:s=3,strings:c,renderItem:f,onSearch:p,debounceMs:m=300,creatable:h,onCreate:g,getItemGroup:_,hasMore:v,onLoadMore:y,isLoadingMore:b,highlightMatch:x,ensuredItems:S=[]}){let C=me(c),w=i??n,T=(0,l.useRef)(null),E=t.trim();de({searchValue:t,onSearch:p,debounceMs:m,minSearchLength:s});let{handleScroll:D}=pe({hasMore:v,onLoadMore:y,isLoadingMore:b});(0,l.useEffect)(()=>{let e=T.current;if(!(!e||!v||!y))return e.addEventListener(`scroll`,D),()=>e.removeEventListener(`scroll`,D)},[D,v,y]);let O=(0,l.useMemo)(()=>{if(S.length===0)return e;let t=[...S];return e.forEach(e=>{let n=w(e);S.some(e=>w(e)===n)||t.push(e)}),t},[e,S,w]),k=fe({items:O,getItemGroup:_}),A=(0,l.useMemo)(()=>!h||!g||E.length<s?!1:!he(O,E,n),[h,g,E,s,O,n]),j=(0,l.useMemo)(()=>A?ie(E):null,[A,E]);return{strings:C,getKey:w,trimmedSearch:E,listRef:T,baseItems:O,allItems:(0,l.useMemo)(()=>j?[...O,j]:O,[O,j]),groupedItems:k,createOptionItem:j,showStatus:o||E.length<s,showEmpty:!o&&E.length>=s&&e.length===0&&!A,showCreateOption:A,renderItemContent:(0,l.useCallback)(e=>{if(J(e)){let t=Y(e);return(0,u.jsxs)(`span`,{className:r.cn(`use-enhanced-combobox-core--component`,`flex items-center gap-space-sm text-xs`),children:[(0,u.jsx)(d.PlusIcon,{className:`size-icon-sm`}),C.createNew.includes(`{value}`)?C.createNew.replace(`{value}`,t):(0,u.jsxs)(`span`,{className:`inline-flex items-center gap-space-sm`,children:[(0,u.jsx)(`span`,{children:C.createNew}),(0,u.jsx)(a.s,{tag:`span`,size:`xs`,weight:`medium`,className:`text-xs`,children:t})]})]})}if(f)return f(e);let t=n(e);return x&&E?(0,u.jsx)($,{text:t,highlight:E}):t},[C.createNew,f,n,x,E]),itemToStringLabel:(0,l.useCallback)(e=>J(e)?Y(e):n(e),[n]),getItemReactKey:(0,l.useCallback)(e=>J(e)?`__create__:${Y(e)}`:String(w(e)),[w]),handleScroll:D}}var _e={small:`small`,default:`default`};function ve(e,t){return e??_e[t??`default`]??`default`}var ye={small:`small`,default:`default`},be={small:`pe-control-actions-sm`,default:`pe-control-actions`},xe={small:`sm`,default:`md`};function Se(e){return ye[e]}function Ce({placeholder:e,clearLabel:t,toggleLabel:n,size:a,error:c,required:l,disabled:p,clearable:m=!0,className:h,onBlur:g}){return(0,u.jsxs)(`div`,{className:`relative`,children:[(0,u.jsx)(f.Combobox.Input,{render:(0,u.jsx)(o.t,{size:a,invalid:c,className:r.cn(be[a],h)}),placeholder:e,"aria-invalid":c||void 0,"aria-required":l,disabled:p,onBlur:g}),(0,u.jsxs)(`div`,{className:`absolute inset-y-0 end-1 flex items-center gap-1 text-muted-foreground`,children:[m?(0,u.jsx)(f.Combobox.Clear,{render:(0,u.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:`size-control-clear text-muted-foreground hover:text-foreground`,"aria-label":t,children:(0,u.jsx)(d.XIcon,{className:s.a[a],"aria-hidden":`true`})})}):null,(0,u.jsx)(f.Combobox.Trigger,{render:(0,u.jsx)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:`size-control-clear text-muted-foreground hover:text-foreground`,"aria-label":n,children:(0,u.jsx)(d.ChevronDownIcon,{className:s.a[a],"aria-hidden":`true`})})})]})]})}function we({items:e,selectedValue:t,onSelectedValueChange:r,searchValue:i,onSearchValueChange:a,getItemLabel:o,getItemKey:s,isLoading:c=!1,minSearchLength:d=3,strings:f,disabled:m=!1,className:h,clearable:g=!0,renderItem:_,portalContainer:v,name:y,invalid:b,error:x,required:S,onBlur:C,onSearch:w,debounceMs:T,creatable:E,onCreate:D,getItemGroup:O,renderGroupLabel:k,hasMore:A,onLoadMore:j,isLoadingMore:M,getItemDisabled:N,highlightMatch:P,size:F,open:I,onOpenChange:L}){let{defaultControlSize:R}=n.o(),z=ve(F,R),ee=Se(z),B=b||!!x,V=ge({items:e,searchValue:i,onSearchValueChange:a,getItemLabel:o,getItemKey:s,isLoading:c,minSearchLength:d,strings:f,renderItem:_,onSearch:w,debounceMs:T,creatable:E,onCreate:D,getItemGroup:O,hasMore:A,onLoadMore:j,isLoadingMore:M,highlightMatch:P,size:z,ensuredItems:t?[t]:[]}),[H,U]=(0,l.useState)(!1),W=(0,l.useCallback)(e=>{U(e),e||a(``),L?.(e)},[L,a]),te=H?i:t?V.itemToStringLabel(t):``,G=(0,l.useCallback)(e=>{if(e&&J(e)){let t=Y(e);D?.(t);return}r(e)},[r,D]);return(0,u.jsxs)(`div`,{className:`enhanced-combobox--component`,children:[(0,u.jsxs)(p,{items:V.allItems,value:t,onValueChange:G,inputValue:te,onInputValueChange:(e,{reason:t})=>{if(t===`item-press`){a(``);return}a(e)},itemToStringLabel:V.itemToStringLabel,disabled:m,filter:null,name:y,required:S,open:I,onOpenChange:W,children:[(0,u.jsx)(Ce,{placeholder:V.strings.placeholder,clearLabel:V.strings.clear,toggleLabel:V.strings.toggle,className:h,size:ee,error:B,required:S,disabled:m,clearable:g,onBlur:C}),(0,u.jsx)(ce,{isLoading:c,showStatus:V.showStatus,showEmpty:V.showEmpty,searchValue:i,minSearchLength:d,items:e,groupedItems:V.groupedItems,createOptionItem:V.createOptionItem,renderItemContent:V.renderItemContent,getItemReactKey:V.getItemReactKey,getItemDisabled:N,renderGroupLabel:k,isLoadingMore:M,strings:V.strings,size:z,portalContainer:v,listRef:V.listRef})]}),(0,u.jsx)(ue,{error:x,size:z})]})}function Te({items:e,selectedValues:t,onSelectedValuesChange:i,searchValue:a,onSearchValueChange:o,getItemLabel:c,getItemKey:d,isLoading:f=!1,minSearchLength:m=3,strings:h,disabled:g=!1,className:_,renderItem:v,portalContainer:y,name:b,invalid:x,error:S,required:C,onBlur:w,onSearch:T,debounceMs:E,creatable:D,onCreate:O,getItemGroup:k,renderGroupLabel:A,hasMore:j,onLoadMore:M,isLoadingMore:N,getItemDisabled:P,highlightMatch:F,size:I,open:L,onOpenChange:B,closeOnSelect:V=!1,applyButton:H=!1,onApply:U,onCancel:W}){let{defaultControlSize:te}=n.o(),G=ve(I,te),K=Se(G),ne=xe[G],re=x||!!S,q=(0,l.useRef)(null),ie=d??c,[X,Z]=(0,l.useState)(t),[ae,oe]=(0,l.useState)(!1),se=L!==void 0,le=se?L:ae;(0,l.useEffect)(()=>{H&&Z(t)},[H,t]);let Q=(0,l.useCallback)(e=>{se||oe(e),B?.(e)},[se,B]),$=ge({items:e,searchValue:a,onSearchValueChange:o,getItemLabel:c,getItemKey:d,isLoading:f,minSearchLength:m,strings:h,renderItem:v,onSearch:T,debounceMs:E,creatable:D,onCreate:O,getItemGroup:k,hasMore:j,onLoadMore:M,isLoadingMore:N,highlightMatch:F,size:G,ensuredItems:t}),de=(0,l.useCallback)(e=>{let t=[],n=null;for(let r of e)J(r)?n=Y(r):t.push(r);n&&O?.(n);let r=t.length!==e.length||!n?t:null;r&&(H?Z(r):i(r)),V&&Q(!1)},[i,O,H,V,Q]),fe=(0,l.useCallback)(()=>{H&&i(X),U?.(),Q(!1)},[H,X,U,i,Q]),pe=(0,l.useCallback)(()=>{H&&Z(t),W?.(),Q(!1)},[H,t,W,Q]),me=H?X:t,he=me.length>0?void 0:$.strings.placeholder;return(0,u.jsxs)(`div`,{className:`enhanced-combobox--component`,children:[(0,u.jsxs)(p,{items:$.allItems,multiple:!0,value:me,onValueChange:de,inputValue:a,onInputValueChange:(e,{reason:t})=>{if(t===`item-press`){o(``);return}o(e)},itemToStringLabel:$.itemToStringLabel,disabled:g,filter:null,name:b,required:C,open:le,onOpenChange:e=>{!e&&H&&Z(t),Q(e)},children:[(0,u.jsxs)(R,{ref:q,className:r.cn(s.c[K],s.l[K],K===`small`?`text-xs`:`text-sm`,`bg-transparent !shadow-none`,_),size:ne,error:re,children:[me.map(e=>(0,u.jsx)(z,{children:c(e)},ie(e))),(0,u.jsx)(ee,{placeholder:he,"aria-invalid":re||void 0,"aria-required":C,onBlur:w})]}),(0,u.jsx)(ce,{isLoading:f,showStatus:$.showStatus,showEmpty:$.showEmpty,searchValue:a,minSearchLength:m,items:e,groupedItems:$.groupedItems,createOptionItem:$.createOptionItem,renderItemContent:$.renderItemContent,getItemReactKey:$.getItemReactKey,getItemDisabled:P,renderGroupLabel:A,isLoadingMore:N,strings:$.strings,size:G,portalContainer:y,listRef:$.listRef,anchor:q,applyFooter:H?{applyLabel:$.strings.apply,cancelLabel:$.strings.cancel,onApply:fe,onCancel:pe}:void 0})]}),(0,u.jsx)(ue,{error:S,size:G})]})}var Ee=we,De=Te;we.displayName=`EnhancedCombobox`,Te.displayName=`EnhancedComboboxMultiple`;var Oe={...U,error:`Unable to load options.`};function ke({fetcher:e,value:n,defaultValue:i=null,onValueChange:o,onAfterFetch:s,onError:c,getKey:d,getLabel:f,getDescription:p,getMeta:m,renderOption:h,limit:g=10,debounceMs:_=300,preload:v=!0,minSearchLength:y=0,errorMessage:b,strings:x,disabled:S,...C}){let w=t.useStrings(Oe,x),T=n!==void 0,[E,D]=(0,l.useState)(i),O=T?n:E,[k,A]=(0,l.useState)(``),[j,M]=(0,l.useState)([]),[N,P]=(0,l.useState)(!1),[F,I]=(0,l.useState)(null),L=(0,l.useRef)(0),R=k.trim(),z=(0,l.useCallback)(e=>{T||D(e),o?.(e)},[T,o]);(0,l.useEffect)(()=>{if(S)return;if(!(R.length>0?R.length>=y:v)){M([]),P(!1),I(null);return}let t=L.current+1;L.current=t;let n=new AbortController,r={query:R,limit:g,signal:n.signal},i=window.setTimeout(()=>{P(!0),I(null),e(r).then(e=>{n.signal.aborted||L.current!==t||(M(e),s?.(e,r))}).catch(e=>{n.signal.aborted||L.current!==t||(M([]),I(e),c?.(e,r))}).finally(()=>{!n.signal.aborted&&L.current===t&&P(!1)})},_);return()=>{window.clearTimeout(i),n.abort()}},[_,S,e,g,y,s,c,v,R]);let ee=(0,l.useCallback)(e=>{if(h)return h(e,{query:R,isSelected:O?d(O)===d(e):!1});let t=p?.(e),n=m?.(e);return(0,u.jsxs)(`span`,{className:`async-resource-combobox--option flex min-w-0 items-center gap-space-md text-xs leading-tight`,children:[(0,u.jsx)(a.s,{tag:`span`,size:`inherit`,weight:`medium`,className:`min-w-0 shrink truncate`,children:f(e)}),(!!t||!!n)&&(0,u.jsxs)(`span`,{className:`inline-flex min-w-0 flex-1 items-center gap-space-sm overflow-hidden text-xs text-muted-foreground`,children:[!!t&&(0,u.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`min-w-0 truncate`,children:t}),!!n&&(0,u.jsx)(a.s,{tag:`span`,size:`inherit`,type:`secondary`,className:`min-w-0 truncate opacity-75`,children:n})]})]})},[p,d,f,m,h,O,R]),B=(0,l.useMemo)(()=>{if(F)return b??w.error},[F,b,w.error]);return(0,u.jsxs)(`div`,{"data-component":`async-resource-combobox`,"data-slot":`async-resource-combobox`,className:r.cn(`async-resource-combobox--component`,C.className),children:[(0,u.jsx)(we,{...C,className:void 0,disabled:S,items:j,selectedValue:O??null,onSelectedValueChange:z,searchValue:k,onSearchValueChange:A,getItemLabel:f,getItemKey:d,isLoading:N,minSearchLength:y,strings:w,renderItem:ee,error:typeof B==`string`?B:void 0}),B&&typeof B!=`string`&&(0,u.jsx)(`div`,{className:`async-resource-combobox--error mt-1.5`,children:B})]})}ke.displayName=`AsyncResourceCombobox`,Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return S}});
2
+ //# sourceMappingURL=combobox-BGYjyXeN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox-BGYjyXeN.cjs","names":[],"sources":["../../src/components/ui/combobox.tsx","../../src/components/base/combobox/combobox.strings.ts","../../src/components/base/combobox/constants.ts","../../src/components/base/combobox/components/loading-more.tsx","../../src/components/base/combobox/components/status-content.tsx","../../src/components/base/combobox/components/combobox-dropdown.tsx","../../src/components/base/combobox/components/error-message.tsx","../../src/components/base/combobox/components/highlighted-text.tsx","../../src/components/base/combobox/hooks/use-debounced-search.ts","../../src/components/base/combobox/hooks/use-grouped-items.ts","../../src/components/base/combobox/hooks/use-load-more.ts","../../src/components/base/combobox/hooks/use-enhanced-combobox-core.tsx","../../src/components/base/combobox/enhanced-combobox.tsx","../../src/components/base/combobox/async-resource-combobox.tsx"],"sourcesContent":["import { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { CheckIcon, ChevronDownIcon, XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nconst Combobox = ComboboxPrimitive.Root;\n\nfunction ComboboxInput({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Input\n\t\t\tdata-slot=\"combobox-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-10 w-full min-w-0 rounded-md border bg-background px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n\t\t\t\t'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ComboboxTrigger({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Trigger.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Trigger\n\t\t\tdata-slot=\"combobox-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\t'border-input file:text-foreground placeholder:text-muted-foreground flex h-10 w-full items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n\t\t\t\t'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive',\n\t\t\t\t'[&>span]:line-clamp-1',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.Icon className=\"flex\">\n\t\t\t\t<ChevronDownIcon className=\"size-4 opacity-50\" />\n\t\t\t</ComboboxPrimitive.Icon>\n\t\t</ComboboxPrimitive.Trigger>\n\t);\n}\n\nfunction ComboboxValue({\n\tplaceholder,\n\t...props\n}: ComboboxPrimitive.Value.Props & { placeholder?: React.ReactNode }) {\n\treturn (\n\t\t<ComboboxPrimitive.Value\n\t\t\tdata-slot=\"combobox-value\"\n\t\t\tplaceholder={\n\t\t\t\t!!placeholder && <span className=\"text-muted-foreground\">{placeholder}</span>\n\t\t\t}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ComboboxClear({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Clear.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Clear\n\t\t\tdata-slot=\"combobox-clear\"\n\t\t\tclassName={cn(\n\t\t\t\t'absolute right-8 top-1/2 -translate-y-1/2 rounded-sm opacity-50 ring-offset-background transition-opacity',\n\t\t\t\t'hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n\t\t\t\t'disabled:pointer-events-none',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<XIcon className=\"size-4\" />\n\t\t</ComboboxPrimitive.Clear>\n\t);\n}\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\n\nconst inputSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'h-8 text-xs pl-2 pr-8',\n\tmd: 'h-10 text-sm pl-3 pr-10',\n\tlg: 'h-12 text-base pl-4 pr-12',\n};\n\nconst inputSizeWithClearClasses: Record<ComboboxSize, string> = {\n\tsm: 'pr-14',\n\tmd: 'pr-16',\n\tlg: 'pr-20',\n};\n\nconst iconContainerSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'right-1',\n\tmd: 'right-2',\n\tlg: 'right-3',\n};\n\nconst iconSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'size-3',\n\tmd: 'size-4',\n\tlg: 'size-5',\n};\n\ntype ComboboxInputTriggerProps = Omit<ComboboxPrimitive.Input.Props, 'size'> & {\n\tshowClear?: boolean;\n\tsize?: ComboboxSize;\n\terror?: boolean;\n};\n\nfunction ComboboxInputTrigger({\n\tclassName,\n\tshowClear = false,\n\tsize = 'md',\n\terror,\n\t...props\n}: ComboboxInputTriggerProps) {\n\treturn (\n\t\t<div className=\"relative\">\n\t\t\t<ComboboxPrimitive.Input\n\t\t\t\tdata-slot=\"combobox-input\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-md border bg-background shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n\t\t\t\t\t'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n\t\t\t\t\t'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15 aria-invalid:placeholder:text-destructive',\n\t\t\t\t\tinputSizeClasses[size],\n\t\t\t\t\tshowClear && inputSizeWithClearClasses[size],\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\taria-invalid={error || undefined}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'absolute top-1/2 -translate-y-1/2 flex items-center gap-1 text-muted-foreground',\n\t\t\t\t\ticonContainerSizeClasses[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!showClear && (\n <ComboboxPrimitive.Clear\n\t\t\t\t\t\tdata-slot=\"combobox-clear\"\n\t\t\t\t\t\tclassName=\"rounded-sm p-1 opacity-50 hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<XIcon className={iconSizeClasses[size]} />\n\t\t\t\t\t</ComboboxPrimitive.Clear>\n )}\n\t\t\t\t<ComboboxPrimitive.Trigger className=\"rounded-sm p-1 hover:bg-accent focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\">\n\t\t\t\t\t<ChevronDownIcon className={iconSizeClasses[size]} />\n\t\t\t\t</ComboboxPrimitive.Trigger>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// Portal\nconst ComboboxPortal = ComboboxPrimitive.Portal;\n\n// Positioner\nfunction ComboboxPositioner({\n\tclassName,\n\tsideOffset = 4,\n\t...props\n}: ComboboxPrimitive.Positioner.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Positioner\n\t\t\tdata-slot=\"combobox-positioner\"\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn('z-50 outline-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Popup (content)\nfunction ComboboxPopup({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Popup.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Popup\n\t\t\tdata-slot=\"combobox-popup\"\n\t\t\tclassName={cn(\n\t\t\t\t'w-[var(--anchor-width)] min-w-[8rem] max-w-[var(--available-width)] max-h-[min(var(--available-height),24rem)]',\n\t\t\t\t'overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md',\n\t\t\t\t'origin-[var(--transform-origin)]',\n\t\t\t\t'data-[starting-style]:opacity-0 data-[starting-style]:scale-95',\n\t\t\t\t'data-[ending-style]:opacity-0 data-[ending-style]:scale-95',\n\t\t\t\t'transition-[opacity,transform] duration-150',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// List\nfunction ComboboxList({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.List.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.List\n\t\t\tdata-slot=\"combobox-list\"\n\t\t\tclassName={cn(\n\t\t\t\t'max-h-[min(24rem,var(--available-height))] overflow-y-auto overscroll-contain p-1',\n\t\t\t\t'outline-none empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Item\n//\n// Layout: `[content][indicator]` with the selection check pinned to the\n// right (`justify-between`). Consumers render leading icons naturally inside\n// `renderItem` — the `gap` between icon and label is set by the consumer.\nconst itemSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'py-1 px-2 text-xs gap-2',\n\tmd: 'py-1.5 px-2.5 text-sm gap-2',\n\tlg: 'py-2 px-3 text-base gap-2.5',\n};\n\nconst itemIndicatorSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'size-3',\n\tmd: 'size-4',\n\tlg: 'size-5',\n};\n\nfunction ComboboxItem({\n\tclassName,\n\tchildren,\n\tsize = 'md',\n\t...props\n}: ComboboxPrimitive.Item.Props & { size?: ComboboxSize }) {\n\treturn (\n\t\t<ComboboxPrimitive.Item\n\t\t\tdata-slot=\"combobox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full cursor-default select-none items-center justify-between rounded-sm outline-none',\n\t\t\t\t'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n\t\t\t\t'data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n\t\t\t\titemSizeClasses[size],\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"flex min-w-0 flex-1 items-center gap-2 truncate\">\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'flex shrink-0 items-center justify-center text-muted-foreground',\n\t\t\t\t\titemIndicatorSizeClasses[size]\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<CheckIcon className={itemIndicatorSizeClasses[size]} />\n\t\t\t</ComboboxPrimitive.ItemIndicator>\n\t\t</ComboboxPrimitive.Item>\n\t);\n}\n\n// Item Indicator (standalone)\nfunction ComboboxItemIndicator({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.ItemIndicator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.ItemIndicator\n\t\t\tdata-slot=\"combobox-item-indicator\"\n\t\t\tclassName={cn(className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ?? <CheckIcon className=\"size-4\" />}\n\t\t</ComboboxPrimitive.ItemIndicator>\n\t);\n}\n\n// Empty\nfunction ComboboxEmpty({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Empty.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Empty\n\t\t\tdata-slot=\"combobox-empty\"\n\t\t\tclassName={cn(\n\t\t\t\t'py-6 text-center text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</ComboboxPrimitive.Empty>\n\t);\n}\n\n// Status (for async loading states)\nfunction ComboboxStatus({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Status.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Status\n\t\t\tdata-slot=\"combobox-status\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-2 px-3 py-2 text-sm text-muted-foreground empty:hidden',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group\nfunction ComboboxGroup({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Group.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Group\n\t\t\tdata-slot=\"combobox-group\"\n\t\t\tclassName={cn('overflow-hidden p-1', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Group Label\nfunction ComboboxGroupLabel({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.GroupLabel\n\t\t\tdata-slot=\"combobox-group-label\"\n\t\t\tclassName={cn('px-2 py-1.5 text-xs font-medium text-muted-foreground', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Collection (for rendering items)\nconst ComboboxCollection = ComboboxPrimitive.Collection;\n\n// Separator\nfunction ComboboxSeparator({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Separator.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Separator\n\t\t\tdata-slot=\"combobox-separator\"\n\t\t\tclassName={cn('-mx-1 my-1 h-px bg-muted', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chips container (for multiple selection)\nconst chipsSizeClasses: Record<ComboboxSize, string> = {\n\tsm: 'min-h-8 gap-1 px-2 py-1 text-xs',\n\tmd: 'min-h-10 gap-1.5 px-3 py-2 text-sm',\n\tlg: 'min-h-12 gap-2 px-4 py-2.5 text-base',\n};\n\nfunction ComboboxChips({\n\tclassName,\n\tsize = 'md',\n\terror,\n\t...props\n}: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & {\n\tsize?: ComboboxSize;\n\terror?: boolean;\n}) {\n\treturn (\n\t\t<ComboboxPrimitive.Chips\n\t\t\tdata-slot=\"combobox-chips\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex flex-wrap items-center rounded-md border border-input bg-background ring-offset-background shadow-xs transition-[color,box-shadow] outline-none',\n\t\t\t\t'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]',\n\t\t\t\t'aria-invalid:ring-destructive/20 aria-invalid:border-destructive aria-invalid:bg-destructive/15',\n\t\t\t\tchipsSizeClasses[size],\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\taria-invalid={error || undefined}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Chip\nfunction ComboboxChip({\n\tclassName,\n\tchildren,\n\t...props\n}: ComboboxPrimitive.Chip.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Chip\n\t\t\tdata-slot=\"combobox-chip\"\n\t\t\tclassName={cn(\n\t\t\t\t'inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-1 text-xs font-medium text-secondary-foreground',\n\t\t\t\t'data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground',\n\t\t\t\t'focus-within:bg-primary focus-within:text-primary-foreground',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ComboboxPrimitive.ChipRemove className=\"rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\">\n\t\t\t\t<XIcon className=\"size-3\" />\n\t\t\t</ComboboxPrimitive.ChipRemove>\n\t\t</ComboboxPrimitive.Chip>\n\t);\n}\n\n// Chips Input\nfunction ComboboxChipsInput({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Input\n\t\t\tdata-slot=\"combobox-chips-input\"\n\t\t\tclassName={cn(\n\t\t\t\t'min-w-[80px] flex-1 bg-transparent outline-none placeholder:text-muted-foreground',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Backdrop (for modal)\nfunction ComboboxBackdrop({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Backdrop.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Backdrop\n\t\t\tdata-slot=\"combobox-backdrop\"\n\t\t\tclassName={cn(\n\t\t\t\t'fixed inset-0 z-50 bg-black/80',\n\t\t\t\t'data-[starting-style]:opacity-0 data-[ending-style]:opacity-0',\n\t\t\t\t'transition-opacity duration-150',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// Arrow\nfunction ComboboxArrow({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Arrow.Props) {\n\treturn (\n\t\t<ComboboxPrimitive.Arrow\n\t\t\tdata-slot=\"combobox-arrow\"\n\t\t\tclassName={cn('fill-popover', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n// useFilter hook re-export\nconst useComboboxFilter = ComboboxPrimitive.useFilter;\n\nexport {\n\tCombobox,\n\tComboboxInput,\n\tComboboxInputTrigger,\n\tComboboxTrigger,\n\tComboboxValue,\n\tComboboxClear,\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxPopup,\n\tComboboxList,\n\tComboboxItem,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n\tComboboxSeparator,\n\tComboboxChips,\n\tComboboxChip,\n\tComboboxChipsInput,\n\tComboboxBackdrop,\n\tComboboxArrow,\n\tuseComboboxFilter,\n};\n","/**\n * Default user-facing strings for `<EnhancedCombobox>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <EnhancedCombobox strings={{ noResults: t('search.empty') }} … />\n *\n * Templates use `{placeholder}` tokens — the component substitutes them at\n * render time. Function-valued strings would also work; we keep templates\n * here for the constants file.\n */\nimport type { ComboboxStrings } from './types';\n\nexport const defaultComboboxStrings: ComboboxStrings = {\n\tplaceholder: 'Search...',\n\tclear: 'Clear selection',\n\ttoggle: 'Open options',\n\tsearching: 'Loading...',\n\tnoResults: 'No results found.',\n\ttypeToSearch: 'Type at least {min} characters to search...',\n\ttypeMore: 'Type {remaining} more character{s} to search...',\n\tcreateNew: 'Create {value}',\n\tloadingMore: 'Loading...',\n\tapply: 'Apply',\n\tcancel: 'Cancel',\n};\n\nexport type { ComboboxStrings };\n","/**\n * Constants and default values for the Enhanced Combobox component.\n *\n * Default strings live in `./combobox.strings.ts` per rule 19. The legacy\n * `DEFAULT_STRINGS` alias is re-exported below for any external consumer\n * still using the old name; new code should import `defaultComboboxStrings`\n * from `./combobox.strings`.\n */\n\nexport { defaultComboboxStrings, defaultComboboxStrings as DEFAULT_STRINGS } from './combobox.strings';\n\n// ============================================================================\n// Default Values\n// ============================================================================\n\nexport const DEFAULT_MIN_SEARCH_LENGTH = 3;\nexport const DEFAULT_DEBOUNCE_MS = 300;\nexport const DEFAULT_SIZE = 'default';\nexport const LOAD_MORE_THRESHOLD = 0.8;\nexport const LOAD_MORE_DEBOUNCE_MS = 100;\nexport const LOAD_MORE_COOLDOWN_MS = 500;\n\n// ============================================================================\n// Symbols\n// ============================================================================\n\nexport const CREATE_OPTION_SYMBOL = Symbol('enhanced-combobox-create-option');\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\nexport function isCreateOption<T>(item: T): item is T & { [CREATE_OPTION_SYMBOL]: string } {\n\treturn (\n\t\ttypeof item === 'object' &&\n\t\titem !== null &&\n\t\tCREATE_OPTION_SYMBOL in (item as object)\n\t);\n}\n\nexport function getCreateOptionValue<T>(item: T): string {\n\tif (!isCreateOption(item)) {\n\t\tthrow new Error('Item is not a create option');\n\t}\n\treturn (item as { [CREATE_OPTION_SYMBOL]: string })[CREATE_OPTION_SYMBOL];\n}\n\nexport function createCreateOption<T>(inputValue: string): T {\n\treturn { [CREATE_OPTION_SYMBOL]: inputValue } as unknown as T;\n}\n","/**\n * LoadingMore Component\n */\n\nimport { Loader2 } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface LoadingMoreProps {\n\tisLoading: boolean;\n\ttext: string;\n\tclassName?: string;\n}\n\nexport function LoadingMore({\n\tisLoading,\n\ttext,\n\tclassName,\n}: LoadingMoreProps): React.ReactElement | null {\n\tif (!isLoading) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('loading-more--component', \n\t\t\t\t'flex items-center justify-center gap-space-sm px-control py-space-xs text-xs text-muted-foreground',\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\trole=\"status\"\n\t\t\taria-live=\"polite\"\n\t\t>\n\t\t\t<Loader2 className=\"size-icon-sm animate-spin\" aria-hidden=\"true\" />\n\t\t\t<span>{text}</span>\n\t\t</div>\n\t);\n}\n\nLoadingMore.displayName = 'LoadingMore';\n","/**\n * StatusContent Component\n */\n\nimport { Loader2 } from 'lucide-react';\nimport * as React from 'react';\nimport type { ComboboxStrings } from '../types';\n\nexport interface StatusContentProps {\n\tisLoading?: boolean;\n\tsearchValue: string;\n\tminSearchLength: number;\n\titemCount: number;\n\tstrings: ComboboxStrings;\n}\n\nexport function StatusContent({\n\tisLoading,\n\tsearchValue,\n\tminSearchLength,\n\titemCount,\n\tstrings,\n}: StatusContentProps): React.ReactNode {\n\tconst trimmed = searchValue.trim();\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Loader2 className=\"size-icon-sm animate-spin\" />\n\t\t\t\t{strings.searching}\n\t\t\t</>\n\t\t);\n\t}\n\n\tif (trimmed === '') {\n\t\tif (strings.typeToSearch.includes('{min}')) {\n\t\t\treturn strings.typeToSearch.replace('{min}', String(minSearchLength));\n\t\t}\n\t\treturn strings.typeToSearch;\n\t}\n\n\tif (trimmed.length < minSearchLength) {\n\t\tconst remaining = minSearchLength - trimmed.length;\n\t\tif (strings.typeMore.includes('{remaining}') || strings.typeMore.includes('{s}')) {\n\t\t\treturn strings.typeMore\n\t\t\t\t.replace('{remaining}', String(remaining))\n\t\t\t\t.replace('{s}', remaining !== 1 ? 's' : '');\n\t\t}\n\t\treturn strings.typeMore;\n\t}\n\n\tif (itemCount === 0) {\n\t\treturn null;\n\t}\n\n\treturn null;\n}\n\nStatusContent.displayName = 'StatusContent';\n","/**\n * Shared ComboboxDropdown Component\n *\n * Renders the dropdown content for both single and multiple selection variants.\n * Extracts shared rendering logic to reduce duplication.\n */\n\nimport * as React from 'react';\n\nimport {\n\tComboboxPortal,\n\tComboboxPositioner,\n\tComboboxPopup,\n\tComboboxEmpty,\n\tComboboxList,\n\tComboboxItem,\n\tComboboxStatus,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxCollection,\n} from '@/components/ui/combobox';\nimport { Button } from '@/components/base/buttons';\nimport { ScrollArea } from '@/components/base/display/scroll-area';\n\nimport { DEFAULT_SIZE } from '../constants';\nimport type { ComboboxStrings, ComboboxSize } from '../types';\nimport { LoadingMore } from './loading-more';\nimport { StatusContent } from './status-content';\n\nconst primitiveSizeByComboboxSize: Record<ComboboxSize, 'sm' | 'md'> = {\n\tsmall: 'sm',\n\tdefault: 'md',\n};\n\nconst itemClassByComboboxSize: Record<ComboboxSize, string> = {\n\tsmall: 'min-h-control-sm gap-space-lg rounded-md px-row-x py-row-y text-xs leading-tight [&>span:first-child]:gap-space-lg [&>span:first-child]:text-xs',\n\tdefault: 'min-h-control gap-space-lg rounded-md px-row-x py-row-y text-sm leading-tight [&>span:first-child]:gap-space-lg [&>span:first-child]:text-sm',\n};\n\nconst groupLabelClassName =\n\t'px-row-x py-row-y text-xxs font-medium uppercase tracking-wide text-muted-foreground';\n\nexport interface ComboboxDropdownProps<T> {\n\t// Display state\n\tisLoading: boolean;\n\tshowStatus: boolean;\n\tshowEmpty: boolean;\n\n\t// Search\n\tsearchValue: string;\n\tminSearchLength: number;\n\n\t// Items\n\titems: T[];\n\tgroupedItems: Map<string, T[]> | null;\n\tcreateOptionItem: T | null;\n\n\t// Rendering\n\trenderItemContent: (item: T) => React.ReactNode;\n\tgetItemReactKey: (item: T) => string;\n\tgetItemDisabled?: (item: T) => boolean;\n\trenderGroupLabel?: (group: string) => React.ReactNode;\n\n\t// Load more\n\tisLoadingMore?: boolean;\n\n\t// Strings\n\tstrings: ComboboxStrings;\n\n\t// Size\n\tsize?: ComboboxSize;\n\n\t// Portal\n\tportalContainer?: React.RefObject<HTMLElement | null>;\n\n\t// Refs\n\tlistRef: React.RefObject<HTMLDivElement | null>;\n\n\t// Multiple selection anchor\n\tanchor?: React.RefObject<HTMLElement | null>;\n\n\t/** Optional apply / cancel footer for the apply-button workflow. */\n\tapplyFooter?: {\n\t\tapplyLabel: string;\n\t\tcancelLabel: string;\n\t\tonApply: () => void;\n\t\tonCancel: () => void;\n\t};\n}\n\nexport function ComboboxDropdown<T>({\n\tisLoading,\n\tshowStatus,\n\tshowEmpty,\n\tsearchValue,\n\tminSearchLength,\n\titems,\n\tgroupedItems,\n\tcreateOptionItem,\n\trenderItemContent,\n\tgetItemReactKey,\n\tgetItemDisabled,\n\trenderGroupLabel,\n\tisLoadingMore,\n\tstrings,\n\tsize = DEFAULT_SIZE,\n\tportalContainer,\n\tlistRef,\n\tanchor,\n\tapplyFooter,\n}: ComboboxDropdownProps<T>): React.ReactElement {\n\tconst positionerClassName = portalContainer != null ? 'z-[100]' : undefined;\n\tconst primitiveSize = primitiveSizeByComboboxSize[size];\n\n\tconst content = (\n\t\t<ComboboxPositioner\n\t\t\tanchor={anchor}\n\t\t\tclassName={positionerClassName}\n\t\t>\n\t\t\t<ComboboxPopup\n\t\t\t\taria-busy={isLoading || undefined}\n\t\t\t\tclassName=\"combobox-dropdown--popup rounded-radius border-border/70 shadow-sm\"\n\t\t\t>\n\t\t\t\t{/* Status message */}\n\t\t\t\t{!!showStatus && (\n\t\t\t\t\t<ComboboxStatus className=\"gap-space-sm px-control py-space-xs text-xs text-muted-foreground\">\n\t\t\t\t\t\t<StatusContent\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\tsearchValue={searchValue}\n\t\t\t\t\t\t\tminSearchLength={minSearchLength}\n\t\t\t\t\t\t\titemCount={items.length}\n\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ComboboxStatus>\n\t\t\t\t)}\n\n\t\t\t\t{/* Empty state */}\n\t\t\t\t{!!showEmpty && (\n\t\t\t\t\t<ComboboxEmpty className=\"px-control py-space-xs text-center text-xs text-muted-foreground\">\n\t\t\t\t\t\t{strings.noResults}\n\t\t\t\t\t</ComboboxEmpty>\n\t\t\t\t)}\n\n\t\t\t\t{/* Items list */}\n\t\t\t\t<ScrollArea\n\t\t\t\t\tviewportRef={listRef}\n\t\t\t\t\tclassName=\"max-h-[min(20rem,var(--available-height))]\"\n\t\t\t\t>\n\t\t\t\t\t<ComboboxList className=\"combobox-dropdown--list max-h-none overflow-visible p-space-sm\">\n\t\t\t\t\t\t{groupedItems ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{Array.from(groupedItems.entries()).map(([group, groupItems]) => {\n\t\t\t\t\t\t\t\t\tconst groupLabel =\n\t\t\t\t\t\t\t\t\t\ttypeof renderGroupLabel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? renderGroupLabel(group)\n\t\t\t\t\t\t\t\t\t\t\t: group;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ComboboxGroup className=\"combobox-dropdown--group p-0\" key={group} items={groupItems}>\n\t\t\t\t\t\t\t\t\t\t\t<ComboboxGroupLabel className={groupLabelClassName}>{groupLabel}</ComboboxGroupLabel>\n\t\t\t\t\t\t\t\t\t\t\t<ComboboxCollection>\n\t\t\t\t\t\t\t\t\t\t\t\t{(item: T) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ComboboxItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={getItemReactKey(item)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={item}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize={primitiveSize}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={itemClassByComboboxSize[size]}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={getItemDisabled?.(item)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{renderItemContent(item)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ComboboxItem>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</ComboboxCollection>\n\t\t\t\t\t\t\t\t\t\t</ComboboxGroup>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t\t\t{createOptionItem != null && (\n\t\t\t\t\t\t\t\t\t<ComboboxItem\n\t\t\t\t\t\t\t\t\t\tkey={getItemReactKey(createOptionItem)}\n\t\t\t\t\t\t\t\t\t\tvalue={createOptionItem}\n\t\t\t\t\t\t\t\t\t\tsize={primitiveSize}\n\t\t\t\t\t\t\t\t\t\tclassName={itemClassByComboboxSize[size]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{renderItemContent(createOptionItem)}\n\t\t\t\t\t\t\t\t\t</ComboboxItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ComboboxCollection>\n\t\t\t\t\t\t\t\t{(item: T) => (\n\t\t\t\t\t\t\t\t\t<ComboboxItem\n\t\t\t\t\t\t\t\t\t\tkey={getItemReactKey(item)}\n\t\t\t\t\t\t\t\t\t\tvalue={item}\n\t\t\t\t\t\t\t\t\t\tsize={primitiveSize}\n\t\t\t\t\t\t\t\t\t\tclassName={itemClassByComboboxSize[size]}\n\t\t\t\t\t\t\t\t\t\tdisabled={getItemDisabled?.(item)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{renderItemContent(item)}\n\t\t\t\t\t\t\t\t\t</ComboboxItem>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ComboboxCollection>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ComboboxList>\n\t\t\t\t</ScrollArea>\n\n\t\t\t\t{/* Loading more indicator */}\n\t\t\t\t<LoadingMore\n\t\t\t\t\tisLoading={!!isLoadingMore}\n\t\t\t\t\ttext={strings.loadingMore}\n\t\t\t\t/>\n\n\t\t\t\t{/* Apply / cancel footer (multi-select with applyButton). */}\n\t\t\t\t{!!applyFooter && (\n\t\t\t\t\t<div className=\"flex items-center justify-end gap-space-md border-t border-border/60 px-control py-space-xs\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\tapplyFooter.onCancel();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{applyFooter.cancelLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\tapplyFooter.onApply();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{applyFooter.applyLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</ComboboxPopup>\n\t\t</ComboboxPositioner>\n\t);\n\n\tif (portalContainer) {\n\t\treturn <ComboboxPortal container={portalContainer}>{content}</ComboboxPortal>;\n\t}\n\n\treturn <ComboboxPortal>{content}</ComboboxPortal>;\n}\n\nComboboxDropdown.displayName = 'ComboboxDropdown';\n","/**\n * ErrorMessage Component\n */\n\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport type { ComboboxSize } from '../types';\n\nexport interface ErrorMessageProps {\n\terror?: string;\n\tsize: ComboboxSize;\n\tclassName?: string;\n}\n\nconst sizeClasses: Record<ComboboxSize, string> = {\n\tsmall: 'text-xs mt-space-sm',\n\tdefault: 'text-sm mt-space-md',\n};\n\nexport function ErrorMessage({\n\terror,\n\tsize,\n\tclassName,\n}: ErrorMessageProps): React.ReactElement | null {\n\tif (!error) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<p\n\t\t\tclassName={cn('error-message--component', 'text-destructive', sizeClasses[size], className)}\n\t\t\trole=\"alert\"\n\t\t\taria-live=\"polite\"\n\t\t>\n\t\t\t{error}\n\t\t</p>\n\t);\n}\n\nErrorMessage.displayName = 'ErrorMessage';\n","/**\n * HighlightedText Component\n */\n\nimport * as React from 'react';\n\nexport interface HighlightedTextProps {\n\ttext: string;\n\thighlight: string;\n\thighlightClassName?: string;\n}\n\nfunction escapeRegExp(str: string): string {\n\treturn str.replace(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&');\n}\n\nexport function HighlightedText({\n\ttext,\n\thighlight,\n\thighlightClassName = 'rounded-sm bg-warning/20 px-0.5 text-warning-foreground dark:bg-warning/25',\n}: HighlightedTextProps): React.ReactNode {\n\tif (!highlight.trim()) {\n\t\treturn text;\n\t}\n\n\tconst regex = new RegExp(`(${escapeRegExp(highlight)})`, 'gi');\n\tconst parts = text.split(regex);\n\tlet cursor = 0;\n\n\treturn (\n\t\t<>\n\t\t\t{parts.map((part, index) => {\n\t\t\t\tconst isMatch = index % 2 === 1;\n\t\t\t\tconst key = String(cursor);\n\t\t\t\tcursor += part.length;\n\n\t\t\t\tif (isMatch) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<mark key={key} className={highlightClassName}>\n\t\t\t\t\t\t\t{part}\n\t\t\t\t\t\t</mark>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn <span key={key}>{part}</span>;\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nHighlightedText.displayName = 'HighlightedText';\n","/**\n * Hook for debounced search functionality\n */\n\nimport { useEffect, useRef } from 'react';\nimport { DEFAULT_DEBOUNCE_MS, DEFAULT_MIN_SEARCH_LENGTH } from '../constants';\n\nexport interface UseDebouncedSearchOptions {\n\tsearchValue: string;\n\tonSearch: ((value: string) => void) | undefined;\n\tdebounceMs?: number;\n\tminSearchLength?: number;\n}\n\nexport function useDebouncedSearch({\n\tsearchValue,\n\tonSearch,\n\tdebounceMs = DEFAULT_DEBOUNCE_MS,\n\tminSearchLength = DEFAULT_MIN_SEARCH_LENGTH,\n}: UseDebouncedSearchOptions): void {\n\tconst timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\t// Hold the latest onSearch in a ref so the debounce effect does NOT depend\n\t// on its identity. Consumers almost always pass an inline callback whose\n\t// reference changes every render; depending on it here re-ran the effect on\n\t// every render and — when onSearch triggered a state update — caused an\n\t// infinite fetch loop. The effect now only re-runs on real input changes.\n\tconst onSearchRef = useRef(onSearch);\n\tuseEffect(() => {\n\t\tonSearchRef.current = onSearch;\n\t}, [onSearch]);\n\n\tuseEffect(() => {\n\t\tif (!onSearchRef.current) return;\n\n\t\tif (timeoutRef.current) {\n\t\t\tclearTimeout(timeoutRef.current);\n\t\t}\n\n\t\tconst trimmed = searchValue.trim();\n\t\tif (trimmed.length >= minSearchLength) {\n\t\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\t\tonSearchRef.current?.(trimmed);\n\t\t\t}, debounceMs);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (timeoutRef.current) {\n\t\t\t\tclearTimeout(timeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [searchValue, debounceMs, minSearchLength]);\n}\n","/**\n * Hook for grouping items by category\n */\n\nimport { useMemo } from 'react';\n\nexport interface UseGroupedItemsOptions<T> {\n\titems: T[];\n\tgetItemGroup: ((item: T) => string) | undefined;\n}\n\nexport type GroupedItemsResult<T> = Map<string, T[]> | null;\n\nexport function useGroupedItems<T>({\n\titems,\n\tgetItemGroup,\n}: UseGroupedItemsOptions<T>): GroupedItemsResult<T> {\n\treturn useMemo(() => {\n\t\tif (!getItemGroup) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst groups = new Map<string, T[]>();\n\n\t\tfor (const item of items) {\n\t\t\tconst groupKey = getItemGroup(item);\n\t\t\tconst existing = groups.get(groupKey);\n\n\t\t\tif (existing) {\n\t\t\t\texisting.push(item);\n\t\t\t} else {\n\t\t\t\tgroups.set(groupKey, [item]);\n\t\t\t}\n\t\t}\n\n\t\treturn groups;\n\t}, [items, getItemGroup]);\n}\n","/**\n * Hook for infinite scroll / load more functionality\n */\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport {\n\tLOAD_MORE_THRESHOLD,\n\tLOAD_MORE_DEBOUNCE_MS,\n\tLOAD_MORE_COOLDOWN_MS,\n} from '../constants';\n\nexport interface UseLoadMoreOptions {\n\thasMore: boolean | undefined;\n\tonLoadMore: (() => void) | undefined;\n\tisLoadingMore: boolean | undefined;\n}\n\nexport interface UseLoadMoreReturn {\n\thandleScroll: (event: Event) => void;\n}\n\nexport function useLoadMore({\n\thasMore,\n\tonLoadMore,\n\tisLoadingMore,\n}: UseLoadMoreOptions): UseLoadMoreReturn {\n\tconst isLoadingRef = useRef(false);\n\tconst debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst handleScroll = useCallback(\n\t\t(event: Event) => {\n\t\t\tif (!hasMore || !onLoadMore || isLoadingMore || isLoadingRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = event.target as HTMLElement;\n\t\t\tconst { scrollHeight, scrollTop, clientHeight } = target;\n\t\t\tconst scrollPercentage = (scrollTop + clientHeight) / scrollHeight;\n\n\t\t\tif (scrollPercentage >= LOAD_MORE_THRESHOLD) {\n\t\t\t\tif (debounceRef.current) {\n\t\t\t\t\tclearTimeout(debounceRef.current);\n\t\t\t\t}\n\n\t\t\t\tdebounceRef.current = setTimeout(() => {\n\t\t\t\t\tisLoadingRef.current = true;\n\t\t\t\t\tonLoadMore();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tisLoadingRef.current = false;\n\t\t\t\t\t}, LOAD_MORE_COOLDOWN_MS);\n\t\t\t\t}, LOAD_MORE_DEBOUNCE_MS);\n\t\t\t}\n\t\t},\n\t\t[hasMore, onLoadMore, isLoadingMore]\n\t);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (debounceRef.current) {\n\t\t\t\tclearTimeout(debounceRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\treturn { handleScroll };\n}\n","/**\n * Core hook for Enhanced Combobox components\n *\n * Extracts shared logic between single and multiple selection variants\n * to reduce duplication and ensure consistent behavior.\n */\n\nimport { PlusIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useRef, useMemo, useEffect, useCallback } from 'react';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\n\nimport { HighlightedText } from '../components/highlighted-text';\nimport { defaultComboboxStrings } from '../combobox.strings';\nimport {\n\tDEFAULT_MIN_SEARCH_LENGTH,\n\tDEFAULT_DEBOUNCE_MS,\n\tisCreateOption,\n\tgetCreateOptionValue,\n\tcreateCreateOption,\n} from '../constants';\nimport type { ComboboxStrings, BaseComboboxProps } from '../types';\nimport { useDebouncedSearch } from './use-debounced-search';\nimport { useGroupedItems } from './use-grouped-items';\nimport { useLoadMore } from './use-load-more';\n\nimport { cn } from '@/lib/utils';\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface UseEnhancedComboboxCoreOptions<T> extends BaseComboboxProps<T> {\n\t/** Items that should always be included (selected items) */\n\tensuredItems?: T[];\n}\n\nexport interface UseEnhancedComboboxCoreReturn<T> {\n\t// Resolved values\n\tstrings: ComboboxStrings;\n\tgetKey: (item: T) => string;\n\ttrimmedSearch: string;\n\n\t// Refs\n\tlistRef: React.RefObject<HTMLDivElement | null>;\n\n\t// Items\n\tbaseItems: T[];\n\tallItems: T[];\n\tgroupedItems: Map<string, T[]> | null;\n\tcreateOptionItem: T | null;\n\n\t// Display state\n\tshowStatus: boolean;\n\tshowEmpty: boolean;\n\tshowCreateOption: boolean;\n\n\t// Handlers\n\trenderItemContent: (item: T) => React.ReactNode;\n\titemToStringLabel: (item: T) => string;\n\tgetItemReactKey: (item: T) => string;\n\n\t// Scroll handling\n\thandleScroll: (event: Event) => void;\n}\n\n// ============================================================================\n// Hook Implementation\n// ============================================================================\n\nfunction useComboboxStrings(custom?: StringsProp<ComboboxStrings>): ComboboxStrings {\n\treturn useStrings(defaultComboboxStrings, custom);\n}\n\nfunction hasExactMatch<T>(\n\titems: T[],\n\tsearchValue: string,\n\tgetItemLabel: (item: T) => string\n): boolean {\n\tconst normalizedSearch = searchValue.toLowerCase();\n\treturn items.some(\n\t\t(item) => getItemLabel(item).toLowerCase() === normalizedSearch\n\t);\n}\n\nexport function useEnhancedComboboxCore<T>({\n\t// Core props\n\titems,\n\tsearchValue,\n\tgetItemLabel,\n\tgetItemKey,\n\tisLoading = false,\n\tminSearchLength = DEFAULT_MIN_SEARCH_LENGTH,\n\tstrings: stringsProp,\n\trenderItem,\n\n\t// Debounced Search\n\tonSearch,\n\tdebounceMs = DEFAULT_DEBOUNCE_MS,\n\n\t// Creatable\n\tcreatable,\n\tonCreate,\n\n\t// Grouped Items\n\tgetItemGroup,\n\n\t// Load More\n\thasMore,\n\tonLoadMore,\n\tisLoadingMore,\n\n\t// Highlight Match\n\thighlightMatch,\n\n\t\t// Ensured items (selected items that should always be included)\n\tensuredItems = [],\n}: UseEnhancedComboboxCoreOptions<T>): UseEnhancedComboboxCoreReturn<T> {\n\t// -------------------------------------------------------------------------\n\t// Setup\n\t// -------------------------------------------------------------------------\n\n\tconst strings = useComboboxStrings(stringsProp);\n\tconst getKey = getItemKey ?? getItemLabel;\n\tconst listRef = useRef<HTMLDivElement | null>(null);\n\tconst trimmedSearch = searchValue.trim();\n\n\t// -------------------------------------------------------------------------\n\t// Hooks\n\t// -------------------------------------------------------------------------\n\n\tuseDebouncedSearch({\n\t\tsearchValue,\n\t\tonSearch,\n\t\tdebounceMs,\n\t\tminSearchLength,\n\t});\n\n\tconst { handleScroll } = useLoadMore({\n\t\thasMore,\n\t\tonLoadMore,\n\t\tisLoadingMore,\n\t});\n\n\t// Attach scroll listener\n\tuseEffect(() => {\n\t\tconst listEl = listRef.current;\n\t\tif (!listEl || !hasMore || !onLoadMore) return;\n\n\t\tlistEl.addEventListener('scroll', handleScroll);\n\t\treturn () => listEl.removeEventListener('scroll', handleScroll);\n\t}, [handleScroll, hasMore, onLoadMore]);\n\n\t// -------------------------------------------------------------------------\n\t// Computed Values\n\t// -------------------------------------------------------------------------\n\n\t// Merge ensured items with fetched items\n\tconst baseItems = useMemo(() => {\n\t\tif (ensuredItems.length === 0) return items;\n\n\t\tconst merged = [...ensuredItems];\n\t\titems.forEach((item) => {\n\t\t\tconst itemKey = getKey(item);\n\t\t\tif (!ensuredItems.some((ensured) => getKey(ensured) === itemKey)) {\n\t\t\t\tmerged.push(item);\n\t\t\t}\n\t\t});\n\t\treturn merged;\n\t}, [items, ensuredItems, getKey]);\n\n\t// Group items if grouping is enabled\n\tconst groupedItems = useGroupedItems({\n\t\titems: baseItems,\n\t\tgetItemGroup,\n\t});\n\n\t// Determine if create option should be shown\n\tconst showCreateOption = useMemo(() => {\n\t\tif (!creatable || !onCreate) return false;\n\t\tif (trimmedSearch.length < minSearchLength) return false;\n\t\treturn !hasExactMatch(baseItems, trimmedSearch, getItemLabel);\n\t}, [creatable, onCreate, trimmedSearch, minSearchLength, baseItems, getItemLabel]);\n\n\tconst createOptionItem = useMemo(() => {\n\t\tif (!showCreateOption) return null;\n\t\treturn createCreateOption<T>(trimmedSearch);\n\t}, [showCreateOption, trimmedSearch]);\n\n\t// Build final items array with create option\n\tconst allItems = useMemo(() => {\n\t\tif (createOptionItem) return [...baseItems, createOptionItem];\n\t\treturn baseItems;\n\t}, [baseItems, createOptionItem]);\n\n\t// Status display conditions\n\tconst showStatus = isLoading || trimmedSearch.length < minSearchLength;\n\tconst showEmpty =\n\t\t!isLoading &&\n\t\ttrimmedSearch.length >= minSearchLength &&\n\t\titems.length === 0 &&\n\t\t!showCreateOption;\n\n\t// -------------------------------------------------------------------------\n\t// Handlers\n\t// -------------------------------------------------------------------------\n\n\tconst renderItemContent = useCallback(\n\t\t(item: T): React.ReactNode => {\n\t\t\t// Handle create option\n\t\t\tif (isCreateOption(item)) {\n\t\t\t\tconst value = getCreateOptionValue(item);\n\t\t\t\treturn (\n\t\t\t\t\t<span className={cn('use-enhanced-combobox-core--component', 'flex items-center gap-space-sm text-xs')}>\n\t\t\t\t\t\t<PlusIcon className=\"size-icon-sm\" />\n\t\t\t\t\t\t{strings.createNew.includes('{value}') ? (\n\t\t\t\t\t\t\tstrings.createNew.replace('{value}', value)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"inline-flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<span>{strings.createNew}</span>\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"text-xs\">{value}</Text>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Custom renderer takes precedence\n\t\t\tif (renderItem) {\n\t\t\t\treturn renderItem(item);\n\t\t\t}\n\n\t\t\t// Default rendering with optional highlighting\n\t\t\tconst label = getItemLabel(item);\n\t\t\tif (highlightMatch && trimmedSearch) {\n\t\t\t\treturn <HighlightedText text={label} highlight={trimmedSearch} />;\n\t\t\t}\n\t\t\treturn label;\n\t\t},\n\t\t[strings.createNew, renderItem, getItemLabel, highlightMatch, trimmedSearch]\n\t);\n\n\tconst itemToStringLabel = useCallback(\n\t\t(item: T): string => {\n\t\t\tif (isCreateOption(item)) {\n\t\t\t\treturn getCreateOptionValue(item);\n\t\t\t}\n\t\t\treturn getItemLabel(item);\n\t\t},\n\t\t[getItemLabel]\n\t);\n\n\tconst getItemReactKey = useCallback(\n\t\t(item: T): string => {\n\t\t\tif (isCreateOption(item)) return `__create__:${getCreateOptionValue(item)}`;\n\t\t\treturn String(getKey(item));\n\t\t},\n\t\t[getKey]\n\t);\n\n\treturn {\n\t\tstrings,\n\t\tgetKey,\n\t\ttrimmedSearch,\n\t\tlistRef,\n\t\tbaseItems,\n\t\tallItems,\n\t\tgroupedItems,\n\t\tcreateOptionItem,\n\t\tshowStatus,\n\t\tshowEmpty,\n\t\tshowCreateOption,\n\t\trenderItemContent,\n\t\titemToStringLabel,\n\t\tgetItemReactKey,\n\t\thandleScroll,\n\t};\n}\n","/**\n * Enhanced Combobox Components\n *\n * A feature-rich, API-driven combobox built on Base UI with shadcn styling.\n * Supports single and multiple selection, form integration, debounced search,\n * grouping, pagination, and more.\n *\n * This version uses shared hooks and components to eliminate duplication\n * between single and multiple selection variants.\n */\n\nimport * as React from 'react';\nimport { useRef, useCallback, useEffect, useState } from 'react';\nimport { ChevronDownIcon, XIcon } from 'lucide-react';\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\n\nimport {\n\tCombobox as BaseCombobox,\n\tComboboxChips,\n\tComboboxChip,\n\tComboboxChipsInput,\n} from '@/components/ui/combobox';\nimport { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport { ComboboxDropdown } from './components/combobox-dropdown';\nimport { ErrorMessage } from './components/error-message';\nimport {\n\tformControlIconClasses,\n\tformControlMinHeightClasses,\n\tformControlPaddingClasses,\n} from '../forms/form-sizing';\nimport {\n\tDEFAULT_MIN_SEARCH_LENGTH,\n\tDEFAULT_SIZE,\n\tisCreateOption,\n\tgetCreateOptionValue,\n} from './constants';\n\nimport { useEnhancedComboboxCore } from './hooks/use-enhanced-combobox-core';\nimport type {\n\tEnhancedComboboxProps,\n\tEnhancedComboboxMultipleProps,\n\tComboboxSize,\n} from './types';\n\nconst formControlSizeToComboboxSize: Record<FormControlSize, ComboboxSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nfunction resolveComboboxSize(\n\tsizeProp: ComboboxSize | undefined,\n\tdefaultControlSize: FormControlSize | undefined,\n): ComboboxSize {\n\treturn sizeProp ?? formControlSizeToComboboxSize[defaultControlSize ?? 'default'] ?? DEFAULT_SIZE;\n}\n\nconst comboboxSizeToFormControlSize: Record<ComboboxSize, FormControlSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst inputEndPaddingBySize: Record<ComboboxSize, string> = {\n\tsmall: 'pe-control-actions-sm',\n\tdefault: 'pe-control-actions',\n};\n\nconst primitiveComboboxSizeBySize: Record<ComboboxSize, 'sm' | 'md'> = {\n\tsmall: 'sm',\n\tdefault: 'md',\n};\n\nfunction getComboboxFormSize(size: ComboboxSize): FormControlSize {\n\treturn comboboxSizeToFormControlSize[size];\n}\n\ninterface ComboboxInputFieldProps {\n\tplaceholder: string;\n\tclearLabel: string;\n\ttoggleLabel: string;\n\tsize: FormControlSize;\n\terror?: boolean;\n\trequired?: boolean;\n\tdisabled?: boolean;\n\tclearable?: boolean;\n\tclassName?: string;\n\tonBlur?: () => void;\n}\n\nfunction ComboboxInputField({\n\tplaceholder,\n\tclearLabel,\n\ttoggleLabel,\n\tsize,\n\terror,\n\trequired,\n\tdisabled,\n\tclearable = true,\n\tclassName,\n\tonBlur,\n}: ComboboxInputFieldProps): React.ReactElement {\n\treturn (\n\t\t<div className=\"relative\">\n\t\t\t<ComboboxPrimitive.Input\n\t\t\t\trender={\n\t\t\t\t\t<Input\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tinvalid={error}\n\t\t\t\t\t\tclassName={cn(inputEndPaddingBySize[size], className)}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\taria-invalid={error || undefined}\n\t\t\t\taria-required={required}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonBlur={onBlur}\n\t\t\t/>\n\t\t\t<div className=\"absolute inset-y-0 end-1 flex items-center gap-1 text-muted-foreground\">\n\t\t\t\t{clearable ? (\n\t\t\t\t\t<ComboboxPrimitive.Clear\n\t\t\t\t\t\trender={\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=\"icon-small\"\n\t\t\t\t\t\t\t\tclassName=\"size-control-clear text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t\taria-label={clearLabel}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<XIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t<ComboboxPrimitive.Trigger\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\tclassName=\"size-control-clear text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\taria-label={toggleLabel}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronDownIcon className={formControlIconClasses[size]} aria-hidden=\"true\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// ============================================================================\n// Single Selection Component\n// ============================================================================\n\nexport function EnhancedCombobox<T>({\n\t// Core props\n\titems,\n\tselectedValue,\n\tonSelectedValueChange,\n\tsearchValue,\n\tonSearchValueChange,\n\tgetItemLabel,\n\tgetItemKey,\n\tisLoading = false,\n\tminSearchLength = DEFAULT_MIN_SEARCH_LENGTH,\n\tstrings: stringsProp,\n\tdisabled = false,\n\tclassName,\n\tclearable = true,\n\trenderItem,\n\tportalContainer,\n\n\t// Form Integration\n\tname,\n\tinvalid,\n\terror,\n\trequired,\n\tonBlur,\n\n\t// Debounced Search\n\tonSearch,\n\tdebounceMs,\n\n\t// Creatable\n\tcreatable,\n\tonCreate,\n\n\t// Grouped Items\n\tgetItemGroup,\n\trenderGroupLabel,\n\n\t// Load More\n\thasMore,\n\tonLoadMore,\n\tisLoadingMore,\n\n\t// Disable individual items\n\tgetItemDisabled,\n\n\t// Highlight Match\n\thighlightMatch,\n\n\t// Size\n\tsize: sizeProp,\n\n\t// Controlled Open\n\topen,\n\tonOpenChange,\n}: EnhancedComboboxProps<T>): React.ReactElement {\n\tconst { defaultControlSize } = useFormsConfig();\n\tconst size = resolveComboboxSize(sizeProp, defaultControlSize);\n\tconst formSize = getComboboxFormSize(size);\n\tconst hasError = invalid || Boolean(error);\n\n\t// Use shared core hook\n\tconst core = useEnhancedComboboxCore({\n\t\titems,\n\t\tsearchValue,\n\t\tonSearchValueChange,\n\t\tgetItemLabel,\n\t\tgetItemKey,\n\t\tisLoading,\n\t\tminSearchLength,\n\t\tstrings: stringsProp,\n\t\trenderItem,\n\t\tonSearch,\n\t\tdebounceMs,\n\t\tcreatable,\n\t\tonCreate,\n\t\tgetItemGroup,\n\t\thasMore,\n\t\tonLoadMore,\n\t\tisLoadingMore,\n\t\thighlightMatch,\n\t\tsize,\n\t\t// Include selected value in items list\n\t\tensuredItems: selectedValue ? [selectedValue] : [],\n\t});\n\n\t// Track open state so we can show the selected label when closed\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst handleOpenChange = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tsetIsOpen(nextOpen);\n\t\t\tif (!nextOpen) {\n\t\t\t\t// Clear search when closing so next open starts fresh\n\t\t\t\tonSearchValueChange('');\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t},\n\t\t[onOpenChange, onSearchValueChange],\n\t);\n\n\t// When closed with a selected value, show the label; when open, show search text\n\tconst displayInputValue = isOpen\n\t\t? searchValue\n\t\t: (selectedValue ? core.itemToStringLabel(selectedValue) : '');\n\n\t// Handle value change, including create option\n\tconst handleValueChange = useCallback(\n\t\t(value: T | null): void => {\n\t\t\tif (value && isCreateOption(value)) {\n\t\t\t\tconst inputValue = getCreateOptionValue(value);\n\t\t\t\tonCreate?.(inputValue);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSelectedValueChange(value);\n\t\t},\n\t\t[onSelectedValueChange, onCreate]\n\t);\n\n\treturn (\n\t\t<div className=\"enhanced-combobox--component\">\n\t\t\t<BaseCombobox\n\t\t\t\titems={core.allItems}\n\t\t\t\tvalue={selectedValue}\n\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\tinputValue={displayInputValue}\n\t\t\t\tonInputValueChange={(value, { reason }) => {\n\t\t\t\t\tif (reason === 'item-press') {\n\t\t\t\t\t\tonSearchValueChange('');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonSearchValueChange(value);\n\t\t\t\t}}\n\t\t\t\titemToStringLabel={core.itemToStringLabel}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tfilter={null}\n\t\t\t\tname={name}\n\t\t\t\trequired={required}\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t>\n\t\t\t\t<ComboboxInputField\n\t\t\t\t\tplaceholder={core.strings.placeholder}\n\t\t\t\t\tclearLabel={core.strings.clear}\n\t\t\t\t\ttoggleLabel={core.strings.toggle}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tsize={formSize}\n\t\t\t\t\terror={hasError}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclearable={clearable}\n\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t/>\n\n\t\t\t\t<ComboboxDropdown\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tshowStatus={core.showStatus}\n\t\t\t\t\tshowEmpty={core.showEmpty}\n\t\t\t\t\tsearchValue={searchValue}\n\t\t\t\t\tminSearchLength={minSearchLength}\n\t\t\t\t\titems={items}\n\t\t\t\t\tgroupedItems={core.groupedItems}\n\t\t\t\t\tcreateOptionItem={core.createOptionItem}\n\t\t\t\t\trenderItemContent={core.renderItemContent}\n\t\t\t\t\tgetItemReactKey={core.getItemReactKey}\n\t\t\t\t\tgetItemDisabled={getItemDisabled}\n\t\t\t\t\trenderGroupLabel={renderGroupLabel}\n\t\t\t\t\tisLoadingMore={isLoadingMore}\n\t\t\t\t\tstrings={core.strings}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tportalContainer={portalContainer}\n\t\t\t\t\tlistRef={core.listRef}\n\t\t\t\t/>\n\t\t\t</BaseCombobox>\n\n\t\t\t<ErrorMessage error={error} size={size} />\n\t\t</div>\n\t);\n}\n\n// ============================================================================\n// Multiple Selection Component\n// ============================================================================\n\nexport function EnhancedComboboxMultiple<T>({\n\t// Core props\n\titems,\n\tselectedValues,\n\tonSelectedValuesChange,\n\tsearchValue,\n\tonSearchValueChange,\n\tgetItemLabel,\n\tgetItemKey,\n\tisLoading = false,\n\tminSearchLength = DEFAULT_MIN_SEARCH_LENGTH,\n\tstrings: stringsProp,\n\tdisabled = false,\n\tclassName,\n\trenderItem,\n\tportalContainer,\n\n\t// Form Integration\n\tname,\n\tinvalid,\n\terror,\n\trequired,\n\tonBlur,\n\n\t// Debounced Search\n\tonSearch,\n\tdebounceMs,\n\n\t// Creatable\n\tcreatable,\n\tonCreate,\n\n\t// Grouped Items\n\tgetItemGroup,\n\trenderGroupLabel,\n\n\t// Load More\n\thasMore,\n\tonLoadMore,\n\tisLoadingMore,\n\n\t// Disable individual items\n\tgetItemDisabled,\n\n\t// Highlight Match\n\thighlightMatch,\n\n\t// Size\n\tsize: sizeProp,\n\n\t// Controlled Open\n\topen,\n\tonOpenChange,\n\n\t// Behaviour\n\tcloseOnSelect = false,\n\tapplyButton = false,\n\tonApply,\n\tonCancel,\n}: EnhancedComboboxMultipleProps<T>): React.ReactElement {\n\tconst { defaultControlSize } = useFormsConfig();\n\tconst size = resolveComboboxSize(sizeProp, defaultControlSize);\n\tconst formSize = getComboboxFormSize(size);\n\tconst primitiveComboboxSize = primitiveComboboxSizeBySize[size];\n\tconst hasError = invalid || Boolean(error);\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\tconst getKey = getItemKey ?? getItemLabel;\n\n\t// Draft state — only used in `applyButton` mode. Tracks the user's\n\t// in-progress selection so we can commit it on Apply or revert on\n\t// Cancel. When apply mode is OFF, we pass selections through immediately.\n\tconst [draftValues, setDraftValues] = useState<T[]>(selectedValues);\n\tconst [internalOpen, setInternalOpen] = useState(false);\n\tconst isOpenControlled = open !== undefined;\n\tconst resolvedOpen = isOpenControlled ? open : internalOpen;\n\n\tuseEffect(() => {\n\t\tif (applyButton) setDraftValues(selectedValues);\n\t}, [applyButton, selectedValues]);\n\n\tconst setOpen = useCallback(\n\t\t(next: boolean) => {\n\t\t\tif (!isOpenControlled) setInternalOpen(next);\n\t\t\tonOpenChange?.(next);\n\t\t},\n\t\t[isOpenControlled, onOpenChange],\n\t);\n\n\t// Use shared core hook\n\tconst core = useEnhancedComboboxCore({\n\t\titems,\n\t\tsearchValue,\n\t\tonSearchValueChange,\n\t\tgetItemLabel,\n\t\tgetItemKey,\n\t\tisLoading,\n\t\tminSearchLength,\n\t\tstrings: stringsProp,\n\t\trenderItem,\n\t\tonSearch,\n\t\tdebounceMs,\n\t\tcreatable,\n\t\tonCreate,\n\t\tgetItemGroup,\n\t\thasMore,\n\t\tonLoadMore,\n\t\tisLoadingMore,\n\t\thighlightMatch,\n\t\tsize,\n\t\t// Include selected values in items list\n\t\tensuredItems: selectedValues,\n\t});\n\n\t// Handle value change, filtering out create options\n\tconst handleValueChange = useCallback(\n\t\t(values: T[]): void => {\n\t\t\tconst regularValues: T[] = [];\n\t\t\tlet createValue: string | null = null;\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (isCreateOption(value)) {\n\t\t\t\t\tcreateValue = getCreateOptionValue(value);\n\t\t\t\t} else {\n\t\t\t\t\tregularValues.push(value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (createValue) {\n\t\t\t\tonCreate?.(createValue);\n\t\t\t}\n\n\t\t\tconst next = (regularValues.length !== values.length || !createValue) ? regularValues : null;\n\t\t\tif (next) {\n\t\t\t\tif (applyButton) {\n\t\t\t\t\tsetDraftValues(next);\n\t\t\t\t} else {\n\t\t\t\t\tonSelectedValuesChange(next);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tsetOpen(false);\n\t\t\t}\n\t\t},\n\t\t[onSelectedValuesChange, onCreate, applyButton, closeOnSelect, setOpen],\n\t);\n\n\tconst handleApply = useCallback(() => {\n\t\tif (applyButton) onSelectedValuesChange(draftValues);\n\t\tonApply?.();\n\t\tsetOpen(false);\n\t}, [applyButton, draftValues, onApply, onSelectedValuesChange, setOpen]);\n\n\tconst handleCancel = useCallback(() => {\n\t\tif (applyButton) setDraftValues(selectedValues);\n\t\tonCancel?.();\n\t\tsetOpen(false);\n\t}, [applyButton, selectedValues, onCancel, setOpen]);\n\n\tconst visibleValues = applyButton ? draftValues : selectedValues;\n\tconst chipsPlaceholder = visibleValues.length > 0 ? undefined : core.strings.placeholder;\n\n\treturn (\n\t\t<div className=\"enhanced-combobox--component\">\n\t\t\t<BaseCombobox\n\t\t\t\titems={core.allItems}\n\t\t\t\tmultiple\n\t\t\t\tvalue={visibleValues}\n\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\tinputValue={searchValue}\n\t\t\t\tonInputValueChange={(value, { reason }) => {\n\t\t\t\t\tif (reason === 'item-press') {\n\t\t\t\t\t\tonSearchValueChange('');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonSearchValueChange(value);\n\t\t\t\t}}\n\t\t\t\titemToStringLabel={core.itemToStringLabel}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tfilter={null}\n\t\t\t\tname={name}\n\t\t\t\trequired={required}\n\t\t\t\topen={resolvedOpen}\n\t\t\t\tonOpenChange={(next) => {\n\t\t\t\t\t// In apply-button mode, closing without committing should\n\t\t\t\t\t// revert the draft so the next open starts clean.\n\t\t\t\t\tif (!next && applyButton) setDraftValues(selectedValues);\n\t\t\t\t\tsetOpen(next);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ComboboxChips\n\t\t\t\t\tref={containerRef}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tformControlMinHeightClasses[formSize],\n\t\t\t\t\t\tformControlPaddingClasses[formSize],\n\t\t\t\t\t\tformSize === 'small' ? 'text-xs' : 'text-sm',\n\t\t\t\t\t\t'bg-transparent !shadow-none',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tsize={primitiveComboboxSize}\n\t\t\t\t\terror={hasError}\n\t\t\t\t>\n\t\t\t\t\t{visibleValues.map((item) => (\n\t\t\t\t\t\t<ComboboxChip key={getKey(item)}>\n\t\t\t\t\t\t\t{getItemLabel(item)}\n\t\t\t\t\t\t</ComboboxChip>\n\t\t\t\t\t))}\n\t\t\t\t\t<ComboboxChipsInput\n\t\t\t\t\t\tplaceholder={chipsPlaceholder}\n\t\t\t\t\t\taria-invalid={hasError || undefined}\n\t\t\t\t\t\taria-required={required}\n\t\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\t/>\n\t\t\t\t</ComboboxChips>\n\n\t\t\t\t<ComboboxDropdown\n\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\tshowStatus={core.showStatus}\n\t\t\t\t\tshowEmpty={core.showEmpty}\n\t\t\t\t\tsearchValue={searchValue}\n\t\t\t\t\tminSearchLength={minSearchLength}\n\t\t\t\t\titems={items}\n\t\t\t\t\tgroupedItems={core.groupedItems}\n\t\t\t\t\tcreateOptionItem={core.createOptionItem}\n\t\t\t\t\trenderItemContent={core.renderItemContent}\n\t\t\t\t\tgetItemReactKey={core.getItemReactKey}\n\t\t\t\t\tgetItemDisabled={getItemDisabled}\n\t\t\t\t\trenderGroupLabel={renderGroupLabel}\n\t\t\t\t\tisLoadingMore={isLoadingMore}\n\t\t\t\t\tstrings={core.strings}\n\t\t\t\t\tsize={size}\n\t\t\t\t\tportalContainer={portalContainer}\n\t\t\t\t\tlistRef={core.listRef}\n\t\t\t\t\tanchor={containerRef}\n\t\t\t\t\tapplyFooter={applyButton ? {\n\t\t\t\t\t\tapplyLabel: core.strings.apply,\n\t\t\t\t\t\tcancelLabel: core.strings.cancel,\n\t\t\t\t\t\tonApply: handleApply,\n\t\t\t\t\t\tonCancel: handleCancel,\n\t\t\t\t\t} : undefined}\n\t\t\t\t/>\n\t\t\t</BaseCombobox>\n\n\t\t\t<ErrorMessage error={error} size={size} />\n\t\t</div>\n\t);\n}\n\n// ============================================================================\n// Legacy Aliases\n// ============================================================================\n\n/** @deprecated Use EnhancedCombobox instead */\nexport const ApiCombobox = EnhancedCombobox;\n\n/** @deprecated Use EnhancedComboboxMultiple instead */\nexport const ApiComboboxMultiple = EnhancedComboboxMultiple;\n\nEnhancedCombobox.displayName = 'EnhancedCombobox';\nEnhancedComboboxMultiple.displayName = 'EnhancedComboboxMultiple';\n","import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { EnhancedCombobox } from './enhanced-combobox';\nimport { defaultComboboxStrings } from './combobox.strings';\nimport { DEFAULT_DEBOUNCE_MS } from './constants';\nimport type { ComboboxSize, ComboboxStrings, EnhancedComboboxProps } from './types';\n\nexport interface AsyncResourceComboboxFetcherArgs {\n\tquery: string;\n\tlimit: number;\n\tsignal?: AbortSignal;\n}\n\nexport type AsyncResourceComboboxFetcher<T> = (\n\targs: AsyncResourceComboboxFetcherArgs,\n) => Promise<T[]>;\n\nexport interface AsyncResourceComboboxStrings extends ComboboxStrings {\n\terror: string;\n}\n\nexport const defaultAsyncResourceComboboxStrings: AsyncResourceComboboxStrings = {\n\t...defaultComboboxStrings,\n\terror: 'Unable to load options.',\n};\n\nexport interface AsyncResourceComboboxRenderOptionContext {\n\tquery: string;\n\tisSelected: boolean;\n}\n\nexport interface AsyncResourceComboboxProps<T>\n\textends Omit<\n\t\tEnhancedComboboxProps<T>,\n\t\t| 'items'\n\t\t| 'selectedValue'\n\t\t| 'onSelectedValueChange'\n\t\t| 'searchValue'\n\t\t| 'onSearchValueChange'\n\t\t| 'getItemLabel'\n\t\t| 'getItemKey'\n\t\t| 'isLoading'\n\t\t| 'renderItem'\n\t\t| 'strings'\n\t\t| 'error'\n\t\t| 'debounceMs'\n\t> {\n\tfetcher: AsyncResourceComboboxFetcher<T>;\n\tvalue?: T | null;\n\tdefaultValue?: T | null;\n\tonValueChange?: (value: T | null) => void;\n\tonAfterFetch?: (items: T[], context: AsyncResourceComboboxFetcherArgs) => void;\n\tonError?: (error: unknown, context: AsyncResourceComboboxFetcherArgs) => void;\n\tgetKey: (item: T) => string;\n\tgetLabel: (item: T) => string;\n\tgetDescription?: (item: T) => ReactNode;\n\tgetMeta?: (item: T) => ReactNode;\n\trenderOption?: (item: T, context: AsyncResourceComboboxRenderOptionContext) => ReactNode;\n\tlimit?: number;\n\tdebounceMs?: number;\n\tpreload?: boolean;\n\terrorMessage?: ReactNode;\n\tstrings?: StringsProp<AsyncResourceComboboxStrings>;\n\tsize?: ComboboxSize;\n}\n\nexport function AsyncResourceCombobox<T>({\n\tfetcher,\n\tvalue,\n\tdefaultValue = null,\n\tonValueChange,\n\tonAfterFetch,\n\tonError,\n\tgetKey,\n\tgetLabel,\n\tgetDescription,\n\tgetMeta,\n\trenderOption,\n\tlimit = 10,\n\tdebounceMs = DEFAULT_DEBOUNCE_MS,\n\tpreload = true,\n\tminSearchLength = 0,\n\terrorMessage,\n\tstrings: stringsProp,\n\tdisabled,\n\t...props\n}: AsyncResourceComboboxProps<T>) {\n\tconst strings = useStrings(defaultAsyncResourceComboboxStrings, stringsProp);\n\tconst isControlled = value !== undefined;\n\tconst [internalValue, setInternalValue] = useState<T | null>(defaultValue);\n\tconst selectedValue = isControlled ? value : internalValue;\n\tconst [searchValue, setSearchValue] = useState('');\n\tconst [items, setItems] = useState<T[]>([]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<unknown>(null);\n\tconst requestIdRef = useRef(0);\n\tconst trimmedSearch = searchValue.trim();\n\n\tconst handleValueChange = useCallback(\n\t\t(nextValue: T | null) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(nextValue);\n\t\t\t}\n\t\t\tonValueChange?.(nextValue);\n\t\t},\n\t\t[isControlled, onValueChange],\n\t);\n\n\tuseEffect(() => {\n\t\tif (disabled) return;\n\n\t\tconst shouldFetch =\n\t\t\ttrimmedSearch.length > 0\n\t\t\t\t? trimmedSearch.length >= minSearchLength\n\t\t\t\t: preload;\n\n\t\tif (!shouldFetch) {\n\t\t\tsetItems([]);\n\t\t\tsetIsLoading(false);\n\t\t\tsetError(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst requestId = requestIdRef.current + 1;\n\t\trequestIdRef.current = requestId;\n\t\tconst controller = new AbortController();\n\t\tconst context: AsyncResourceComboboxFetcherArgs = {\n\t\t\tquery: trimmedSearch,\n\t\t\tlimit,\n\t\t\tsignal: controller.signal,\n\t\t};\n\n\t\tconst timeout = window.setTimeout(() => {\n\t\t\tsetIsLoading(true);\n\t\t\tsetError(null);\n\n\t\t\tfetcher(context)\n\t\t\t\t.then((nextItems) => {\n\t\t\t\t\tif (controller.signal.aborted || requestIdRef.current !== requestId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetItems(nextItems);\n\t\t\t\t\tonAfterFetch?.(nextItems, context);\n\t\t\t\t})\n\t\t\t\t.catch((nextError: unknown) => {\n\t\t\t\t\tif (controller.signal.aborted || requestIdRef.current !== requestId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetItems([]);\n\t\t\t\t\tsetError(nextError);\n\t\t\t\t\tonError?.(nextError, context);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tif (!controller.signal.aborted && requestIdRef.current === requestId) {\n\t\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, debounceMs);\n\n\t\treturn () => {\n\t\t\twindow.clearTimeout(timeout);\n\t\t\tcontroller.abort();\n\t\t};\n\t}, [\n\t\tdebounceMs,\n\t\tdisabled,\n\t\tfetcher,\n\t\tlimit,\n\t\tminSearchLength,\n\t\tonAfterFetch,\n\t\tonError,\n\t\tpreload,\n\t\ttrimmedSearch,\n\t]);\n\n\tconst renderItem = useCallback(\n\t\t(item: T) => {\n\t\t\tif (renderOption) {\n\t\t\t\treturn renderOption(item, {\n\t\t\t\t\tquery: trimmedSearch,\n\t\t\t\t\tisSelected: selectedValue ? getKey(selectedValue) === getKey(item) : false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst description = getDescription?.(item);\n\t\t\tconst meta = getMeta?.(item);\n\n\t\t\treturn (\n\t\t\t\t<span className=\"async-resource-combobox--option flex min-w-0 items-center gap-space-md text-xs leading-tight\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" className=\"min-w-0 shrink truncate\">\n\t\t\t\t\t\t{getLabel(item)}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{(!!description || !!meta) && (\n\t\t\t\t\t\t<span className=\"inline-flex min-w-0 flex-1 items-center gap-space-sm overflow-hidden text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"min-w-0 truncate\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!meta && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"min-w-0 truncate opacity-75\">\n\t\t\t\t\t\t\t\t\t{meta}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t);\n\t\t},\n\t\t[getDescription, getKey, getLabel, getMeta, renderOption, selectedValue, trimmedSearch],\n\t);\n\n\tconst resolvedError = useMemo(() => {\n\t\tif (!error) return undefined;\n\t\treturn errorMessage ?? strings.error;\n\t}, [error, errorMessage, strings.error]);\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"async-resource-combobox\"\n\t\t\tdata-slot=\"async-resource-combobox\"\n\t\t\tclassName={cn('async-resource-combobox--component', props.className)}\n\t\t>\n\t\t\t<EnhancedCombobox\n\t\t\t\t{...props}\n\t\t\t\tclassName={undefined}\n\t\t\t\tdisabled={disabled}\n\t\t\t\titems={items}\n\t\t\t\tselectedValue={selectedValue ?? null}\n\t\t\t\tonSelectedValueChange={handleValueChange}\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchValueChange={setSearchValue}\n\t\t\t\tgetItemLabel={getLabel}\n\t\t\t\tgetItemKey={getKey}\n\t\t\t\tisLoading={isLoading}\n\t\t\t\tminSearchLength={minSearchLength}\n\t\t\t\tstrings={strings}\n\t\t\t\trenderItem={renderItem}\n\t\t\t\terror={typeof resolvedError === 'string' ? resolvedError : undefined}\n\t\t\t/>\n\t\t\t{resolvedError && typeof resolvedError !== 'string' && (\n\t\t\t\t<div className=\"async-resource-combobox--error mt-1.5\">\n\t\t\t\t\t{resolvedError}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nAsyncResourceCombobox.displayName = 'AsyncResourceCombobox';\n"],"mappings":"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"}