admin-ui-starter-kit 0.6.6 → 0.6.8

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 (1256) hide show
  1. package/.agents/skills/component-library-rules/SKILL.md +2 -2
  2. package/.agents/skills/component-library-rules/references/components/INDEX.json +15 -1
  3. package/.agents/skills/component-library-rules/references/components/INDEX.md +15 -1
  4. package/.agents/skills/component-library-rules/references/components/base__boolean-indicator.md +33 -0
  5. package/.agents/skills/component-library-rules/references/components/base__cards.md +7 -6
  6. package/.agents/skills/component-library-rules/references/components/base__carousel.md +4 -4
  7. package/.agents/skills/component-library-rules/references/components/base__collapsible.md +39 -0
  8. package/.agents/skills/component-library-rules/references/components/base__combobox.md +1 -1
  9. package/.agents/skills/component-library-rules/references/components/base__conditional-rendering.md +39 -0
  10. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +2 -1
  11. package/.agents/skills/component-library-rules/references/components/base__date-block.md +39 -0
  12. package/.agents/skills/component-library-rules/references/components/base__dialog.md +39 -0
  13. package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +59 -95
  14. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
  15. package/.agents/skills/component-library-rules/references/components/base__item.md +4 -3
  16. package/.agents/skills/component-library-rules/references/components/base__money-display.md +39 -0
  17. package/.agents/skills/component-library-rules/references/components/base__notification-banner.md +39 -0
  18. package/.agents/skills/component-library-rules/references/components/base__placeholder-pattern.md +39 -0
  19. package/.agents/skills/component-library-rules/references/components/base__progress.md +33 -0
  20. package/.agents/skills/component-library-rules/references/components/base__qr-code.md +39 -0
  21. package/.agents/skills/component-library-rules/references/components/base__separator.md +33 -0
  22. package/.agents/skills/component-library-rules/references/components/base__skeleton.md +55 -0
  23. package/.agents/skills/component-library-rules/references/components/base__throttle-alert.md +39 -0
  24. package/.agents/skills/component-library-rules/references/components/base__typography.md +1 -1
  25. package/.agents/skills/component-library-rules/references/components/base__visually-hidden.md +39 -0
  26. package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +3 -3
  27. package/.agents/skills/component-library-rules/references/components/features__activities.md +1 -1
  28. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +6 -6
  29. package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +3 -3
  30. package/.agents/skills/component-library-rules/references/components/features__overlays.md +2 -2
  31. package/.agents/skills/component-library-rules/references/components/features__products.md +1 -1
  32. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +1 -1
  33. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +1 -1
  34. package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +2 -1
  35. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +2 -2
  36. package/.agents/skills/component-library-rules/references/ui-provider.md +2 -2
  37. package/dist/_shared/accordion-8B4OFqiT.cjs +2 -0
  38. package/dist/_shared/accordion-8B4OFqiT.cjs.map +1 -0
  39. package/dist/_shared/accordion-DlpTSZ3p.js +135 -0
  40. package/dist/_shared/accordion-DlpTSZ3p.js.map +1 -0
  41. package/dist/_shared/action-menu-BYrYdpkR.cjs +2 -0
  42. package/dist/_shared/action-menu-BYrYdpkR.cjs.map +1 -0
  43. package/dist/_shared/action-menu-CYwMZX-b.js +96 -0
  44. package/dist/_shared/action-menu-CYwMZX-b.js.map +1 -0
  45. package/dist/_shared/ai-artifact-BylloxGO.js +1099 -0
  46. package/dist/_shared/ai-artifact-BylloxGO.js.map +1 -0
  47. package/dist/_shared/ai-artifact-DfT97Mpi.cjs +3 -0
  48. package/dist/_shared/ai-artifact-DfT97Mpi.cjs.map +1 -0
  49. package/dist/_shared/auth-1Ht9Kevx.js +643 -0
  50. package/dist/_shared/auth-1Ht9Kevx.js.map +1 -0
  51. package/dist/_shared/auth-DTN6sFXM.cjs +2 -0
  52. package/dist/_shared/auth-DTN6sFXM.cjs.map +1 -0
  53. package/dist/_shared/badge-LSAgdmGt.cjs +2 -0
  54. package/dist/_shared/badge-LSAgdmGt.cjs.map +1 -0
  55. package/dist/_shared/badge-nZ2zbAV4.js +110 -0
  56. package/dist/_shared/badge-nZ2zbAV4.js.map +1 -0
  57. package/dist/_shared/button-Be2ayMxF.js +192 -0
  58. package/dist/_shared/button-Be2ayMxF.js.map +1 -0
  59. package/dist/_shared/button-CfQtOuBK.cjs +2 -0
  60. package/dist/_shared/button-CfQtOuBK.cjs.map +1 -0
  61. package/dist/_shared/buttons-DABiSx6N.cjs +2 -0
  62. package/dist/_shared/buttons-DABiSx6N.cjs.map +1 -0
  63. package/dist/_shared/buttons-DYQqQPpk.js +137 -0
  64. package/dist/_shared/buttons-DYQqQPpk.js.map +1 -0
  65. package/dist/_shared/card-radio-group-DKhZhBFV.cjs +2 -0
  66. package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +1 -0
  67. package/dist/_shared/card-radio-group-DRjmLN5s.js +150 -0
  68. package/dist/_shared/card-radio-group-DRjmLN5s.js.map +1 -0
  69. package/dist/_shared/cards-BJctT9KD.js +428 -0
  70. package/dist/_shared/cards-BJctT9KD.js.map +1 -0
  71. package/dist/_shared/cards-m03XN10f.cjs +2 -0
  72. package/dist/_shared/cards-m03XN10f.cjs.map +1 -0
  73. package/dist/_shared/combobox-BdBpeD3C.cjs +2 -0
  74. package/dist/_shared/combobox-BdBpeD3C.cjs.map +1 -0
  75. package/dist/_shared/combobox-D9tU_83-.js +954 -0
  76. package/dist/_shared/combobox-D9tU_83-.js.map +1 -0
  77. package/dist/_shared/command-BbJB0pjP.cjs +2 -0
  78. package/dist/_shared/command-BbJB0pjP.cjs.map +1 -0
  79. package/dist/_shared/command-IP2wy_HN.js +39 -0
  80. package/dist/_shared/command-IP2wy_HN.js.map +1 -0
  81. package/dist/_shared/comments-B_WKQUol.js +952 -0
  82. package/dist/_shared/comments-B_WKQUol.js.map +1 -0
  83. package/dist/_shared/comments-DMHMNObS.cjs +2 -0
  84. package/dist/_shared/comments-DMHMNObS.cjs.map +1 -0
  85. package/dist/_shared/copyable-BJYx2SlN.js +38 -0
  86. package/dist/_shared/copyable-BJYx2SlN.js.map +1 -0
  87. package/dist/_shared/copyable-DiDEjp8Z.cjs +2 -0
  88. package/dist/_shared/copyable-DiDEjp8Z.cjs.map +1 -0
  89. package/dist/_shared/data-display-4E_irfF2.js +1878 -0
  90. package/dist/_shared/data-display-4E_irfF2.js.map +1 -0
  91. package/dist/_shared/data-display-BPn-7qFO.cjs +2 -0
  92. package/dist/_shared/data-display-BPn-7qFO.cjs.map +1 -0
  93. package/dist/_shared/date-picker-CvqLnlxm.js +1361 -0
  94. package/dist/_shared/date-picker-CvqLnlxm.js.map +1 -0
  95. package/dist/_shared/date-picker-D83fCi2g.cjs +2 -0
  96. package/dist/_shared/date-picker-D83fCi2g.cjs.map +1 -0
  97. package/dist/_shared/date-pickers-C6ku2BPp.cjs +2 -0
  98. package/dist/_shared/date-pickers-C6ku2BPp.cjs.map +1 -0
  99. package/dist/_shared/date-pickers-RdbwIhdY.js +329 -0
  100. package/dist/_shared/date-pickers-RdbwIhdY.js.map +1 -0
  101. package/dist/_shared/display-DFVeSuWL.js +986 -0
  102. package/dist/_shared/display-DFVeSuWL.js.map +1 -0
  103. package/dist/_shared/display-Lr3xTd4a.cjs +2 -0
  104. package/dist/_shared/display-Lr3xTd4a.cjs.map +1 -0
  105. package/dist/_shared/forms-BA8Aa_fi.js +3534 -0
  106. package/dist/_shared/forms-BA8Aa_fi.js.map +1 -0
  107. package/dist/_shared/forms-CNjjdFcf.cjs +2 -0
  108. package/dist/_shared/forms-CNjjdFcf.cjs.map +1 -0
  109. package/dist/_shared/header-BEsz1_so.cjs +2 -0
  110. package/dist/_shared/header-BEsz1_so.cjs.map +1 -0
  111. package/dist/_shared/header-bJx8z6zT.js +447 -0
  112. package/dist/_shared/header-bJx8z6zT.js.map +1 -0
  113. package/dist/_shared/hooks-gRgVhyY2.js +95 -0
  114. package/dist/_shared/hooks-gRgVhyY2.js.map +1 -0
  115. package/dist/_shared/hooks-nFiRfUxX.cjs +2 -0
  116. package/dist/_shared/hooks-nFiRfUxX.cjs.map +1 -0
  117. package/dist/_shared/input-CzJzVyQ0.js +182 -0
  118. package/dist/_shared/input-CzJzVyQ0.js.map +1 -0
  119. package/dist/_shared/input-Dvvmn96E.cjs +2 -0
  120. package/dist/_shared/input-Dvvmn96E.cjs.map +1 -0
  121. package/dist/_shared/item-CVjjpHQd.js +226 -0
  122. package/dist/_shared/item-CVjjpHQd.js.map +1 -0
  123. package/dist/_shared/item-ChHblHhR.cjs +2 -0
  124. package/dist/_shared/item-ChHblHhR.cjs.map +1 -0
  125. package/dist/_shared/layout-C_dYiKtE.cjs +2 -0
  126. package/dist/_shared/layout-C_dYiKtE.cjs.map +1 -0
  127. package/dist/_shared/layout-nigj488k.js +268 -0
  128. package/dist/_shared/layout-nigj488k.js.map +1 -0
  129. package/dist/_shared/mentions-BE51BNeq.cjs +2 -0
  130. package/dist/_shared/mentions-BE51BNeq.cjs.map +1 -0
  131. package/dist/_shared/mentions-CBhP29St.js +506 -0
  132. package/dist/_shared/mentions-CBhP29St.js.map +1 -0
  133. package/dist/_shared/money-display-BFk9Gu21.cjs +2 -0
  134. package/dist/_shared/money-display-BFk9Gu21.cjs.map +1 -0
  135. package/dist/_shared/money-display-DpuLnsK2.js +198 -0
  136. package/dist/_shared/money-display-DpuLnsK2.js.map +1 -0
  137. package/dist/_shared/navigation-CWK_YQ5Y.js +436 -0
  138. package/dist/_shared/navigation-CWK_YQ5Y.js.map +1 -0
  139. package/dist/_shared/navigation-DTBMb7-M.cjs +2 -0
  140. package/dist/_shared/navigation-DTBMb7-M.cjs.map +1 -0
  141. package/dist/_shared/overlays-BJLczwpz.js +735 -0
  142. package/dist/_shared/overlays-BJLczwpz.js.map +1 -0
  143. package/dist/_shared/overlays-DbaPLT67.cjs +2 -0
  144. package/dist/_shared/overlays-DbaPLT67.cjs.map +1 -0
  145. package/dist/_shared/popover-menu-D_t6rCvN.cjs +2 -0
  146. package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +1 -0
  147. package/dist/_shared/popover-menu-f2O6R_27.js +93 -0
  148. package/dist/_shared/popover-menu-f2O6R_27.js.map +1 -0
  149. package/dist/_shared/rich-text-editor-DmZHbsms.js +620 -0
  150. package/dist/_shared/rich-text-editor-DmZHbsms.js.map +1 -0
  151. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +2 -0
  152. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +1 -0
  153. package/dist/_shared/settings-D-HAOE3R.js +143 -0
  154. package/dist/_shared/settings-D-HAOE3R.js.map +1 -0
  155. package/dist/_shared/settings-DkL3bOk0.cjs +2 -0
  156. package/dist/_shared/settings-DkL3bOk0.cjs.map +1 -0
  157. package/dist/_shared/sidebar-BTyx7ipN.cjs +2 -0
  158. package/dist/_shared/sidebar-BTyx7ipN.cjs.map +1 -0
  159. package/dist/_shared/sidebar-DkBNualh.js +548 -0
  160. package/dist/_shared/sidebar-DkBNualh.js.map +1 -0
  161. package/dist/_shared/skeleton-DwF5VdMh.cjs +2 -0
  162. package/dist/_shared/skeleton-DwF5VdMh.cjs.map +1 -0
  163. package/dist/_shared/skeleton-yUXqeWzB.js +256 -0
  164. package/dist/_shared/skeleton-yUXqeWzB.js.map +1 -0
  165. package/dist/_shared/spinner-BDrUzfTo.cjs +2 -0
  166. package/dist/_shared/spinner-BDrUzfTo.cjs.map +1 -0
  167. package/dist/_shared/spinner-CuVZhJhN.js +67 -0
  168. package/dist/_shared/spinner-CuVZhJhN.js.map +1 -0
  169. package/dist/_shared/table-Cq0jkSm5.js +1377 -0
  170. package/dist/_shared/table-Cq0jkSm5.js.map +1 -0
  171. package/dist/_shared/table-GqTKCC8F.cjs +2 -0
  172. package/dist/_shared/table-GqTKCC8F.cjs.map +1 -0
  173. package/dist/_shared/textarea-C0iZwWdD.js +118 -0
  174. package/dist/_shared/textarea-C0iZwWdD.js.map +1 -0
  175. package/dist/_shared/textarea-bHFAtwYd.cjs +2 -0
  176. package/dist/_shared/textarea-bHFAtwYd.cjs.map +1 -0
  177. package/dist/_shared/typography-5bLhAYaK.js +201 -0
  178. package/dist/_shared/typography-5bLhAYaK.js.map +1 -0
  179. package/dist/_shared/typography-CWEobAJV.cjs +2 -0
  180. package/dist/_shared/typography-CWEobAJV.cjs.map +1 -0
  181. package/dist/_shared/ui-provider-CrsJ_dGn.cjs +2 -0
  182. package/dist/_shared/ui-provider-CrsJ_dGn.cjs.map +1 -0
  183. package/dist/_shared/ui-provider-Dz2qXgZQ.js +89 -0
  184. package/dist/_shared/ui-provider-Dz2qXgZQ.js.map +1 -0
  185. package/dist/_shared/workspace-5UId04M9.js +357 -0
  186. package/dist/_shared/workspace-5UId04M9.js.map +1 -0
  187. package/dist/_shared/workspace-BMws_rFf.cjs +2 -0
  188. package/dist/_shared/workspace-BMws_rFf.cjs.map +1 -0
  189. package/dist/components/base/accordion/index.cjs +1 -1
  190. package/dist/components/base/accordion/index.js +1 -1
  191. package/dist/components/base/badge/index.cjs +1 -1
  192. package/dist/components/base/badge/index.js +1 -1
  193. package/dist/components/base/buttons/button.d.ts.map +1 -1
  194. package/dist/components/base/buttons/index.cjs +1 -1
  195. package/dist/components/base/buttons/index.js +2 -2
  196. package/dist/components/base/buttons/tooltip-button.d.ts.map +1 -1
  197. package/dist/components/base/cards/index.cjs +1 -1
  198. package/dist/components/base/cards/index.js +2 -2
  199. package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
  200. package/dist/components/base/cards/smart-card.d.ts.map +1 -1
  201. package/dist/components/base/cards/smart-card.types.d.ts +7 -3
  202. package/dist/components/base/cards/smart-card.types.d.ts.map +1 -1
  203. package/dist/components/base/carousel/index.cjs +1 -1
  204. package/dist/components/base/carousel/index.js +1 -1
  205. package/dist/components/base/combobox/index.cjs +1 -1
  206. package/dist/components/base/combobox/index.js +1 -1
  207. package/dist/components/base/command/index.cjs +1 -1
  208. package/dist/components/base/command/index.js +1 -1
  209. package/dist/components/base/copyable/index.cjs +1 -1
  210. package/dist/components/base/copyable/index.js +1 -1
  211. package/dist/components/base/currency/index.cjs +1 -1
  212. package/dist/components/base/currency/index.js +1 -1
  213. package/dist/components/base/date-pickers/index.cjs +1 -1
  214. package/dist/components/base/date-pickers/index.js +2 -2
  215. package/dist/components/base/display/chart.cjs +1 -1
  216. package/dist/components/base/display/chart.js +1 -1
  217. package/dist/components/base/display/index.cjs +1 -1
  218. package/dist/components/base/display/index.js +5 -5
  219. package/dist/components/base/display/skeleton.d.ts +52 -1
  220. package/dist/components/base/display/skeleton.d.ts.map +1 -1
  221. package/dist/components/base/event-calendar/index.cjs +1 -1
  222. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  223. package/dist/components/base/event-calendar/index.js +7 -7
  224. package/dist/components/base/event-calendar/index.js.map +1 -1
  225. package/dist/components/base/forms/fields/file-upload.d.ts.map +1 -1
  226. package/dist/components/base/forms/index.cjs +1 -1
  227. package/dist/components/base/forms/index.js +5 -5
  228. package/dist/components/base/item/index.cjs +1 -1
  229. package/dist/components/base/item/index.js +1 -1
  230. package/dist/components/base/item/item.d.ts.map +1 -1
  231. package/dist/components/base/item/item.types.d.ts +3 -0
  232. package/dist/components/base/item/item.types.d.ts.map +1 -1
  233. package/dist/components/base/map/index.cjs +1 -1
  234. package/dist/components/base/map/index.js +2 -2
  235. package/dist/components/base/navigation/index.cjs +1 -1
  236. package/dist/components/base/navigation/index.js +2 -2
  237. package/dist/components/base/popover-menu/index.cjs +1 -1
  238. package/dist/components/base/popover-menu/index.js +1 -1
  239. package/dist/components/base/spinner/index.cjs +1 -1
  240. package/dist/components/base/spinner/index.js +1 -1
  241. package/dist/components/base/table/index.cjs +1 -1
  242. package/dist/components/base/table/index.js +1 -1
  243. package/dist/components/base/table/table-header.d.ts.map +1 -1
  244. package/dist/components/base/toaster/index.cjs +1 -1
  245. package/dist/components/base/toaster/index.cjs.map +1 -1
  246. package/dist/components/base/toaster/index.js +82 -23
  247. package/dist/components/base/toaster/index.js.map +1 -1
  248. package/dist/components/base/toaster/toaster.d.ts +1 -1
  249. package/dist/components/base/toaster/toaster.d.ts.map +1 -1
  250. package/dist/components/composed/admin/api-key-list/api-key-list.d.ts.map +1 -1
  251. package/dist/components/composed/admin/index.cjs +1 -1
  252. package/dist/components/composed/admin/index.cjs.map +1 -1
  253. package/dist/components/composed/admin/index.js +69 -69
  254. package/dist/components/composed/admin/index.js.map +1 -1
  255. package/dist/components/composed/ai/index.cjs +1 -1
  256. package/dist/components/composed/ai/index.cjs.map +1 -1
  257. package/dist/components/composed/ai/index.js +25 -25
  258. package/dist/components/composed/ai/index.js.map +1 -1
  259. package/dist/components/composed/analytics/index.cjs +1 -1
  260. package/dist/components/composed/analytics/index.cjs.map +1 -1
  261. package/dist/components/composed/analytics/index.js +33 -33
  262. package/dist/components/composed/analytics/index.js.map +1 -1
  263. package/dist/components/composed/cards/index.cjs +1 -1
  264. package/dist/components/composed/cards/index.cjs.map +1 -1
  265. package/dist/components/composed/cards/index.js +15 -15
  266. package/dist/components/composed/cards/index.js.map +1 -1
  267. package/dist/components/composed/commerce/index.cjs +1 -1
  268. package/dist/components/composed/commerce/index.cjs.map +1 -1
  269. package/dist/components/composed/commerce/index.js +28 -28
  270. package/dist/components/composed/commerce/index.js.map +1 -1
  271. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  272. package/dist/components/composed/dark-surfaces/index.js +4 -4
  273. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-dashboard.d.ts.map +1 -1
  274. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-financial.d.ts.map +1 -1
  275. package/dist/components/composed/data-display/dense-info-card/partials/dense-info-score.d.ts.map +1 -1
  276. package/dist/components/composed/data-display/index.cjs +1 -1
  277. package/dist/components/composed/data-display/index.js +1 -1
  278. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  279. package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -1
  280. package/dist/components/composed/navigation/index.cjs +1 -1
  281. package/dist/components/composed/navigation/index.cjs.map +1 -1
  282. package/dist/components/composed/navigation/index.js +15 -15
  283. package/dist/components/composed/navigation/index.js.map +1 -1
  284. package/dist/components/composed/onboarding/index.cjs +1 -1
  285. package/dist/components/composed/onboarding/index.js +3 -3
  286. package/dist/components/composed/timelines/index.cjs +1 -1
  287. package/dist/components/composed/timelines/index.cjs.map +1 -1
  288. package/dist/components/composed/timelines/index.js +10 -10
  289. package/dist/components/composed/timelines/index.js.map +1 -1
  290. package/dist/components/features/activities/index.cjs +1 -1
  291. package/dist/components/features/activities/index.cjs.map +1 -1
  292. package/dist/components/features/activities/index.js +10 -10
  293. package/dist/components/features/activities/index.js.map +1 -1
  294. package/dist/components/features/ai-chat/index.cjs +2 -2
  295. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  296. package/dist/components/features/ai-chat/index.js +8 -8
  297. package/dist/components/features/ai-chat/index.js.map +1 -1
  298. package/dist/components/features/card/index.cjs +1 -1
  299. package/dist/components/features/card/index.js +4 -4
  300. package/dist/components/features/comments/index.cjs +1 -1
  301. package/dist/components/features/comments/index.js +2 -2
  302. package/dist/components/features/data-view/index.cjs +1 -1
  303. package/dist/components/features/data-view/index.cjs.map +1 -1
  304. package/dist/components/features/data-view/index.js +3 -3
  305. package/dist/components/features/data-view/index.js.map +1 -1
  306. package/dist/components/features/event-log/index.cjs +1 -1
  307. package/dist/components/features/event-log/index.js +5 -5
  308. package/dist/components/features/filters/index.cjs +1 -1
  309. package/dist/components/features/filters/index.cjs.map +1 -1
  310. package/dist/components/features/filters/index.js +194 -194
  311. package/dist/components/features/filters/index.js.map +1 -1
  312. package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -1
  313. package/dist/components/features/global-search/index.cjs +1 -1
  314. package/dist/components/features/global-search/index.cjs.map +1 -1
  315. package/dist/components/features/global-search/index.js +14 -14
  316. package/dist/components/features/global-search/index.js.map +1 -1
  317. package/dist/components/features/kanban/index.cjs +1 -1
  318. package/dist/components/features/kanban/index.js +3 -3
  319. package/dist/components/features/media-library/index.cjs +1 -1
  320. package/dist/components/features/media-library/index.cjs.map +1 -1
  321. package/dist/components/features/media-library/index.js +25 -25
  322. package/dist/components/features/media-library/index.js.map +1 -1
  323. package/dist/components/features/mentions/index.cjs +1 -1
  324. package/dist/components/features/mentions/index.js +1 -1
  325. package/dist/components/features/overlays/index.cjs +1 -1
  326. package/dist/components/features/overlays/index.js +1 -1
  327. package/dist/components/features/products/index.cjs +1 -1
  328. package/dist/components/features/products/index.cjs.map +1 -1
  329. package/dist/components/features/products/index.js +14 -14
  330. package/dist/components/features/products/index.js.map +1 -1
  331. package/dist/components/features/resource/index.cjs +1 -1
  332. package/dist/components/features/resource/index.cjs.map +1 -1
  333. package/dist/components/features/resource/index.js +6 -6
  334. package/dist/components/features/resource/index.js.map +1 -1
  335. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  336. package/dist/components/features/rich-text-editor/index.js +1 -1
  337. package/dist/components/features/schema-form/index.cjs +1 -1
  338. package/dist/components/features/schema-form/index.js +8 -8
  339. package/dist/components/features/suggestions/index.cjs +1 -1
  340. package/dist/components/features/suggestions/index.js +1 -1
  341. package/dist/components/features/sync/index.cjs +1 -1
  342. package/dist/components/features/sync/index.js +2 -2
  343. package/dist/components/layout/auth/index.cjs +1 -1
  344. package/dist/components/layout/auth/index.js +1 -1
  345. package/dist/components/layout/header/index.cjs +1 -1
  346. package/dist/components/layout/header/index.js +1 -1
  347. package/dist/components/layout/hooks/index.cjs +1 -1
  348. package/dist/components/layout/hooks/index.js +1 -1
  349. package/dist/components/layout/index.cjs +1 -1
  350. package/dist/components/layout/index.js +7 -7
  351. package/dist/components/layout/page/index.cjs +1 -1
  352. package/dist/components/layout/page/index.js +1 -1
  353. package/dist/components/layout/page/page.types.d.ts +5 -0
  354. package/dist/components/layout/page/page.types.d.ts.map +1 -1
  355. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  356. package/dist/components/layout/page/partials/page-header.d.ts.map +1 -1
  357. package/dist/components/layout/settings/index.cjs +1 -1
  358. package/dist/components/layout/settings/index.js +1 -1
  359. package/dist/components/layout/sidebar/index.cjs +1 -1
  360. package/dist/components/layout/sidebar/index.js +2 -2
  361. package/dist/components/layout/workspace/index.cjs +1 -1
  362. package/dist/components/layout/workspace/index.js +1 -1
  363. package/dist/components/typography/index.cjs +1 -1
  364. package/dist/components/typography/index.js +1 -1
  365. package/dist/index.cjs +1 -1
  366. package/dist/index.js +1 -1
  367. package/dist/lib/ui-provider/defaults.d.ts.map +1 -1
  368. package/dist/lib/ui-provider/index.cjs +1 -1
  369. package/dist/lib/ui-provider/index.d.ts +1 -1
  370. package/dist/lib/ui-provider/index.d.ts.map +1 -1
  371. package/dist/lib/ui-provider/index.js +1 -1
  372. package/dist/lib/ui-provider/types.d.ts +14 -0
  373. package/dist/lib/ui-provider/types.d.ts.map +1 -1
  374. package/dist/services/actions/index.cjs +1 -1
  375. package/dist/services/actions/index.js +1 -1
  376. package/dist/showcase/assets/AreaChart-oKO7Ng_P.js +6 -0
  377. package/dist/showcase/assets/CompositeItem-CK7jBYU8.js +1 -0
  378. package/dist/showcase/assets/CompositeRoot-_AuToqhT.js +1 -0
  379. package/dist/showcase/assets/DialogTrigger-C44ZZXQ9.js +1 -0
  380. package/dist/showcase/assets/LabelableContext-DLVZlnur.js +1 -0
  381. package/dist/showcase/assets/PreviewLayout-Oik7TDHN.js +1 -0
  382. package/dist/showcase/assets/RadioGroup-DeYb8CGE.js +1 -0
  383. package/dist/showcase/assets/ScrollAreaCorner-BZlE_Bil.js +1 -0
  384. package/dist/showcase/assets/Separator-uiIktHzk.js +1 -0
  385. package/dist/showcase/assets/ToolbarRootContext-CEzj5dKk.js +1 -0
  386. package/dist/showcase/assets/accordion-B_wg_YOp.js +171 -0
  387. package/dist/showcase/assets/accordion-variants-O6U7E38x.js +1 -0
  388. package/dist/showcase/assets/action-menu-D_wGvb_o.js +1 -0
  389. package/dist/showcase/assets/actions-u4Fl4zm1.js +310 -0
  390. package/dist/showcase/assets/activities-C6iITHzB.js +500 -0
  391. package/dist/showcase/assets/activities-feed-card-OpYs16UV.js +1 -0
  392. package/dist/showcase/assets/admin-Bq15E5Wd.js +140 -0
  393. package/dist/showcase/assets/ai-DcUzGTlb.js +207 -0
  394. package/dist/showcase/assets/ai-artifact-BUAu1_jV.js +2 -0
  395. package/dist/showcase/assets/ai-chat-C6OWWBqh.js +568 -0
  396. package/dist/showcase/assets/ai-elements-CCe4Aqj_.js +387 -0
  397. package/dist/showcase/assets/ai-tool-call-B_NF1ePn.js +1 -0
  398. package/dist/showcase/assets/alert-B4VWkFPE.js +1 -0
  399. package/dist/showcase/assets/alert-BDIqciKo.js +62 -0
  400. package/dist/showcase/assets/alert-jvCEGWe6.js +93 -0
  401. package/dist/showcase/assets/api-key-list-BH8mde9A.js +1 -0
  402. package/dist/showcase/assets/api-key-list-CA6O3hsc.js +73 -0
  403. package/dist/showcase/assets/app-sidebar-DsMTwSAB.js +1 -0
  404. package/dist/showcase/assets/arrow-down-BzPC0rON.js +1 -0
  405. package/dist/showcase/assets/arrow-left-DNehZvF-.js +1 -0
  406. package/dist/showcase/assets/arrow-right-CKIgWncF.js +1 -0
  407. package/dist/showcase/assets/arrow-up-YjujZi8v.js +1 -0
  408. package/dist/showcase/assets/arrow-up-right-KnVxFmw9.js +1 -0
  409. package/dist/showcase/assets/avatar-BBLri7tX.js +57 -0
  410. package/dist/showcase/assets/avatar-BeFx8JQd.js +1 -0
  411. package/dist/showcase/assets/avatar-CFWUZzaF.js +67 -0
  412. package/dist/showcase/assets/avatar-D6exHRSK.js +1 -0
  413. package/dist/showcase/assets/badge-check-BfY3RIjR.js +1 -0
  414. package/dist/showcase/assets/badge-jGj2HQsg.js +31 -0
  415. package/dist/showcase/assets/bell-CTDSIOv8.js +1 -0
  416. package/dist/showcase/assets/boolean-indicator-C1u7OFcR.js +1 -0
  417. package/dist/showcase/assets/bot-D-iqtYiQ.js +1 -0
  418. package/dist/showcase/assets/box-DxjjLEh2.js +1 -0
  419. package/dist/showcase/assets/braces-B6XLlZwJ.js +1 -0
  420. package/dist/showcase/assets/brain-BdNpswBH.js +1 -0
  421. package/dist/showcase/assets/brand-C6srYuIa.js +36 -0
  422. package/dist/showcase/assets/breadcrumb-BaeV7C4t.js +52 -0
  423. package/dist/showcase/assets/breadcrumb-jKu4EUFo.js +1 -0
  424. package/dist/showcase/assets/breadcrumbs-D7vYX_5y.js +1 -0
  425. package/dist/showcase/assets/briefcase-cs9wyoxL.js +1 -0
  426. package/dist/showcase/assets/building-2-rcMEYcbf.js +1 -0
  427. package/dist/showcase/assets/button-group-D1oXfasP.js +1 -0
  428. package/dist/showcase/assets/button-oBRwhAhs.js +44 -0
  429. package/dist/showcase/assets/buttons-D_SDu9w3.js +272 -0
  430. package/dist/showcase/assets/calendar-CGTiVckW.js +1 -0
  431. package/dist/showcase/assets/calendar-ChLkVME0.js +16 -0
  432. package/dist/showcase/assets/calendar-CjMPvWfI.js +1 -0
  433. package/dist/showcase/assets/calendar-days-CNom8Y38.js +1 -0
  434. package/dist/showcase/assets/camera-D0rjOOcs.js +1 -0
  435. package/dist/showcase/assets/card-CYz4UxYz.js +1 -0
  436. package/dist/showcase/assets/card-D9updr3B.js +188 -0
  437. package/dist/showcase/assets/card-primitives-BQ0hSEWX.js +1 -0
  438. package/dist/showcase/assets/card-radio-group-CrNG04Bl.js +1 -0
  439. package/dist/showcase/assets/cards-D4Lw-AI6.js +354 -0
  440. package/dist/showcase/assets/carousel-C6Mmapzw.js +449 -0
  441. package/dist/showcase/assets/cell-renderers-BF80Z3jW.js +1 -0
  442. package/dist/showcase/assets/chart-BHgMfUB5.js +358 -0
  443. package/dist/showcase/assets/chart-column-CE_VhlUz.js +1 -0
  444. package/dist/showcase/assets/checkbox-CDLT09vU.js +1 -0
  445. package/dist/showcase/assets/checkbox-Dj24Tegr.js +1 -0
  446. package/dist/showcase/assets/chevron-down-1GeJ4hOO.js +1 -0
  447. package/dist/showcase/assets/chevron-left-wqlWv2Qy.js +1 -0
  448. package/dist/showcase/assets/chevron-up-CZAm-2rZ.js +1 -0
  449. package/dist/showcase/assets/chevrons-up-down-DgysGYWR.js +1 -0
  450. package/dist/showcase/assets/circle-C9Ooo8Lv.js +1 -0
  451. package/dist/showcase/assets/circle-alert-C6XBfkf2.js +1 -0
  452. package/dist/showcase/assets/circle-check-DvCYlVmL.js +1 -0
  453. package/dist/showcase/assets/circle-check-big-C8o9clAE.js +1 -0
  454. package/dist/showcase/assets/circle-dot-BoYf3vOR.js +1 -0
  455. package/dist/showcase/assets/circle-question-mark-DYPX0qe9.js +1 -0
  456. package/dist/showcase/assets/circle-x-GosnT0l7.js +1 -0
  457. package/dist/showcase/assets/clock-3-DklFhayq.js +1 -0
  458. package/dist/showcase/assets/clock-BvwTkk1w.js +1 -0
  459. package/dist/showcase/assets/code-xml-AGOwtN8Z.js +1 -0
  460. package/dist/showcase/assets/collapsible-CBkbr3ho.js +1 -0
  461. package/dist/showcase/assets/collapsible-CmY1SA28.js +27 -0
  462. package/dist/showcase/assets/collapsible-DfDnQ_t_.js +1 -0
  463. package/dist/showcase/assets/combobox-BsZQo7hF.js +685 -0
  464. package/dist/showcase/assets/command-B0Q84gg6.js +1 -0
  465. package/dist/showcase/assets/command-BtADdA65.js +1 -0
  466. package/dist/showcase/assets/comment-composer-BmBnkba9.js +1 -0
  467. package/dist/showcase/assets/comment-item-y5mTfSmU.js +1 -0
  468. package/dist/showcase/assets/comments-BuYiGPxI.js +357 -0
  469. package/dist/showcase/assets/commerce-21Ef_rsW.js +267 -0
  470. package/dist/showcase/assets/composite-fKT6fZFs.js +1 -0
  471. package/dist/showcase/assets/conditional-rendering-DsTG0sOE.js +1 -0
  472. package/dist/showcase/assets/contact-card-S8koA9Sr.js +65 -0
  473. package/dist/showcase/assets/content-container-B4gW5fmA.js +1 -0
  474. package/dist/showcase/assets/copyable-D2xL2rMm.js +96 -0
  475. package/dist/showcase/assets/copyable-gLrmPayI.js +1 -0
  476. package/dist/showcase/assets/course-card-B8eEvF7a.js +77 -0
  477. package/dist/showcase/assets/cpu-Cp1On3tr.js +1 -0
  478. package/dist/showcase/assets/credit-card-QbZMZB90.js +1 -0
  479. package/dist/showcase/assets/css-variables-BXICo9fV.js +1205 -0
  480. package/dist/showcase/assets/currency-D2MSLjLt.js +149 -0
  481. package/dist/showcase/assets/dark-surfaces-CJsxuvQU.js +90 -0
  482. package/dist/showcase/assets/data-view-syhKhdz9.js +124 -0
  483. package/dist/showcase/assets/data-view-znnAeb6b.js +4 -0
  484. package/dist/showcase/assets/database-isLkCvDd.js +1 -0
  485. package/dist/showcase/assets/date-block-BDn9lGVM.js +1 -0
  486. package/dist/showcase/assets/date-block-CqRL1xfo.js +1 -0
  487. package/dist/showcase/assets/date-picker-DNcmSgQk.js +1 -0
  488. package/dist/showcase/assets/date-pickers-3lQUDDS7.js +73 -0
  489. package/dist/showcase/assets/dense-info-CfvqiIpM.js +106 -0
  490. package/dist/showcase/assets/design-system-consistency-C3yRhKwF.js +264 -0
  491. package/dist/showcase/assets/dialog-DiAkrPHO.js +1 -0
  492. package/dist/showcase/assets/dialog-feUFM03m.js +1 -0
  493. package/dist/showcase/assets/dialog-ruVOqJnB.js +1 -0
  494. package/dist/showcase/assets/display-utilities-SPJxlrkp.js +4 -0
  495. package/dist/showcase/assets/display-utilities.examples-ByRydMl0.js +302 -0
  496. package/dist/showcase/assets/dist-C9DVZddl.js +45 -0
  497. package/dist/showcase/assets/dist-DNARKM_B.js +1 -0
  498. package/dist/showcase/assets/dollar-sign-CUDuWyun.js +1 -0
  499. package/dist/showcase/assets/download-CIbh9VUU.js +1 -0
  500. package/dist/showcase/assets/dropdown-menu-MoIAG0ES.js +1 -0
  501. package/dist/showcase/assets/dropzone-D0kHIUuh.js +1 -0
  502. package/dist/showcase/assets/earth-BpNTeF25.js +1 -0
  503. package/dist/showcase/assets/ellipsis-B9w0cuoH.js +1 -0
  504. package/dist/showcase/assets/ellipsis-vertical-DHbOsjTF.js +1 -0
  505. package/dist/showcase/assets/empty-DvYVgcNF.js +1 -0
  506. package/dist/showcase/assets/empty-item-oFM5kPCp.js +49 -0
  507. package/dist/showcase/assets/empty-state-DTq86muv.js +1 -0
  508. package/dist/showcase/assets/empty-state-De7XCht-.js +190 -0
  509. package/dist/showcase/assets/enhanced-activities--XHjx99M.js +357 -0
  510. package/dist/showcase/assets/enhanced-combobox-CX_mTkei.js +1 -0
  511. package/dist/showcase/assets/esm-XXqBjGGF.js +2 -0
  512. package/dist/showcase/assets/event-calendar-zTiCWOF5.js +138 -0
  513. package/dist/showcase/assets/event-log-C_zSlY6y.js +330 -0
  514. package/dist/showcase/assets/example-Cv05rz75.js +1 -0
  515. package/dist/showcase/assets/external-link-DaR-AMyf.js +1 -0
  516. package/dist/showcase/assets/eye-CDSbB0kZ.js +1 -0
  517. package/dist/showcase/assets/feature-announcement-DJ26ZDVB.js +34 -0
  518. package/dist/showcase/assets/file-DPSK5cGC.js +1 -0
  519. package/dist/showcase/assets/file-text-BBWpAppG.js +1 -0
  520. package/dist/showcase/assets/filter-layout-CZRGcd6Z.js +1 -0
  521. package/dist/showcase/assets/filters-Bn7hYUeq.js +139 -0
  522. package/dist/showcase/assets/flag-BRs-GTCx.js +1 -0
  523. package/dist/showcase/assets/folder-open-DnFjlB3X.js +1 -0
  524. package/dist/showcase/assets/form-field-SW-Yp7H7.js +1 -0
  525. package/dist/showcase/assets/format-Bki5m7M3.js +1 -0
  526. package/dist/showcase/assets/forms-CAUL2gGq.js +915 -0
  527. package/dist/showcase/assets/funnel-D6g2Suhd.js +1 -0
  528. package/dist/showcase/assets/generic-CU6JNqKO.js +1 -0
  529. package/dist/showcase/assets/getPseudoElementBounds-yqDwWA_y.js +1 -0
  530. package/dist/showcase/assets/gift-B2Qp9Vqt.js +1 -0
  531. package/dist/showcase/assets/giftcard-cards-Dk0DYoN2.js +85 -0
  532. package/dist/showcase/assets/git-branch-CPtvCNGc.js +1 -0
  533. package/dist/showcase/assets/global-search-D1ow01VA.js +1 -0
  534. package/dist/showcase/assets/global-search-DQR2AgDO.js +215 -0
  535. package/dist/showcase/assets/globe-BiZgUZFZ.js +1 -0
  536. package/dist/showcase/assets/gradient-card-D5isLy3_.js +58 -0
  537. package/dist/showcase/assets/hash-NJ5ohGOa.js +1 -0
  538. package/dist/showcase/assets/header-Df9uYSSH.js +1 -0
  539. package/dist/showcase/assets/header-notifications-sPR5NuON.js +1 -0
  540. package/dist/showcase/assets/heart-C4t7PVKW.js +1 -0
  541. package/dist/showcase/assets/hooks-0TKg0ZAK.js +220 -0
  542. package/dist/showcase/assets/house-CuLXFtjd.js +1 -0
  543. package/dist/showcase/assets/icon-badge-Cr6DD-_7.js +1 -0
  544. package/dist/showcase/assets/icon-badge-DMdMSSRL.js +37 -0
  545. package/dist/showcase/assets/image-DYjJaO0i.js +1 -0
  546. package/dist/showcase/assets/inbox-DGF8FgvV.js +1 -0
  547. package/dist/showcase/assets/index-ATou_nFA.js +10 -0
  548. package/dist/showcase/assets/index-C8U-r6l7.css +2 -0
  549. package/dist/showcase/assets/inertValue-CBi0sj8C.js +1 -0
  550. package/dist/showcase/assets/info-DLaTRPUT.js +1 -0
  551. package/dist/showcase/assets/inline-stat-DGpunTNF.js +1 -0
  552. package/dist/showcase/assets/inline-stat-rUaaOSmR.js +15 -0
  553. package/dist/showcase/assets/input-Cmrgo51H.js +1 -0
  554. package/dist/showcase/assets/input-CnmnWnGb.js +1 -0
  555. package/dist/showcase/assets/input-group-BwujFvXM.js +1 -0
  556. package/dist/showcase/assets/input-group-DvXgZtra.js +47 -0
  557. package/dist/showcase/assets/inputs-CjzW_R8z.js +155 -0
  558. package/dist/showcase/assets/installation-2dW-rmF2.js +134 -0
  559. package/dist/showcase/assets/invoice-header-DeWxMKCe.js +36 -0
  560. package/dist/showcase/assets/invoice-items-Dxb95w0e.js +36 -0
  561. package/dist/showcase/assets/invoice-mini-EMzCkmR7.js +14 -0
  562. package/dist/showcase/assets/invoice-table-ClWJaclJ.js +30 -0
  563. package/dist/showcase/assets/isSameDay-BNPzVySj.js +1 -0
  564. package/dist/showcase/assets/isToday-D6n7oLej.js +1 -0
  565. package/dist/showcase/assets/italic-B8w3dpYw.js +1 -0
  566. package/dist/showcase/assets/item-B8_dwOlT.js +1 -0
  567. package/dist/showcase/assets/item-Baq-Mmy2.js +1 -0
  568. package/dist/showcase/assets/item-BtMuqGwy.js +140 -0
  569. package/dist/showcase/assets/kanban-B-QxvKMg.js +188 -0
  570. package/dist/showcase/assets/key-round-CrBIyzIa.js +1 -0
  571. package/dist/showcase/assets/label-VWe_nbHh.js +1 -0
  572. package/dist/showcase/assets/languages-N0uGt5nC.js +1 -0
  573. package/dist/showcase/assets/layers-DEZvT5cX.js +1 -0
  574. package/dist/showcase/assets/layout-app-shell-T9UqKX2o.js +608 -0
  575. package/dist/showcase/assets/layout-auth-IVC4DuU3.js +790 -0
  576. package/dist/showcase/assets/layout-containers-naBpuH05.js +101 -0
  577. package/dist/showcase/assets/layout-header-9i_7ygKU.js +203 -0
  578. package/dist/showcase/assets/layout-page-CrEUiJpW.js +315 -0
  579. package/dist/showcase/assets/layout-primitives-DPrVHpu3.js +34 -0
  580. package/dist/showcase/assets/layout-sidebar-D7z6-kPu.js +224 -0
  581. package/dist/showcase/assets/layout-users-Cov9D84d.js +117 -0
  582. package/dist/showcase/assets/layout-workspace-Czlmi8gY.js +191 -0
  583. package/dist/showcase/assets/lib-DNMH46Rn.js +1 -0
  584. package/dist/showcase/assets/list-checks-DygDRIGi.js +1 -0
  585. package/dist/showcase/assets/lock-DqEahakB.js +1 -0
  586. package/dist/showcase/assets/lock-keyhole-CETEK3R0.js +1 -0
  587. package/dist/showcase/assets/mail-LKhBlrEc.js +1 -0
  588. package/dist/showcase/assets/mail-check-BOTjWQJf.js +1 -0
  589. package/dist/showcase/assets/map-0vJT2r8C.js +124 -0
  590. package/dist/showcase/assets/map-pin-D0qrpDJI.js +1 -0
  591. package/dist/showcase/assets/media-library-Bp99WaS9.js +699 -0
  592. package/dist/showcase/assets/mention-inline-suggestions-mlV7LRvD.js +1 -0
  593. package/dist/showcase/assets/mentions-Cmd1zxOR.js +138 -0
  594. package/dist/showcase/assets/menus-CtjFPoDr.js +171 -0
  595. package/dist/showcase/assets/message-square-BXyvikcZ.js +1 -0
  596. package/dist/showcase/assets/metadata-list-DLUBcy7E.js +286 -0
  597. package/dist/showcase/assets/metadata-list-F3bWXtZB.js +1 -0
  598. package/dist/showcase/assets/metric-CXPRptlh.js +1 -0
  599. package/dist/showcase/assets/metric-bar-BY25WVZ0.js +1 -0
  600. package/dist/showcase/assets/metric-grid-DQtf9y6E.js +1 -0
  601. package/dist/showcase/assets/metric-trend-chip-CXHpkj3U.js +1 -0
  602. package/dist/showcase/assets/metrics-analytics-bar-BIuwiVrn.js +44 -0
  603. package/dist/showcase/assets/metrics-analytics-cards-yx5lMGQf.js +50 -0
  604. package/dist/showcase/assets/metrics-comparison-BC_7jLXf.js +76 -0
  605. package/dist/showcase/assets/metrics-heatmap-C_nhCljz.js +27 -0
  606. package/dist/showcase/assets/metrics-inline-badge-3oySQnoR.js +17 -0
  607. package/dist/showcase/assets/metrics-kpi-row-zS4-oiTO.js +31 -0
  608. package/dist/showcase/assets/metrics-micro-grid-UJkA2LNR.js +42 -0
  609. package/dist/showcase/assets/metrics-overview-DQFr22ol.js +192 -0
  610. package/dist/showcase/assets/metrics-stat-cards-DnBirxKV.js +54 -0
  611. package/dist/showcase/assets/minus-BOVQEx6C.js +1 -0
  612. package/dist/showcase/assets/money-display-DV7xlrNV.js +1 -0
  613. package/dist/showcase/assets/money-display-DxnM5--7.js +1 -0
  614. package/dist/showcase/assets/month-year-picker-BzRXCrQ7.js +1 -0
  615. package/dist/showcase/assets/navigation-ChJKLv4Y.js +90 -0
  616. package/dist/showcase/assets/navigation-D7VJsKrP.js +231 -0
  617. package/dist/showcase/assets/navigation-extras-BVc1xQuB.js +43 -0
  618. package/dist/showcase/assets/notification-banner-1ivcmPLe.js +1 -0
  619. package/dist/showcase/assets/onboarding-checklist-CbARgwpX.js +119 -0
  620. package/dist/showcase/assets/overflow-tab-bar-DlqMmyTx.js +1 -0
  621. package/dist/showcase/assets/overlays-DkWO50b8.js +159 -0
  622. package/dist/showcase/assets/overlays-KKZpxWjt.js +408 -0
  623. package/dist/showcase/assets/overview-BjQe-YZE.js +184 -0
  624. package/dist/showcase/assets/package-DhQRoFDo.js +1 -0
  625. package/dist/showcase/assets/package-check-CBgGiccG.js +1 -0
  626. package/dist/showcase/assets/page-BWTmyV5J.js +1 -0
  627. package/dist/showcase/assets/page-action-button-DV-YYRA4.js +1 -0
  628. package/dist/showcase/assets/page-header-Bmg4NU_P.js +1 -0
  629. package/dist/showcase/assets/pagination-ByQ_OXRU.js +1 -0
  630. package/dist/showcase/assets/pagination-Db5CuoBb.js +42 -0
  631. package/dist/showcase/assets/paperclip-BQNPUzG_.js +1 -0
  632. package/dist/showcase/assets/password-input-CPvjzM1f.js +1 -0
  633. package/dist/showcase/assets/pencil-DuBakHme.js +1 -0
  634. package/dist/showcase/assets/phone-t94LTB1m.js +1 -0
  635. package/dist/showcase/assets/placeholder-pattern-BNou2ep-.js +1 -0
  636. package/dist/showcase/assets/plus-BRcp6JhT.js +1 -0
  637. package/dist/showcase/assets/popover-CVuJP03o.js +1 -0
  638. package/dist/showcase/assets/popover-D_P2gTn8.js +1 -0
  639. package/dist/showcase/assets/popover-menu-DGY5jEk4.js +1 -0
  640. package/dist/showcase/assets/products-8sUfDMPU.js +423 -0
  641. package/dist/showcase/assets/progress-BrMvIZIz.js +1 -0
  642. package/dist/showcase/assets/progress-CSXZAavT.js +18 -0
  643. package/dist/showcase/assets/progress-Dvqpf_O0.js +1 -0
  644. package/dist/showcase/assets/props-table-BAfz1Zc6.js +1 -0
  645. package/dist/showcase/assets/props.generated-CuVoOKYT.json +41746 -0
  646. package/dist/showcase/assets/qr-code-C-CaHJQ2.js +1 -0
  647. package/dist/showcase/assets/quote-Ci80eS0u.js +1 -0
  648. package/dist/showcase/assets/receipt-jvwbPuE3.js +1 -0
  649. package/dist/showcase/assets/receipt-text-CT0GiMQm.js +1 -0
  650. package/dist/showcase/assets/refinement-guide-BnCQ9-6f.js +189 -0
  651. package/dist/showcase/assets/refresh-cw-CXDARnCe.js +1 -0
  652. package/dist/showcase/assets/resolveValueLabel-DJanfUim.js +1 -0
  653. package/dist/showcase/assets/resource-Bir-z7ie.js +139 -0
  654. package/dist/showcase/assets/resource-D19qhfYP.js +1 -0
  655. package/dist/showcase/assets/resource-selector-card-BUbuu-QH.js +43 -0
  656. package/dist/showcase/assets/rich-text-editor-BCtz589M.js +124 -0
  657. package/dist/showcase/assets/rich-text-editor-uu9FmB8B.js +143 -0
  658. package/dist/showcase/assets/rotate-ccw-DEIVfiHA.js +1 -0
  659. package/dist/showcase/assets/route-B5vtDLsE.js +1 -0
  660. package/dist/showcase/assets/save-DQ4Up8ZB.js +1 -0
  661. package/dist/showcase/assets/schema-form-D7wbdl5u.js +327 -0
  662. package/dist/showcase/assets/scroll-area-B0QD6o1Y.js +32 -0
  663. package/dist/showcase/assets/scroll-area-BoZ1SrfI.js +1 -0
  664. package/dist/showcase/assets/section-BXsVHOsI.js +1 -0
  665. package/dist/showcase/assets/select-CW8SYsOY.js +1 -0
  666. package/dist/showcase/assets/select-DmRqLSoG.js +1 -0
  667. package/dist/showcase/assets/send-Dxs1-xSj.js +1 -0
  668. package/dist/showcase/assets/separator-BLOG_8oO.js +1 -0
  669. package/dist/showcase/assets/separator-DZC_uQU-.js +1 -0
  670. package/dist/showcase/assets/separator-OlLHRN7k.js +28 -0
  671. package/dist/showcase/assets/settings-2-BSpgytsy.js +1 -0
  672. package/dist/showcase/assets/settings-CCNP7XOu.js +1 -0
  673. package/dist/showcase/assets/sheet-DIfJjbgA.js +1 -0
  674. package/dist/showcase/assets/shield-D2gTWkwA.js +1 -0
  675. package/dist/showcase/assets/shield-alert-C-3oWpoe.js +1 -0
  676. package/dist/showcase/assets/shield-check-D11r1eJ8.js +1 -0
  677. package/dist/showcase/assets/shopping-bag-DAeaVQ5O.js +1 -0
  678. package/dist/showcase/assets/showcase-GdZcH6OR.js +132 -0
  679. package/dist/showcase/assets/sidebar-RBzHNuB7.js +1 -0
  680. package/dist/showcase/assets/sidebar.context-Dyw470Qp.js +1 -0
  681. package/dist/showcase/assets/skeleton-B7crngMw.js +1 -0
  682. package/dist/showcase/assets/skeleton-BwEVNdGJ.js +1 -0
  683. package/dist/showcase/assets/skeleton-DM73_ueB.js +1 -0
  684. package/dist/showcase/assets/skeleton-cHsWJOtO.js +29 -0
  685. package/dist/showcase/assets/slider-DRPnIs0S.js +1 -0
  686. package/dist/showcase/assets/smart-card-DER7dpD9.js +1 -0
  687. package/dist/showcase/assets/sonner-Go1YsPBH.js +22 -0
  688. package/dist/showcase/assets/sortable.esm-q6LdsxSr.js +5 -0
  689. package/dist/showcase/assets/sparkles-DqH40POl.js +1 -0
  690. package/dist/showcase/assets/spinner-C0YWWxyj.js +1 -0
  691. package/dist/showcase/assets/spinner-CpHNR13f.js +30 -0
  692. package/dist/showcase/assets/spinner-Dwvf24e9.js +49 -0
  693. package/dist/showcase/assets/square-pen-D-xHmIA0.js +1 -0
  694. package/dist/showcase/assets/stacked-avatars-C92NYKIa.js +1 -0
  695. package/dist/showcase/assets/star-dD4CAJ83.js +1 -0
  696. package/dist/showcase/assets/startOfDay-BXZshd4g.js +1 -0
  697. package/dist/showcase/assets/styles-BPJdkO_3.js +1 -0
  698. package/dist/showcase/assets/suggestions-CyhKme4Q.js +126 -0
  699. package/dist/showcase/assets/switch-C7DVTgQd.js +1 -0
  700. package/dist/showcase/assets/switch-LU6nljdS.js +1 -0
  701. package/dist/showcase/assets/sync-bERw1shm.js +124 -0
  702. package/dist/showcase/assets/table-BuIv4nqB.js +686 -0
  703. package/dist/showcase/assets/table-CDMDtBgJ.js +1 -0
  704. package/dist/showcase/assets/table-actions-DsK7d8Yb.js +1 -0
  705. package/dist/showcase/assets/tabs-BDryywGb.js +19 -0
  706. package/dist/showcase/assets/tabs-BNaZmM48.js +1 -0
  707. package/dist/showcase/assets/tags-input-CzE_5BJl.js +1 -0
  708. package/dist/showcase/assets/text-button-B1m5cpX_.js +1 -0
  709. package/dist/showcase/assets/text-link-CqjW10Ce.js +1 -0
  710. package/dist/showcase/assets/textarea-xJ3EE8R9.js +1 -0
  711. package/dist/showcase/assets/textarea-xOekToAG.js +1 -0
  712. package/dist/showcase/assets/throttle-alert-BH1HMiaI.js +1 -0
  713. package/dist/showcase/assets/timelines-DjWkuOz3.js +200 -0
  714. package/dist/showcase/assets/toggle-group-Css6pfUI.js +1 -0
  715. package/dist/showcase/assets/toggles-DhDrn3YH.js +71 -0
  716. package/dist/showcase/assets/toggles-group-e4xtKzkl.js +32 -0
  717. package/dist/showcase/assets/tooltip-DMvMUrGe.js +31 -0
  718. package/dist/showcase/assets/trash-2-zILxQmtX.js +1 -0
  719. package/dist/showcase/assets/trending-up-CRH278ig.js +1 -0
  720. package/dist/showcase/assets/truck-At9CEKg7.js +1 -0
  721. package/dist/showcase/assets/typography-B0ehvSV4.js +223 -0
  722. package/dist/showcase/assets/ui-badge-CyLWYf3f.js +28 -0
  723. package/dist/showcase/assets/ui-card-BPnLZmkJ.js +30 -0
  724. package/dist/showcase/assets/ui-table-C-zXhcOm.js +42 -0
  725. package/dist/showcase/assets/upload-tray-IyQJEM9n.js +138 -0
  726. package/dist/showcase/assets/use-layout-link-Cux4giQO.js +1 -0
  727. package/dist/showcase/assets/useAriaLabelledBy-Bo0rTGvc.js +1 -0
  728. package/dist/showcase/assets/useCollapsiblePanel-CzU-1LY3.js +1 -0
  729. package/dist/showcase/assets/useCompositeItem-CJFNnVql.js +1 -0
  730. package/dist/showcase/assets/useCompositeListItem-BAuO9hue.js +1 -0
  731. package/dist/showcase/assets/useLabelableId-HuACs9ba.js +1 -0
  732. package/dist/showcase/assets/useOpenInteractionType-MEUfJuxN.js +1 -0
  733. package/dist/showcase/assets/useRender-B-6DpRfj.js +1 -0
  734. package/dist/showcase/assets/useTriggerFocusGuards-B-mRyUJJ.js +1 -0
  735. package/dist/showcase/assets/useValueChanged-CVn_Rfso.js +1 -0
  736. package/dist/showcase/assets/user-eelwPGBI.js +1 -0
  737. package/dist/showcase/assets/user-plus-DhswMZvb.js +1 -0
  738. package/dist/showcase/assets/users-BVMmaveS.js +1 -0
  739. package/dist/showcase/assets/vendor-profile-FHaiInTe.js +37 -0
  740. package/dist/showcase/assets/video-C42fxAyj.js +1 -0
  741. package/dist/showcase/assets/visually-hidden-BwzlEinj.js +1 -0
  742. package/dist/showcase/assets/wrench-EKI7PaKp.js +1 -0
  743. package/dist/showcase/assets/x--LIqlhum.js +1 -0
  744. package/dist/showcase/assets/zap-C1fX30vt.js +1 -0
  745. package/dist/showcase/index.html +2 -2
  746. package/dist/style.css +1 -1
  747. package/package.json +1 -1
  748. package/src/css/tokens/foundation.css +20 -6
  749. package/src/css/tokens/primitives.css +1 -1
  750. package/src/css/tokens/states.css +3 -0
  751. package/dist/_shared/accordion-BRj4TDQx.js +0 -135
  752. package/dist/_shared/accordion-BRj4TDQx.js.map +0 -1
  753. package/dist/_shared/accordion-DvlDjk29.cjs +0 -2
  754. package/dist/_shared/accordion-DvlDjk29.cjs.map +0 -1
  755. package/dist/_shared/action-menu-BrHF4nss.cjs +0 -2
  756. package/dist/_shared/action-menu-BrHF4nss.cjs.map +0 -1
  757. package/dist/_shared/action-menu-Crn22LKo.js +0 -96
  758. package/dist/_shared/action-menu-Crn22LKo.js.map +0 -1
  759. package/dist/_shared/ai-artifact-BHgd3agA.js +0 -1099
  760. package/dist/_shared/ai-artifact-BHgd3agA.js.map +0 -1
  761. package/dist/_shared/ai-artifact-BRM5cvGv.cjs +0 -3
  762. package/dist/_shared/ai-artifact-BRM5cvGv.cjs.map +0 -1
  763. package/dist/_shared/alert-CMVVt2Br.js +0 -81
  764. package/dist/_shared/alert-CMVVt2Br.js.map +0 -1
  765. package/dist/_shared/alert-Dmhtbmpg.cjs +0 -2
  766. package/dist/_shared/alert-Dmhtbmpg.cjs.map +0 -1
  767. package/dist/_shared/auth-DZW6NkJx.cjs +0 -2
  768. package/dist/_shared/auth-DZW6NkJx.cjs.map +0 -1
  769. package/dist/_shared/auth-Dh790NI_.js +0 -643
  770. package/dist/_shared/auth-Dh790NI_.js.map +0 -1
  771. package/dist/_shared/badge-B8xGFpfM.cjs +0 -2
  772. package/dist/_shared/badge-B8xGFpfM.cjs.map +0 -1
  773. package/dist/_shared/badge-BYNwSWh5.js +0 -110
  774. package/dist/_shared/badge-BYNwSWh5.js.map +0 -1
  775. package/dist/_shared/button-BMiPFJIb.cjs +0 -2
  776. package/dist/_shared/button-BMiPFJIb.cjs.map +0 -1
  777. package/dist/_shared/button-vv59_uS_.js +0 -189
  778. package/dist/_shared/button-vv59_uS_.js.map +0 -1
  779. package/dist/_shared/buttons-CvqIMv3I.js +0 -137
  780. package/dist/_shared/buttons-CvqIMv3I.js.map +0 -1
  781. package/dist/_shared/buttons-tCkWktN3.cjs +0 -2
  782. package/dist/_shared/buttons-tCkWktN3.cjs.map +0 -1
  783. package/dist/_shared/card-radio-group-Bhe8gAbH.js +0 -150
  784. package/dist/_shared/card-radio-group-Bhe8gAbH.js.map +0 -1
  785. package/dist/_shared/card-radio-group-CdG1zr8M.cjs +0 -2
  786. package/dist/_shared/card-radio-group-CdG1zr8M.cjs.map +0 -1
  787. package/dist/_shared/cards-Cu6p1Brd.cjs +0 -2
  788. package/dist/_shared/cards-Cu6p1Brd.cjs.map +0 -1
  789. package/dist/_shared/cards-cQ9lL6zy.js +0 -354
  790. package/dist/_shared/cards-cQ9lL6zy.js.map +0 -1
  791. package/dist/_shared/combobox-BGYjyXeN.cjs +0 -2
  792. package/dist/_shared/combobox-BGYjyXeN.cjs.map +0 -1
  793. package/dist/_shared/combobox-DTwomOBt.js +0 -954
  794. package/dist/_shared/combobox-DTwomOBt.js.map +0 -1
  795. package/dist/_shared/command-ByedBajF.js +0 -39
  796. package/dist/_shared/command-ByedBajF.js.map +0 -1
  797. package/dist/_shared/command-EGR0nhGc.cjs +0 -2
  798. package/dist/_shared/command-EGR0nhGc.cjs.map +0 -1
  799. package/dist/_shared/comments-C97vL5km.js +0 -952
  800. package/dist/_shared/comments-C97vL5km.js.map +0 -1
  801. package/dist/_shared/comments-DBe6dP-d.cjs +0 -2
  802. package/dist/_shared/comments-DBe6dP-d.cjs.map +0 -1
  803. package/dist/_shared/copyable-BgFdERqs.js +0 -38
  804. package/dist/_shared/copyable-BgFdERqs.js.map +0 -1
  805. package/dist/_shared/copyable-Ce8rmE-V.cjs +0 -2
  806. package/dist/_shared/copyable-Ce8rmE-V.cjs.map +0 -1
  807. package/dist/_shared/data-display-DUWxoDKq.js +0 -1873
  808. package/dist/_shared/data-display-DUWxoDKq.js.map +0 -1
  809. package/dist/_shared/data-display-o-rbMuIA.cjs +0 -2
  810. package/dist/_shared/data-display-o-rbMuIA.cjs.map +0 -1
  811. package/dist/_shared/date-picker-Cxx9jllA.js +0 -1361
  812. package/dist/_shared/date-picker-Cxx9jllA.js.map +0 -1
  813. package/dist/_shared/date-picker-DE5A8yqN.cjs +0 -2
  814. package/dist/_shared/date-picker-DE5A8yqN.cjs.map +0 -1
  815. package/dist/_shared/date-pickers-Dex1Mfye.cjs +0 -2
  816. package/dist/_shared/date-pickers-Dex1Mfye.cjs.map +0 -1
  817. package/dist/_shared/date-pickers-m0dpDcqH.js +0 -329
  818. package/dist/_shared/date-pickers-m0dpDcqH.js.map +0 -1
  819. package/dist/_shared/display-Bro3Kufg.js +0 -986
  820. package/dist/_shared/display-Bro3Kufg.js.map +0 -1
  821. package/dist/_shared/display-CRQjSjgB.cjs +0 -2
  822. package/dist/_shared/display-CRQjSjgB.cjs.map +0 -1
  823. package/dist/_shared/forms-D-SNQmtB.cjs +0 -2
  824. package/dist/_shared/forms-D-SNQmtB.cjs.map +0 -1
  825. package/dist/_shared/forms-p7cfzJwf.js +0 -3533
  826. package/dist/_shared/forms-p7cfzJwf.js.map +0 -1
  827. package/dist/_shared/header-8C71wVRp.js +0 -447
  828. package/dist/_shared/header-8C71wVRp.js.map +0 -1
  829. package/dist/_shared/header-CYgFCnjZ.cjs +0 -2
  830. package/dist/_shared/header-CYgFCnjZ.cjs.map +0 -1
  831. package/dist/_shared/hooks-Ci1LFWRG.js +0 -95
  832. package/dist/_shared/hooks-Ci1LFWRG.js.map +0 -1
  833. package/dist/_shared/hooks-Cjl7LJpn.cjs +0 -2
  834. package/dist/_shared/hooks-Cjl7LJpn.cjs.map +0 -1
  835. package/dist/_shared/input-BgcP6x4C.js +0 -182
  836. package/dist/_shared/input-BgcP6x4C.js.map +0 -1
  837. package/dist/_shared/input-DV3g7Fm5.cjs +0 -2
  838. package/dist/_shared/input-DV3g7Fm5.cjs.map +0 -1
  839. package/dist/_shared/item-D7GTzvhf.js +0 -226
  840. package/dist/_shared/item-D7GTzvhf.js.map +0 -1
  841. package/dist/_shared/item-DTrnHpfm.cjs +0 -2
  842. package/dist/_shared/item-DTrnHpfm.cjs.map +0 -1
  843. package/dist/_shared/layout-BExg7Vlx.js +0 -261
  844. package/dist/_shared/layout-BExg7Vlx.js.map +0 -1
  845. package/dist/_shared/layout-CKRD_goE.cjs +0 -2
  846. package/dist/_shared/layout-CKRD_goE.cjs.map +0 -1
  847. package/dist/_shared/mentions-BtGhYisA.js +0 -506
  848. package/dist/_shared/mentions-BtGhYisA.js.map +0 -1
  849. package/dist/_shared/mentions-CnVOuQJU.cjs +0 -2
  850. package/dist/_shared/mentions-CnVOuQJU.cjs.map +0 -1
  851. package/dist/_shared/money-display-BvVpRUs5.cjs +0 -2
  852. package/dist/_shared/money-display-BvVpRUs5.cjs.map +0 -1
  853. package/dist/_shared/money-display-D6Qtvyyv.js +0 -198
  854. package/dist/_shared/money-display-D6Qtvyyv.js.map +0 -1
  855. package/dist/_shared/navigation-C4dO1I82.cjs +0 -2
  856. package/dist/_shared/navigation-C4dO1I82.cjs.map +0 -1
  857. package/dist/_shared/navigation-Ct-LFlpY.js +0 -436
  858. package/dist/_shared/navigation-Ct-LFlpY.js.map +0 -1
  859. package/dist/_shared/overlays-ChyqXn0n.js +0 -735
  860. package/dist/_shared/overlays-ChyqXn0n.js.map +0 -1
  861. package/dist/_shared/overlays-Dn2bt3CL.cjs +0 -2
  862. package/dist/_shared/overlays-Dn2bt3CL.cjs.map +0 -1
  863. package/dist/_shared/popover-menu-17Dxn25O.js +0 -93
  864. package/dist/_shared/popover-menu-17Dxn25O.js.map +0 -1
  865. package/dist/_shared/popover-menu-DXVN0bvj.cjs +0 -2
  866. package/dist/_shared/popover-menu-DXVN0bvj.cjs.map +0 -1
  867. package/dist/_shared/rich-text-editor-BRpcNkj1.js +0 -620
  868. package/dist/_shared/rich-text-editor-BRpcNkj1.js.map +0 -1
  869. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs +0 -2
  870. package/dist/_shared/rich-text-editor-BXxGNbmI.cjs.map +0 -1
  871. package/dist/_shared/settings-CW9yzfQM.js +0 -143
  872. package/dist/_shared/settings-CW9yzfQM.js.map +0 -1
  873. package/dist/_shared/settings-cCPrw7si.cjs +0 -2
  874. package/dist/_shared/settings-cCPrw7si.cjs.map +0 -1
  875. package/dist/_shared/sidebar-Cq6J_I4l.cjs +0 -2
  876. package/dist/_shared/sidebar-Cq6J_I4l.cjs.map +0 -1
  877. package/dist/_shared/sidebar-DtF_ihE3.js +0 -548
  878. package/dist/_shared/sidebar-DtF_ihE3.js.map +0 -1
  879. package/dist/_shared/spinner-DY2de3Wt.cjs +0 -2
  880. package/dist/_shared/spinner-DY2de3Wt.cjs.map +0 -1
  881. package/dist/_shared/spinner-ZmIq_zsx.js +0 -67
  882. package/dist/_shared/spinner-ZmIq_zsx.js.map +0 -1
  883. package/dist/_shared/table-BBWc-wIw.js +0 -1377
  884. package/dist/_shared/table-BBWc-wIw.js.map +0 -1
  885. package/dist/_shared/table-DMDkdLzV.cjs +0 -2
  886. package/dist/_shared/table-DMDkdLzV.cjs.map +0 -1
  887. package/dist/_shared/textarea-C1TeJ7Vt.cjs +0 -2
  888. package/dist/_shared/textarea-C1TeJ7Vt.cjs.map +0 -1
  889. package/dist/_shared/textarea-CGRkgH5z.js +0 -118
  890. package/dist/_shared/textarea-CGRkgH5z.js.map +0 -1
  891. package/dist/_shared/typography-CzFVA1w1.js +0 -201
  892. package/dist/_shared/typography-CzFVA1w1.js.map +0 -1
  893. package/dist/_shared/typography-GtkgK9QX.cjs +0 -2
  894. package/dist/_shared/typography-GtkgK9QX.cjs.map +0 -1
  895. package/dist/_shared/ui-provider-DZWtUXf2.cjs +0 -2
  896. package/dist/_shared/ui-provider-DZWtUXf2.cjs.map +0 -1
  897. package/dist/_shared/ui-provider-Dj6OSOZi.js +0 -81
  898. package/dist/_shared/ui-provider-Dj6OSOZi.js.map +0 -1
  899. package/dist/_shared/workspace-BF5BtDhD.cjs +0 -2
  900. package/dist/_shared/workspace-BF5BtDhD.cjs.map +0 -1
  901. package/dist/_shared/workspace-IvsczduM.js +0 -357
  902. package/dist/_shared/workspace-IvsczduM.js.map +0 -1
  903. package/dist/showcase/assets/AreaChart-CsIm9z7Y.js +0 -6
  904. package/dist/showcase/assets/CompositeItem-D9zznn01.js +0 -1
  905. package/dist/showcase/assets/CompositeRoot-CvxtZ81W.js +0 -1
  906. package/dist/showcase/assets/DialogTrigger-C-osQGHu.js +0 -1
  907. package/dist/showcase/assets/LabelableContext-_EE-HBND.js +0 -1
  908. package/dist/showcase/assets/PreviewLayout-KdEsSl3b.js +0 -1
  909. package/dist/showcase/assets/RadioGroup-4jOeNTc1.js +0 -1
  910. package/dist/showcase/assets/ScrollAreaCorner-CXTdUcaE.js +0 -1
  911. package/dist/showcase/assets/Separator-CHVXO6nj.js +0 -1
  912. package/dist/showcase/assets/ToolbarRootContext-CM5tQGGX.js +0 -1
  913. package/dist/showcase/assets/accordion-CA84bxb2.js +0 -171
  914. package/dist/showcase/assets/accordion-variants-DqWzAOO3.js +0 -1
  915. package/dist/showcase/assets/action-menu-D0q5z-Kq.js +0 -1
  916. package/dist/showcase/assets/actions-DnqxABJU.js +0 -310
  917. package/dist/showcase/assets/activities-BC9hoMy9.js +0 -500
  918. package/dist/showcase/assets/activities-feed-card-D6wGLpbH.js +0 -1
  919. package/dist/showcase/assets/admin-CMnMsugJ.js +0 -140
  920. package/dist/showcase/assets/ai-B6_sE9Zg.js +0 -207
  921. package/dist/showcase/assets/ai-artifact-BVvbsSJB.js +0 -2
  922. package/dist/showcase/assets/ai-chat-lcXeqJrA.js +0 -568
  923. package/dist/showcase/assets/ai-elements-B32o_UjE.js +0 -387
  924. package/dist/showcase/assets/ai-tool-call-BLrAioKz.js +0 -1
  925. package/dist/showcase/assets/alert-B1p1Grce.js +0 -62
  926. package/dist/showcase/assets/alert-BBiffYsY.js +0 -93
  927. package/dist/showcase/assets/alert-vH0nJ8J9.js +0 -1
  928. package/dist/showcase/assets/api-key-list-BrSc6V1y.js +0 -1
  929. package/dist/showcase/assets/api-key-list-CoKe_PaL.js +0 -73
  930. package/dist/showcase/assets/app-sidebar-R93lRPB4.js +0 -1
  931. package/dist/showcase/assets/arrow-down-xxVIADbv.js +0 -1
  932. package/dist/showcase/assets/arrow-left-DxnlnN8R.js +0 -1
  933. package/dist/showcase/assets/arrow-right-S5k93UPM.js +0 -1
  934. package/dist/showcase/assets/arrow-up-OlEVG7a-.js +0 -1
  935. package/dist/showcase/assets/arrow-up-right-j55bbl4b.js +0 -1
  936. package/dist/showcase/assets/avatar-BbiXvZq7.js +0 -67
  937. package/dist/showcase/assets/avatar-Bwpw-hQo.js +0 -57
  938. package/dist/showcase/assets/avatar-D0DKQ1lK.js +0 -1
  939. package/dist/showcase/assets/avatar-WyjSBov9.js +0 -1
  940. package/dist/showcase/assets/badge-BzLZQO3L.js +0 -31
  941. package/dist/showcase/assets/badge-check-TFWm1m3F.js +0 -1
  942. package/dist/showcase/assets/bell-CmuQlO_k.js +0 -1
  943. package/dist/showcase/assets/bot-Bu518AJB.js +0 -1
  944. package/dist/showcase/assets/box-D-wrSdOJ.js +0 -1
  945. package/dist/showcase/assets/braces-CgCdmdAl.js +0 -1
  946. package/dist/showcase/assets/brain-DkHdwgHO.js +0 -1
  947. package/dist/showcase/assets/brand-CpovnVoG.js +0 -36
  948. package/dist/showcase/assets/breadcrumb-BUc0WC5d.js +0 -1
  949. package/dist/showcase/assets/breadcrumb-Do_Dazt1.js +0 -52
  950. package/dist/showcase/assets/breadcrumbs-Bj21o2zm.js +0 -1
  951. package/dist/showcase/assets/briefcase-CQBh2kok.js +0 -1
  952. package/dist/showcase/assets/building-2-D07Ej6iR.js +0 -1
  953. package/dist/showcase/assets/button-CCZ4KEGQ.js +0 -44
  954. package/dist/showcase/assets/button-group-BTjeHOvz.js +0 -1
  955. package/dist/showcase/assets/buttons-D45Wwiwn.js +0 -272
  956. package/dist/showcase/assets/calendar-BsEWULmZ.js +0 -16
  957. package/dist/showcase/assets/calendar-CkPefzIO.js +0 -1
  958. package/dist/showcase/assets/calendar-DZlT3qTq.js +0 -1
  959. package/dist/showcase/assets/calendar-days-C9awTMru.js +0 -1
  960. package/dist/showcase/assets/camera-CQhMw-RD.js +0 -1
  961. package/dist/showcase/assets/card-CKrz_UHt.js +0 -1
  962. package/dist/showcase/assets/card-DZgZgjXO.js +0 -188
  963. package/dist/showcase/assets/card-primitives-CpkDLK3Y.js +0 -1
  964. package/dist/showcase/assets/card-radio-group-BjXwMI4v.js +0 -1
  965. package/dist/showcase/assets/cards-Cd24XZ9l.js +0 -353
  966. package/dist/showcase/assets/carousel-Doon04yO.js +0 -449
  967. package/dist/showcase/assets/cell-renderers-CTay3duH.js +0 -1
  968. package/dist/showcase/assets/chart-CkvbdpWw.js +0 -358
  969. package/dist/showcase/assets/chart-column-Dz57kUMl.js +0 -1
  970. package/dist/showcase/assets/checkbox-L-L4-wvA.js +0 -1
  971. package/dist/showcase/assets/checkbox-sP254E7e.js +0 -1
  972. package/dist/showcase/assets/chevron-down-CLc_a2Ua.js +0 -1
  973. package/dist/showcase/assets/chevron-left-CMRIGOJt.js +0 -1
  974. package/dist/showcase/assets/chevron-up-BDw6LdDZ.js +0 -1
  975. package/dist/showcase/assets/chevrons-up-down-C519RKki.js +0 -1
  976. package/dist/showcase/assets/circle-B_tOHWTY.js +0 -1
  977. package/dist/showcase/assets/circle-alert-B56AFULT.js +0 -1
  978. package/dist/showcase/assets/circle-check-B4XZj4Ty.js +0 -1
  979. package/dist/showcase/assets/circle-check-big-C0iEkwPB.js +0 -1
  980. package/dist/showcase/assets/circle-dot-DPdJZkc6.js +0 -1
  981. package/dist/showcase/assets/circle-question-mark-LTetdrq6.js +0 -1
  982. package/dist/showcase/assets/circle-x-B4FwM-sI.js +0 -1
  983. package/dist/showcase/assets/clock-3-DZhjBuw8.js +0 -1
  984. package/dist/showcase/assets/clock-B9Fna2Q3.js +0 -1
  985. package/dist/showcase/assets/code-xml-B6Xb_vIg.js +0 -1
  986. package/dist/showcase/assets/collapsible-Bf7Oo37i.js +0 -27
  987. package/dist/showcase/assets/collapsible-BfLeooy8.js +0 -1
  988. package/dist/showcase/assets/combobox-4NYfJznY.js +0 -685
  989. package/dist/showcase/assets/command-7jRRucHf.js +0 -1
  990. package/dist/showcase/assets/command-D56CjgNc.js +0 -1
  991. package/dist/showcase/assets/comment-composer-BWeXIZfK.js +0 -1
  992. package/dist/showcase/assets/comment-item-ChkiK-ut.js +0 -1
  993. package/dist/showcase/assets/comments-YnEop7v3.js +0 -357
  994. package/dist/showcase/assets/commerce-7XxWJChs.js +0 -267
  995. package/dist/showcase/assets/composite-CHcyYCsk.js +0 -1
  996. package/dist/showcase/assets/contact-card-BXw-VuBm.js +0 -65
  997. package/dist/showcase/assets/content-container-C4uopCBg.js +0 -1
  998. package/dist/showcase/assets/copyable-CjVYEJ0P.js +0 -1
  999. package/dist/showcase/assets/copyable-Cz2jW7yL.js +0 -96
  1000. package/dist/showcase/assets/course-card-CvK3dw9W.js +0 -77
  1001. package/dist/showcase/assets/cpu-Vk5WgcC1.js +0 -1
  1002. package/dist/showcase/assets/credit-card-CaigqZGk.js +0 -1
  1003. package/dist/showcase/assets/css-variables-hLaBmeMt.js +0 -1190
  1004. package/dist/showcase/assets/currency-yO1giHp1.js +0 -149
  1005. package/dist/showcase/assets/dark-surfaces-BPQnyk9a.js +0 -90
  1006. package/dist/showcase/assets/data-view-CjjXn5VT.js +0 -124
  1007. package/dist/showcase/assets/data-view-DF0n8uva.js +0 -4
  1008. package/dist/showcase/assets/database-ChUBDe8E.js +0 -1
  1009. package/dist/showcase/assets/date-block-DUg1Oyn4.js +0 -1
  1010. package/dist/showcase/assets/date-picker-CoQPZa34.js +0 -1
  1011. package/dist/showcase/assets/date-pickers-B-IUbyXw.js +0 -73
  1012. package/dist/showcase/assets/dense-info-zVQSWqOU.js +0 -106
  1013. package/dist/showcase/assets/design-system-consistency-Bnz_h3-6.js +0 -264
  1014. package/dist/showcase/assets/dialog-BtilpgxJ.js +0 -1
  1015. package/dist/showcase/assets/dialog-kf9WwmTC.js +0 -1
  1016. package/dist/showcase/assets/display-utilities-BBzG5EPX.js +0 -267
  1017. package/dist/showcase/assets/dist-9gFIhkw-.js +0 -45
  1018. package/dist/showcase/assets/dist-CGpz_7Mu.js +0 -1
  1019. package/dist/showcase/assets/dollar-sign-CWbYI3Pd.js +0 -1
  1020. package/dist/showcase/assets/download-Bt_z-poH.js +0 -1
  1021. package/dist/showcase/assets/dropdown-menu-C1_SYTHm.js +0 -1
  1022. package/dist/showcase/assets/dropzone-D5BGVTnl.js +0 -1
  1023. package/dist/showcase/assets/earth-sP5mIgG3.js +0 -1
  1024. package/dist/showcase/assets/ellipsis-vertical-BD7kMOzj.js +0 -1
  1025. package/dist/showcase/assets/ellipsis-yqIF49C8.js +0 -1
  1026. package/dist/showcase/assets/empty-DIrJgtrh.js +0 -1
  1027. package/dist/showcase/assets/empty-item-GgnZk2yf.js +0 -49
  1028. package/dist/showcase/assets/empty-state-ZGKkJ6sf.js +0 -190
  1029. package/dist/showcase/assets/empty-state-n_Fspzt-.js +0 -1
  1030. package/dist/showcase/assets/enhanced-activities-CCw_hZnZ.js +0 -357
  1031. package/dist/showcase/assets/enhanced-combobox-bBF-ADDs.js +0 -1
  1032. package/dist/showcase/assets/esm-CyFPn936.js +0 -2
  1033. package/dist/showcase/assets/event-calendar-Czo7yBDx.js +0 -138
  1034. package/dist/showcase/assets/event-log-DJ3B3nMV.js +0 -330
  1035. package/dist/showcase/assets/example-eGsLGIcp.js +0 -1
  1036. package/dist/showcase/assets/external-link-DPOQEVWH.js +0 -1
  1037. package/dist/showcase/assets/eye-CN92NVL0.js +0 -1
  1038. package/dist/showcase/assets/feature-announcement-BXkSW17e.js +0 -34
  1039. package/dist/showcase/assets/file-CFHePlKG.js +0 -1
  1040. package/dist/showcase/assets/file-text--WYCYQMw.js +0 -1
  1041. package/dist/showcase/assets/filter-layout-B35gGmcO.js +0 -1
  1042. package/dist/showcase/assets/filters-GDW_oiT3.js +0 -139
  1043. package/dist/showcase/assets/flag-XsT9XFPr.js +0 -1
  1044. package/dist/showcase/assets/folder-open-RtsQ8vxf.js +0 -1
  1045. package/dist/showcase/assets/form-field-Bijd1Gex.js +0 -1
  1046. package/dist/showcase/assets/format-Ckw4OM66.js +0 -1
  1047. package/dist/showcase/assets/forms-00bU7LN8.js +0 -915
  1048. package/dist/showcase/assets/funnel-qu25WlXD.js +0 -1
  1049. package/dist/showcase/assets/generic-Bf82Wiol.js +0 -1
  1050. package/dist/showcase/assets/getPseudoElementBounds-BR4_m2HH.js +0 -1
  1051. package/dist/showcase/assets/gift-D4GQoqzV.js +0 -1
  1052. package/dist/showcase/assets/giftcard-cards-CMutwaAY.js +0 -85
  1053. package/dist/showcase/assets/git-branch-B2QG2zRg.js +0 -1
  1054. package/dist/showcase/assets/global-search-CRAB9TSF.js +0 -1
  1055. package/dist/showcase/assets/global-search-DY0cKfhY.js +0 -215
  1056. package/dist/showcase/assets/globe-BxZW28rG.js +0 -1
  1057. package/dist/showcase/assets/gradient-card-CQGnXG8r.js +0 -58
  1058. package/dist/showcase/assets/hash-CsRtIoKK.js +0 -1
  1059. package/dist/showcase/assets/header-DzYOgZLP.js +0 -1
  1060. package/dist/showcase/assets/header-notifications-D_CJPbvs.js +0 -1
  1061. package/dist/showcase/assets/heart-B2YsYprq.js +0 -1
  1062. package/dist/showcase/assets/hooks-BhUMA4Tb.js +0 -220
  1063. package/dist/showcase/assets/house-HeRFNhI0.js +0 -1
  1064. package/dist/showcase/assets/icon-badge-CpDkc-S0.js +0 -37
  1065. package/dist/showcase/assets/icon-badge-eNEGgpAV.js +0 -1
  1066. package/dist/showcase/assets/image-T88JyDag.js +0 -1
  1067. package/dist/showcase/assets/inbox-DLrLLnTR.js +0 -1
  1068. package/dist/showcase/assets/index-DDZl6kOS.js +0 -10
  1069. package/dist/showcase/assets/index-nOkXemgw.css +0 -2
  1070. package/dist/showcase/assets/inertValue-BajuuRy4.js +0 -1
  1071. package/dist/showcase/assets/info-CNYfw2Yz.js +0 -1
  1072. package/dist/showcase/assets/inline-stat-BN6yhDR5.js +0 -15
  1073. package/dist/showcase/assets/inline-stat-Bqw3lVfk.js +0 -1
  1074. package/dist/showcase/assets/input-C-9K6F0N.js +0 -1
  1075. package/dist/showcase/assets/input-DaZzfkZV.js +0 -1
  1076. package/dist/showcase/assets/input-group-DE-Xdhv4.js +0 -1
  1077. package/dist/showcase/assets/input-group-DIQZnytn.js +0 -47
  1078. package/dist/showcase/assets/inputs-Cl_JgSR4.js +0 -155
  1079. package/dist/showcase/assets/installation-DdhD4Dkq.js +0 -134
  1080. package/dist/showcase/assets/invoice-header-DOs2ACqQ.js +0 -36
  1081. package/dist/showcase/assets/invoice-items-1EuA62mF.js +0 -36
  1082. package/dist/showcase/assets/invoice-mini-vCrYEtWp.js +0 -14
  1083. package/dist/showcase/assets/invoice-table--mDTs1Iz.js +0 -30
  1084. package/dist/showcase/assets/isSameDay-BNB1yam4.js +0 -1
  1085. package/dist/showcase/assets/isToday-BugOpGJC.js +0 -1
  1086. package/dist/showcase/assets/italic-Ck4UD2ZT.js +0 -1
  1087. package/dist/showcase/assets/item-BcesxqFS.js +0 -139
  1088. package/dist/showcase/assets/item-BgPlwUMv.js +0 -1
  1089. package/dist/showcase/assets/item-CB9k_rmo.js +0 -1
  1090. package/dist/showcase/assets/kanban-cPuSVqWY.js +0 -188
  1091. package/dist/showcase/assets/key-round-BmYjd5dk.js +0 -1
  1092. package/dist/showcase/assets/label-BTIBJBqN.js +0 -1
  1093. package/dist/showcase/assets/languages-he6FNXRs.js +0 -1
  1094. package/dist/showcase/assets/layers-B_48DtOz.js +0 -1
  1095. package/dist/showcase/assets/layout-app-shell-zwLv6jTP.js +0 -608
  1096. package/dist/showcase/assets/layout-auth-2Zv5lr52.js +0 -790
  1097. package/dist/showcase/assets/layout-containers-Dzw3xlKn.js +0 -101
  1098. package/dist/showcase/assets/layout-header-TJ-WVmG3.js +0 -203
  1099. package/dist/showcase/assets/layout-page-CIVQCKXK.js +0 -314
  1100. package/dist/showcase/assets/layout-primitives-i_O81fzT.js +0 -34
  1101. package/dist/showcase/assets/layout-sidebar-eH_pwBq_.js +0 -224
  1102. package/dist/showcase/assets/layout-users-CWSaFBLj.js +0 -117
  1103. package/dist/showcase/assets/layout-workspace-w3oe32GE.js +0 -191
  1104. package/dist/showcase/assets/lib-CoS0xjP8.js +0 -1
  1105. package/dist/showcase/assets/list-checks-DecRPpK3.js +0 -1
  1106. package/dist/showcase/assets/lock-D9f8uXol.js +0 -1
  1107. package/dist/showcase/assets/lock-keyhole-C20eixH6.js +0 -1
  1108. package/dist/showcase/assets/mail-CVgP8Qlo.js +0 -1
  1109. package/dist/showcase/assets/mail-check-mplTKcSH.js +0 -1
  1110. package/dist/showcase/assets/map-B6OGeOup.js +0 -124
  1111. package/dist/showcase/assets/map-pin-BZXSwrzT.js +0 -1
  1112. package/dist/showcase/assets/media-library-DSlVIM1Q.js +0 -699
  1113. package/dist/showcase/assets/mention-inline-suggestions-CNAEeXgy.js +0 -1
  1114. package/dist/showcase/assets/mentions-Cb3g4hDN.js +0 -138
  1115. package/dist/showcase/assets/menus-CE0Hlj8N.js +0 -171
  1116. package/dist/showcase/assets/message-square-HliU8vbW.js +0 -1
  1117. package/dist/showcase/assets/metadata-list-CJ5v5Bvc.js +0 -286
  1118. package/dist/showcase/assets/metadata-list-DY92-pw2.js +0 -1
  1119. package/dist/showcase/assets/metric-DxMTjIvU.js +0 -1
  1120. package/dist/showcase/assets/metric-bar-cW9nWCRl.js +0 -1
  1121. package/dist/showcase/assets/metric-grid-CvfO52X1.js +0 -1
  1122. package/dist/showcase/assets/metric-trend-chip-BmjQdRus.js +0 -1
  1123. package/dist/showcase/assets/metrics-analytics-bar-BZqB5d1y.js +0 -44
  1124. package/dist/showcase/assets/metrics-analytics-cards-jAhlrQCI.js +0 -50
  1125. package/dist/showcase/assets/metrics-comparison-DURZ6qEL.js +0 -76
  1126. package/dist/showcase/assets/metrics-heatmap-HhJDBguh.js +0 -27
  1127. package/dist/showcase/assets/metrics-inline-badge-Dq5k-P6F.js +0 -17
  1128. package/dist/showcase/assets/metrics-kpi-row-DXzhwa6z.js +0 -31
  1129. package/dist/showcase/assets/metrics-micro-grid-C6O5b0wP.js +0 -42
  1130. package/dist/showcase/assets/metrics-overview-Hv2mseb3.js +0 -192
  1131. package/dist/showcase/assets/metrics-stat-cards-CW42vBCS.js +0 -54
  1132. package/dist/showcase/assets/minus-BW62vCxf.js +0 -1
  1133. package/dist/showcase/assets/money-display-CAdGk5Lr.js +0 -1
  1134. package/dist/showcase/assets/month-year-picker-dHuvgz1E.js +0 -1
  1135. package/dist/showcase/assets/navigation-C4uSLvbZ.js +0 -90
  1136. package/dist/showcase/assets/navigation-SjsZrtIc.js +0 -231
  1137. package/dist/showcase/assets/navigation-extras-CMVNVskk.js +0 -43
  1138. package/dist/showcase/assets/onboarding-checklist-C1jwRdMU.js +0 -119
  1139. package/dist/showcase/assets/overflow-tab-bar-BYFLpl5w.js +0 -1
  1140. package/dist/showcase/assets/overlays-0Y8MAz39.js +0 -159
  1141. package/dist/showcase/assets/overlays-ClOnjahL.js +0 -408
  1142. package/dist/showcase/assets/overview-B5ztGmTp.js +0 -184
  1143. package/dist/showcase/assets/package-check-MeSw6bS4.js +0 -1
  1144. package/dist/showcase/assets/package-vYJ0q0QM.js +0 -1
  1145. package/dist/showcase/assets/page-4lMKtBQ7.js +0 -1
  1146. package/dist/showcase/assets/page-action-button-C5-TGSzy.js +0 -1
  1147. package/dist/showcase/assets/page-header-C_-KYryO.js +0 -1
  1148. package/dist/showcase/assets/pagination-D3L3Iwus.js +0 -1
  1149. package/dist/showcase/assets/pagination-dZXPxwHx.js +0 -42
  1150. package/dist/showcase/assets/paperclip-BZhdPOw8.js +0 -1
  1151. package/dist/showcase/assets/password-input-CDSMtGxt.js +0 -1
  1152. package/dist/showcase/assets/pencil-DiYr3CZ9.js +0 -1
  1153. package/dist/showcase/assets/phone-Dm5qzlG8.js +0 -1
  1154. package/dist/showcase/assets/plus-pfGaA3St.js +0 -1
  1155. package/dist/showcase/assets/popover-CjVWDO7C.js +0 -1
  1156. package/dist/showcase/assets/popover-menu-JcZyGV3Y.js +0 -1
  1157. package/dist/showcase/assets/popover-pZ4Jbp0s.js +0 -1
  1158. package/dist/showcase/assets/products-C62MKtAR.js +0 -423
  1159. package/dist/showcase/assets/progress-Btw-ZUaU.js +0 -18
  1160. package/dist/showcase/assets/progress-DpB5LL6R.js +0 -1
  1161. package/dist/showcase/assets/props-table-Bjc9IHmp.js +0 -1
  1162. package/dist/showcase/assets/props.generated-cO7HmIpY.json +0 -41578
  1163. package/dist/showcase/assets/quote-DcxVd1fj.js +0 -1
  1164. package/dist/showcase/assets/receipt-BHns-S5Q.js +0 -1
  1165. package/dist/showcase/assets/receipt-text-L0aYasyt.js +0 -1
  1166. package/dist/showcase/assets/refinement-guide-BBOGBJ4I.js +0 -189
  1167. package/dist/showcase/assets/refresh-cw-z6mlm0HI.js +0 -1
  1168. package/dist/showcase/assets/resolveValueLabel-hsarzg5A.js +0 -1
  1169. package/dist/showcase/assets/resource-CIn_zKZ4.js +0 -139
  1170. package/dist/showcase/assets/resource-DxktLgEK.js +0 -1
  1171. package/dist/showcase/assets/resource-selector-card-dkcEQ6bl.js +0 -43
  1172. package/dist/showcase/assets/rich-text-editor-Dd-rWisw.js +0 -124
  1173. package/dist/showcase/assets/rich-text-editor-DvJMFj48.js +0 -143
  1174. package/dist/showcase/assets/rotate-ccw-DEz6nb5P.js +0 -1
  1175. package/dist/showcase/assets/route-BeXaXTk8.js +0 -1
  1176. package/dist/showcase/assets/save-EE7Tc5OT.js +0 -1
  1177. package/dist/showcase/assets/schema-form-RK9Zpz1E.js +0 -327
  1178. package/dist/showcase/assets/scroll-area-BejQJ0Q1.js +0 -32
  1179. package/dist/showcase/assets/scroll-area-DS8LJ7LG.js +0 -1
  1180. package/dist/showcase/assets/section-Cv8i4DIx.js +0 -1
  1181. package/dist/showcase/assets/select-Cuy3YKW9.js +0 -1
  1182. package/dist/showcase/assets/select-qFy1jm91.js +0 -1
  1183. package/dist/showcase/assets/send-CXv0ST9u.js +0 -1
  1184. package/dist/showcase/assets/separator-CecGyBaV.js +0 -1
  1185. package/dist/showcase/assets/separator-CqtFQXrk.js +0 -28
  1186. package/dist/showcase/assets/settings-2-CCeMwMOj.js +0 -1
  1187. package/dist/showcase/assets/settings-CXjN6wTC.js +0 -1
  1188. package/dist/showcase/assets/sheet-Csyrmkqp.js +0 -1
  1189. package/dist/showcase/assets/shield-DR0ZfAFA.js +0 -1
  1190. package/dist/showcase/assets/shield-alert-Bp1iFJ2q.js +0 -1
  1191. package/dist/showcase/assets/shield-check-ClL4B_Cd.js +0 -1
  1192. package/dist/showcase/assets/shopping-bag-DnSmbPUX.js +0 -1
  1193. package/dist/showcase/assets/showcase-CQKt5VGi.js +0 -132
  1194. package/dist/showcase/assets/sidebar-CXy94md1.js +0 -1
  1195. package/dist/showcase/assets/sidebar.context-C8gkOwJ5.js +0 -1
  1196. package/dist/showcase/assets/skeleton-B8wC5P66.js +0 -29
  1197. package/dist/showcase/assets/skeleton-DBlCLlBC.js +0 -1
  1198. package/dist/showcase/assets/slider-BcjkNx6W.js +0 -1
  1199. package/dist/showcase/assets/smart-card-Cg6rtWH9.js +0 -1
  1200. package/dist/showcase/assets/sonner-ZGBQ13wS.js +0 -22
  1201. package/dist/showcase/assets/sortable.esm-CGFWc-Cn.js +0 -5
  1202. package/dist/showcase/assets/sparkles-q1-9JZqa.js +0 -1
  1203. package/dist/showcase/assets/spinner-CKg8QLHu.js +0 -1
  1204. package/dist/showcase/assets/spinner-D1Ao9j9T.js +0 -49
  1205. package/dist/showcase/assets/spinner-oahLIkgb.js +0 -30
  1206. package/dist/showcase/assets/square-pen-DZ3bQJia.js +0 -1
  1207. package/dist/showcase/assets/stacked-avatars-CKPtb3Hj.js +0 -1
  1208. package/dist/showcase/assets/star-suetD-KI.js +0 -1
  1209. package/dist/showcase/assets/startOfDay-OjIsUeiv.js +0 -1
  1210. package/dist/showcase/assets/styles-1mYOoC2k.js +0 -1
  1211. package/dist/showcase/assets/suggestions-DLYaI-In.js +0 -126
  1212. package/dist/showcase/assets/switch-CTTrJNwo.js +0 -1
  1213. package/dist/showcase/assets/switch-ChJWWmxN.js +0 -1
  1214. package/dist/showcase/assets/sync-DsHYydvo.js +0 -124
  1215. package/dist/showcase/assets/table-Ck2ptin2.js +0 -686
  1216. package/dist/showcase/assets/table-DyJ9oADQ.js +0 -1
  1217. package/dist/showcase/assets/table-actions-COU4zHfh.js +0 -1
  1218. package/dist/showcase/assets/tabs-Bl_RHGIw.js +0 -1
  1219. package/dist/showcase/assets/tabs-DS-4VSkb.js +0 -19
  1220. package/dist/showcase/assets/tags-input-BlYzb5fF.js +0 -1
  1221. package/dist/showcase/assets/text-button-OPdNs3fb.js +0 -1
  1222. package/dist/showcase/assets/text-link-D27gqGeg.js +0 -1
  1223. package/dist/showcase/assets/textarea-DpC7J5F-.js +0 -1
  1224. package/dist/showcase/assets/textarea-JtXUjxvc.js +0 -1
  1225. package/dist/showcase/assets/timelines-DQM-B4Xo.js +0 -200
  1226. package/dist/showcase/assets/toggle-group-CMneKREH.js +0 -1
  1227. package/dist/showcase/assets/toggles-CAXXgjO_.js +0 -71
  1228. package/dist/showcase/assets/toggles-group-CHRqrpoM.js +0 -32
  1229. package/dist/showcase/assets/tooltip-CwGZAioX.js +0 -31
  1230. package/dist/showcase/assets/trash-2-BpMb9Zbb.js +0 -1
  1231. package/dist/showcase/assets/trending-up-B1BzitCg.js +0 -1
  1232. package/dist/showcase/assets/truck-CDSE5-HZ.js +0 -1
  1233. package/dist/showcase/assets/typography-BoNJ1hRZ.js +0 -223
  1234. package/dist/showcase/assets/ui-badge-Djh6NiB2.js +0 -28
  1235. package/dist/showcase/assets/ui-card-QC_rl_H2.js +0 -30
  1236. package/dist/showcase/assets/ui-table-qAGsc3qN.js +0 -42
  1237. package/dist/showcase/assets/upload-tray-DKCJgW5u.js +0 -138
  1238. package/dist/showcase/assets/use-layout-link-BPlsZ8Ys.js +0 -1
  1239. package/dist/showcase/assets/useAnchoredPopupScrollLock-526MebAC.js +0 -1
  1240. package/dist/showcase/assets/useAriaLabelledBy-CqySZiH9.js +0 -1
  1241. package/dist/showcase/assets/useCollapsiblePanel-DWX7LbGX.js +0 -1
  1242. package/dist/showcase/assets/useCompositeItem-DGEBUXgE.js +0 -1
  1243. package/dist/showcase/assets/useCompositeListItem-B2nuNlc2.js +0 -1
  1244. package/dist/showcase/assets/useLabelableId-DY4O1lpt.js +0 -1
  1245. package/dist/showcase/assets/useOpenInteractionType-DxwujDvt.js +0 -1
  1246. package/dist/showcase/assets/useRender-BPoNv-Lm.js +0 -1
  1247. package/dist/showcase/assets/useTriggerFocusGuards-BnOSAjfy.js +0 -1
  1248. package/dist/showcase/assets/useValueChanged-CXmDOWxx.js +0 -1
  1249. package/dist/showcase/assets/user-BGchdtV_.js +0 -1
  1250. package/dist/showcase/assets/user-plus-BifI_xVA.js +0 -1
  1251. package/dist/showcase/assets/users-Cl5yYqdg.js +0 -1
  1252. package/dist/showcase/assets/vendor-profile-BNW4FYna.js +0 -37
  1253. package/dist/showcase/assets/video-BtQPixYN.js +0 -1
  1254. package/dist/showcase/assets/wrench-CRalc5fG.js +0 -1
  1255. package/dist/showcase/assets/x-D6hUY89S.js +0 -1
  1256. package/dist/showcase/assets/zap-v_qbqeI5.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xxs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"m-0 list-none space-y-0.5 p-0\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"default\"\n onClick={item.onSelect}\n className={cn(\n 'h-auto w-full justify-start gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </Button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div\n data-component=\"global-search-input\"\n data-slot=\"global-search-input\"\n className=\"global-search-input--component flex items-center gap-space-md border-b border-border px-control py-row-y\"\n >\n <Search className=\"size-icon shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <div className=\"min-w-0 flex-1\">\n <Input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n size=\"small\"\n className=\"h-auto border-0 bg-transparent px-0 py-0 text-sm shadow-none focus-visible:border-transparent focus-visible:ring-0\"\n />\n </div>\n {loading && (\n <Loader2\n className=\"size-icon shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"size-control-sm rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <X className=\"size-icon-sm\" />\n </Button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/5 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/10 text-info',\n destructive: 'bg-destructive/10 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/10 text-info',\n destructive: 'bg-destructive/10 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <Button\n type=\"button\"\n data-component=\"global-search-result-row\"\n data-slot=\"global-search-result-row\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative h-auto w-full justify-start gap-space-lg rounded-md px-row-x py-row-y text-left transition-colors',\n 'global-search-result-row--component',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-avatar-sm', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xxs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-avatar-sm items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-icon\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-space-sm leading-tight\">\n <Text tag=\"span\" size=\"inherit\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"inherit\" type=\"secondary\" className=\"mt-space-2xs truncate text-xxs\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-row-x md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n size=\"inherit\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-control-sm shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </Button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"global-search-tabs--component border-b border-border/60 px-3 py-2\">\n <div className=\"global-search-tabs--scroller -mx-1 overflow-x-auto px-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n className=\"min-w-max\"\n >\n <TabsList className=\"global-search-tabs--list h-8 w-max min-w-max\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"global-search-tabs--trigger shrink-0 gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className={cn(\n 'global-search-tabs--count rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: StringsProp<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings = useStrings(defaultGlobalSearchStrings, stringsProp);\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n data-component=\"global-search\"\n data-slot=\"global-search\"\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-space-md py-space-xs\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-space-xs last:pb-0',\n gi > 0 && 'mt-space-md pt-space-xs',\n )}\n >\n <div className=\"flex items-center justify-between px-row-x pb-space-2xs\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"h-auto rounded px-1 py-0 text-primary transition-colors hover:underline\"\n >\n <Text\n tag=\"span\"\n size=\"xxs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </Button>\n )}\n </div>\n <ul className=\"m-0 list-none space-y-0.5 p-0\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/global-search/global-search.strings.ts","../../../../src/components/features/global-search/hooks/use-global-search.ts","../../../../src/components/features/global-search/partials/global-search-empty-state.tsx","../../../../src/components/features/global-search/partials/global-search-footer.tsx","../../../../src/components/features/global-search/partials/global-search-idle-state.tsx","../../../../src/components/features/global-search/partials/global-search-input.tsx","../../../../src/components/features/global-search/partials/tone-palettes.ts","../../../../src/components/features/global-search/partials/global-search-result-row.tsx","../../../../src/components/ui/tabs.tsx","../../../../src/components/features/global-search/partials/global-search-tabs.tsx","../../../../src/components/features/global-search/global-search.tsx"],"sourcesContent":["/**\n * Strings for `GlobalSearch` and its partials. Consumers override via the\n * `strings` prop on `<GlobalSearch />`; values are deep-merged over these\n * defaults so partial overrides are safe.\n */\nexport interface GlobalSearchStrings {\n /** Placeholder copy for the search input. */\n placeholder: string;\n /** aria-label for the clear-search icon button. */\n clear: string;\n /** Loading-state copy. */\n loading: string;\n /** Empty-state title — uses {{query}} as a placeholder. */\n emptyTitle: string;\n /** Empty-state body copy. */\n emptyHint: string;\n /** Idle-state heading for \"Recent\" suggestions. */\n idleRecent: string;\n /** Idle-state heading for curated \"Suggestions\". */\n idleSuggestions: string;\n /** Tab label for the \"All\" tab. */\n tabAll: string;\n /** Footer \"navigate\" hint. */\n footerNavigate: string;\n /** Footer \"open\" hint. */\n footerOpen: string;\n /** Footer \"close\" hint. */\n footerClose: string;\n /** Trailing N results count. */\n resultsCount: string;\n /** \"See all\" group action — jumps to that tab. */\n seeAll: string;\n}\n\nexport const defaultGlobalSearchStrings: GlobalSearchStrings = {\n placeholder: 'Search…',\n clear: 'Clear search',\n loading: 'Searching…',\n emptyTitle: 'No results for \"{{query}}\"',\n emptyHint: 'Try a shorter keyword or check the spelling.',\n idleRecent: 'Recent',\n idleSuggestions: 'Suggestions',\n tabAll: 'All',\n footerNavigate: 'navigate',\n footerOpen: 'open',\n footerClose: 'close',\n resultsCount: '{{count}} results',\n seeAll: 'See all',\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolateString(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useGlobalSearch — headless state machine for `<GlobalSearch />`.\n *\n * Owns the active-row index, active tab, and the keyboard-navigation\n * handler. Returns the derived flat list (results filtered by tab) so\n * consumers can render entirely custom UIs against the same state.\n *\n * Usage:\n * const search = useGlobalSearch({ results, query });\n * <input onKeyDown={search.onKeyDown} />\n * {search.flat.map((r, i) => <Row active={i === search.activeIdx} … />)}\n */\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { GlobalSearchResult } from '../global-search.types';\n\nexport interface UseGlobalSearchOptions<TGroup extends string = string> {\n results: ReadonlyArray<GlobalSearchResult<TGroup>>;\n query: string;\n /** Fires when the user activates a row (Enter or click). */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Fires when the user presses Escape. */\n onClose?: () => void;\n}\n\nexport interface UseGlobalSearchReturn<TGroup extends string = string> {\n /** Results bucketed by group, in insertion order. */\n grouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Result count per tab (`all` plus each group key). */\n tabCounts: Record<string, number>;\n /** Currently-selected tab. */\n activeTab: 'all' | TGroup;\n /** Set the active tab — also resets the active index. */\n setActiveTab: (tab: 'all' | TGroup) => void;\n /** Filtered grouped map respecting the active tab. */\n visibleGrouped: Record<string, GlobalSearchResult<TGroup>[]>;\n /** Flat ordered list matching what is currently rendered. */\n flat: GlobalSearchResult<TGroup>[];\n /** Index into `flat` of the currently-highlighted row. */\n activeIdx: number;\n setActiveIdx: (i: number) => void;\n /** Programmatically activate a result by id. */\n setActiveById: (id: string) => void;\n /** Bind to the search input's `onKeyDown` for arrow / enter / escape support. */\n onKeyDown: (e: React.KeyboardEvent) => void;\n /** Activate the row at `activeIdx`. */\n selectActive: () => void;\n}\n\nexport function useGlobalSearch<TGroup extends string = string>({\n results,\n query,\n onResultSelect,\n onClose,\n}: UseGlobalSearchOptions<TGroup>): UseGlobalSearchReturn<TGroup> {\n const [activeTab, setActiveTabState] =\n useState<'all' | TGroup>('all');\n const [activeIdx, setActiveIdx] = useState(0);\n\n // Reset both the active row and the active tab when the query changes\n // (so a fresh query never inherits a stale highlight or filter).\n useEffect(() => {\n setActiveTabState('all');\n setActiveIdx(0);\n }, [query]);\n\n const grouped = useMemo(() => {\n const buckets: Record<string, GlobalSearchResult<TGroup>[]> = {};\n for (const r of results) {\n (buckets[r.group] ??= []).push(r);\n }\n return buckets;\n }, [results]);\n\n const tabCounts = useMemo(() => {\n const counts: Record<string, number> = { all: results.length };\n for (const [k, v] of Object.entries(grouped)) counts[k] = v.length;\n return counts;\n }, [results.length, grouped]);\n\n const visibleGrouped = useMemo(() => {\n if (activeTab === 'all') return grouped;\n const sub = grouped[activeTab as string];\n return sub ? ({ [activeTab as string]: sub } as Record<string, GlobalSearchResult<TGroup>[]>) : {};\n }, [grouped, activeTab]);\n\n const flat = useMemo(() => {\n if (activeTab === 'all') return results.slice();\n return grouped[activeTab as string] ?? [];\n }, [activeTab, grouped, results]);\n\n const activeIdxRef = useRef(activeIdx);\n activeIdxRef.current = activeIdx;\n const flatRef = useRef(flat);\n flatRef.current = flat;\n\n const setActiveTab = (tab: 'all' | TGroup) => {\n setActiveTabState(tab);\n setActiveIdx(0);\n };\n\n const setActiveById = (id: string) => {\n const idx = flatRef.current.findIndex((r) => r.id === id);\n if (idx >= 0) setActiveIdx(idx);\n };\n\n const selectActive = () => {\n const item = flatRef.current[activeIdxRef.current];\n if (item) onResultSelect?.(item);\n };\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIdx((i) => Math.min(i + 1, flatRef.current.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIdx((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter') {\n const item = flatRef.current[activeIdxRef.current];\n if (item) {\n e.preventDefault();\n onResultSelect?.(item);\n }\n } else if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n return {\n grouped,\n tabCounts,\n activeTab,\n setActiveTab,\n visibleGrouped,\n flat,\n activeIdx,\n setActiveIdx,\n setActiveById,\n onKeyDown,\n selectActive,\n };\n}\n","/**\n * Default empty-state body — shown when the query yields no results.\n * Override entirely via `slots.empty`.\n */\nimport { Search } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\n\nexport interface GlobalSearchEmptyStateProps {\n title: string;\n hint: string;\n}\n\nexport function GlobalSearchEmptyState({ title, hint }: GlobalSearchEmptyStateProps) {\n return (\n <div className=\"px-6 py-12 text-center\">\n <div className=\"mx-auto mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted/60\">\n <Search className=\"size-4 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n <Text weight=\"medium\">\n {title}\n </Text>\n <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {hint}\n </Text>\n </div>\n );\n}\n","/**\n * GlobalSearchFooter — keyboard-hint strip below the result list.\n * Override entirely via `slots.footer`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nconst KBD_CLASS =\n 'rounded border border-border bg-muted/40 px-1.5 py-0.5 font-mono text-xs leading-none text-muted-foreground';\n\nexport interface GlobalSearchFooterProps {\n navigateLabel: string;\n openLabel: string;\n closeLabel: string;\n /** Trailing right-aligned content (e.g. \"3 results\"). */\n trailing?: React.ReactNode;\n className?: string;\n}\n\nexport function GlobalSearchFooter({\n navigateLabel,\n openLabel,\n closeLabel,\n trailing,\n className,\n}: GlobalSearchFooterProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-between border-t border-border/60 px-4 py-2',\n className,\n )}\n >\n <span className=\"flex items-center gap-2\">\n <kbd className={KBD_CLASS}>↑↓</kbd>\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {navigateLabel}\n </Text>\n <kbd className={KBD_CLASS}>↵</kbd>\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {openLabel}\n </Text>\n <kbd className={KBD_CLASS}>esc</kbd>\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {closeLabel}\n </Text>\n </span>\n {trailing}\n </div>\n );\n}\n","/**\n * Default idle-state body — shown when the query is too short.\n * Renders consumer-supplied \"Recent\" + \"Suggestions\" sections.\n */\nimport { Clock, Search, Sparkles } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { GlobalSearchIdleSection } from '../global-search.types';\n\nexport interface GlobalSearchIdleStateProps {\n sections: ReadonlyArray<GlobalSearchIdleSection>;\n /** Optional override for the heading icon when missing on a section. */\n fallbackIcons?: { recent?: React.ElementType; suggestions?: React.ElementType };\n}\n\nexport function GlobalSearchIdleState({\n sections,\n fallbackIcons,\n}: GlobalSearchIdleStateProps) {\n return (\n <div className=\"space-y-4 px-2 py-3\">\n {sections.map((section, idx) => {\n const HeadingIcon =\n section.icon ??\n (idx === 0\n ? fallbackIcons?.recent ?? Clock\n : fallbackIcons?.suggestions ?? Sparkles);\n return (\n <div key={section.id}>\n <div className=\"flex items-center gap-2 px-3 pb-1.5\">\n <HeadingIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wider\"\n >\n {section.label}\n </Text>\n </div>\n <ul className=\"m-0 list-none space-y-0.5 p-0\">\n {section.items.map((item) => {\n const ItemIcon = item.icon ?? Search;\n return (\n <li key={item.id}>\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"default\"\n onClick={item.onSelect}\n className={cn(\n 'h-auto w-full justify-start gap-3 rounded-md px-3 py-1.5 text-left transition-colors',\n 'hover:bg-muted/50 focus-visible:bg-muted/50',\n )}\n >\n <ItemIcon\n className=\"size-3.5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <Text className=\"flex-1 truncate\">\n {item.label}\n </Text>\n </Button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * GlobalSearchInput — search row at the top of the popover.\n *\n * Just the input + clear button + optional loading spinner. Keyboard\n * navigation is handled by the consumer wiring `useGlobalSearch`'s\n * `onKeyDown` handler.\n */\nimport { Loader2, Search, X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Input } from '@/components/base/forms/fields';\n\nexport interface GlobalSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n placeholder?: string;\n clearLabel?: string;\n loading?: boolean;\n autoFocus?: boolean;\n}\n\nexport const GlobalSearchInput = React.forwardRef<HTMLInputElement, GlobalSearchInputProps>(\n function GlobalSearchInput(\n {\n value,\n onChange,\n onKeyDown,\n placeholder,\n clearLabel = 'Clear search',\n loading = false,\n autoFocus = false,\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (autoFocus) innerRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <div\n data-component=\"global-search-input\"\n data-slot=\"global-search-input\"\n className=\"global-search-input--component flex items-center gap-space-md border-b border-border px-control py-row-y\"\n >\n <Search className=\"size-icon shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <div className=\"min-w-0 flex-1\">\n <Input\n ref={innerRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n aria-label={placeholder}\n autoComplete=\"off\"\n spellCheck={false}\n size=\"small\"\n className=\"h-auto border-0 bg-transparent px-0 py-0 text-sm shadow-none focus-visible:border-transparent focus-visible:ring-0\"\n />\n </div>\n {loading && (\n <Loader2\n className=\"size-icon shrink-0 animate-spin text-muted-foreground\"\n aria-hidden=\"true\"\n />\n )}\n {!loading && !!value && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-small\"\n onClick={() => onChange('')}\n aria-label={clearLabel}\n className=\"size-control-sm rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <X className=\"size-icon-sm\" />\n </Button>\n )}\n </div>\n );\n },\n);\n","/**\n * Default tone palettes for thumbnails and avatars.\n *\n * Consumers can override per-call via `slots.toneBg` / `slots.toneAvatar`.\n */\nimport type { GlobalSearchTone } from '../global-search.types';\n\nexport const DEFAULT_TONE_BG: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/5 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/10 text-info',\n destructive: 'bg-destructive/10 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n\nexport const DEFAULT_TONE_AVATAR: Record<GlobalSearchTone, string> = {\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/20 text-warning-foreground',\n info: 'bg-info/10 text-info',\n destructive: 'bg-destructive/10 text-destructive',\n default: 'bg-muted text-muted-foreground',\n};\n","/**\n * GlobalSearchResultRow — single rich result card.\n *\n * Layout: [thumbnail] [title + status pill / muted secondary line / meta] [right-value column] [chevron].\n *\n * Exported as a partial so consumers can:\n * 1. Override an individual row via `slots.renderResult` and reuse this component for the others.\n * 2. Use it standalone in custom search UIs that don't need the full GlobalSearch shell.\n */\nimport { ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/base/display/avatar';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n GlobalSearchResult,\n GlobalSearchTone,\n} from '../global-search.types';\nimport {\n DEFAULT_TONE_AVATAR,\n DEFAULT_TONE_BG,\n} from './tone-palettes';\n\nexport interface GlobalSearchResultRowProps<TGroup extends string = string> {\n result: GlobalSearchResult<TGroup>;\n /** Highlighted via keyboard nav. */\n isActive?: boolean;\n query?: string;\n onSelect?: () => void;\n onMouseEnter?: () => void;\n /** Override tone palette. Keys not provided fall back to defaults. */\n toneBg?: Partial<Record<GlobalSearchTone, string>>;\n toneAvatar?: Partial<Record<GlobalSearchTone, string>>;\n className?: string;\n}\n\nfunction highlightMatch(text: string, query: string | undefined): React.ReactNode {\n const q = (query ?? '').trim();\n if (!q) return text;\n const lower = text.toLowerCase();\n const ql = q.toLowerCase();\n const i = lower.indexOf(ql);\n if (i < 0) return text;\n return (\n <>\n {text.slice(0, i)}\n <mark className=\"rounded-sm bg-warning/40 px-0.5 text-foreground\">\n {text.slice(i, i + q.length)}\n </mark>\n {text.slice(i + q.length)}\n </>\n );\n}\n\nexport function GlobalSearchResultRow<TGroup extends string = string>({\n result,\n isActive = false,\n query = '',\n onSelect,\n onMouseEnter,\n toneBg,\n toneAvatar,\n className,\n}: GlobalSearchResultRowProps<TGroup>) {\n const ThumbIcon = result.thumbnail?.icon;\n const bg = { ...DEFAULT_TONE_BG, ...toneBg };\n const av = { ...DEFAULT_TONE_AVATAR, ...toneAvatar };\n\n return (\n <Button\n type=\"button\"\n data-component=\"global-search-result-row\"\n data-slot=\"global-search-result-row\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onMouseEnter={onMouseEnter}\n onClick={onSelect}\n className={cn(\n 'group/row relative h-auto w-full justify-start gap-space-lg rounded-md px-row-x py-row-y text-left transition-colors',\n 'global-search-result-row--component',\n isActive ? 'bg-muted/60' : 'hover:bg-muted/40',\n className,\n )}\n >\n {/* Thumbnail / Avatar */}\n <div className=\"flex shrink-0 items-center\">\n {result.avatar ? (\n <Avatar className={cn('size-avatar-sm', av[result.avatar.tone ?? 'default'])}>\n {result.avatar.src && (\n <AvatarImage src={result.avatar.src} alt={result.title} />\n )}\n <AvatarFallback\n className={cn('text-xs font-semibold', av[result.avatar.tone ?? 'default'])}\n >\n {result.avatar.initials}\n </AvatarFallback>\n </Avatar>\n ) : ThumbIcon ? (\n <span\n className={cn(\n 'inline-flex size-avatar-sm items-center justify-center rounded-md',\n bg[result.thumbnail?.tone ?? 'default'],\n )}\n >\n <ThumbIcon className=\"size-icon\" aria-hidden=\"true\" />\n </span>\n ) : null}\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-space-sm leading-tight\">\n <Text tag=\"span\" size=\"inherit\" weight=\"semibold\" className=\"truncate\">\n {highlightMatch(result.title, query)}\n </Text>\n {!!result.badge && (\n <Badge\n variant={\n result.badge.tone === 'destructive'\n ? 'error'\n : result.badge.tone\n }\n >\n {result.badge.label}\n </Badge>\n )}\n </div>\n {(() => {\n const pieces: Array<{ key: string; node: React.ReactNode }> = [];\n if (result.subtitle)\n pieces.push({\n key: 'subtitle',\n node: <span>{highlightMatch(result.subtitle, query)}</span>,\n });\n result.meta?.forEach((m, i) => {\n const Icon = m.icon;\n pieces.push({\n key: `m-${i}`,\n node: (\n <span\n className={cn(\n 'inline-flex items-center gap-1',\n m.mono && 'font-mono tabular-nums',\n )}\n >\n {!!Icon && <Icon className=\"size-3 shrink-0\" aria-hidden=\"true\" />}\n {m.label}\n </span>\n ),\n });\n });\n if (result.timestamp)\n pieces.push({\n key: 'ts',\n node: <span className=\"tabular-nums\">{result.timestamp}</span>,\n });\n result.tags?.forEach((tag) =>\n pieces.push({ key: `t-${tag}`, node: <span>{tag}</span> }),\n );\n if (result.rightValue) {\n pieces.push({\n key: 'rv',\n node: (\n <span className=\"font-medium tabular-nums text-foreground\">\n {result.rightValue}\n {!!result.rightLabel && (\n <span className=\"ml-1 font-normal text-muted-foreground\">\n {result.rightLabel.toLowerCase()}\n </span>\n )}\n </span>\n ),\n });\n }\n if (pieces.length === 0) return null;\n return (\n <Text size=\"inherit\" type=\"secondary\" className=\"mt-space-2xs truncate text-xs\">\n {pieces.map((p, i) => (\n <span key={p.key}>\n {i > 0 && (\n <span\n aria-hidden=\"true\"\n className=\"mx-1.5 text-muted-foreground/60\"\n >\n ·\n </span>\n )}\n {p.node}\n </span>\n ))}\n </Text>\n );\n })()}\n </div>\n\n {/* Right value column — only when value/label set */}\n {!!(result.rightValue || result.rightLabel) && (\n <div className=\"hidden shrink-0 items-center self-stretch border-l border-border/60 pl-row-x md:flex\">\n <div className=\"flex flex-col items-end gap-0 text-right leading-tight\">\n {!!result.rightValue && (\n <Text\n tag=\"span\"\n size=\"inherit\"\n weight=\"semibold\"\n className=\"whitespace-nowrap tabular-nums\"\n >\n {result.rightValue}\n </Text>\n )}\n {!!result.rightLabel && (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"mt-0.5 whitespace-nowrap\"\n >\n {result.rightLabel}\n </Text>\n )}\n </div>\n </div>\n )}\n\n {/* Trailing chevron */}\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex size-control-sm shrink-0 items-center justify-center rounded-md transition-all',\n isActive\n ? 'bg-foreground text-background opacity-100'\n : 'text-muted-foreground opacity-0 group-hover/row:opacity-100',\n )}\n >\n <ArrowRight className=\"size-3.5\" />\n </span>\n </Button>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-horizontal/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","/**\n * GlobalSearchTabs — segmented filter strip above the result list.\n *\n * Wraps `base/navigation/tabs` for app-consistent styling and adds a\n * subtle count pill next to each label.\n */\nimport { Tabs, TabsList, TabsTrigger } from '@/components/base/navigation/tabs';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface GlobalSearchTabsProps<TGroup extends string = string> {\n /** Currently-selected tab. */\n value: 'all' | TGroup;\n onValueChange: (value: 'all' | TGroup) => void;\n tabs: ReadonlyArray<{ value: 'all' | TGroup; label: string }>;\n counts: Record<string, number>;\n}\n\nexport function GlobalSearchTabs<TGroup extends string = string>({\n value,\n onValueChange,\n tabs,\n counts,\n}: GlobalSearchTabsProps<TGroup>) {\n return (\n <div className=\"global-search-tabs--component border-b border-border/60 px-3 py-2\">\n <div className=\"global-search-tabs--scroller -mx-1 overflow-x-auto px-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n <Tabs\n value={value as string}\n onValueChange={(v) => onValueChange(v as 'all' | TGroup)}\n className=\"min-w-max\"\n >\n <TabsList className=\"global-search-tabs--list h-8 w-max min-w-max\">\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n const count = counts[tab.value as string] ?? 0;\n return (\n <TabsTrigger\n key={tab.value as string}\n value={tab.value as string}\n className=\"global-search-tabs--trigger shrink-0 gap-1.5 px-2.5 text-xs\"\n >\n <span>{tab.label}</span>\n <Text\n tag=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className={cn(\n 'global-search-tabs--count rounded px-1 py-0 tabular-nums',\n isActive\n ? 'bg-muted text-muted-foreground'\n : 'bg-transparent text-muted-foreground/70',\n )}\n >\n {count}\n </Text>\n </TabsTrigger>\n );\n })}\n </TabsList>\n </Tabs>\n </div>\n </div>\n );\n}\n","/**\n * GlobalSearch — framework-agnostic spotlight overlay for app-wide search.\n *\n * Composition seams:\n * - `strings` — deep-partial override of the default copy\n * - `slots` — replace any region (input, tabs, idle, empty, loading, footer)\n * - `slots.renderResult` — full per-row override\n * - `slots.toneBg / toneAvatar` — replace tone palettes\n *\n * Headless usage:\n * - Call `useGlobalSearch({ results, query })` directly to drive a\n * completely custom UI against the same selection state machine.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Routing is up to the consumer\n * via `onResultSelect`. Strings live in the `strings` prop.\n * - The library no longer ships `adapters/$framework/`. Consumers map\n * their router (Inertia, Tanstack Router, RR7, Next, …) to\n * `onResultSelect(result)` directly at the call site.\n */\nimport * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultGlobalSearchStrings,\n interpolateString,\n type GlobalSearchStrings,\n} from './global-search.strings';\nimport type {\n GlobalSearchIdleSection,\n GlobalSearchResult,\n GlobalSearchSlots,\n GlobalSearchTab,\n} from './global-search.types';\nimport { useGlobalSearch } from './hooks/use-global-search';\nimport {\n GlobalSearchEmptyState,\n GlobalSearchFooter,\n GlobalSearchIdleState,\n GlobalSearchInput,\n GlobalSearchResultRow,\n GlobalSearchTabs,\n} from './partials';\n\nexport interface GlobalSearchProps<TGroup extends string = string> {\n /** Result list. The component renders these grouped by `result.group`. */\n results?: ReadonlyArray<GlobalSearchResult<TGroup>>;\n /** Current query value (controlled). */\n query: string;\n /** Query change callback. */\n onQueryChange: (q: string) => void;\n /** Activation callback — fires on row click or Enter. */\n onResultSelect?: (result: GlobalSearchResult<TGroup>) => void;\n /** Escape-key callback. */\n onClose?: () => void;\n /** Loading flag — switches the input spinner and renders the loading slot. */\n loading?: boolean;\n /** Idle-state sections (Recent / Suggestions / …). */\n idleSections?: ReadonlyArray<GlobalSearchIdleSection>;\n /** Override default group labels in the tab strip. */\n groupLabels?: Partial<Record<TGroup, string>>;\n /** Auto-focus the input on mount. */\n autoFocus?: boolean;\n /** Replace any portion of the default copy. */\n strings?: StringsProp<GlobalSearchStrings>;\n /** Replace any portion of the layout. */\n slots?: GlobalSearchSlots<TGroup>;\n /** Custom tab list — overrides the auto-generated `All + groups`. */\n tabs?: ReadonlyArray<GlobalSearchTab<TGroup>>;\n /** Wrapper className. */\n className?: string;\n}\n\nexport function GlobalSearch<TGroup extends string = string>({\n results = [],\n query,\n onQueryChange,\n onResultSelect,\n onClose,\n loading = false,\n idleSections,\n groupLabels,\n autoFocus = false,\n strings: stringsProp,\n slots,\n tabs,\n className,\n}: GlobalSearchProps<TGroup>) {\n const strings = useStrings(defaultGlobalSearchStrings, stringsProp);\n\n const search = useGlobalSearch<TGroup>({\n results,\n query,\n onResultSelect,\n onClose,\n });\n\n const isEmpty =\n !loading && query.trim().length > 1 && results.length === 0;\n const isIdle = !loading && query.trim().length <= 1;\n\n const resolvedTabs = React.useMemo<\n ReadonlyArray<GlobalSearchTab<TGroup>>\n >(() => {\n if (tabs) return tabs;\n const groupKeys = Object.keys(search.grouped) as TGroup[];\n return [\n { value: 'all', label: strings.tabAll },\n ...groupKeys.map((key) => ({\n value: key,\n label: groupLabels?.[key] ?? key,\n })),\n ];\n }, [tabs, search.grouped, strings.tabAll, groupLabels]);\n\n return (\n <div\n data-component=\"global-search\"\n data-slot=\"global-search\"\n className={cn('global-search--component', \n 'overflow-hidden rounded-xl border border-border bg-card shadow-2xl',\n className,\n )}\n >\n {slots?.input ?? (\n <GlobalSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={search.onKeyDown}\n placeholder={strings.placeholder}\n clearLabel={strings.clear}\n loading={loading}\n autoFocus={autoFocus}\n />\n )}\n\n {!loading && results.length > 0 && (\n slots?.tabs ?? (\n <GlobalSearchTabs<TGroup>\n value={search.activeTab}\n onValueChange={search.setActiveTab}\n tabs={resolvedTabs}\n counts={search.tabCounts}\n />\n )\n )}\n\n <div className=\"max-h-[520px] overflow-y-auto\">\n {!!isIdle && (slots?.idle ?? (\n idleSections && idleSections.length > 0 ? (\n <GlobalSearchIdleState sections={idleSections} />\n ) : null\n ))}\n\n {!!loading && (slots?.loading ?? (\n <div className=\"flex items-center justify-center px-6 py-12\">\n <Text type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ))}\n\n {!!isEmpty && (slots?.empty ?? (\n <GlobalSearchEmptyState\n title={interpolateString(strings.emptyTitle, { query })}\n hint={strings.emptyHint}\n />\n ))}\n\n {!loading && results.length > 0 && (\n <div className=\"px-space-md py-space-xs\">\n {Object.entries(search.visibleGrouped).map(\n ([groupKey, items], gi) => (\n <div\n key={groupKey}\n className={cn(\n 'pb-space-xs last:pb-0',\n gi > 0 && 'mt-space-md pt-space-xs',\n )}\n >\n <div className=\"flex items-center justify-between px-row-x pb-space-2xs\">\n <Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n {groupLabels?.[groupKey as TGroup] ?? groupKey}\n </Text>\n {search.activeTab === 'all' && items.length > 0 && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"small\"\n onClick={() =>\n search.setActiveTab(groupKey as TGroup)\n }\n className=\"h-auto rounded px-1 py-0 text-primary transition-colors hover:underline\"\n >\n <Text\n tag=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className=\"text-primary\"\n >\n {strings.seeAll}\n </Text>\n </Button>\n )}\n </div>\n <ul className=\"m-0 list-none space-y-0.5 p-0\">\n {items.map((item) => {\n const isActive =\n search.flat[search.activeIdx]?.id === item.id;\n const ctx = {\n isActive,\n query,\n onSelect: () => onResultSelect?.(item),\n };\n const node = slots?.renderResult ? (\n slots.renderResult(item, ctx)\n ) : (\n <GlobalSearchResultRow<TGroup>\n result={item}\n isActive={isActive}\n query={query}\n onSelect={ctx.onSelect}\n onMouseEnter={() =>\n search.setActiveById(item.id)\n }\n toneBg={slots?.toneBg}\n toneAvatar={slots?.toneAvatar}\n />\n );\n return <li key={item.id}>{node}</li>;\n })}\n </ul>\n </div>\n ),\n )}\n </div>\n )}\n </div>\n\n {slots?.footer ?? (\n <GlobalSearchFooter\n navigateLabel={strings.footerNavigate}\n openLabel={strings.footerOpen}\n closeLabel={strings.footerClose}\n trailing={\n !isIdle && !isEmpty && results.length > 0 ? (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"tabular-nums\"\n >\n {interpolateString(strings.resultsCount, {\n count: results.length,\n })}\n </Text>\n ) : undefined\n }\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-BMiPFJIb.cjs"),r=require("../../../_shared/typography-GtkgK9QX.cjs"),i=require("../../../_shared/popover-menu-DXVN0bvj.cjs");let a=require("react"),o=require("react/jsx-runtime"),s=require("lucide-react"),c=require("@dnd-kit/core"),l=require("@dnd-kit/sortable"),u=require("@dnd-kit/utilities");function d({value:e,onValueChange:t,getItemValue:n,onItemMove:r}){let i=(0,a.useCallback)(t=>{for(let[r,i]of Object.entries(e)){let e=i.findIndex(e=>n(e)===t);if(e>=0)return{columnId:r,index:e,item:i[e]}}},[e,n]),o=(0,a.useCallback)(({itemId:n,toColumnId:a,toIndex:o})=>{let s=i(n);if(!s||!Object.prototype.hasOwnProperty.call(e,a))return;let{columnId:c,index:l,item:u}=s,d=e[a],f=o===void 0?d.length:Math.max(0,Math.min(o,d.length));if(c===a&&l===f)return;let p={...e},m=[...p[c]];m.splice(l,1),p[c]=m;let h=[...c===a?m:p[a]],g=f;c===a&&l<f&&(g=Math.max(0,f-1)),h.splice(g,0,u),p[a]=h,t(p),r?.({item:u,itemId:n,from:{columnId:c,index:l},to:{columnId:a,index:g}})},[e,i,t,r]);return(0,a.useMemo)(()=>({findItem:i,move:o}),[i,o])}var f=(0,a.createContext)(null),p=f.Provider;function m(){let e=(0,a.useContext)(f);if(!e)throw Error(`Kanban subcomponents must be rendered inside a <Kanban> root.`);return e}var h=(0,a.createContext)(null),g=h.Provider;function _(){let e=(0,a.useContext)(h);if(!e)throw Error(`<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.`);return e}var v={announceDragStart:`Picked up item {name}.`,announceDragMove:`Moving {name} from {from} to {to}.`,announceDragEnd:`Dropped {name} into {to}.`,announceDragCancel:`Cancelled drag of {name}.`,dragHandleAria:`Drag handle`,boardAria:`Kanban board`,itemActionsAria:`Item actions`};function y(e,t){return Object.entries(t).reduce((e,[t,n])=>e.replace(RegExp(`\\{${t}\\}`,`g`),n),e)}function b({value:n,onValueChange:r,getItemValue:i,onItemMove:s,itemActions:l,onItemClick:u,strings:f,className:m,children:h}){let g=e.useStrings(v,f),{findItem:_,move:y}=d({value:n,onValueChange:r,getItemValue:i,onItemMove:s}),[b,x]=(0,a.useState)(null),S=(0,c.useSensors)((0,c.useSensor)(c.PointerSensor,{activationConstraint:{distance:6}})),C=(0,a.useMemo)(()=>b?_(b)?.item??null:null,[b,_]),w=(0,a.useCallback)(e=>{x(String(e.active.id))},[]),T=(0,a.useCallback)(e=>{x(null);let{active:t,over:r}=e;if(!r)return;t.data.current;let i=r.data.current,a=String(r.id),o=i?.columnId??(Object.prototype.hasOwnProperty.call(n,a)?a:void 0);if(!o)return;let s=i?.columnId===void 0?n[o].length:i.index;y({itemId:String(t.id),toColumnId:o,toIndex:s})},[y,n]);return(0,o.jsx)(p,{value:(0,a.useMemo)(()=>({value:n,onValueChange:r,getItemValue:i,activeId:b,activeItem:C,findItem:_,itemActions:l,onItemClick:u}),[n,r,i,b,C,_,l,u]),children:(0,o.jsx)(c.DndContext,{sensors:S,onDragStart:w,onDragEnd:T,onDragCancel:()=>x(null),accessibility:{announcements:{onDragStart({active:e}){return g.announceDragStart.replace(`{name}`,String(e.id))},onDragOver({active:e,over:t}){if(t)return g.announceDragMove.replace(`{name}`,String(e.id)).replace(`{from}`,``).replace(`{to}`,String(t.id))},onDragEnd({active:e,over:t}){return g.announceDragEnd.replace(`{name}`,String(e.id)).replace(`{to}`,t?String(t.id):``)},onDragCancel({active:e}){return g.announceDragCancel.replace(`{name}`,String(e.id))}}},children:(0,o.jsx)(`div`,{role:`application`,"aria-label":g.boardAria,className:t.cn(`kanban--component`,`w-full`,m),children:h})})})}b.displayName=`Kanban`;function x({className:e,style:n,children:r}){return(0,o.jsx)(`div`,{className:t.cn(`grid w-full gap-3`,e),style:n,children:r})}x.displayName=`KanbanBoard`;function S({value:e,className:n,children:r}){let{setNodeRef:i,isOver:a}=(0,c.useDroppable)({id:e});return(0,o.jsx)(`div`,{ref:i,"data-slot":`kanban-column`,"data-column-id":e,"data-over":a?`true`:void 0,className:t.cn(`flex min-w-0 flex-col`,n),children:r})}S.displayName=`KanbanColumn`;function C({value:e,className:n,children:r}){let i=m();return(0,o.jsx)(l.SortableContext,{items:(i.value[e]??[]).map(e=>i.getItemValue(e)),strategy:l.verticalListSortingStrategy,children:(0,o.jsx)(`div`,{"data-slot":`kanban-column-content`,className:t.cn(`flex flex-col gap-2`,n),children:r})})}C.displayName=`KanbanColumnContent`;function w({value:e,className:n,disabled:r=!1,onClick:i,children:s}){let c=m(),d=c.findItem(e),{attributes:f,listeners:p,setNodeRef:h,setActivatorNodeRef:_,transform:v,transition:y,isDragging:b}=(0,l.useSortable)({id:e,disabled:r,data:{columnId:d?.columnId,index:d?.index}}),x={transform:u.CSS.Transform.toString(v),transition:y,opacity:b?.4:void 0},[S,C]=(0,a.useState)(0),w=S>0,T=(0,a.useCallback)(()=>(C(e=>e+1),()=>C(e=>Math.max(0,e-1))),[]),E=(0,a.useMemo)(()=>({listeners:p,attributes:f,setActivatorNodeRef:_,registerHandle:T,itemId:e,item:d?.item??null}),[p,f,_,T,e,d?.item]),D=c.onItemClick,O=(0,a.useCallback)(e=>{if(!e.target?.closest(`[data-stop-item-click]`)){if(i){i();return}D&&d?.item!==void 0&&D(d.item)}},[i,D,d?.item]),k=!!(i||D);return(0,o.jsx)(g,{value:E,children:(0,o.jsx)(`div`,{ref:h,style:x,"data-slot":`kanban-item`,"data-dragging":b?`true`:void 0,className:t.cn(`touch-none select-none`,k&&`cursor-pointer`,n),onClick:k?O:void 0,...w?{}:f,...w?{}:p,children:s})})}w.displayName=`KanbanItem`;var T=(0,a.forwardRef)(function({className:e,children:r},i){let{setActivatorNodeRef:s,listeners:c,attributes:l,registerHandle:u}=_();return(0,a.useEffect)(()=>u(),[u]),(0,o.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,ref:(0,a.useCallback)(e=>{s(e),typeof i==`function`?i(e):i&&(i.current=e)},[s,i]),"data-slot":`kanban-item-handle`,"data-stop-item-click":!0,onClick:e=>e.stopPropagation(),className:t.cn(`cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing`,e),...l,...c,children:r})});T.displayName=`KanbanItemHandle`;function E({className:c,icon:l,ariaLabel:u}){let[d,f]=(0,a.useState)(!1),p=m(),h=_(),g=e.useStrings(v,void 0),y=h.item,b=p.itemActions,x=(0,a.useMemo)(()=>!b||y==null?[]:(typeof b==`function`?b(y):b).filter(e=>e.isVisible?e.isVisible(y):!0),[b,y]);return x.length===0?null:(0,o.jsx)(i.t,{open:d,onOpenChange:f,search:!1,contentClassName:`w-44`,trigger:(0,o.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"data-slot":`kanban-item-actions-trigger`,"data-stop-item-click":!0,"aria-label":u??g.itemActionsAria,onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),className:t.cn(`size-7 rounded-md p-0`,`text-muted-foreground/70 hover:bg-muted hover:text-foreground`,`transition-colors`,c),children:l??(0,o.jsx)(s.MoreHorizontal,{className:`size-4`,"aria-hidden":`true`})}),items:x.map(e=>({value:e.id,label:e.label,icon:e.icon,disabled:e.isDisabled?.(y)??!1,data:e})),renderItem:e=>{let n=e.data,i=n.variant===`destructive`;return(0,o.jsxs)(o.Fragment,{children:[!!n.icon&&(0,o.jsx)(`span`,{className:t.cn(`shrink-0`,i?`text-destructive`:`text-muted-foreground`),children:n.icon}),(0,o.jsx)(r.s,{tag:`span`,size:`xs`,className:t.cn(`truncate`,i&&`text-destructive`),children:n.label})]})},onSelect:e=>{e.data?.onSelect(y),f(!1)}})}E.displayName=`KanbanItemActions`;function D({className:e,render:n}){let{activeItem:i,activeId:a,findItem:s}=m();return(0,o.jsx)(c.DragOverlay,{children:a?n?n({item:i,columnId:s(a)?.columnId??null}):(0,o.jsx)(`div`,{className:t.cn(`pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg`,e),children:(0,o.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`text-primary/80`,children:a})}):null})}D.displayName=`KanbanOverlay`,exports.Kanban=b,exports.KanbanBoard=x,exports.KanbanColumn=S,exports.KanbanColumnContent=C,exports.KanbanItem=w,exports.KanbanItemActions=E,exports.KanbanItemHandle=T,exports.KanbanOverlay=D,exports.defaultKanbanStrings=v,exports.interpolateKanbanString=y,exports.useKanban=d;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-CfQtOuBK.cjs"),r=require("../../../_shared/typography-CWEobAJV.cjs"),i=require("../../../_shared/popover-menu-D_t6rCvN.cjs");let a=require("react"),o=require("react/jsx-runtime"),s=require("lucide-react"),c=require("@dnd-kit/core"),l=require("@dnd-kit/sortable"),u=require("@dnd-kit/utilities");function d({value:e,onValueChange:t,getItemValue:n,onItemMove:r}){let i=(0,a.useCallback)(t=>{for(let[r,i]of Object.entries(e)){let e=i.findIndex(e=>n(e)===t);if(e>=0)return{columnId:r,index:e,item:i[e]}}},[e,n]),o=(0,a.useCallback)(({itemId:n,toColumnId:a,toIndex:o})=>{let s=i(n);if(!s||!Object.prototype.hasOwnProperty.call(e,a))return;let{columnId:c,index:l,item:u}=s,d=e[a],f=o===void 0?d.length:Math.max(0,Math.min(o,d.length));if(c===a&&l===f)return;let p={...e},m=[...p[c]];m.splice(l,1),p[c]=m;let h=[...c===a?m:p[a]],g=f;c===a&&l<f&&(g=Math.max(0,f-1)),h.splice(g,0,u),p[a]=h,t(p),r?.({item:u,itemId:n,from:{columnId:c,index:l},to:{columnId:a,index:g}})},[e,i,t,r]);return(0,a.useMemo)(()=>({findItem:i,move:o}),[i,o])}var f=(0,a.createContext)(null),p=f.Provider;function m(){let e=(0,a.useContext)(f);if(!e)throw Error(`Kanban subcomponents must be rendered inside a <Kanban> root.`);return e}var h=(0,a.createContext)(null),g=h.Provider;function _(){let e=(0,a.useContext)(h);if(!e)throw Error(`<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.`);return e}var v={announceDragStart:`Picked up item {name}.`,announceDragMove:`Moving {name} from {from} to {to}.`,announceDragEnd:`Dropped {name} into {to}.`,announceDragCancel:`Cancelled drag of {name}.`,dragHandleAria:`Drag handle`,boardAria:`Kanban board`,itemActionsAria:`Item actions`};function y(e,t){return Object.entries(t).reduce((e,[t,n])=>e.replace(RegExp(`\\{${t}\\}`,`g`),n),e)}function b({value:n,onValueChange:r,getItemValue:i,onItemMove:s,itemActions:l,onItemClick:u,strings:f,className:m,children:h}){let g=e.useStrings(v,f),{findItem:_,move:y}=d({value:n,onValueChange:r,getItemValue:i,onItemMove:s}),[b,x]=(0,a.useState)(null),S=(0,c.useSensors)((0,c.useSensor)(c.PointerSensor,{activationConstraint:{distance:6}})),C=(0,a.useMemo)(()=>b?_(b)?.item??null:null,[b,_]),w=(0,a.useCallback)(e=>{x(String(e.active.id))},[]),T=(0,a.useCallback)(e=>{x(null);let{active:t,over:r}=e;if(!r)return;t.data.current;let i=r.data.current,a=String(r.id),o=i?.columnId??(Object.prototype.hasOwnProperty.call(n,a)?a:void 0);if(!o)return;let s=i?.columnId===void 0?n[o].length:i.index;y({itemId:String(t.id),toColumnId:o,toIndex:s})},[y,n]);return(0,o.jsx)(p,{value:(0,a.useMemo)(()=>({value:n,onValueChange:r,getItemValue:i,activeId:b,activeItem:C,findItem:_,itemActions:l,onItemClick:u}),[n,r,i,b,C,_,l,u]),children:(0,o.jsx)(c.DndContext,{sensors:S,onDragStart:w,onDragEnd:T,onDragCancel:()=>x(null),accessibility:{announcements:{onDragStart({active:e}){return g.announceDragStart.replace(`{name}`,String(e.id))},onDragOver({active:e,over:t}){if(t)return g.announceDragMove.replace(`{name}`,String(e.id)).replace(`{from}`,``).replace(`{to}`,String(t.id))},onDragEnd({active:e,over:t}){return g.announceDragEnd.replace(`{name}`,String(e.id)).replace(`{to}`,t?String(t.id):``)},onDragCancel({active:e}){return g.announceDragCancel.replace(`{name}`,String(e.id))}}},children:(0,o.jsx)(`div`,{role:`application`,"aria-label":g.boardAria,className:t.cn(`kanban--component`,`w-full`,m),children:h})})})}b.displayName=`Kanban`;function x({className:e,style:n,children:r}){return(0,o.jsx)(`div`,{className:t.cn(`grid w-full gap-3`,e),style:n,children:r})}x.displayName=`KanbanBoard`;function S({value:e,className:n,children:r}){let{setNodeRef:i,isOver:a}=(0,c.useDroppable)({id:e});return(0,o.jsx)(`div`,{ref:i,"data-slot":`kanban-column`,"data-column-id":e,"data-over":a?`true`:void 0,className:t.cn(`flex min-w-0 flex-col`,n),children:r})}S.displayName=`KanbanColumn`;function C({value:e,className:n,children:r}){let i=m();return(0,o.jsx)(l.SortableContext,{items:(i.value[e]??[]).map(e=>i.getItemValue(e)),strategy:l.verticalListSortingStrategy,children:(0,o.jsx)(`div`,{"data-slot":`kanban-column-content`,className:t.cn(`flex flex-col gap-2`,n),children:r})})}C.displayName=`KanbanColumnContent`;function w({value:e,className:n,disabled:r=!1,onClick:i,children:s}){let c=m(),d=c.findItem(e),{attributes:f,listeners:p,setNodeRef:h,setActivatorNodeRef:_,transform:v,transition:y,isDragging:b}=(0,l.useSortable)({id:e,disabled:r,data:{columnId:d?.columnId,index:d?.index}}),x={transform:u.CSS.Transform.toString(v),transition:y,opacity:b?.4:void 0},[S,C]=(0,a.useState)(0),w=S>0,T=(0,a.useCallback)(()=>(C(e=>e+1),()=>C(e=>Math.max(0,e-1))),[]),E=(0,a.useMemo)(()=>({listeners:p,attributes:f,setActivatorNodeRef:_,registerHandle:T,itemId:e,item:d?.item??null}),[p,f,_,T,e,d?.item]),D=c.onItemClick,O=(0,a.useCallback)(e=>{if(!e.target?.closest(`[data-stop-item-click]`)){if(i){i();return}D&&d?.item!==void 0&&D(d.item)}},[i,D,d?.item]),k=!!(i||D);return(0,o.jsx)(g,{value:E,children:(0,o.jsx)(`div`,{ref:h,style:x,"data-slot":`kanban-item`,"data-dragging":b?`true`:void 0,className:t.cn(`touch-none select-none`,k&&`cursor-pointer`,n),onClick:k?O:void 0,...w?{}:f,...w?{}:p,children:s})})}w.displayName=`KanbanItem`;var T=(0,a.forwardRef)(function({className:e,children:r},i){let{setActivatorNodeRef:s,listeners:c,attributes:l,registerHandle:u}=_();return(0,a.useEffect)(()=>u(),[u]),(0,o.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,ref:(0,a.useCallback)(e=>{s(e),typeof i==`function`?i(e):i&&(i.current=e)},[s,i]),"data-slot":`kanban-item-handle`,"data-stop-item-click":!0,onClick:e=>e.stopPropagation(),className:t.cn(`cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing`,e),...l,...c,children:r})});T.displayName=`KanbanItemHandle`;function E({className:c,icon:l,ariaLabel:u}){let[d,f]=(0,a.useState)(!1),p=m(),h=_(),g=e.useStrings(v,void 0),y=h.item,b=p.itemActions,x=(0,a.useMemo)(()=>!b||y==null?[]:(typeof b==`function`?b(y):b).filter(e=>e.isVisible?e.isVisible(y):!0),[b,y]);return x.length===0?null:(0,o.jsx)(i.t,{open:d,onOpenChange:f,search:!1,contentClassName:`w-44`,trigger:(0,o.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"data-slot":`kanban-item-actions-trigger`,"data-stop-item-click":!0,"aria-label":u??g.itemActionsAria,onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),className:t.cn(`size-7 rounded-md p-0`,`text-muted-foreground/70 hover:bg-muted hover:text-foreground`,`transition-colors`,c),children:l??(0,o.jsx)(s.MoreHorizontal,{className:`size-4`,"aria-hidden":`true`})}),items:x.map(e=>({value:e.id,label:e.label,icon:e.icon,disabled:e.isDisabled?.(y)??!1,data:e})),renderItem:e=>{let n=e.data,i=n.variant===`destructive`;return(0,o.jsxs)(o.Fragment,{children:[!!n.icon&&(0,o.jsx)(`span`,{className:t.cn(`shrink-0`,i?`text-destructive`:`text-muted-foreground`),children:n.icon}),(0,o.jsx)(r.s,{tag:`span`,size:`xs`,className:t.cn(`truncate`,i&&`text-destructive`),children:n.label})]})},onSelect:e=>{e.data?.onSelect(y),f(!1)}})}E.displayName=`KanbanItemActions`;function D({className:e,render:n}){let{activeItem:i,activeId:a,findItem:s}=m();return(0,o.jsx)(c.DragOverlay,{children:a?n?n({item:i,columnId:s(a)?.columnId??null}):(0,o.jsx)(`div`,{className:t.cn(`pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg`,e),children:(0,o.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`text-primary/80`,children:a})}):null})}D.displayName=`KanbanOverlay`,exports.Kanban=b,exports.KanbanBoard=x,exports.KanbanColumn=S,exports.KanbanColumnContent=C,exports.KanbanItem=w,exports.KanbanItemActions=E,exports.KanbanItemHandle=T,exports.KanbanOverlay=D,exports.defaultKanbanStrings=v,exports.interpolateKanbanString=y,exports.useKanban=d;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,8 @@
1
1
  import { useStrings as e } from "../../../lib/strings.js";
2
2
  import { cn as t } from "../../../lib/utils.js";
3
- import { t as n } from "../../../_shared/button-vv59_uS_.js";
4
- import { s as r } from "../../../_shared/typography-CzFVA1w1.js";
5
- import { t as i } from "../../../_shared/popover-menu-17Dxn25O.js";
3
+ import { t as n } from "../../../_shared/button-Be2ayMxF.js";
4
+ import { s as r } from "../../../_shared/typography-5bLhAYaK.js";
5
+ import { t as i } from "../../../_shared/popover-menu-f2O6R_27.js";
6
6
  import { createContext as a, forwardRef as o, useCallback as s, useContext as c, useEffect as l, useMemo as u, useState as d } from "react";
7
7
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
8
8
  import { MoreHorizontal as h } from "lucide-react";
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-BMiPFJIb.cjs"),r=require("../../../_shared/typography-GtkgK9QX.cjs"),i=require("../../../_shared/overlays-Dn2bt3CL.cjs"),a=require("../../../_shared/badge-B8xGFpfM.cjs"),o=require("../../../_shared/alert-Dmhtbmpg.cjs"),s=require("../../../_shared/input-DV3g7Fm5.cjs"),c=require("../../../_shared/forms-D-SNQmtB.cjs"),l=require("../../../_shared/display-CRQjSjgB.cjs");let u=require("react"),d=require("react/jsx-runtime"),f=require("lucide-react"),p=require("react-dom");var m={title:`Add media`,description:`Pick from the library, or upload new files.`,close:`Close media library`,tabs:{library:`Library`,upload:`Upload`},searchPlaceholder:`Search by name or tag...`,clearSearch:`Clear search`,typeFilterLabel:`Type`,collectionFilterLabel:`Collection`,sortLabel:`Sort`,viewLabel:`View`,allTypes:`All`,images:`Images`,videos:`Videos`,files:`Files`,allCollections:`All collections`,sortNewest:`Newest`,sortName:`Name`,sortSize:`Size`,sortUsage:`Most used`,gridView:`Grid view`,tableView:`Table view`,countAll:`{count} items`,countFiltered:`{count} of {total} items`,emptyLibraryTitle:`Library is empty`,emptyLibraryDescription:`Upload images or videos to start building the library.`,emptyFilteredTitle:`No media matches`,emptyFilteredDescription:`Try a different search term, or clear the filters.`,clearFilters:`Clear filters`,uploadMedia:`Upload media`,loading:`Loading media...`,errorTitle:`Media could not load`,errorDescription:`Try again or adjust your filters.`,cardDetails:`Details for {name}`,privateLabel:`Private`,publicLabel:`Public`,typeImage:`Image`,typeVideo:`Video`,typeFile:`File`,unknownSize:`Unknown`,notUsed:`Not used yet`,usedIn:`{count} {count, plural, one {place} other {places}}`,table:{name:`Name`,type:`Type`,size:`Size`,collection:`Collection`,used:`Used`},detail:{title:`Details`,altText:`Alt text`,altPlaceholder:`Describe this media for screen readers`,collection:`Collection`,tags:`Tags`,tagsPlaceholder:`Comma-separated`,public:`Public`,publicHint:`Served from the public CDN`,privateHint:`Only visible in the admin`,type:`Type`,size:`Size`,dimensions:`Dimensions`,uploaded:`Uploaded`,usedIn:`Used in`,replace:`Replace file`,delete:`Delete`,close:`Close details`},upload:{dropTitle:`Drag files here or click to browse`,dropHint:`JPG, PNG, WebP, SVG and MP4 up to 50 MB per file`,dragOver:`Release to stage files`,collection:`Collection`,tags:`Tags`,tagsPlaceholder:`Comma-separated`,public:`Public`,publicHint:`Serve from the public CDN`,noFiles:`No files staged`,stagedCount:`{count} {count, plural, one {file} other {files}}`,removeFile:`Remove {name}`,uploading:`Uploading`,done:`Done`},footer:{pickOne:`Pick one item`,pickMany:`Pick one or more items`,selectedCount:`{count} selected`,clear:`Clear`,cancel:`Cancel`,confirmEmpty:`Add to product`,confirmOne:`Add 1 item`,confirmMany:`Add {count} items`,noFiles:`No files staged`,stagedSummary:`{count} {count, plural, one {file} other {files}} · {size}`,upload:`Upload`,uploadMany:`Upload {count} files`,uploading:`Uploading...`},gallery:{emptyTitle:`No media attached`,emptyDescription:`Add images, video, or files to this resource.`,add:`Add media`,addMore:`Add more`,addTile:`Add another media item`,cover:`Cover`,primary:`Primary`,setPrimary:`Set primary`,remove:`Remove`,movePrevious:`Move previous`,moveNext:`Move next`,itemPosition:`{index} of {total}`,maxReached:`Maximum reached`}};function h(e,t){return e.replace(/\{(\w+), plural, one \{([^}]*)\} other \{([^}]*)\}\}/g,(e,n,r,i)=>Number(t[n])===1?r:i).replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??``))}var g={collection:void 0,tags:[],public:!0},_=[],v={getId:e=>e.id,getName:e=>e.name,getType:e=>e.type,getSrc:e=>e.src,getAlt:e=>e.alt,getSize:e=>e.size,getWidth:e=>e.width,getHeight:e=>e.height,getDuration:e=>e.duration,getCollection:e=>e.collection,getTags:e=>e.tags??[],getPublic:e=>e.public,getUploadedAt:e=>e.uploadedAt,getUsageCount:e=>e.usageCount,getTint:e=>e.tint,getMimeType:e=>e.mimeType};function y(e){return{...v,...e??{}}}function b(e){return!e||e<=0?``:e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function x(e,t){let n=t.getWidth(e),r=t.getHeight(e);return!n||!r?``:`${n} x ${r}`}function S(e,t){let n=t.getUploadedAt(e);if(!n)return 0;let r=(n instanceof Date?n:new Date(n)).getTime();return Number.isFinite(r)?r:0}function C(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:`file`}function w(e){if(e.type.startsWith(`image/`)&&!(typeof URL>`u`||typeof URL.createObjectURL!=`function`))return URL.createObjectURL(e)}function T(e){!e||typeof URL>`u`||typeof URL.revokeObjectURL!=`function`||URL.revokeObjectURL(e)}function E(e){return Array.isArray(e)?{items:e,total:e.length}:e}function ee(e,t){return t&&typeof e==`object`&&e?{...e,...t}:e}function te(e,t,n,r,i){let a=n.trim().toLowerCase();return e.filter(e=>r!==`all`&&t.getType(e)!==r||i!==`all`&&t.getCollection(e)!==i?!1:a?[t.getName(e),t.getAlt(e),t.getCollection(e),...t.getTags(e)].filter(Boolean).join(` `).toLowerCase().includes(a):!0)}function ne(e,t,n){let r=e.slice();return n===`name`?r.sort((e,n)=>t.getName(e).localeCompare(t.getName(n))):n===`size`?r.sort((e,n)=>(t.getSize(n)??0)-(t.getSize(e)??0)):n===`usage`?r.sort((e,n)=>(t.getUsageCount(n)??0)-(t.getUsageCount(e)??0)):r.sort((e,n)=>S(n,t)-S(e,t)),r}function D({items:e=_,fetcher:t,accessors:n,selectionMode:r=`multiple`,value:i,defaultValue:a=[],onValueChange:o,onItemUpdate:s,onItemDelete:c,onUpload:l,onError:d,initialTab:f=`library`,defaultView:p=`grid`,defaultQuery:m=``,defaultType:h=`all`,defaultCollection:v=`all`,defaultSort:b=`newest`,defaultUploadOptions:x}={}){let S=(0,u.useMemo)(()=>y(n),[n]),[D,O]=(0,u.useState)(f),[k,A]=(0,u.useState)(p),[j,M]=(0,u.useState)(m),[N,P]=(0,u.useState)(h),[F,I]=(0,u.useState)(v),[L,re]=(0,u.useState)(b),[ie,ae]=(0,u.useState)(null),[R,oe]=(0,u.useState)(()=>[...a]),[se,ce]=(0,u.useState)([]),[le,ue]=(0,u.useState)(),[de,fe]=(0,u.useState)(!1),[pe,z]=(0,u.useState)(null),[me,he]=(0,u.useState)([]),[ge,_e]=(0,u.useState)(()=>new Set),[ve,B]=(0,u.useState)({}),[V,H]=(0,u.useState)([]),[U,W]=(0,u.useState)(!1),[G,ye]=(0,u.useState)({...g,...x,tags:x?.tags??g.tags}),K=i!==void 0,q=(0,u.useMemo)(()=>K?[...i??[]]:R,[R,K,i]),J=(0,u.useMemo)(()=>new Set(q),[q]),Y=(0,u.useRef)(new Set);(0,u.useEffect)(()=>{if(!t)return;let e=new AbortController;return fe(!0),z(null),t({query:j,type:N,collection:F===`all`?void 0:F,sort:L,signal:e.signal}).then(t=>{if(e.signal.aborted)return;let n=E(t);ce(n.items),ue(n.total)}).catch(t=>{e.signal.aborted||(z(t),d?.(t))}).finally(()=>{e.signal.aborted||fe(!1)}),()=>e.abort()},[F,t,d,j,L,N]),(0,u.useEffect)(()=>{let e=Y.current;return()=>{for(let t of e)T(t);e.clear()}},[]);let X=(0,u.useMemo)(()=>t?se:[...me,...e],[me,se,t,e]),Z=(0,u.useMemo)(()=>X.filter(e=>!ge.has(S.getId(e))).map(e=>ee(e,ve[S.getId(e)])),[S,ve,ge,X]),Q=(0,u.useMemo)(()=>{let e=t?Z:te(Z,S,j,N,F);return t?e:ne(e,S,L)},[S,F,t,Z,j,L,N]),be=le??Z.length,xe=Q.length,Se=(0,u.useMemo)(()=>Z.filter(e=>J.has(S.getId(e))),[S,Z,J]),Ce=!!j.trim()||N!==`all`||F!==`all`,$=(0,u.useCallback)(e=>{K||oe(e);let t=new Set(e),n=Z.filter(e=>t.has(S.getId(e)));o?.(e,n)},[S,K,o,Z]),we=(0,u.useCallback)(e=>{let t=new Set(r===`single`?[]:J);J.has(e)&&r!==`single`?t.delete(e):t.add(e),$(Array.from(t))},[$,J,r]),Te=(0,u.useCallback)(()=>$([]),[$]),Ee=(0,u.useCallback)(()=>{M(``),P(`all`),I(`all`)},[]),De=(0,u.useCallback)(e=>{H(t=>[...t,...e.map((e,t)=>{let n=w(e);return n&&Y.current.add(n),{id:`staged-${Date.now()}-${t}`,file:e,name:e.name,size:e.size,type:C(e),src:n,progress:0,status:`staged`}})])},[]),Oe=(0,u.useCallback)(e=>{H(t=>{let n=t.find(t=>t.id===e);return n?.src&&(T(n.src),Y.current.delete(n.src)),t.filter(t=>t.id!==e)})},[]),ke=(0,u.useCallback)(()=>{H(e=>{for(let t of e)t.src&&(T(t.src),Y.current.delete(t.src));return[]})},[]),Ae=(0,u.useCallback)(e=>{ye(t=>({...t,...e}))},[]),je=(0,u.useCallback)((e,t)=>{H(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]);return{tab:D,setTab:O,view:k,setView:A,query:j,setQuery:M,type:N,setType:P,collection:F,setCollection:I,sort:L,setSort:re,detailId:ie,setDetailId:ae,items:Z,visibleItems:Q,selectedIds:q,selectedItems:Se,selectedSet:J,toggleSelection:we,clearSelection:Te,clearFilters:Ee,loading:de,error:pe,hasFilters:Ce,totalCount:be,filteredCount:xe,stagedFiles:V,addFiles:De,removeStagedFile:Oe,clearStagedFiles:ke,updateUploadOptions:Ae,uploadOptions:G,uploading:U,startUpload:(0,u.useCallback)(async()=>{if(U||V.length===0)return;W(!0),H(e=>e.map(e=>({...e,status:`uploading`,progress:0})));let e={setProgress:(e,t)=>{je(e,{progress:Math.max(0,Math.min(100,t))})},setFileStatus:(e,t,n)=>je(e,{status:t,error:n})};try{let t=V.map(e=>e.file),n=await l?.(t,G,e);if(H(e=>e.map(e=>({...e,status:`done`,progress:100}))),n?.length){he(e=>[...n,...e]);let e=n.map(e=>S.getId(e));$(r===`single`?e.slice(0,1):Array.from(new Set([...e,...q])))}ke(),O(`library`)}catch(e){z(e),H(e=>e.map(e=>e.status===`uploading`?{...e,status:`error`,error:`Upload failed`}:e)),d?.(e)}finally{W(!1)}},[S,$,ke,d,l,q,r,je,V,G,U]),updateItem:(0,u.useCallback)((e,t)=>{let n=S.getId(e);B(e=>({...e,[n]:{...e[n],...t}})),s?.(e,t)},[S,s]),removeItem:(0,u.useCallback)(e=>{let t=S.getId(e);_e(e=>new Set(e).add(t)),J.has(t)&&$(q.filter(e=>e!==t)),c?.(e)},[S,$,c,q,J]),accessors:S}}function O(e,t){return e===`image`?(0,d.jsx)(f.ImageIcon,{className:t??`size-4`}):e===`video`?(0,d.jsx)(f.Video,{className:t??`size-4`}):(0,d.jsx)(f.File,{className:t??`size-4`})}function k(e,t){return e===`image`?t.typeImage:e===`video`?t.typeVideo:t.typeFile}function A(e,t){return e?h(t.usedIn,{count:e}):t.notUsed}function j({children:e,tint:n,className:r}){return(0,d.jsx)(`div`,{className:t.cn(`media-library-preview relative overflow-hidden bg-muted`,r),style:n?{background:n}:void 0,children:e})}function M({src:e,alt:t,type:n,className:r,loading:i=`lazy`}){let[a,o]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{o(!1)},[e]),!e||a?(0,d.jsx)(`div`,{className:`media-library-preview--fallback flex size-full items-center justify-center text-muted-foreground`,children:O(n,`size-6`)}):(0,d.jsx)(`img`,{src:e,alt:t,loading:i,className:r,onError:()=>o(!0)})}function N({icon:e,title:n,description:i,action:a,className:o}){return(0,d.jsxs)(`div`,{className:t.cn(`media-library-empty-state--component flex min-h-64 flex-col items-center justify-center rounded-lg border border-dashed border-border bg-muted/20 px-6 py-10 text-center`,o),children:[(0,d.jsx)(`div`,{className:`mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:e??(0,d.jsx)(f.ImageIcon,{className:`size-5`})}),(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:n}),!!i&&(0,d.jsx)(r.s,{type:`secondary`,size:`xs`,className:`mt-1 max-w-sm`,children:i}),!!a&&(0,d.jsx)(`div`,{className:`mt-4`,children:a})]})}function P({query:e,type:r,typeFilters:i,collection:a,sort:o,view:l,collections:u=[],strings:p,onQueryChange:m,onTypeChange:h,onCollectionChange:g,onSortChange:_,onViewChange:v,onClearFilters:y,toolbarEnd:b}){let x=[{value:`all`,label:p.allTypes,icon:null},{value:`image`,label:p.images,icon:f.ImageIcon},{value:`video`,label:p.videos,icon:f.Video},{value:`file`,label:p.files,icon:f.File}].filter(e=>(i??[`all`,`image`,`video`]).includes(e.value)),S=[{value:`all`,label:p.allCollections},...u.map(e=>({value:e.value,label:String(e.label)}))],C=[{value:`newest`,label:p.sortNewest},{value:`name`,label:p.sortName},{value:`size`,label:p.sortSize},{value:`usage`,label:p.sortUsage}];return(0,d.jsxs)(`div`,{className:`media-library-toolbar--component flex flex-wrap items-center gap-2`,children:[(0,d.jsx)(`div`,{className:`min-w-52 flex-1`,children:(0,d.jsx)(s.t,{value:e,onChange:e=>m(e.target.value),placeholder:p.searchPlaceholder,startIcon:f.Search,clearable:!0,onClear:()=>m(``),strings:{clear:p.clearSearch},className:`rounded-full bg-muted/20`})}),(0,d.jsx)(`div`,{className:`media-library-toolbar--type-toggle flex h-9 items-center rounded-md bg-muted p-0.5`,role:`tablist`,"aria-label":p.typeFilterLabel,children:x.map(e=>{let i=e.icon,a=r===e.value;return(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":a,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 text-xs shadow-none`,a?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>h(e.value),children:[i&&(0,d.jsx)(i,{className:`size-3.5`}),e.label]},e.value)})}),(0,d.jsx)(`div`,{className:`min-w-40`,children:(0,d.jsx)(c.Y,{value:a,options:S,onChange:e=>g(e??`all`),placeholder:p.collectionFilterLabel,"aria-label":p.collectionFilterLabel,className:`bg-background`})}),(0,d.jsx)(`div`,{className:`min-w-32`,children:(0,d.jsx)(c.Y,{value:o,options:C,onChange:e=>_(e??`newest`),placeholder:p.sortLabel,"aria-label":p.sortLabel,className:`bg-background`})}),(0,d.jsxs)(`div`,{className:`media-library-toolbar--view-toggle ml-auto flex h-9 items-center rounded-md bg-muted p-0.5`,children:[(0,d.jsx)(n.t,{type:`button`,variant:l===`grid`?`dark`:`secondary`,buttonStyle:l===`grid`?`solid`:`ghost`,size:`icon-small`,className:t.cn(l===`grid`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":p.gridView,onClick:()=>v(`grid`),children:(0,d.jsx)(f.Grid2X2,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:l===`table`?`dark`:`secondary`,buttonStyle:l===`table`?`solid`:`ghost`,size:`icon-small`,className:t.cn(l===`table`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":p.tableView,onClick:()=>v(`table`),children:(0,d.jsx)(f.LayoutList,{className:`size-3.5`})})]}),!!e&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:y,children:p.clearFilters}),b]})}function F({item:e,selected:i=!1,density:o=`comfortable`,showMeta:s=!0,accessors:c,strings:l,onToggle:u,onDetails:p,className:m}){let g=c.getType(e),_=c.getName(e),v=c.getSrc(e),y=c.getAlt(e)||_,x=c.getSize(e),S=c.getUsageCount(e),C=c.getPublic(e)===!1,w=c.getDuration(e);return(0,d.jsxs)(`div`,{"data-selected":i||void 0,"data-density":o,className:t.cn(`media-library-card--component group/card overflow-hidden rounded-xl border border-border/70 bg-card text-left shadow-xs transition-all`,`hover:border-primary/30 hover:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,i&&`media-library-card--selected border-primary ring-1 ring-primary`,m),onClick:u,children:[(0,d.jsxs)(j,{tint:c.getTint(e),className:t.cn(o===`compact`?`aspect-square`:`aspect-[4/3]`),children:[(0,d.jsx)(M,{src:v,alt:y,type:g,className:`size-full object-cover`}),(0,d.jsx)(`span`,{className:t.cn(`media-library-card--check absolute left-2 top-2 inline-flex size-5 items-center justify-center rounded-md border border-border bg-background/95 text-transparent opacity-0 shadow-xs backdrop-blur transition-opacity group-hover/card:opacity-100 group-focus-visible/card:opacity-100`,i&&`bg-primary text-primary-foreground opacity-100`),"aria-hidden":`true`,children:(0,d.jsx)(f.Check,{className:`size-3`})}),!!p&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,className:`media-library-card--details absolute right-2 top-2 opacity-0 shadow-sm transition-opacity group-hover/card:opacity-100 group-focus-within/card:opacity-100`,"aria-label":h(l.cardDetails,{name:_}),onClick:e=>{e.stopPropagation(),p()},children:(0,d.jsx)(f.Info,{className:`size-3.5`})}),g===`video`&&!!w&&(0,d.jsxs)(a.t,{variant:`secondary`,className:`media-library-card--duration absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),w]}),C&&(0,d.jsx)(a.t,{variant:`secondary`,className:`media-library-card--private absolute bottom-2 right-2 bg-background/90`,children:(0,d.jsx)(f.Lock,{className:`size-3`})})]}),(0,d.jsxs)(`div`,{className:`media-library-card--body grid gap-1 px-3 py-2.5`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:_}),s&&(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,className:`truncate`,children:b(x)||l.unknownSize}),!!S&&(0,d.jsxs)(r.s,{tag:`span`,size:`xxs`,type:`secondary`,className:`ml-auto inline-flex items-center gap-1`,children:[(0,d.jsx)(f.Layers3,{className:`size-3`}),S]})]})]})]})}function I({items:e,selectedSet:i,accessors:o,strings:s,onToggle:c,onDetails:l}){return(0,d.jsxs)(`div`,{className:`media-library-table--component min-w-180`,children:[(0,d.jsxs)(`div`,{className:`sticky top-0 z-10 grid grid-cols-[32px_42px_minmax(0,1fr)_86px_88px_120px_72px_34px] items-center gap-3 border-b border-border bg-background px-3 py-2`,children:[(0,d.jsx)(`span`,{}),(0,d.jsx)(`span`,{}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.name}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.type}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.size}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.collection}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.used}),(0,d.jsx)(`span`,{})]}),e.map(e=>{let u=o.getId(e),p=i.has(u),m=o.getType(e),g=o.getName(e),_=o.getSrc(e),v=o.getPublic(e)===!1;return(0,d.jsxs)(`div`,{"data-selected":p||void 0,className:t.cn(`media-library-table--row grid grid-cols-[32px_42px_minmax(0,1fr)_86px_88px_120px_72px_34px] items-center gap-3 border-b border-border/60 px-3 py-2 last:border-b-0`,`cursor-pointer rounded-lg transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`,p&&`bg-primary/10`),onClick:()=>c(u),children:[(0,d.jsx)(`span`,{className:t.cn(`inline-flex size-5 items-center justify-center rounded-md border border-border text-transparent`,p&&`border-primary bg-primary text-primary-foreground`),"aria-hidden":`true`,children:(0,d.jsx)(f.Check,{className:`size-3`})}),(0,d.jsx)(j,{tint:o.getTint(e),className:`size-9 rounded-md`,children:_?(0,d.jsx)(`img`,{src:_,alt:``,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:O(m,`size-4`)})}),(0,d.jsxs)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`flex min-w-0 items-center gap-1 truncate`,children:[(0,d.jsx)(`span`,{className:`truncate`,children:g}),v&&(0,d.jsx)(f.Lock,{className:`size-3 shrink-0 text-muted-foreground`})]}),(0,d.jsx)(a.t,{variant:`secondary`,children:k(m,s)}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:b(o.getSize(e))||s.unknownSize}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:o.getCollection(e)||`-`}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:o.getUsageCount(e)?o.getUsageCount(e):`-`}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":h(s.cardDetails,{name:g}),onClick:e=>{e.stopPropagation(),l(u)},children:(0,d.jsx)(f.Info,{className:`size-3.5`})})]},u)})]})}function L({item:e,collections:t=[],accessors:i,strings:o,onClose:u,onUpdate:p,onRemove:m,renderDetail:h}){if(!e)return null;let g=i.getName(e),_=i.getType(e),v=i.getSrc(e),y=i.getCollection(e)??t[0]?.value??``,S=i.getTags(e),C=i.getPublic(e)??!0,w=h?.(e,{accessors:i,update:p,remove:m,close:u});return w?(0,d.jsx)(d.Fragment,{children:w}):(0,d.jsxs)(`aside`,{className:`media-library-detail-panel--component flex min-h-0 w-full flex-col border-l border-border bg-background lg:w-72`,children:[(0,d.jsxs)(`div`,{className:`media-library-detail-panel--header flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":o.detail.close,onClick:u,children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(r.s,{weight:`semibold`,children:o.detail.title})]}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--body grid min-h-0 gap-4 overflow-y-auto p-4`,children:[(0,d.jsxs)(j,{tint:i.getTint(e),className:`aspect-[4/3] rounded-lg border border-border`,children:[(0,d.jsx)(M,{src:v,alt:i.getAlt(e)||g,type:_,className:`size-full object-cover`}),_===`video`&&!!i.getDuration(e)&&(0,d.jsxs)(a.t,{className:`absolute bottom-2 right-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),i.getDuration(e)]})]}),(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,className:`break-words`,children:g}),(0,d.jsx)(`dl`,{className:`media-library-detail-panel--facts grid gap-2`,children:[[o.detail.type,k(_,o)],[o.detail.size,b(i.getSize(e))||o.unknownSize],[o.detail.dimensions,x(e,i)||`-`],[o.detail.uploaded,String(i.getUploadedAt(e)??`-`)],[o.detail.usedIn,A(i.getUsageCount(e),o)]].map(([e,t])=>(0,d.jsxs)(`div`,{className:`flex justify-between gap-4`,children:[(0,d.jsx)(`dt`,{children:(0,d.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,children:e})}),(0,d.jsx)(`dd`,{className:`m-0 text-right`,children:(0,d.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,children:t})})]},e))}),(0,d.jsx)(l.D,{label:o.detail.altText,children:(0,d.jsx)(s.t,{value:i.getAlt(e)??``,placeholder:o.detail.altPlaceholder,onChange:e=>p({alt:e.target.value})})}),(0,d.jsx)(l.D,{label:o.detail.collection,children:(0,d.jsx)(c.Y,{value:y,options:t.map(e=>({value:e.value,label:String(e.label)})),"aria-label":o.detail.collection,onChange:e=>p({collection:e})})}),(0,d.jsx)(l.D,{label:o.detail.tags,children:(0,d.jsx)(s.t,{value:S.join(`, `),placeholder:o.detail.tagsPlaceholder,onChange:e=>p({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--public flex items-center justify-between gap-4 rounded-lg border border-border bg-muted/20 p-3`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,children:o.detail.public}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,children:C?o.detail.publicHint:o.detail.privateHint})]}),(0,d.jsx)(c.J,{checked:C,onCheckedChange:e=>p({public:e})})]}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--actions flex flex-wrap gap-2`,children:[(0,d.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),o.detail.replace]}),(0,d.jsxs)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,onClick:m,children:[(0,d.jsx)(f.Trash2,{className:`size-3.5`}),o.detail.delete]})]})]})]})}function re({stagedFiles:e,uploadOptions:t,collections:i=[],uploading:o=!1,strings:u,onFiles:p,onRemoveFile:m,onOptionsChange:g,empty:_}){return(0,d.jsxs)(`div`,{className:`media-library-upload-panel--component grid gap-4 p-4`,children:[(0,d.jsx)(c.T,{onDrop:p,accept:`image/*,video/*`,multiple:!0,size:`default`,strings:{instruction:u.upload.dropTitle,helper:u.upload.dropHint,dragOver:u.upload.dragOver}}),e.length>0?(0,d.jsx)(`div`,{className:`media-library-upload-panel--staged grid gap-2`,children:e.map(e=>(0,d.jsxs)(`div`,{className:`media-library-upload-panel--staged-file flex items-center gap-3 rounded-lg border border-border bg-card p-2`,children:[(0,d.jsx)(j,{className:`size-10 rounded-md`,children:e.src?(0,d.jsx)(`img`,{src:e.src,alt:e.name,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:O(e.type,`size-4`)})}),(0,d.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,d.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,className:`truncate`,children:e.name}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,className:`ml-auto shrink-0`,children:b(e.size)})]}),(e.status===`uploading`||e.status===`done`)&&(0,d.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-muted`,children:(0,d.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${e.progress}%`}})}),e.status===`error`&&(0,d.jsx)(r.s,{size:`xxs`,type:`error`,children:e.error})]}),e.status===`done`?(0,d.jsx)(a.t,{variant:`success`,children:u.upload.done}):e.status===`uploading`?(0,d.jsxs)(r.s,{size:`xxs`,type:`secondary`,className:`tabular-nums`,children:[Math.round(e.progress),`%`]}):(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:o,"aria-label":h(u.upload.removeFile,{name:e.name}),onClick:()=>m(e.id),children:(0,d.jsx)(f.X,{className:`size-3.5`})})]},e.id))}):_,(0,d.jsxs)(`div`,{className:`media-library-upload-panel--options grid gap-3 rounded-lg border border-border bg-muted/20 p-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]`,children:[(0,d.jsx)(l.D,{label:u.upload.collection,children:(0,d.jsx)(c.Y,{value:t.collection??i[0]?.value,options:i.map(e=>({value:e.value,label:String(e.label)})),"aria-label":u.upload.collection,onChange:e=>g({collection:e})})}),(0,d.jsx)(l.D,{label:u.upload.tags,children:(0,d.jsx)(s.t,{value:t.tags.join(`, `),placeholder:u.upload.tagsPlaceholder,onChange:e=>g({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-4 md:self-end`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,children:u.upload.public}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,children:u.upload.publicHint})]}),(0,d.jsx)(c.J,{checked:t.public,onCheckedChange:e=>g({public:e})})]})]})]})}function ie({tab:e,selectedIds:i,selectionMode:a,stagedFiles:o,strings:s,onClearSelection:c,className:l}){let u=i.length,f=o.reduce((e,t)=>e+t.size,0),p=o.length,m=t.cn(`media-library-footer-summary--component flex min-w-0 items-center gap-3`,l);return e===`upload`?(0,d.jsx)(`div`,{className:m,"aria-live":`polite`,children:(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:p===0?s.footer.noFiles:h(s.footer.stagedSummary,{count:p,size:b(f)})})}):(0,d.jsx)(`div`,{className:m,"aria-live":`polite`,children:u>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,className:`whitespace-nowrap`,children:h(s.footer.selectedCount,{count:u})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,onClick:c,children:s.footer.clear})]}):(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:a===`single`?s.footer.pickOne:s.footer.pickMany})})}function ae({tab:e,selectedItems:r,selectedIds:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onUpload:p,onCancelUpload:m,className:g}){let _=i.length,v=a.length;return e===`upload`?(0,d.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,g),children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,disabled:o,onClick:m,children:l??s.footer.cancel}),(0,d.jsx)(n.t,{type:`button`,disabled:v===0||o,onClick:p,loading:o,loadingLabels:{loading:s.footer.uploading},children:v<=1?s.footer.upload:h(s.footer.uploadMany,{count:v})})]}):(0,d.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,g),children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:u,children:l??s.footer.cancel}),(0,d.jsx)(n.t,{type:`button`,disabled:_===0,onClick:f,children:c??(_===0?s.footer.confirmEmpty:r.length===1?s.footer.confirmOne:h(s.footer.confirmMany,{count:_}))})]})}function R({tab:e,selectedItems:n,selectedIds:r,selectionMode:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onClearSelection:p,onUpload:m,onCancelUpload:h,chrome:g=`section`,className:_}){return(0,d.jsxs)(`footer`,{className:t.cn(`media-library-footer--component flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,g===`section`&&`border-t border-border bg-background px-4 py-3`,_),children:[(0,d.jsx)(ie,{tab:e,selectedIds:r,selectionMode:i,stagedFiles:a,strings:s,onClearSelection:p}),(0,d.jsx)(ae,{tab:e,selectedItems:n,selectedIds:r,stagedFiles:a,uploading:o,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onUpload:m,onCancelUpload:h})]})}var oe=(0,u.createContext)(null);function se(e,t,n){return(0,u.useMemo)(()=>{if(e)return e;let r=new Set;for(let e of t){let t=n(e);t&&r.add(t)}return Array.from(r).map(e=>({value:e,label:e}))},[e,n,t])}function ce({title:i,description:a,confirmLabel:s,cancelLabel:c,selectionMode:l=`multiple`,density:g=`comfortable`,showMeta:_=!0,allowUpload:v=!0,typeFilters:y,confirmOnSelect:b=!1,onConfirm:x,onCancel:S,onClose:C,strings:w,slots:T,heightClassName:E,className:ee,items:te,fetcher:ne,accessors:O,collections:k,value:A,defaultValue:j,onValueChange:M,onItemUpdate:ce,onItemDelete:le,onUpload:ue,onError:de,initialTab:fe,defaultView:pe,defaultQuery:z,defaultType:me,defaultCollection:he,defaultSort:ge,defaultUploadOptions:_e,...ve}){let B=e.useStrings(m,w),V=D({items:te,fetcher:ne,accessors:O,collections:k,selectionMode:l,value:A,defaultValue:j,onValueChange:M,onItemUpdate:ce,onItemDelete:le,onUpload:ue,onError:de,initialTab:fe,defaultView:pe,defaultQuery:z,defaultType:me,defaultCollection:he,defaultSort:ge,defaultUploadOptions:_e}),H=se(k,V.items,V.accessors.getCollection),U=v?V.tab:`library`,W=V.detailId?V.items.find(e=>V.accessors.getId(e)===V.detailId)??null:null,G=(0,u.useContext)(oe),ye=!T?.footer,K=G&&ye?(0,d.jsx)(ie,{tab:U,selectedIds:V.selectedIds,selectionMode:l,stagedFiles:V.stagedFiles,strings:B,onClearSelection:V.clearSelection,className:`media-library-dialog--selection-summary shrink-0 justify-end`}):null,q=!!(i||a||T?.headerStart),J=!!(v||T?.headerEnd||K),Y=q||J,X=()=>{x?.(V.selectedItems,V.selectedIds),C?.()},Z=()=>{S?.(),C?.()},Q=e=>{let t=V.accessors.getId(e);V.toggleSelection(t),b&&(x?.([e],[t]),C?.())},be=V.filteredCount===V.totalCount?h(B.countAll,{count:V.totalCount}):h(B.countFiltered,{count:V.filteredCount,total:V.totalCount}),xe=T?.footer??(G?(0,d.jsx)(ae,{tab:U,selectedItems:V.selectedItems,selectedIds:V.selectedIds,stagedFiles:V.stagedFiles,uploading:V.uploading,strings:B,confirmLabel:s,cancelLabel:c,onCancel:Z,onConfirm:X,onUpload:V.startUpload,onCancelUpload:()=>{V.clearStagedFiles(),V.setTab(`library`)},className:`ml-auto`}):(0,d.jsx)(R,{tab:U,selectedItems:V.selectedItems,selectedIds:V.selectedIds,selectionMode:l,stagedFiles:V.stagedFiles,uploading:V.uploading,strings:B,confirmLabel:s,cancelLabel:c,onCancel:Z,onConfirm:X,onClearSelection:V.clearSelection,onUpload:V.startUpload,onCancelUpload:()=>{V.clearStagedFiles(),V.setTab(`library`)}}));return(0,d.jsxs)(`section`,{className:t.cn(`media-library--component flex min-h-0 flex-col overflow-hidden rounded-lg border border-border bg-background`,E??`h-190 max-h-[calc(100vh-7rem)]`,ee),...ve,children:[Y&&(0,d.jsxs)(`header`,{className:`media-library--header flex flex-col gap-3 border-b border-border px-4 py-3 lg:flex-row lg:items-center lg:justify-between`,children:[q&&(0,d.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[T?.headerStart,(i||a)&&(0,d.jsxs)(`div`,{className:`min-w-0`,children:[!!i&&(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:i}),!!a&&(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:a})]})]}),J&&(0,d.jsxs)(`div`,{className:t.cn(`flex min-w-0 flex-wrap items-center gap-2`,K?`flex-1 justify-between`:`lg:justify-end`),children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[v&&(0,d.jsxs)(`div`,{className:`media-library--tabs flex items-center rounded-md bg-muted p-0.5`,role:`tablist`,children:[(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":U===`library`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 shadow-none`,U===`library`?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>V.setTab(`library`),children:[(0,d.jsx)(f.ImageIcon,{className:`size-3.5`}),B.tabs.library]}),(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":U===`upload`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 shadow-none`,U===`upload`?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>V.setTab(`upload`),children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),B.tabs.upload,V.stagedFiles.length>0&&(0,d.jsx)(`span`,{className:`rounded-full bg-background/20 px-1.5 text-xxs tabular-nums`,children:V.stagedFiles.length})]})]}),T?.headerEnd]}),K]})]}),(0,d.jsxs)(`div`,{className:`media-library--body flex min-h-0 flex-1`,children:[U===`upload`?(0,d.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:(0,d.jsx)(re,{stagedFiles:V.stagedFiles,uploadOptions:V.uploadOptions,collections:H,uploading:V.uploading,strings:B,onFiles:V.addFiles,onRemoveFile:V.removeStagedFile,onOptionsChange:V.updateUploadOptions,empty:T?.uploadEmpty})}):(0,d.jsxs)(`div`,{className:t.cn(`media-library--library min-w-0 flex-1 flex-col`,W?`hidden lg:flex`:`flex`),children:[(0,d.jsxs)(`div`,{className:`media-library--toolbar border-b border-border/70 px-4 py-3`,children:[(0,d.jsx)(P,{query:V.query,type:V.type,typeFilters:y,collection:V.collection,sort:V.sort,view:V.view,collections:H,strings:B,onQueryChange:V.setQuery,onTypeChange:V.setType,onCollectionChange:V.setCollection,onSortChange:V.setSort,onViewChange:V.setView,onClearFilters:V.clearFilters,toolbarEnd:T?.toolbarEnd}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-2`,"aria-live":`polite`,children:be})]}),(0,d.jsx)(`div`,{className:`media-library--results min-h-0 flex-1 overflow-y-auto p-4`,children:V.loading?T?.loading??(0,d.jsx)(`div`,{className:`flex min-h-64 items-center justify-center`,children:(0,d.jsx)(r.s,{type:`secondary`,children:B.loading})}):V.error?T?.error??(0,d.jsxs)(o.t,{variant:`destructive`,children:[(0,d.jsx)(o.i,{children:B.errorTitle}),(0,d.jsx)(o.r,{children:B.errorDescription})]}):V.visibleItems.length===0?T?.empty??(0,d.jsx)(N,{title:V.hasFilters?B.emptyFilteredTitle:B.emptyLibraryTitle,description:V.hasFilters?B.emptyFilteredDescription:B.emptyLibraryDescription,action:V.hasFilters?(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,onClick:V.clearFilters,children:B.clearFilters}):v?(0,d.jsxs)(n.t,{type:`button`,onClick:()=>V.setTab(`upload`),children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),B.uploadMedia]}):void 0}):V.view===`table`?(0,d.jsx)(`div`,{className:`overflow-x-auto`,children:(0,d.jsx)(I,{items:V.visibleItems,selectedSet:V.selectedSet,selectionMode:l,accessors:V.accessors,strings:B,onToggle:e=>{let t=V.items.find(t=>V.accessors.getId(t)===e);t&&Q(t)},onDetails:V.setDetailId})}):(0,d.jsx)(`div`,{className:t.cn(`media-library--grid grid gap-3`,g===`compact`?`grid-cols-[repeat(auto-fill,minmax(136px,1fr))]`:`grid-cols-[repeat(auto-fill,minmax(168px,1fr))]`),children:V.visibleItems.map(e=>{let t=V.accessors.getId(e),n={id:t,selected:V.selectedSet.has(t),selectionMode:l,accessors:V.accessors,toggle:()=>Q(e),openDetails:()=>V.setDetailId(t)},r=T?.renderItem?.(e,n);return r?(0,d.jsx)(`div`,{children:r},t):(0,d.jsx)(F,{item:e,selected:n.selected,density:g,showMeta:_,selectionMode:l,accessors:V.accessors,strings:B,onToggle:n.toggle,onDetails:n.openDetails},t)})})})]}),U===`library`&&(0,d.jsx)(L,{item:W,collections:H,accessors:V.accessors,strings:B,onClose:()=>V.setDetailId(null),onUpdate:e=>W&&V.updateItem(W,e),onRemove:()=>{W&&(V.removeItem(W),V.setDetailId(null))},renderDetail:T?.renderDetail})]}),G?G.element?(0,p.createPortal)(xe,G.element):null:xe]})}function le({open:n,onOpenChange:r,trigger:a,dialogTitle:o,dialogDescription:s,onClose:c,className:l,dialogClassName:f,contentClassName:p,closeOnEscape:h=!0,closeOnBackdropClick:g=!0,..._}){let v=e.useStrings(m,_.strings),[y,b]=(0,u.useState)(!1),[x,S]=(0,u.useState)(null),C=n!==void 0,w=C?n:y,T=e=>{C||b(e),r?.(e)},E=()=>{T(!1),c?.()};return(0,d.jsx)(oe.Provider,{value:{element:x},children:(0,d.jsx)(i.r,{open:w,onOpenChange:T,onClose:c,trigger:a,title:o??v.title,description:s??v.description,size:`full`,showCancel:!1,showConfirm:!1,footer:(0,d.jsx)(`div`,{ref:S,className:`media-library-dialog--footer`}),className:t.cn(`media-library-dialog--component max-h-[calc(100vh-2rem)] max-w-[min(1060px,calc(100vw-2rem))]`,f),contentClassName:t.cn(`media-library-dialog--body flex min-h-0 flex-col overflow-hidden p-0`,p),closeOnBackdropClick:g,closeOnEscape:h,children:(0,d.jsx)(ce,{..._,onClose:E,className:t.cn(`media-library-dialog--library rounded-none border-0`,l),heightClassName:_.heightClassName??`min-h-0 flex-1`,strings:_.strings})})})}function ue(e,t,n){let r=e.slice(),[i]=r.splice(t,1);return i===void 0||r.splice(n,0,i),r}function de({items:i,accessors:o,title:s,description:c,primaryId:l,onPrimaryChange:u,onRemove:p,onReorder:g,onAdd:_,maxItems:v,layout:x=`field`,density:S=`comfortable`,readOnly:C=!1,empty:w,action:T,renderItem:E,strings:ee,className:te,...ne}){let D=e.useStrings(m,ee),O=y(o),k=i.length,A=l??(k>0?O.getId(i[0]):void 0),j=!C&&!!_&&(v===void 0||k<v),M=j&&(x===`field`||k>0)?(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,icon:f.Plus,onClick:_,children:D.gallery.add}):v!==void 0&&k>=v?(0,d.jsx)(a.t,{variant:`secondary`,children:D.gallery.maxReached}):null,P=(e,t)=>{if(t<0||t>=k||e===t)return;let n=ue(i,e,t);g?.(n.map(e=>O.getId(e)),n)},F=!!(s||c||T||M),I=k===0&&x!==`field`,L=()=>!j||x!==`field`?null:(0,d.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`media-resource-gallery--add-tile h-auto min-h-24 w-full flex-col rounded-lg border border-dashed border-border bg-background text-muted-foreground shadow-none`,`aspect-square hover:border-primary/50 hover:bg-primary/5 hover:text-primary focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),"aria-label":D.gallery.addTile,onClick:_,children:[(0,d.jsx)(f.Plus,{className:`size-4`}),(0,d.jsx)(`span`,{className:`sr-only`,children:D.gallery.addTile})]});return(0,d.jsxs)(`section`,{className:t.cn(`media-resource-gallery--component rounded-lg border border-border bg-card shadow-xs`,te),"data-layout":x,"data-density":S,...ne,children:[F&&(0,d.jsxs)(`header`,{className:`media-resource-gallery--header flex flex-col gap-3 px-4 py-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,d.jsxs)(`div`,{className:`min-w-0`,children:[!!s&&(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:s}),!!c&&(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:c})]}),(0,d.jsx)(`div`,{className:`media-resource-gallery--actions flex flex-wrap items-center gap-2`,children:T??M})]}),I?(0,d.jsx)(`div`,{className:`media-resource-gallery--empty p-4 pt-0`,children:w??(0,d.jsx)(N,{title:D.gallery.emptyTitle,description:D.gallery.emptyDescription,action:j?(0,d.jsx)(n.t,{type:`button`,icon:f.ImagePlus,onClick:_,children:D.gallery.add}):void 0})}):(0,d.jsxs)(`div`,{className:t.cn(`media-resource-gallery--items p-4`,F&&`pt-0`,x===`list`?`grid gap-2`:x===`field`?`grid grid-cols-[repeat(auto-fill,minmax(96px,1fr))] gap-3 sm:grid-cols-[repeat(auto-fill,minmax(108px,1fr))]`:S===`compact`?`grid grid-cols-[repeat(auto-fill,minmax(132px,1fr))] gap-3`:`grid grid-cols-[repeat(auto-fill,minmax(164px,1fr))] gap-3`),children:[i.map((e,i)=>{let o=O.getId(e),s=O.getName(e),c=O.getType(e),l=O.getSrc(e),m=O.getAlt(e)||s,g=o===A,_=O.getPublic(e)===!1,v=O.getDuration(e),y=i>0,S=i<k-1,w=E?.(e,{id:o,index:i,total:k,primary:g,accessors:O,canMovePrevious:y,canMoveNext:S,setPrimary:()=>u?.(o,e),remove:()=>p?.(o,e),movePrevious:()=>P(i,i-1),moveNext:()=>P(i,i+1)});return w?(0,d.jsx)(`div`,{children:w},o):x===`field`?(0,d.jsxs)(`div`,{className:t.cn(`media-resource-gallery--item group/gallery relative aspect-square overflow-hidden rounded-lg border border-border bg-background shadow-xs`,`transition-colors hover:border-primary/40 focus-within:border-primary/50`,g&&`col-span-2 row-span-2 min-h-52`),"data-primary":g||void 0,children:[l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center bg-muted text-muted-foreground`,children:(0,d.jsx)(f.File,{className:g?`size-7`:`size-5`})}),g&&(0,d.jsx)(a.t,{variant:`secondary`,className:`absolute left-2 top-2 bg-background/90 shadow-xs`,children:D.gallery.cover}),c===`video`&&!!v&&(0,d.jsxs)(a.t,{variant:`secondary`,className:`absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),v]}),_&&(0,d.jsx)(`span`,{className:`absolute bottom-2 right-2 inline-flex size-6 items-center justify-center rounded-full border border-border bg-background/90 text-muted-foreground shadow-xs`,children:(0,d.jsx)(f.Lock,{className:`size-3`})}),!C&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,className:`absolute right-2 top-2 opacity-0 shadow-sm transition-opacity group-hover/gallery:opacity-100 group-focus-within/gallery:opacity-100`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.X,{className:`size-3.5`})})]},o):x===`list`?(0,d.jsxs)(`div`,{className:`media-resource-gallery--item flex min-w-0 items-center gap-3 rounded-lg border border-border bg-background p-2`,"data-primary":g||void 0,children:[(0,d.jsx)(`div`,{className:`relative size-12 shrink-0 overflow-hidden rounded-md bg-muted`,children:l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,d.jsx)(f.File,{className:`size-4`})})}),(0,d.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),g&&(0,d.jsx)(a.t,{variant:`info`,children:D.gallery.primary})]}),(0,d.jsxs)(r.s,{size:`xxs`,type:`secondary`,children:[h(D.gallery.itemPosition,{index:i+1,total:k}),` · `,b(O.getSize(e))||D.unknownSize]})]}),!C&&(0,d.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:g,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,d.jsx)(f.Star,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!y,"aria-label":D.gallery.movePrevious,onClick:()=>P(i,i-1),children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>P(i,i+1),children:(0,d.jsx)(f.ArrowRight,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.Trash2,{className:`size-3.5`})})]})]},o):(0,d.jsxs)(`div`,{className:`media-resource-gallery--item group/gallery overflow-hidden rounded-lg border border-border bg-background shadow-xs transition-colors hover:border-primary/40`,"data-primary":g||void 0,children:[(0,d.jsxs)(`div`,{className:`relative aspect-[4/3] bg-muted`,children:[l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,d.jsx)(f.File,{className:`size-6`})}),(0,d.jsxs)(`div`,{className:`absolute left-2 top-2 flex flex-wrap gap-1`,children:[g&&(0,d.jsx)(a.t,{variant:`info`,children:D.gallery.primary}),(0,d.jsx)(a.t,{variant:`secondary`,children:h(D.gallery.itemPosition,{index:i+1,total:k})})]})]}),(0,d.jsxs)(`div`,{className:`media-resource-gallery--item-body grid gap-2 p-3`,children:[(0,d.jsxs)(`div`,{className:`min-w-0`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),(0,d.jsx)(r.s,{size:`xxs`,type:`secondary`,children:b(O.getSize(e))||D.unknownSize})]}),!C&&(0,d.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:g,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,d.jsx)(f.Star,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!y,"aria-label":D.gallery.movePrevious,onClick:()=>P(i,i-1),children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>P(i,i+1),children:(0,d.jsx)(f.ArrowRight,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-small`,className:`ml-auto`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.Trash2,{className:`size-3.5`})})]})]})]},o)}),L()]})]})}exports.MediaLibrary=ce,exports.MediaLibraryCard=F,exports.MediaLibraryDetailPanel=L,exports.MediaLibraryDialog=le,exports.MediaLibraryEmptyState=N,exports.MediaLibraryFooter=R,exports.MediaLibraryTable=I,exports.MediaLibraryToolbar=P,exports.MediaLibraryUploadPanel=re,exports.MediaResourceGallery=de,exports.defaultMediaLibraryStrings=m,exports.formatMediaLibrarySize=b,exports.formatMediaLibraryString=h,exports.getMediaLibraryDimensions=x,exports.resolveMediaLibraryAccessors=y,exports.useMediaLibrary=D;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-CfQtOuBK.cjs"),r=require("../../../_shared/typography-CWEobAJV.cjs"),i=require("../../../_shared/overlays-DbaPLT67.cjs"),a=require("../../../_shared/badge-LSAgdmGt.cjs"),o=require("../../../_shared/cards-m03XN10f.cjs"),s=require("../../../_shared/input-Dvvmn96E.cjs"),c=require("../../../_shared/forms-CNjjdFcf.cjs"),l=require("../../../_shared/display-Lr3xTd4a.cjs");let u=require("react"),d=require("react/jsx-runtime"),f=require("lucide-react"),p=require("react-dom");var m={title:`Add media`,description:`Pick from the library, or upload new files.`,close:`Close media library`,tabs:{library:`Library`,upload:`Upload`},searchPlaceholder:`Search by name or tag...`,clearSearch:`Clear search`,typeFilterLabel:`Type`,collectionFilterLabel:`Collection`,sortLabel:`Sort`,viewLabel:`View`,allTypes:`All`,images:`Images`,videos:`Videos`,files:`Files`,allCollections:`All collections`,sortNewest:`Newest`,sortName:`Name`,sortSize:`Size`,sortUsage:`Most used`,gridView:`Grid view`,tableView:`Table view`,countAll:`{count} items`,countFiltered:`{count} of {total} items`,emptyLibraryTitle:`Library is empty`,emptyLibraryDescription:`Upload images or videos to start building the library.`,emptyFilteredTitle:`No media matches`,emptyFilteredDescription:`Try a different search term, or clear the filters.`,clearFilters:`Clear filters`,uploadMedia:`Upload media`,loading:`Loading media...`,errorTitle:`Media could not load`,errorDescription:`Try again or adjust your filters.`,cardDetails:`Details for {name}`,privateLabel:`Private`,publicLabel:`Public`,typeImage:`Image`,typeVideo:`Video`,typeFile:`File`,unknownSize:`Unknown`,notUsed:`Not used yet`,usedIn:`{count} {count, plural, one {place} other {places}}`,table:{name:`Name`,type:`Type`,size:`Size`,collection:`Collection`,used:`Used`},detail:{title:`Details`,altText:`Alt text`,altPlaceholder:`Describe this media for screen readers`,collection:`Collection`,tags:`Tags`,tagsPlaceholder:`Comma-separated`,public:`Public`,publicHint:`Served from the public CDN`,privateHint:`Only visible in the admin`,type:`Type`,size:`Size`,dimensions:`Dimensions`,uploaded:`Uploaded`,usedIn:`Used in`,replace:`Replace file`,delete:`Delete`,close:`Close details`},upload:{dropTitle:`Drag files here or click to browse`,dropHint:`JPG, PNG, WebP, SVG and MP4 up to 50 MB per file`,dragOver:`Release to stage files`,collection:`Collection`,tags:`Tags`,tagsPlaceholder:`Comma-separated`,public:`Public`,publicHint:`Serve from the public CDN`,noFiles:`No files staged`,stagedCount:`{count} {count, plural, one {file} other {files}}`,removeFile:`Remove {name}`,uploading:`Uploading`,done:`Done`},footer:{pickOne:`Pick one item`,pickMany:`Pick one or more items`,selectedCount:`{count} selected`,clear:`Clear`,cancel:`Cancel`,confirmEmpty:`Add to product`,confirmOne:`Add 1 item`,confirmMany:`Add {count} items`,noFiles:`No files staged`,stagedSummary:`{count} {count, plural, one {file} other {files}} · {size}`,upload:`Upload`,uploadMany:`Upload {count} files`,uploading:`Uploading...`},gallery:{emptyTitle:`No media attached`,emptyDescription:`Add images, video, or files to this resource.`,add:`Add media`,addMore:`Add more`,addTile:`Add another media item`,cover:`Cover`,primary:`Primary`,setPrimary:`Set primary`,remove:`Remove`,movePrevious:`Move previous`,moveNext:`Move next`,itemPosition:`{index} of {total}`,maxReached:`Maximum reached`}};function h(e,t){return e.replace(/\{(\w+), plural, one \{([^}]*)\} other \{([^}]*)\}\}/g,(e,n,r,i)=>Number(t[n])===1?r:i).replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??``))}var g={collection:void 0,tags:[],public:!0},_=[],v={getId:e=>e.id,getName:e=>e.name,getType:e=>e.type,getSrc:e=>e.src,getAlt:e=>e.alt,getSize:e=>e.size,getWidth:e=>e.width,getHeight:e=>e.height,getDuration:e=>e.duration,getCollection:e=>e.collection,getTags:e=>e.tags??[],getPublic:e=>e.public,getUploadedAt:e=>e.uploadedAt,getUsageCount:e=>e.usageCount,getTint:e=>e.tint,getMimeType:e=>e.mimeType};function y(e){return{...v,...e??{}}}function b(e){return!e||e<=0?``:e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function x(e,t){let n=t.getWidth(e),r=t.getHeight(e);return!n||!r?``:`${n} x ${r}`}function S(e,t){let n=t.getUploadedAt(e);if(!n)return 0;let r=(n instanceof Date?n:new Date(n)).getTime();return Number.isFinite(r)?r:0}function C(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:`file`}function w(e){if(e.type.startsWith(`image/`)&&!(typeof URL>`u`||typeof URL.createObjectURL!=`function`))return URL.createObjectURL(e)}function T(e){!e||typeof URL>`u`||typeof URL.revokeObjectURL!=`function`||URL.revokeObjectURL(e)}function E(e){return Array.isArray(e)?{items:e,total:e.length}:e}function ee(e,t){return t&&typeof e==`object`&&e?{...e,...t}:e}function te(e,t,n,r,i){let a=n.trim().toLowerCase();return e.filter(e=>r!==`all`&&t.getType(e)!==r||i!==`all`&&t.getCollection(e)!==i?!1:a?[t.getName(e),t.getAlt(e),t.getCollection(e),...t.getTags(e)].filter(Boolean).join(` `).toLowerCase().includes(a):!0)}function ne(e,t,n){let r=e.slice();return n===`name`?r.sort((e,n)=>t.getName(e).localeCompare(t.getName(n))):n===`size`?r.sort((e,n)=>(t.getSize(n)??0)-(t.getSize(e)??0)):n===`usage`?r.sort((e,n)=>(t.getUsageCount(n)??0)-(t.getUsageCount(e)??0)):r.sort((e,n)=>S(n,t)-S(e,t)),r}function D({items:e=_,fetcher:t,accessors:n,selectionMode:r=`multiple`,value:i,defaultValue:a=[],onValueChange:o,onItemUpdate:s,onItemDelete:c,onUpload:l,onError:d,initialTab:f=`library`,defaultView:p=`grid`,defaultQuery:m=``,defaultType:h=`all`,defaultCollection:v=`all`,defaultSort:b=`newest`,defaultUploadOptions:x}={}){let S=(0,u.useMemo)(()=>y(n),[n]),[D,O]=(0,u.useState)(f),[k,A]=(0,u.useState)(p),[j,M]=(0,u.useState)(m),[N,P]=(0,u.useState)(h),[F,I]=(0,u.useState)(v),[L,re]=(0,u.useState)(b),[ie,ae]=(0,u.useState)(null),[R,oe]=(0,u.useState)(()=>[...a]),[se,ce]=(0,u.useState)([]),[le,ue]=(0,u.useState)(),[de,fe]=(0,u.useState)(!1),[pe,z]=(0,u.useState)(null),[me,he]=(0,u.useState)([]),[ge,_e]=(0,u.useState)(()=>new Set),[ve,B]=(0,u.useState)({}),[V,H]=(0,u.useState)([]),[U,W]=(0,u.useState)(!1),[G,ye]=(0,u.useState)({...g,...x,tags:x?.tags??g.tags}),K=i!==void 0,q=(0,u.useMemo)(()=>K?[...i??[]]:R,[R,K,i]),J=(0,u.useMemo)(()=>new Set(q),[q]),Y=(0,u.useRef)(new Set);(0,u.useEffect)(()=>{if(!t)return;let e=new AbortController;return fe(!0),z(null),t({query:j,type:N,collection:F===`all`?void 0:F,sort:L,signal:e.signal}).then(t=>{if(e.signal.aborted)return;let n=E(t);ce(n.items),ue(n.total)}).catch(t=>{e.signal.aborted||(z(t),d?.(t))}).finally(()=>{e.signal.aborted||fe(!1)}),()=>e.abort()},[F,t,d,j,L,N]),(0,u.useEffect)(()=>{let e=Y.current;return()=>{for(let t of e)T(t);e.clear()}},[]);let X=(0,u.useMemo)(()=>t?se:[...me,...e],[me,se,t,e]),Z=(0,u.useMemo)(()=>X.filter(e=>!ge.has(S.getId(e))).map(e=>ee(e,ve[S.getId(e)])),[S,ve,ge,X]),Q=(0,u.useMemo)(()=>{let e=t?Z:te(Z,S,j,N,F);return t?e:ne(e,S,L)},[S,F,t,Z,j,L,N]),be=le??Z.length,xe=Q.length,Se=(0,u.useMemo)(()=>Z.filter(e=>J.has(S.getId(e))),[S,Z,J]),Ce=!!j.trim()||N!==`all`||F!==`all`,$=(0,u.useCallback)(e=>{K||oe(e);let t=new Set(e),n=Z.filter(e=>t.has(S.getId(e)));o?.(e,n)},[S,K,o,Z]),we=(0,u.useCallback)(e=>{let t=new Set(r===`single`?[]:J);J.has(e)&&r!==`single`?t.delete(e):t.add(e),$(Array.from(t))},[$,J,r]),Te=(0,u.useCallback)(()=>$([]),[$]),Ee=(0,u.useCallback)(()=>{M(``),P(`all`),I(`all`)},[]),De=(0,u.useCallback)(e=>{H(t=>[...t,...e.map((e,t)=>{let n=w(e);return n&&Y.current.add(n),{id:`staged-${Date.now()}-${t}`,file:e,name:e.name,size:e.size,type:C(e),src:n,progress:0,status:`staged`}})])},[]),Oe=(0,u.useCallback)(e=>{H(t=>{let n=t.find(t=>t.id===e);return n?.src&&(T(n.src),Y.current.delete(n.src)),t.filter(t=>t.id!==e)})},[]),ke=(0,u.useCallback)(()=>{H(e=>{for(let t of e)t.src&&(T(t.src),Y.current.delete(t.src));return[]})},[]),Ae=(0,u.useCallback)(e=>{ye(t=>({...t,...e}))},[]),je=(0,u.useCallback)((e,t)=>{H(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]);return{tab:D,setTab:O,view:k,setView:A,query:j,setQuery:M,type:N,setType:P,collection:F,setCollection:I,sort:L,setSort:re,detailId:ie,setDetailId:ae,items:Z,visibleItems:Q,selectedIds:q,selectedItems:Se,selectedSet:J,toggleSelection:we,clearSelection:Te,clearFilters:Ee,loading:de,error:pe,hasFilters:Ce,totalCount:be,filteredCount:xe,stagedFiles:V,addFiles:De,removeStagedFile:Oe,clearStagedFiles:ke,updateUploadOptions:Ae,uploadOptions:G,uploading:U,startUpload:(0,u.useCallback)(async()=>{if(U||V.length===0)return;W(!0),H(e=>e.map(e=>({...e,status:`uploading`,progress:0})));let e={setProgress:(e,t)=>{je(e,{progress:Math.max(0,Math.min(100,t))})},setFileStatus:(e,t,n)=>je(e,{status:t,error:n})};try{let t=V.map(e=>e.file),n=await l?.(t,G,e);if(H(e=>e.map(e=>({...e,status:`done`,progress:100}))),n?.length){he(e=>[...n,...e]);let e=n.map(e=>S.getId(e));$(r===`single`?e.slice(0,1):Array.from(new Set([...e,...q])))}ke(),O(`library`)}catch(e){z(e),H(e=>e.map(e=>e.status===`uploading`?{...e,status:`error`,error:`Upload failed`}:e)),d?.(e)}finally{W(!1)}},[S,$,ke,d,l,q,r,je,V,G,U]),updateItem:(0,u.useCallback)((e,t)=>{let n=S.getId(e);B(e=>({...e,[n]:{...e[n],...t}})),s?.(e,t)},[S,s]),removeItem:(0,u.useCallback)(e=>{let t=S.getId(e);_e(e=>new Set(e).add(t)),J.has(t)&&$(q.filter(e=>e!==t)),c?.(e)},[S,$,c,q,J]),accessors:S}}function O(e,t){return e===`image`?(0,d.jsx)(f.ImageIcon,{className:t??`size-4`}):e===`video`?(0,d.jsx)(f.Video,{className:t??`size-4`}):(0,d.jsx)(f.File,{className:t??`size-4`})}function k(e,t){return e===`image`?t.typeImage:e===`video`?t.typeVideo:t.typeFile}function A(e,t){return e?h(t.usedIn,{count:e}):t.notUsed}function j({children:e,tint:n,className:r}){return(0,d.jsx)(`div`,{className:t.cn(`media-library-preview relative overflow-hidden bg-muted`,r),style:n?{background:n}:void 0,children:e})}function M({src:e,alt:t,type:n,className:r,loading:i=`lazy`}){let[a,o]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{o(!1)},[e]),!e||a?(0,d.jsx)(`div`,{className:`media-library-preview--fallback flex size-full items-center justify-center text-muted-foreground`,children:O(n,`size-6`)}):(0,d.jsx)(`img`,{src:e,alt:t,loading:i,className:r,onError:()=>o(!0)})}function N({icon:e,title:n,description:i,action:a,className:o}){return(0,d.jsxs)(`div`,{className:t.cn(`media-library-empty-state--component flex min-h-64 flex-col items-center justify-center rounded-lg border border-dashed border-border bg-muted/20 px-6 py-10 text-center`,o),children:[(0,d.jsx)(`div`,{className:`mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:e??(0,d.jsx)(f.ImageIcon,{className:`size-5`})}),(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:n}),!!i&&(0,d.jsx)(r.s,{type:`secondary`,size:`xs`,className:`mt-1 max-w-sm`,children:i}),!!a&&(0,d.jsx)(`div`,{className:`mt-4`,children:a})]})}function P({query:e,type:r,typeFilters:i,collection:a,sort:o,view:l,collections:u=[],strings:p,onQueryChange:m,onTypeChange:h,onCollectionChange:g,onSortChange:_,onViewChange:v,onClearFilters:y,toolbarEnd:b}){let x=[{value:`all`,label:p.allTypes,icon:null},{value:`image`,label:p.images,icon:f.ImageIcon},{value:`video`,label:p.videos,icon:f.Video},{value:`file`,label:p.files,icon:f.File}].filter(e=>(i??[`all`,`image`,`video`]).includes(e.value)),S=[{value:`all`,label:p.allCollections},...u.map(e=>({value:e.value,label:String(e.label)}))],C=[{value:`newest`,label:p.sortNewest},{value:`name`,label:p.sortName},{value:`size`,label:p.sortSize},{value:`usage`,label:p.sortUsage}];return(0,d.jsxs)(`div`,{className:`media-library-toolbar--component flex flex-wrap items-center gap-2`,children:[(0,d.jsx)(`div`,{className:`min-w-52 flex-1`,children:(0,d.jsx)(s.t,{value:e,onChange:e=>m(e.target.value),placeholder:p.searchPlaceholder,startIcon:f.Search,clearable:!0,onClear:()=>m(``),strings:{clear:p.clearSearch},className:`rounded-full bg-muted/20`})}),(0,d.jsx)(`div`,{className:`media-library-toolbar--type-toggle flex h-9 items-center rounded-md bg-muted p-0.5`,role:`tablist`,"aria-label":p.typeFilterLabel,children:x.map(e=>{let i=e.icon,a=r===e.value;return(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":a,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 text-xs shadow-none`,a?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>h(e.value),children:[i&&(0,d.jsx)(i,{className:`size-3.5`}),e.label]},e.value)})}),(0,d.jsx)(`div`,{className:`min-w-40`,children:(0,d.jsx)(c.Y,{value:a,options:S,onChange:e=>g(e??`all`),placeholder:p.collectionFilterLabel,"aria-label":p.collectionFilterLabel,className:`bg-background`})}),(0,d.jsx)(`div`,{className:`min-w-32`,children:(0,d.jsx)(c.Y,{value:o,options:C,onChange:e=>_(e??`newest`),placeholder:p.sortLabel,"aria-label":p.sortLabel,className:`bg-background`})}),(0,d.jsxs)(`div`,{className:`media-library-toolbar--view-toggle ml-auto flex h-9 items-center rounded-md bg-muted p-0.5`,children:[(0,d.jsx)(n.t,{type:`button`,variant:l===`grid`?`dark`:`secondary`,buttonStyle:l===`grid`?`solid`:`ghost`,size:`icon-small`,className:t.cn(l===`grid`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":p.gridView,onClick:()=>v(`grid`),children:(0,d.jsx)(f.Grid2X2,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:l===`table`?`dark`:`secondary`,buttonStyle:l===`table`?`solid`:`ghost`,size:`icon-small`,className:t.cn(l===`table`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":p.tableView,onClick:()=>v(`table`),children:(0,d.jsx)(f.LayoutList,{className:`size-3.5`})})]}),!!e&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:y,children:p.clearFilters}),b]})}function F({item:e,selected:i=!1,density:o=`comfortable`,showMeta:s=!0,accessors:c,strings:l,onToggle:u,onDetails:p,className:m}){let g=c.getType(e),_=c.getName(e),v=c.getSrc(e),y=c.getAlt(e)||_,x=c.getSize(e),S=c.getUsageCount(e),C=c.getPublic(e)===!1,w=c.getDuration(e);return(0,d.jsxs)(`div`,{"data-selected":i||void 0,"data-density":o,className:t.cn(`media-library-card--component group/card overflow-hidden rounded-xl border border-border/70 bg-card text-left shadow-xs transition-all`,`hover:border-primary/30 hover:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,i&&`media-library-card--selected border-primary ring-1 ring-primary`,m),onClick:u,children:[(0,d.jsxs)(j,{tint:c.getTint(e),className:t.cn(o===`compact`?`aspect-square`:`aspect-[4/3]`),children:[(0,d.jsx)(M,{src:v,alt:y,type:g,className:`size-full object-cover`}),(0,d.jsx)(`span`,{className:t.cn(`media-library-card--check absolute left-2 top-2 inline-flex size-5 items-center justify-center rounded-md border border-border bg-background/95 text-transparent opacity-0 shadow-xs backdrop-blur transition-opacity group-hover/card:opacity-100 group-focus-visible/card:opacity-100`,i&&`bg-primary text-primary-foreground opacity-100`),"aria-hidden":`true`,children:(0,d.jsx)(f.Check,{className:`size-3`})}),!!p&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,className:`media-library-card--details absolute right-2 top-2 opacity-0 shadow-sm transition-opacity group-hover/card:opacity-100 group-focus-within/card:opacity-100`,"aria-label":h(l.cardDetails,{name:_}),onClick:e=>{e.stopPropagation(),p()},children:(0,d.jsx)(f.Info,{className:`size-3.5`})}),g===`video`&&!!w&&(0,d.jsxs)(a.t,{variant:`secondary`,className:`media-library-card--duration absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),w]}),C&&(0,d.jsx)(a.t,{variant:`secondary`,className:`media-library-card--private absolute bottom-2 right-2 bg-background/90`,children:(0,d.jsx)(f.Lock,{className:`size-3`})})]}),(0,d.jsxs)(`div`,{className:`media-library-card--body grid gap-1 px-3 py-2.5`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:_}),s&&(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:b(x)||l.unknownSize}),!!S&&(0,d.jsxs)(r.s,{tag:`span`,size:`xs`,type:`secondary`,className:`ml-auto inline-flex items-center gap-1`,children:[(0,d.jsx)(f.Layers3,{className:`size-3`}),S]})]})]})]})}function I({items:e,selectedSet:i,accessors:o,strings:s,onToggle:c,onDetails:l}){return(0,d.jsxs)(`div`,{className:`media-library-table--component min-w-180`,children:[(0,d.jsxs)(`div`,{className:`sticky top-0 z-10 grid grid-cols-[32px_42px_minmax(0,1fr)_86px_88px_120px_72px_34px] items-center gap-3 border-b border-border bg-background px-3 py-2`,children:[(0,d.jsx)(`span`,{}),(0,d.jsx)(`span`,{}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`semibold`,children:s.table.name}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`semibold`,children:s.table.type}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`semibold`,children:s.table.size}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`semibold`,children:s.table.collection}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`semibold`,children:s.table.used}),(0,d.jsx)(`span`,{})]}),e.map(e=>{let u=o.getId(e),p=i.has(u),m=o.getType(e),g=o.getName(e),_=o.getSrc(e),v=o.getPublic(e)===!1;return(0,d.jsxs)(`div`,{"data-selected":p||void 0,className:t.cn(`media-library-table--row grid grid-cols-[32px_42px_minmax(0,1fr)_86px_88px_120px_72px_34px] items-center gap-3 border-b border-border/60 px-3 py-2 last:border-b-0`,`cursor-pointer rounded-lg transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`,p&&`bg-primary/10`),onClick:()=>c(u),children:[(0,d.jsx)(`span`,{className:t.cn(`inline-flex size-5 items-center justify-center rounded-md border border-border text-transparent`,p&&`border-primary bg-primary text-primary-foreground`),"aria-hidden":`true`,children:(0,d.jsx)(f.Check,{className:`size-3`})}),(0,d.jsx)(j,{tint:o.getTint(e),className:`size-9 rounded-md`,children:_?(0,d.jsx)(`img`,{src:_,alt:``,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:O(m,`size-4`)})}),(0,d.jsxs)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`flex min-w-0 items-center gap-1 truncate`,children:[(0,d.jsx)(`span`,{className:`truncate`,children:g}),v&&(0,d.jsx)(f.Lock,{className:`size-3 shrink-0 text-muted-foreground`})]}),(0,d.jsx)(a.t,{variant:`secondary`,children:k(m,s)}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:b(o.getSize(e))||s.unknownSize}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:o.getCollection(e)||`-`}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:o.getUsageCount(e)?o.getUsageCount(e):`-`}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":h(s.cardDetails,{name:g}),onClick:e=>{e.stopPropagation(),l(u)},children:(0,d.jsx)(f.Info,{className:`size-3.5`})})]},u)})]})}function L({item:e,collections:t=[],accessors:i,strings:o,onClose:u,onUpdate:p,onRemove:m,renderDetail:h}){if(!e)return null;let g=i.getName(e),_=i.getType(e),v=i.getSrc(e),y=i.getCollection(e)??t[0]?.value??``,S=i.getTags(e),C=i.getPublic(e)??!0,w=h?.(e,{accessors:i,update:p,remove:m,close:u});return w?(0,d.jsx)(d.Fragment,{children:w}):(0,d.jsxs)(`aside`,{className:`media-library-detail-panel--component flex min-h-0 w-full flex-col border-l border-border bg-background lg:w-72`,children:[(0,d.jsxs)(`div`,{className:`media-library-detail-panel--header flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":o.detail.close,onClick:u,children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(r.s,{weight:`semibold`,children:o.detail.title})]}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--body grid min-h-0 gap-4 overflow-y-auto p-4`,children:[(0,d.jsxs)(j,{tint:i.getTint(e),className:`aspect-[4/3] rounded-lg border border-border`,children:[(0,d.jsx)(M,{src:v,alt:i.getAlt(e)||g,type:_,className:`size-full object-cover`}),_===`video`&&!!i.getDuration(e)&&(0,d.jsxs)(a.t,{className:`absolute bottom-2 right-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),i.getDuration(e)]})]}),(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,className:`break-words`,children:g}),(0,d.jsx)(`dl`,{className:`media-library-detail-panel--facts grid gap-2`,children:[[o.detail.type,k(_,o)],[o.detail.size,b(i.getSize(e))||o.unknownSize],[o.detail.dimensions,x(e,i)||`-`],[o.detail.uploaded,String(i.getUploadedAt(e)??`-`)],[o.detail.usedIn,A(i.getUsageCount(e),o)]].map(([e,t])=>(0,d.jsxs)(`div`,{className:`flex justify-between gap-4`,children:[(0,d.jsx)(`dt`,{children:(0,d.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,children:e})}),(0,d.jsx)(`dd`,{className:`m-0 text-right`,children:(0,d.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,children:t})})]},e))}),(0,d.jsx)(l.D,{label:o.detail.altText,children:(0,d.jsx)(s.t,{value:i.getAlt(e)??``,placeholder:o.detail.altPlaceholder,onChange:e=>p({alt:e.target.value})})}),(0,d.jsx)(l.D,{label:o.detail.collection,children:(0,d.jsx)(c.Y,{value:y,options:t.map(e=>({value:e.value,label:String(e.label)})),"aria-label":o.detail.collection,onChange:e=>p({collection:e})})}),(0,d.jsx)(l.D,{label:o.detail.tags,children:(0,d.jsx)(s.t,{value:S.join(`, `),placeholder:o.detail.tagsPlaceholder,onChange:e=>p({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--public flex items-center justify-between gap-4 rounded-lg border border-border bg-muted/20 p-3`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,children:o.detail.public}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:C?o.detail.publicHint:o.detail.privateHint})]}),(0,d.jsx)(c.J,{checked:C,onCheckedChange:e=>p({public:e})})]}),(0,d.jsxs)(`div`,{className:`media-library-detail-panel--actions flex flex-wrap gap-2`,children:[(0,d.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),o.detail.replace]}),(0,d.jsxs)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,onClick:m,children:[(0,d.jsx)(f.Trash2,{className:`size-3.5`}),o.detail.delete]})]})]})]})}function re({stagedFiles:e,uploadOptions:t,collections:i=[],uploading:o=!1,strings:u,onFiles:p,onRemoveFile:m,onOptionsChange:g,empty:_}){return(0,d.jsxs)(`div`,{className:`media-library-upload-panel--component grid gap-4 p-4`,children:[(0,d.jsx)(c.T,{onDrop:p,accept:`image/*,video/*`,multiple:!0,size:`default`,strings:{instruction:u.upload.dropTitle,helper:u.upload.dropHint,dragOver:u.upload.dragOver}}),e.length>0?(0,d.jsx)(`div`,{className:`media-library-upload-panel--staged grid gap-2`,children:e.map(e=>(0,d.jsxs)(`div`,{className:`media-library-upload-panel--staged-file flex items-center gap-3 rounded-lg border border-border bg-card p-2`,children:[(0,d.jsx)(j,{className:`size-10 rounded-md`,children:e.src?(0,d.jsx)(`img`,{src:e.src,alt:e.name,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:O(e.type,`size-4`)})}),(0,d.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,d.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,className:`truncate`,children:e.name}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`ml-auto shrink-0`,children:b(e.size)})]}),(e.status===`uploading`||e.status===`done`)&&(0,d.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-muted`,children:(0,d.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${e.progress}%`}})}),e.status===`error`&&(0,d.jsx)(r.s,{size:`xs`,type:`error`,children:e.error})]}),e.status===`done`?(0,d.jsx)(a.t,{variant:`success`,children:u.upload.done}):e.status===`uploading`?(0,d.jsxs)(r.s,{size:`xs`,type:`secondary`,className:`tabular-nums`,children:[Math.round(e.progress),`%`]}):(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:o,"aria-label":h(u.upload.removeFile,{name:e.name}),onClick:()=>m(e.id),children:(0,d.jsx)(f.X,{className:`size-3.5`})})]},e.id))}):_,(0,d.jsxs)(`div`,{className:`media-library-upload-panel--options grid gap-3 rounded-lg border border-border bg-muted/20 p-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]`,children:[(0,d.jsx)(l.D,{label:u.upload.collection,children:(0,d.jsx)(c.Y,{value:t.collection??i[0]?.value,options:i.map(e=>({value:e.value,label:String(e.label)})),"aria-label":u.upload.collection,onChange:e=>g({collection:e})})}),(0,d.jsx)(l.D,{label:u.upload.tags,children:(0,d.jsx)(s.t,{value:t.tags.join(`, `),placeholder:u.upload.tagsPlaceholder,onChange:e=>g({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-4 md:self-end`,children:[(0,d.jsxs)(`div`,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,children:u.upload.public}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:u.upload.publicHint})]}),(0,d.jsx)(c.J,{checked:t.public,onCheckedChange:e=>g({public:e})})]})]})]})}function ie({tab:e,selectedIds:i,selectionMode:a,stagedFiles:o,strings:s,onClearSelection:c,className:l}){let u=i.length,f=o.reduce((e,t)=>e+t.size,0),p=o.length,m=t.cn(`media-library-footer-summary--component flex min-w-0 items-center gap-3`,l);return e===`upload`?(0,d.jsx)(`div`,{className:m,"aria-live":`polite`,children:(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:p===0?s.footer.noFiles:h(s.footer.stagedSummary,{count:p,size:b(f)})})}):(0,d.jsx)(`div`,{className:m,"aria-live":`polite`,children:u>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(r.s,{weight:`semibold`,size:`xs`,className:`whitespace-nowrap`,children:h(s.footer.selectedCount,{count:u})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,onClick:c,children:s.footer.clear})]}):(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`truncate`,children:a===`single`?s.footer.pickOne:s.footer.pickMany})})}function ae({tab:e,selectedItems:r,selectedIds:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onUpload:p,onCancelUpload:m,className:g}){let _=i.length,v=a.length;return e===`upload`?(0,d.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,g),children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,disabled:o,onClick:m,children:l??s.footer.cancel}),(0,d.jsx)(n.t,{type:`button`,disabled:v===0||o,onClick:p,loading:o,loadingLabels:{loading:s.footer.uploading},children:v<=1?s.footer.upload:h(s.footer.uploadMany,{count:v})})]}):(0,d.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,g),children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:u,children:l??s.footer.cancel}),(0,d.jsx)(n.t,{type:`button`,disabled:_===0,onClick:f,children:c??(_===0?s.footer.confirmEmpty:r.length===1?s.footer.confirmOne:h(s.footer.confirmMany,{count:_}))})]})}function R({tab:e,selectedItems:n,selectedIds:r,selectionMode:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onClearSelection:p,onUpload:m,onCancelUpload:h,chrome:g=`section`,className:_}){return(0,d.jsxs)(`footer`,{className:t.cn(`media-library-footer--component flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,g===`section`&&`border-t border-border bg-background px-4 py-3`,_),children:[(0,d.jsx)(ie,{tab:e,selectedIds:r,selectionMode:i,stagedFiles:a,strings:s,onClearSelection:p}),(0,d.jsx)(ae,{tab:e,selectedItems:n,selectedIds:r,stagedFiles:a,uploading:o,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:f,onUpload:m,onCancelUpload:h})]})}var oe=(0,u.createContext)(null);function se(e,t,n){return(0,u.useMemo)(()=>{if(e)return e;let r=new Set;for(let e of t){let t=n(e);t&&r.add(t)}return Array.from(r).map(e=>({value:e,label:e}))},[e,n,t])}function ce({title:i,description:a,confirmLabel:s,cancelLabel:c,selectionMode:l=`multiple`,density:g=`comfortable`,showMeta:_=!0,allowUpload:v=!0,typeFilters:y,confirmOnSelect:b=!1,onConfirm:x,onCancel:S,onClose:C,strings:w,slots:T,heightClassName:E,className:ee,items:te,fetcher:ne,accessors:O,collections:k,value:A,defaultValue:j,onValueChange:M,onItemUpdate:ce,onItemDelete:le,onUpload:ue,onError:de,initialTab:fe,defaultView:pe,defaultQuery:z,defaultType:me,defaultCollection:he,defaultSort:ge,defaultUploadOptions:_e,...ve}){let B=e.useStrings(m,w),V=D({items:te,fetcher:ne,accessors:O,collections:k,selectionMode:l,value:A,defaultValue:j,onValueChange:M,onItemUpdate:ce,onItemDelete:le,onUpload:ue,onError:de,initialTab:fe,defaultView:pe,defaultQuery:z,defaultType:me,defaultCollection:he,defaultSort:ge,defaultUploadOptions:_e}),H=se(k,V.items,V.accessors.getCollection),U=v?V.tab:`library`,W=V.detailId?V.items.find(e=>V.accessors.getId(e)===V.detailId)??null:null,G=(0,u.useContext)(oe),ye=!T?.footer,K=G&&ye?(0,d.jsx)(ie,{tab:U,selectedIds:V.selectedIds,selectionMode:l,stagedFiles:V.stagedFiles,strings:B,onClearSelection:V.clearSelection,className:`media-library-dialog--selection-summary shrink-0 justify-end`}):null,q=!!(i||a||T?.headerStart),J=!!(v||T?.headerEnd||K),Y=q||J,X=()=>{x?.(V.selectedItems,V.selectedIds),C?.()},Z=()=>{S?.(),C?.()},Q=e=>{let t=V.accessors.getId(e);V.toggleSelection(t),b&&(x?.([e],[t]),C?.())},be=V.filteredCount===V.totalCount?h(B.countAll,{count:V.totalCount}):h(B.countFiltered,{count:V.filteredCount,total:V.totalCount}),xe=T?.footer??(G?(0,d.jsx)(ae,{tab:U,selectedItems:V.selectedItems,selectedIds:V.selectedIds,stagedFiles:V.stagedFiles,uploading:V.uploading,strings:B,confirmLabel:s,cancelLabel:c,onCancel:Z,onConfirm:X,onUpload:V.startUpload,onCancelUpload:()=>{V.clearStagedFiles(),V.setTab(`library`)},className:`ml-auto`}):(0,d.jsx)(R,{tab:U,selectedItems:V.selectedItems,selectedIds:V.selectedIds,selectionMode:l,stagedFiles:V.stagedFiles,uploading:V.uploading,strings:B,confirmLabel:s,cancelLabel:c,onCancel:Z,onConfirm:X,onClearSelection:V.clearSelection,onUpload:V.startUpload,onCancelUpload:()=>{V.clearStagedFiles(),V.setTab(`library`)}}));return(0,d.jsxs)(`section`,{className:t.cn(`media-library--component flex min-h-0 flex-col overflow-hidden rounded-lg border border-border bg-background`,E??`h-190 max-h-[calc(100vh-7rem)]`,ee),...ve,children:[Y&&(0,d.jsxs)(`header`,{className:`media-library--header flex flex-col gap-3 border-b border-border px-4 py-3 lg:flex-row lg:items-center lg:justify-between`,children:[q&&(0,d.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[T?.headerStart,(i||a)&&(0,d.jsxs)(`div`,{className:`min-w-0`,children:[!!i&&(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:i}),!!a&&(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:a})]})]}),J&&(0,d.jsxs)(`div`,{className:t.cn(`flex min-w-0 flex-wrap items-center gap-2`,K?`flex-1 justify-between`:`lg:justify-end`),children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[v&&(0,d.jsxs)(`div`,{className:`media-library--tabs flex items-center rounded-md bg-muted p-0.5`,role:`tablist`,children:[(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":U===`library`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 shadow-none`,U===`library`?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>V.setTab(`library`),children:[(0,d.jsx)(f.ImageIcon,{className:`size-3.5`}),B.tabs.library]}),(0,d.jsxs)(n.t,{type:`button`,role:`tab`,"aria-selected":U===`upload`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`h-8 rounded-sm px-3 shadow-none`,U===`upload`?`bg-background text-foreground shadow-xs hover:bg-background`:`text-muted-foreground hover:bg-transparent hover:text-foreground`),onClick:()=>V.setTab(`upload`),children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),B.tabs.upload,V.stagedFiles.length>0&&(0,d.jsx)(`span`,{className:`rounded-full bg-background/20 px-1.5 text-xs tabular-nums`,children:V.stagedFiles.length})]})]}),T?.headerEnd]}),K]})]}),(0,d.jsxs)(`div`,{className:`media-library--body flex min-h-0 flex-1`,children:[U===`upload`?(0,d.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:(0,d.jsx)(re,{stagedFiles:V.stagedFiles,uploadOptions:V.uploadOptions,collections:H,uploading:V.uploading,strings:B,onFiles:V.addFiles,onRemoveFile:V.removeStagedFile,onOptionsChange:V.updateUploadOptions,empty:T?.uploadEmpty})}):(0,d.jsxs)(`div`,{className:t.cn(`media-library--library min-w-0 flex-1 flex-col`,W?`hidden lg:flex`:`flex`),children:[(0,d.jsxs)(`div`,{className:`media-library--toolbar border-b border-border/70 px-4 py-3`,children:[(0,d.jsx)(P,{query:V.query,type:V.type,typeFilters:y,collection:V.collection,sort:V.sort,view:V.view,collections:H,strings:B,onQueryChange:V.setQuery,onTypeChange:V.setType,onCollectionChange:V.setCollection,onSortChange:V.setSort,onViewChange:V.setView,onClearFilters:V.clearFilters,toolbarEnd:T?.toolbarEnd}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-2`,"aria-live":`polite`,children:be})]}),(0,d.jsx)(`div`,{className:`media-library--results min-h-0 flex-1 overflow-y-auto p-4`,children:V.loading?T?.loading??(0,d.jsx)(`div`,{className:`flex min-h-64 items-center justify-center`,children:(0,d.jsx)(r.s,{type:`secondary`,children:B.loading})}):V.error?T?.error??(0,d.jsxs)(o.i,{variant:`destructive`,children:[(0,d.jsx)(o.s,{children:B.errorTitle}),(0,d.jsx)(o.o,{children:B.errorDescription})]}):V.visibleItems.length===0?T?.empty??(0,d.jsx)(N,{title:V.hasFilters?B.emptyFilteredTitle:B.emptyLibraryTitle,description:V.hasFilters?B.emptyFilteredDescription:B.emptyLibraryDescription,action:V.hasFilters?(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,onClick:V.clearFilters,children:B.clearFilters}):v?(0,d.jsxs)(n.t,{type:`button`,onClick:()=>V.setTab(`upload`),children:[(0,d.jsx)(f.UploadCloud,{className:`size-3.5`}),B.uploadMedia]}):void 0}):V.view===`table`?(0,d.jsx)(`div`,{className:`overflow-x-auto`,children:(0,d.jsx)(I,{items:V.visibleItems,selectedSet:V.selectedSet,selectionMode:l,accessors:V.accessors,strings:B,onToggle:e=>{let t=V.items.find(t=>V.accessors.getId(t)===e);t&&Q(t)},onDetails:V.setDetailId})}):(0,d.jsx)(`div`,{className:t.cn(`media-library--grid grid gap-3`,g===`compact`?`grid-cols-[repeat(auto-fill,minmax(136px,1fr))]`:`grid-cols-[repeat(auto-fill,minmax(168px,1fr))]`),children:V.visibleItems.map(e=>{let t=V.accessors.getId(e),n={id:t,selected:V.selectedSet.has(t),selectionMode:l,accessors:V.accessors,toggle:()=>Q(e),openDetails:()=>V.setDetailId(t)},r=T?.renderItem?.(e,n);return r?(0,d.jsx)(`div`,{children:r},t):(0,d.jsx)(F,{item:e,selected:n.selected,density:g,showMeta:_,selectionMode:l,accessors:V.accessors,strings:B,onToggle:n.toggle,onDetails:n.openDetails},t)})})})]}),U===`library`&&(0,d.jsx)(L,{item:W,collections:H,accessors:V.accessors,strings:B,onClose:()=>V.setDetailId(null),onUpdate:e=>W&&V.updateItem(W,e),onRemove:()=>{W&&(V.removeItem(W),V.setDetailId(null))},renderDetail:T?.renderDetail})]}),G?G.element?(0,p.createPortal)(xe,G.element):null:xe]})}function le({open:n,onOpenChange:r,trigger:a,dialogTitle:o,dialogDescription:s,onClose:c,className:l,dialogClassName:f,contentClassName:p,closeOnEscape:h=!0,closeOnBackdropClick:g=!0,..._}){let v=e.useStrings(m,_.strings),[y,b]=(0,u.useState)(!1),[x,S]=(0,u.useState)(null),C=n!==void 0,w=C?n:y,T=e=>{C||b(e),r?.(e)},E=()=>{T(!1),c?.()};return(0,d.jsx)(oe.Provider,{value:{element:x},children:(0,d.jsx)(i.r,{open:w,onOpenChange:T,onClose:c,trigger:a,title:o??v.title,description:s??v.description,size:`full`,showCancel:!1,showConfirm:!1,footer:(0,d.jsx)(`div`,{ref:S,className:`media-library-dialog--footer`}),className:t.cn(`media-library-dialog--component max-h-[calc(100vh-2rem)] max-w-[min(1060px,calc(100vw-2rem))]`,f),contentClassName:t.cn(`media-library-dialog--body flex min-h-0 flex-col overflow-hidden p-0`,p),closeOnBackdropClick:g,closeOnEscape:h,children:(0,d.jsx)(ce,{..._,onClose:E,className:t.cn(`media-library-dialog--library rounded-none border-0`,l),heightClassName:_.heightClassName??`min-h-0 flex-1`,strings:_.strings})})})}function ue(e,t,n){let r=e.slice(),[i]=r.splice(t,1);return i===void 0||r.splice(n,0,i),r}function de({items:i,accessors:o,title:s,description:c,primaryId:l,onPrimaryChange:u,onRemove:p,onReorder:g,onAdd:_,maxItems:v,layout:x=`field`,density:S=`comfortable`,readOnly:C=!1,empty:w,action:T,renderItem:E,strings:ee,className:te,...ne}){let D=e.useStrings(m,ee),O=y(o),k=i.length,A=l??(k>0?O.getId(i[0]):void 0),j=!C&&!!_&&(v===void 0||k<v),M=j&&(x===`field`||k>0)?(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,icon:f.Plus,onClick:_,children:D.gallery.add}):v!==void 0&&k>=v?(0,d.jsx)(a.t,{variant:`secondary`,children:D.gallery.maxReached}):null,P=(e,t)=>{if(t<0||t>=k||e===t)return;let n=ue(i,e,t);g?.(n.map(e=>O.getId(e)),n)},F=!!(s||c||T||M),I=k===0&&x!==`field`,L=()=>!j||x!==`field`?null:(0,d.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,className:t.cn(`media-resource-gallery--add-tile h-auto min-h-24 w-full flex-col rounded-lg border border-dashed border-border bg-background text-muted-foreground shadow-none`,`aspect-square hover:border-primary/50 hover:bg-primary/5 hover:text-primary focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),"aria-label":D.gallery.addTile,onClick:_,children:[(0,d.jsx)(f.Plus,{className:`size-4`}),(0,d.jsx)(`span`,{className:`sr-only`,children:D.gallery.addTile})]});return(0,d.jsxs)(`section`,{className:t.cn(`media-resource-gallery--component rounded-lg border border-border bg-card shadow-xs`,te),"data-layout":x,"data-density":S,...ne,children:[F&&(0,d.jsxs)(`header`,{className:`media-resource-gallery--header flex flex-col gap-3 px-4 py-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,d.jsxs)(`div`,{className:`min-w-0`,children:[!!s&&(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,children:s}),!!c&&(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:c})]}),(0,d.jsx)(`div`,{className:`media-resource-gallery--actions flex flex-wrap items-center gap-2`,children:T??M})]}),I?(0,d.jsx)(`div`,{className:`media-resource-gallery--empty p-4 pt-0`,children:w??(0,d.jsx)(N,{title:D.gallery.emptyTitle,description:D.gallery.emptyDescription,action:j?(0,d.jsx)(n.t,{type:`button`,icon:f.ImagePlus,onClick:_,children:D.gallery.add}):void 0})}):(0,d.jsxs)(`div`,{className:t.cn(`media-resource-gallery--items p-4`,F&&`pt-0`,x===`list`?`grid gap-2`:x===`field`?`grid grid-cols-[repeat(auto-fill,minmax(96px,1fr))] gap-3 sm:grid-cols-[repeat(auto-fill,minmax(108px,1fr))]`:S===`compact`?`grid grid-cols-[repeat(auto-fill,minmax(132px,1fr))] gap-3`:`grid grid-cols-[repeat(auto-fill,minmax(164px,1fr))] gap-3`),children:[i.map((e,i)=>{let o=O.getId(e),s=O.getName(e),c=O.getType(e),l=O.getSrc(e),m=O.getAlt(e)||s,g=o===A,_=O.getPublic(e)===!1,v=O.getDuration(e),y=i>0,S=i<k-1,w=E?.(e,{id:o,index:i,total:k,primary:g,accessors:O,canMovePrevious:y,canMoveNext:S,setPrimary:()=>u?.(o,e),remove:()=>p?.(o,e),movePrevious:()=>P(i,i-1),moveNext:()=>P(i,i+1)});return w?(0,d.jsx)(`div`,{children:w},o):x===`field`?(0,d.jsxs)(`div`,{className:t.cn(`media-resource-gallery--item group/gallery relative aspect-square overflow-hidden rounded-lg border border-border bg-background shadow-xs`,`transition-colors hover:border-primary/40 focus-within:border-primary/50`,g&&`col-span-2 row-span-2 min-h-52`),"data-primary":g||void 0,children:[l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center bg-muted text-muted-foreground`,children:(0,d.jsx)(f.File,{className:g?`size-7`:`size-5`})}),g&&(0,d.jsx)(a.t,{variant:`secondary`,className:`absolute left-2 top-2 bg-background/90 shadow-xs`,children:D.gallery.cover}),c===`video`&&!!v&&(0,d.jsxs)(a.t,{variant:`secondary`,className:`absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,d.jsx)(f.Play,{className:`size-3 fill-current`}),v]}),_&&(0,d.jsx)(`span`,{className:`absolute bottom-2 right-2 inline-flex size-6 items-center justify-center rounded-full border border-border bg-background/90 text-muted-foreground shadow-xs`,children:(0,d.jsx)(f.Lock,{className:`size-3`})}),!C&&(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-small`,className:`absolute right-2 top-2 opacity-0 shadow-sm transition-opacity group-hover/gallery:opacity-100 group-focus-within/gallery:opacity-100`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.X,{className:`size-3.5`})})]},o):x===`list`?(0,d.jsxs)(`div`,{className:`media-resource-gallery--item flex min-w-0 items-center gap-3 rounded-lg border border-border bg-background p-2`,"data-primary":g||void 0,children:[(0,d.jsx)(`div`,{className:`relative size-12 shrink-0 overflow-hidden rounded-md bg-muted`,children:l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,d.jsx)(f.File,{className:`size-4`})})}),(0,d.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),g&&(0,d.jsx)(a.t,{variant:`info`,children:D.gallery.primary})]}),(0,d.jsxs)(r.s,{size:`xs`,type:`secondary`,children:[h(D.gallery.itemPosition,{index:i+1,total:k}),` · `,b(O.getSize(e))||D.unknownSize]})]}),!C&&(0,d.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:g,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,d.jsx)(f.Star,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!y,"aria-label":D.gallery.movePrevious,onClick:()=>P(i,i-1),children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>P(i,i+1),children:(0,d.jsx)(f.ArrowRight,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-small`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.Trash2,{className:`size-3.5`})})]})]},o):(0,d.jsxs)(`div`,{className:`media-resource-gallery--item group/gallery overflow-hidden rounded-lg border border-border bg-background shadow-xs transition-colors hover:border-primary/40`,"data-primary":g||void 0,children:[(0,d.jsxs)(`div`,{className:`relative aspect-[4/3] bg-muted`,children:[l?(0,d.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,d.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,d.jsx)(f.File,{className:`size-6`})}),(0,d.jsxs)(`div`,{className:`absolute left-2 top-2 flex flex-wrap gap-1`,children:[g&&(0,d.jsx)(a.t,{variant:`info`,children:D.gallery.primary}),(0,d.jsx)(a.t,{variant:`secondary`,children:h(D.gallery.itemPosition,{index:i+1,total:k})})]})]}),(0,d.jsxs)(`div`,{className:`media-resource-gallery--item-body grid gap-2 p-3`,children:[(0,d.jsxs)(`div`,{className:`min-w-0`,children:[(0,d.jsx)(r.s,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),(0,d.jsx)(r.s,{size:`xs`,type:`secondary`,children:b(O.getSize(e))||D.unknownSize})]}),!C&&(0,d.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:g,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,d.jsx)(f.Star,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!y,"aria-label":D.gallery.movePrevious,onClick:()=>P(i,i-1),children:(0,d.jsx)(f.ArrowLeft,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>P(i,i+1),children:(0,d.jsx)(f.ArrowRight,{className:`size-3.5`})}),(0,d.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-small`,className:`ml-auto`,"aria-label":D.gallery.remove,onClick:()=>p?.(o,e),children:(0,d.jsx)(f.Trash2,{className:`size-3.5`})})]})]})]},o)}),L()]})]})}exports.MediaLibrary=ce,exports.MediaLibraryCard=F,exports.MediaLibraryDetailPanel=L,exports.MediaLibraryDialog=le,exports.MediaLibraryEmptyState=N,exports.MediaLibraryFooter=R,exports.MediaLibraryTable=I,exports.MediaLibraryToolbar=P,exports.MediaLibraryUploadPanel=re,exports.MediaResourceGallery=de,exports.defaultMediaLibraryStrings=m,exports.formatMediaLibrarySize=b,exports.formatMediaLibraryString=h,exports.getMediaLibraryDimensions=x,exports.resolveMediaLibraryAccessors=y,exports.useMediaLibrary=D;
2
2
  //# sourceMappingURL=index.cjs.map