admin-ui-starter-kit 0.4.5 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1784) hide show
  1. package/.agents/skills/admin-ui-components/SKILL.md +71 -0
  2. package/.agents/skills/admin-ui-components/agents/openai.yaml +4 -0
  3. package/.agents/skills/admin-ui-components/references/selection-checklist.md +23 -0
  4. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +75 -15
  5. package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +57 -47
  6. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +71 -0
  7. package/.agents/skills/component-library-rules/SKILL.md +39 -24
  8. package/.agents/skills/component-library-rules/references/audit-followups.md +6 -5
  9. package/.agents/skills/component-library-rules/references/base-wrapper.md +1 -1
  10. package/.agents/skills/component-library-rules/references/components/INDEX.json +30 -18
  11. package/.agents/skills/component-library-rules/references/components/INDEX.md +30 -12
  12. package/.agents/skills/component-library-rules/references/components/base__accordion.md +1 -1
  13. package/.agents/skills/component-library-rules/references/components/base__alert.md +3 -3
  14. package/.agents/skills/component-library-rules/references/components/base__avatar.md +118 -0
  15. package/.agents/skills/component-library-rules/references/components/base__buttons.md +21 -17
  16. package/.agents/skills/component-library-rules/references/components/base__cards.md +50 -14
  17. package/.agents/skills/component-library-rules/references/components/base__carousel.md +5 -5
  18. package/.agents/skills/component-library-rules/references/components/base__combobox.md +62 -79
  19. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +810 -0
  20. package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +427 -0
  21. package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
  22. package/.agents/skills/component-library-rules/references/components/base__forms.md +62 -1
  23. package/.agents/skills/component-library-rules/references/components/base__icon-badge.md +84 -0
  24. package/.agents/skills/component-library-rules/references/components/base__item.md +10 -1
  25. package/.agents/skills/component-library-rules/references/components/base__navigation.md +7 -6
  26. package/.agents/skills/component-library-rules/references/components/base__spinner.md +2 -0
  27. package/.agents/skills/component-library-rules/references/components/base__table.md +413 -113
  28. package/.agents/skills/component-library-rules/references/components/base__tooltip.md +76 -0
  29. package/.agents/skills/component-library-rules/references/components/composed__admin.md +66 -0
  30. package/.agents/skills/component-library-rules/references/components/composed__ai.md +34 -2
  31. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +44 -2
  32. package/.agents/skills/component-library-rules/references/components/composed__empty-state.md +313 -0
  33. package/.agents/skills/component-library-rules/references/components/composed__inline-stat.md +63 -0
  34. package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +433 -0
  35. package/.agents/skills/component-library-rules/references/components/composed__onboarding-checklist.md +1 -1
  36. package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +89 -0
  37. package/.agents/skills/component-library-rules/references/components/docs__design-system-consistency.md +413 -0
  38. package/.agents/skills/component-library-rules/references/components/docs__installation.md +221 -0
  39. package/.agents/skills/component-library-rules/references/components/docs__overview.md +266 -0
  40. package/.agents/skills/component-library-rules/references/components/docs__refinement-guide.md +280 -0
  41. package/.agents/skills/component-library-rules/references/components/docs__showcase.md +197 -0
  42. package/.agents/skills/component-library-rules/references/components/features__activities.md +87 -88
  43. package/.agents/skills/component-library-rules/references/components/features__ai-chat.md +7 -7
  44. package/.agents/skills/component-library-rules/references/components/features__data-view.md +175 -0
  45. package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +51 -55
  46. package/.agents/skills/component-library-rules/references/components/features__filters.md +69 -0
  47. package/.agents/skills/component-library-rules/references/components/features__kanban.md +37 -35
  48. package/.agents/skills/component-library-rules/references/components/features__media-library.md +9 -3
  49. package/.agents/skills/component-library-rules/references/components/features__overlays.md +1 -1
  50. package/.agents/skills/component-library-rules/references/components/features__products.md +91 -75
  51. package/.agents/skills/component-library-rules/references/components/features__resource.md +194 -0
  52. package/.agents/skills/component-library-rules/references/components/features__schema-form.md +12 -10
  53. package/.agents/skills/component-library-rules/references/components/features__suggestions.md +6 -6
  54. package/.agents/skills/component-library-rules/references/components/features__sync.md +30 -12
  55. package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +14 -14
  56. package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +224 -188
  57. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +2 -2
  58. package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +41 -6
  59. package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +218 -14
  60. package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +4 -4
  61. package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +4 -4
  62. package/.agents/skills/component-library-rules/references/components/layout__layout-workspace.md +19 -11
  63. package/.agents/skills/component-library-rules/references/components/services__actions.md +443 -0
  64. package/.agents/skills/component-library-rules/references/components/services__hooks.md +326 -0
  65. package/.agents/skills/component-library-rules/references/components/ui__button.md +1 -1
  66. package/.agents/skills/component-library-rules/references/components/ui__empty-item.md +1 -1
  67. package/.agents/skills/component-library-rules/references/components/ui__inputs.md +1 -1
  68. package/.agents/skills/component-library-rules/references/components/ui__menus.md +15 -9
  69. package/.agents/skills/component-library-rules/references/components/ui__skeleton.md +3 -3
  70. package/.agents/skills/component-library-rules/references/consumer-wiring.md +2 -2
  71. package/.agents/skills/component-library-rules/references/history.md +10 -10
  72. package/.agents/skills/component-library-rules/references/import-paths.md +3 -3
  73. package/.agents/skills/component-library-rules/references/item-pattern.md +3 -3
  74. package/.agents/skills/component-library-rules/references/layout.md +7 -5
  75. package/.agents/skills/component-library-rules/references/testing.md +5 -5
  76. package/.agents/skills/component-library-rules/references/ui-provider.md +11 -12
  77. package/.agents/skills/component-library-rules/references/visual-eval.md +1 -1
  78. package/.agents/skills/token-system/SKILL.md +81 -0
  79. package/.agents/skills/token-system/agents/openai.yaml +4 -0
  80. package/.agents/skills/token-system/references/consumer-overrides.md +68 -0
  81. package/AGENTS.md +42 -17
  82. package/CHANGELOG.md +19 -3
  83. package/COMPONENT_SELECTION.md +46 -9
  84. package/INTEGRATION.md +113 -23
  85. package/MIGRATION.md +32 -0
  86. package/README.md +110 -43
  87. package/dist/_shared/accordion-B9EjlZLY.js +135 -0
  88. package/dist/_shared/accordion-B9EjlZLY.js.map +1 -0
  89. package/dist/_shared/accordion-IFDIc0E7.cjs +2 -0
  90. package/dist/_shared/accordion-IFDIc0E7.cjs.map +1 -0
  91. package/dist/_shared/action-menu-B6yFRDz1.cjs +2 -0
  92. package/dist/_shared/action-menu-B6yFRDz1.cjs.map +1 -0
  93. package/dist/_shared/action-menu-CNS-fwQr.js +96 -0
  94. package/dist/_shared/action-menu-CNS-fwQr.js.map +1 -0
  95. package/dist/_shared/ai-artifact-B3qhuiKC.js +1099 -0
  96. package/dist/_shared/ai-artifact-B3qhuiKC.js.map +1 -0
  97. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +3 -0
  98. package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +1 -0
  99. package/dist/_shared/alert-V0V36Sny.cjs +2 -0
  100. package/dist/_shared/alert-V0V36Sny.cjs.map +1 -0
  101. package/dist/_shared/alert-m-4s0Hqq.js +81 -0
  102. package/dist/_shared/alert-m-4s0Hqq.js.map +1 -0
  103. package/dist/_shared/app-shell-D3eGUtL-.js +69 -0
  104. package/dist/_shared/app-shell-D3eGUtL-.js.map +1 -0
  105. package/dist/_shared/app-shell-QJHARDMB.cjs +2 -0
  106. package/dist/_shared/app-shell-QJHARDMB.cjs.map +1 -0
  107. package/dist/_shared/auth-B_KVUjsB.cjs +2 -0
  108. package/dist/_shared/auth-B_KVUjsB.cjs.map +1 -0
  109. package/dist/_shared/auth-C_TgyzDl.js +643 -0
  110. package/dist/_shared/auth-C_TgyzDl.js.map +1 -0
  111. package/dist/_shared/avatar-BagPbPuD.js +105 -0
  112. package/dist/_shared/avatar-BagPbPuD.js.map +1 -0
  113. package/dist/_shared/avatar-BnKM_o2d.cjs +2 -0
  114. package/dist/_shared/avatar-BnKM_o2d.cjs.map +1 -0
  115. package/dist/_shared/badge-BeSKxX1u.cjs +2 -0
  116. package/dist/_shared/badge-BeSKxX1u.cjs.map +1 -0
  117. package/dist/_shared/badge-a2Z3K5aQ.js +110 -0
  118. package/dist/_shared/badge-a2Z3K5aQ.js.map +1 -0
  119. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +2 -0
  120. package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +1 -0
  121. package/dist/_shared/breadcrumbs-B57Unsoe.js +105 -0
  122. package/dist/_shared/breadcrumbs-B57Unsoe.js.map +1 -0
  123. package/dist/_shared/button-Bd5bEIiB.cjs +2 -0
  124. package/dist/_shared/button-Bd5bEIiB.cjs.map +1 -0
  125. package/dist/_shared/button-DHksjMvc.js +189 -0
  126. package/dist/_shared/button-DHksjMvc.js.map +1 -0
  127. package/dist/_shared/buttons-C8jy-jMd.cjs +2 -0
  128. package/dist/_shared/buttons-C8jy-jMd.cjs.map +1 -0
  129. package/dist/_shared/buttons-MxvdokeK.js +137 -0
  130. package/dist/_shared/buttons-MxvdokeK.js.map +1 -0
  131. package/dist/_shared/card-radio-group-C2p_iBal.cjs +2 -0
  132. package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +1 -0
  133. package/dist/_shared/card-radio-group-Fdi1Cz1j.js +150 -0
  134. package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +1 -0
  135. package/dist/_shared/cards-BKFwMTjM.cjs +2 -0
  136. package/dist/_shared/cards-BKFwMTjM.cjs.map +1 -0
  137. package/dist/_shared/cards-CtBoSZG9.js +355 -0
  138. package/dist/_shared/cards-CtBoSZG9.js.map +1 -0
  139. package/dist/_shared/checkbox-Cbh5x6ad.js +31 -0
  140. package/dist/_shared/checkbox-Cbh5x6ad.js.map +1 -0
  141. package/dist/_shared/checkbox-ECGg8wjW.cjs +2 -0
  142. package/dist/_shared/checkbox-ECGg8wjW.cjs.map +1 -0
  143. package/dist/_shared/combobox-BIe72dV3.js +954 -0
  144. package/dist/_shared/combobox-BIe72dV3.js.map +1 -0
  145. package/dist/_shared/combobox-CJiFDoTi.cjs +2 -0
  146. package/dist/_shared/combobox-CJiFDoTi.cjs.map +1 -0
  147. package/dist/_shared/command-ByedBajF.js +39 -0
  148. package/dist/_shared/command-ByedBajF.js.map +1 -0
  149. package/dist/_shared/command-EGR0nhGc.cjs +2 -0
  150. package/dist/_shared/command-EGR0nhGc.cjs.map +1 -0
  151. package/dist/_shared/comments-C8iXy9XO.cjs +2 -0
  152. package/dist/_shared/comments-C8iXy9XO.cjs.map +1 -0
  153. package/dist/_shared/comments-DGBxF9fD.js +952 -0
  154. package/dist/_shared/comments-DGBxF9fD.js.map +1 -0
  155. package/dist/_shared/copyable-Dopk9pEJ.js +38 -0
  156. package/dist/_shared/copyable-Dopk9pEJ.js.map +1 -0
  157. package/dist/_shared/copyable-rQwxsTJ3.cjs +2 -0
  158. package/dist/_shared/copyable-rQwxsTJ3.cjs.map +1 -0
  159. package/dist/_shared/data-display-CRFaMkxT.js +1873 -0
  160. package/dist/_shared/data-display-CRFaMkxT.js.map +1 -0
  161. package/dist/_shared/data-display-C_44_V-W.cjs +2 -0
  162. package/dist/_shared/data-display-C_44_V-W.cjs.map +1 -0
  163. package/dist/_shared/date-picker-BiUgIkjP.cjs +2 -0
  164. package/dist/_shared/date-picker-BiUgIkjP.cjs.map +1 -0
  165. package/dist/_shared/date-picker-DFkLiveH.js +1361 -0
  166. package/dist/_shared/date-picker-DFkLiveH.js.map +1 -0
  167. package/dist/_shared/date-pickers-C86tVD8e.cjs +2 -0
  168. package/dist/_shared/date-pickers-C86tVD8e.cjs.map +1 -0
  169. package/dist/_shared/date-pickers-D4oxOOHE.js +329 -0
  170. package/dist/_shared/date-pickers-D4oxOOHE.js.map +1 -0
  171. package/dist/_shared/display-B0wLVN8t.js +986 -0
  172. package/dist/_shared/display-B0wLVN8t.js.map +1 -0
  173. package/dist/_shared/display-Bin2vVex.cjs +2 -0
  174. package/dist/_shared/display-Bin2vVex.cjs.map +1 -0
  175. package/dist/_shared/form-sizing-C51oI3Di.js +42 -0
  176. package/dist/_shared/form-sizing-C51oI3Di.js.map +1 -0
  177. package/dist/_shared/form-sizing-Co53Drri.cjs +2 -0
  178. package/dist/_shared/form-sizing-Co53Drri.cjs.map +1 -0
  179. package/dist/_shared/forms-qnwoUqxf.js +3533 -0
  180. package/dist/_shared/forms-qnwoUqxf.js.map +1 -0
  181. package/dist/_shared/forms-rmKcy5uO.cjs +2 -0
  182. package/dist/_shared/forms-rmKcy5uO.cjs.map +1 -0
  183. package/dist/_shared/header-CxhEtk9M.cjs +2 -0
  184. package/dist/_shared/header-CxhEtk9M.cjs.map +1 -0
  185. package/dist/_shared/header-h3f14vQx.js +447 -0
  186. package/dist/_shared/header-h3f14vQx.js.map +1 -0
  187. package/dist/_shared/hooks-CS55-w3h.js +95 -0
  188. package/dist/_shared/hooks-CS55-w3h.js.map +1 -0
  189. package/dist/_shared/hooks-sfHAyDgD.cjs +2 -0
  190. package/dist/_shared/hooks-sfHAyDgD.cjs.map +1 -0
  191. package/dist/_shared/icon-badge-CU6ZkcER.cjs +2 -0
  192. package/dist/_shared/icon-badge-CU6ZkcER.cjs.map +1 -0
  193. package/dist/_shared/icon-badge-dZQPvuas.js +48 -0
  194. package/dist/_shared/icon-badge-dZQPvuas.js.map +1 -0
  195. package/dist/_shared/input-CB6hxh-5.cjs +2 -0
  196. package/dist/_shared/input-CB6hxh-5.cjs.map +1 -0
  197. package/dist/_shared/input-CfnHBT--.js +182 -0
  198. package/dist/_shared/input-CfnHBT--.js.map +1 -0
  199. package/dist/_shared/item-Xs-fgzaT.js +226 -0
  200. package/dist/_shared/item-Xs-fgzaT.js.map +1 -0
  201. package/dist/_shared/item-eUP9Rtmg.cjs +2 -0
  202. package/dist/_shared/item-eUP9Rtmg.cjs.map +1 -0
  203. package/dist/_shared/layout.types-CYuDZ_4h.cjs +2 -0
  204. package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +1 -0
  205. package/dist/_shared/layout.types-j7zZAPtg.js +28 -0
  206. package/dist/_shared/layout.types-j7zZAPtg.js.map +1 -0
  207. package/dist/_shared/mentions-BahbwDwU.js +506 -0
  208. package/dist/_shared/mentions-BahbwDwU.js.map +1 -0
  209. package/dist/_shared/mentions-aHalksbt.cjs +2 -0
  210. package/dist/_shared/mentions-aHalksbt.cjs.map +1 -0
  211. package/dist/_shared/money-display-BLPNMmiT.cjs +2 -0
  212. package/dist/_shared/money-display-BLPNMmiT.cjs.map +1 -0
  213. package/dist/_shared/money-display-D_-Cb8-9.js +198 -0
  214. package/dist/_shared/money-display-D_-Cb8-9.js.map +1 -0
  215. package/dist/_shared/navigation-BcYAwgzo.js +436 -0
  216. package/dist/_shared/navigation-BcYAwgzo.js.map +1 -0
  217. package/dist/_shared/navigation-DAB7uuBj.cjs +2 -0
  218. package/dist/_shared/navigation-DAB7uuBj.cjs.map +1 -0
  219. package/dist/_shared/overlays-CdtMAkKG.js +648 -0
  220. package/dist/_shared/overlays-CdtMAkKG.js.map +1 -0
  221. package/dist/_shared/overlays-Diy_H0Au.cjs +2 -0
  222. package/dist/_shared/overlays-Diy_H0Au.cjs.map +1 -0
  223. package/dist/_shared/page-C6EzwvTz.cjs +2 -0
  224. package/dist/_shared/page-C6EzwvTz.cjs.map +1 -0
  225. package/dist/_shared/page-DCW1eWCJ.js +262 -0
  226. package/dist/_shared/page-DCW1eWCJ.js.map +1 -0
  227. package/dist/_shared/popover-dWR7-MzY.cjs +2 -0
  228. package/dist/_shared/popover-dWR7-MzY.cjs.map +1 -0
  229. package/dist/_shared/popover-menu-qxBZlTck.js +93 -0
  230. package/dist/_shared/popover-menu-qxBZlTck.js.map +1 -0
  231. package/dist/_shared/popover-menu-z9QTjl4o.cjs +2 -0
  232. package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +1 -0
  233. package/dist/_shared/popover-xVENY0Ax.js +83 -0
  234. package/dist/_shared/popover-xVENY0Ax.js.map +1 -0
  235. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +2 -0
  236. package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +1 -0
  237. package/dist/_shared/rich-text-editor-VIBlL0x3.js +620 -0
  238. package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +1 -0
  239. package/dist/_shared/scroll-area-B32KwU9k.js +43 -0
  240. package/dist/_shared/scroll-area-B32KwU9k.js.map +1 -0
  241. package/dist/_shared/scroll-area-CIRXK7s0.cjs +2 -0
  242. package/dist/_shared/scroll-area-CIRXK7s0.cjs.map +1 -0
  243. package/dist/_shared/settings-DbAyxMrX.cjs +2 -0
  244. package/dist/_shared/settings-DbAyxMrX.cjs.map +1 -0
  245. package/dist/_shared/settings-QOBrbgdN.js +143 -0
  246. package/dist/_shared/settings-QOBrbgdN.js.map +1 -0
  247. package/dist/_shared/sidebar-BRg39UF1.js +389 -0
  248. package/dist/_shared/sidebar-BRg39UF1.js.map +1 -0
  249. package/dist/_shared/sidebar-Cwhom9QE.cjs +2 -0
  250. package/dist/_shared/sidebar-Cwhom9QE.cjs.map +1 -0
  251. package/dist/_shared/sidebar-DfToCaiC.cjs +2 -0
  252. package/dist/_shared/sidebar-DfToCaiC.cjs.map +1 -0
  253. package/dist/_shared/sidebar-DhpRdTZH.js +541 -0
  254. package/dist/_shared/sidebar-DhpRdTZH.js.map +1 -0
  255. package/dist/_shared/spinner-D35zNriU.cjs +2 -0
  256. package/dist/_shared/spinner-D35zNriU.cjs.map +1 -0
  257. package/dist/_shared/spinner-DMC2IIml.js +67 -0
  258. package/dist/_shared/spinner-DMC2IIml.js.map +1 -0
  259. package/dist/_shared/table-CUA_A-oO.js +1377 -0
  260. package/dist/_shared/table-CUA_A-oO.js.map +1 -0
  261. package/dist/_shared/table-mPchjiRn.cjs +2 -0
  262. package/dist/_shared/table-mPchjiRn.cjs.map +1 -0
  263. package/dist/_shared/textarea-B24qgdmd.cjs +2 -0
  264. package/dist/_shared/textarea-B24qgdmd.cjs.map +1 -0
  265. package/dist/_shared/textarea-ChLRmmVU.js +118 -0
  266. package/dist/_shared/textarea-ChLRmmVU.js.map +1 -0
  267. package/dist/_shared/typography-CO9uwZhF.cjs +2 -0
  268. package/dist/_shared/typography-CO9uwZhF.cjs.map +1 -0
  269. package/dist/_shared/typography-DE0NGEIE.js +201 -0
  270. package/dist/_shared/typography-DE0NGEIE.js.map +1 -0
  271. package/dist/_shared/ui-provider-DZWtUXf2.cjs +2 -0
  272. package/dist/_shared/ui-provider-DZWtUXf2.cjs.map +1 -0
  273. package/dist/_shared/ui-provider-Dj6OSOZi.js +81 -0
  274. package/dist/_shared/ui-provider-Dj6OSOZi.js.map +1 -0
  275. package/dist/_shared/workspace-BgtWS9fA.cjs +2 -0
  276. package/dist/_shared/workspace-BgtWS9fA.cjs.map +1 -0
  277. package/dist/_shared/workspace-D2jJ0PlS.js +357 -0
  278. package/dist/_shared/workspace-D2jJ0PlS.js.map +1 -0
  279. package/dist/components/base/accordion/accordion-variants.d.ts +10 -9
  280. package/dist/components/base/accordion/accordion-variants.d.ts.map +1 -1
  281. package/dist/components/base/accordion/accordion.d.ts +1 -1
  282. package/dist/components/base/accordion/index.cjs +1 -1
  283. package/dist/components/base/accordion/index.js +1 -1
  284. package/dist/components/base/accordion/smart-accordion.d.ts.map +1 -1
  285. package/dist/components/base/badge/badge.d.ts.map +1 -1
  286. package/dist/components/base/badge/index.cjs +1 -1
  287. package/dist/components/base/badge/index.js +1 -1
  288. package/dist/components/base/buttons/base-button.d.ts.map +1 -1
  289. package/dist/components/base/buttons/index.cjs +1 -1
  290. package/dist/components/base/buttons/index.js +2 -2
  291. package/dist/components/base/buttons/loader-button.d.ts.map +1 -1
  292. package/dist/components/base/buttons/page-action-button.d.ts +1 -1
  293. package/dist/components/base/buttons/page-action-button.d.ts.map +1 -1
  294. package/dist/components/base/buttons/text-button.d.ts +3 -6
  295. package/dist/components/base/buttons/text-button.d.ts.map +1 -1
  296. package/dist/components/base/cards/index.cjs +1 -1
  297. package/dist/components/base/cards/index.js +1 -1
  298. package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
  299. package/dist/components/base/cards/smart-card.d.ts.map +1 -1
  300. package/dist/components/base/cards/smart-card.tokens.d.ts +3 -4
  301. package/dist/components/base/cards/smart-card.tokens.d.ts.map +1 -1
  302. package/dist/components/base/cards/smart-card.types.d.ts +4 -4
  303. package/dist/components/base/cards/smart-card.types.d.ts.map +1 -1
  304. package/dist/components/base/carousel/index.cjs +1 -1
  305. package/dist/components/base/carousel/index.cjs.map +1 -1
  306. package/dist/components/base/carousel/index.js +4 -4
  307. package/dist/components/base/carousel/index.js.map +1 -1
  308. package/dist/components/base/combobox/async-resource-combobox.d.ts +41 -0
  309. package/dist/components/base/combobox/async-resource-combobox.d.ts.map +1 -0
  310. package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
  311. package/dist/components/base/combobox/components/error-message.d.ts.map +1 -1
  312. package/dist/components/base/combobox/constants.d.ts +1 -1
  313. package/dist/components/base/combobox/constants.d.ts.map +1 -1
  314. package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
  315. package/dist/components/base/combobox/index.cjs +1 -1
  316. package/dist/components/base/combobox/index.d.ts +1 -0
  317. package/dist/components/base/combobox/index.d.ts.map +1 -1
  318. package/dist/components/base/combobox/index.js +2 -2
  319. package/dist/components/base/combobox/types.d.ts +1 -1
  320. package/dist/components/base/combobox/types.d.ts.map +1 -1
  321. package/dist/components/base/command/command.d.ts +1 -1
  322. package/dist/components/base/command/index.cjs +1 -1
  323. package/dist/components/base/command/index.js +1 -1
  324. package/dist/components/base/copyable/index.cjs +1 -1
  325. package/dist/components/base/copyable/index.js +1 -1
  326. package/dist/components/base/currency/index.cjs +1 -1
  327. package/dist/components/base/currency/index.js +1 -1
  328. package/dist/components/base/date-pickers/date-picker.d.ts +1 -1
  329. package/dist/components/base/date-pickers/index.cjs +1 -1
  330. package/dist/components/base/date-pickers/index.js +2 -2
  331. package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
  332. package/dist/components/base/display/avatar.d.ts +24 -1
  333. package/dist/components/base/display/avatar.d.ts.map +1 -1
  334. package/dist/components/base/display/boolean-indicator.d.ts +2 -1
  335. package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
  336. package/dist/components/base/display/chart.cjs +2 -2
  337. package/dist/components/base/display/chart.cjs.map +1 -1
  338. package/dist/components/base/display/chart.js +4 -4
  339. package/dist/components/base/display/chart.js.map +1 -1
  340. package/dist/components/base/display/date-block.d.ts +2 -1
  341. package/dist/components/base/display/date-block.d.ts.map +1 -1
  342. package/dist/components/base/display/empty.d.ts +8 -0
  343. package/dist/components/base/display/empty.d.ts.map +1 -0
  344. package/dist/components/base/display/icon-badge/icon-badge.d.ts +2 -1
  345. package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
  346. package/dist/components/base/display/index.cjs +1 -1
  347. package/dist/components/base/display/index.d.ts +1 -7
  348. package/dist/components/base/display/index.d.ts.map +1 -1
  349. package/dist/components/base/display/index.js +10 -11
  350. package/dist/components/base/display/scroll-area.d.ts +10 -1
  351. package/dist/components/base/display/scroll-area.d.ts.map +1 -1
  352. package/dist/components/base/display/stacked-avatars.d.ts +2 -1
  353. package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
  354. package/dist/components/base/display/throttle-alert.d.ts +2 -1
  355. package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
  356. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +2 -1
  357. package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
  358. package/dist/components/base/event-calendar/index.cjs +1 -1
  359. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  360. package/dist/components/base/event-calendar/index.js +37 -37
  361. package/dist/components/base/event-calendar/index.js.map +1 -1
  362. package/dist/components/base/forms/fields/avatar-upload.d.ts +4 -2
  363. package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
  364. package/dist/components/base/forms/fields/checkbox.d.ts +14 -1
  365. package/dist/components/base/forms/fields/checkbox.d.ts.map +1 -1
  366. package/dist/components/base/forms/fields/choice-types.d.ts +3 -2
  367. package/dist/components/base/forms/fields/choice-types.d.ts.map +1 -1
  368. package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
  369. package/dist/components/base/forms/fields/decimal-input.d.ts.map +1 -1
  370. package/dist/components/base/forms/fields/dropzone.d.ts +4 -2
  371. package/dist/components/base/forms/fields/dropzone.d.ts.map +1 -1
  372. package/dist/components/base/forms/fields/file-upload.d.ts +2 -1
  373. package/dist/components/base/forms/fields/file-upload.d.ts.map +1 -1
  374. package/dist/components/base/forms/fields/image-upload.d.ts +2 -1
  375. package/dist/components/base/forms/fields/image-upload.d.ts.map +1 -1
  376. package/dist/components/base/forms/fields/input.d.ts.map +1 -1
  377. package/dist/components/base/forms/fields/key-value-editor.d.ts +2 -1
  378. package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
  379. package/dist/components/base/forms/fields/list.d.ts.map +1 -1
  380. package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
  381. package/dist/components/base/forms/fields/media-gallery.d.ts +2 -1
  382. package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
  383. package/dist/components/base/forms/fields/object-repeater.d.ts +2 -1
  384. package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
  385. package/dist/components/base/forms/fields/select.d.ts.map +1 -1
  386. package/dist/components/base/forms/fields/string-repeater.d.ts +2 -1
  387. package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
  388. package/dist/components/base/forms/fields/tags-input.d.ts +2 -1
  389. package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
  390. package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
  391. package/dist/components/base/forms/fields/upload-progress-list.d.ts +2 -1
  392. package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
  393. package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
  394. package/dist/components/base/forms/form-sizing.d.ts +8 -0
  395. package/dist/components/base/forms/form-sizing.d.ts.map +1 -1
  396. package/dist/components/base/forms/index.cjs +1 -1
  397. package/dist/components/base/forms/index.d.ts +1 -0
  398. package/dist/components/base/forms/index.d.ts.map +1 -1
  399. package/dist/components/base/forms/index.js +7 -8
  400. package/dist/components/base/forms/workflow.d.ts +47 -0
  401. package/dist/components/base/forms/workflow.d.ts.map +1 -0
  402. package/dist/components/base/index.d.ts.map +1 -1
  403. package/dist/components/base/item/index.cjs +1 -1
  404. package/dist/components/base/item/index.js +1 -1
  405. package/dist/components/base/item/item.d.ts.map +1 -1
  406. package/dist/components/base/map/index.cjs +1 -1
  407. package/dist/components/base/map/index.cjs.map +1 -1
  408. package/dist/components/base/map/index.js +55 -54
  409. package/dist/components/base/map/index.js.map +1 -1
  410. package/dist/components/base/map/map.d.ts.map +1 -1
  411. package/dist/components/base/navigation/breadcrumbs.d.ts +2 -1
  412. package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
  413. package/dist/components/base/navigation/index.cjs +1 -1
  414. package/dist/components/base/navigation/index.js +3 -3
  415. package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
  416. package/dist/components/base/popover/index.cjs +1 -1
  417. package/dist/components/base/popover/index.js +1 -1
  418. package/dist/components/base/popover/popover.d.ts +2 -2
  419. package/dist/components/base/popover-menu/index.cjs +1 -1
  420. package/dist/components/base/popover-menu/index.js +1 -1
  421. package/dist/components/base/sidebar/index.cjs +1 -1
  422. package/dist/components/base/sidebar/index.js +1 -1
  423. package/dist/components/base/spinner/index.cjs +1 -1
  424. package/dist/components/base/spinner/index.js +1 -1
  425. package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
  426. package/dist/components/base/table/data-table.d.ts +2 -2
  427. package/dist/components/base/table/data-table.d.ts.map +1 -1
  428. package/dist/components/base/table/filter-bar.d.ts.map +1 -1
  429. package/dist/components/base/table/index.cjs +1 -1
  430. package/dist/components/base/table/index.d.ts +1 -1
  431. package/dist/components/base/table/index.d.ts.map +1 -1
  432. package/dist/components/base/table/index.js +2 -2
  433. package/dist/components/base/table/partials/cell-renderers.d.ts +69 -0
  434. package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
  435. package/dist/components/base/table/table-actions.d.ts.map +1 -1
  436. package/dist/components/base/table/table-header.d.ts.map +1 -1
  437. package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
  438. package/dist/components/base/table/table.strings.d.ts.map +1 -1
  439. package/dist/components/base/table/table.types.d.ts +34 -9
  440. package/dist/components/base/table/table.types.d.ts.map +1 -1
  441. package/dist/components/base/toaster/index.cjs +1 -1
  442. package/dist/components/base/toaster/index.js +1 -1
  443. package/dist/components/composed/admin/action-surfaces/index.d.ts +118 -0
  444. package/dist/components/composed/admin/action-surfaces/index.d.ts.map +1 -0
  445. package/dist/components/composed/admin/index.cjs +1 -1
  446. package/dist/components/composed/admin/index.cjs.map +1 -1
  447. package/dist/components/composed/admin/index.d.ts +1 -0
  448. package/dist/components/composed/admin/index.d.ts.map +1 -1
  449. package/dist/components/composed/admin/index.js +403 -143
  450. package/dist/components/composed/admin/index.js.map +1 -1
  451. package/dist/components/composed/ai/ai-agent/types.d.ts +2 -1
  452. package/dist/components/composed/ai/ai-agent/types.d.ts.map +1 -1
  453. package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
  454. package/dist/components/composed/ai/ai-artifact/types.d.ts +2 -1
  455. package/dist/components/composed/ai/ai-artifact/types.d.ts.map +1 -1
  456. package/dist/components/composed/ai/ai-attachment/types.d.ts +2 -1
  457. package/dist/components/composed/ai/ai-attachment/types.d.ts.map +1 -1
  458. package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts +2 -1
  459. package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts.map +1 -1
  460. package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
  461. package/dist/components/composed/ai/ai-citation/types.d.ts +2 -1
  462. package/dist/components/composed/ai/ai-citation/types.d.ts.map +1 -1
  463. package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
  464. package/dist/components/composed/ai/ai-code-block/types.d.ts +2 -1
  465. package/dist/components/composed/ai/ai-code-block/types.d.ts.map +1 -1
  466. package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
  467. package/dist/components/composed/ai/ai-confidence/types.d.ts +2 -1
  468. package/dist/components/composed/ai/ai-confidence/types.d.ts.map +1 -1
  469. package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
  470. package/dist/components/composed/ai/ai-confirmation/types.d.ts +2 -1
  471. package/dist/components/composed/ai/ai-confirmation/types.d.ts.map +1 -1
  472. package/dist/components/composed/ai/ai-feedback/types.d.ts +2 -1
  473. package/dist/components/composed/ai/ai-feedback/types.d.ts.map +1 -1
  474. package/dist/components/composed/ai/ai-file-tree/types.d.ts +2 -1
  475. package/dist/components/composed/ai/ai-file-tree/types.d.ts.map +1 -1
  476. package/dist/components/composed/ai/ai-inline-citation/types.d.ts +2 -1
  477. package/dist/components/composed/ai/ai-inline-citation/types.d.ts.map +1 -1
  478. package/dist/components/composed/ai/ai-message-bubble/types.d.ts +2 -1
  479. package/dist/components/composed/ai/ai-message-bubble/types.d.ts.map +1 -1
  480. package/dist/components/composed/ai/ai-package-info/types.d.ts +2 -1
  481. package/dist/components/composed/ai/ai-package-info/types.d.ts.map +1 -1
  482. package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts +2 -1
  483. package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts.map +1 -1
  484. package/dist/components/composed/ai/ai-reasoning/types.d.ts +2 -1
  485. package/dist/components/composed/ai/ai-reasoning/types.d.ts.map +1 -1
  486. package/dist/components/composed/ai/ai-sources/types.d.ts +2 -1
  487. package/dist/components/composed/ai/ai-sources/types.d.ts.map +1 -1
  488. package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
  489. package/dist/components/composed/ai/ai-task/types.d.ts +2 -1
  490. package/dist/components/composed/ai/ai-task/types.d.ts.map +1 -1
  491. package/dist/components/composed/ai/ai-token-usage/types.d.ts +2 -1
  492. package/dist/components/composed/ai/ai-token-usage/types.d.ts.map +1 -1
  493. package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
  494. package/dist/components/composed/ai/ai-tool-call/types.d.ts +2 -1
  495. package/dist/components/composed/ai/ai-tool-call/types.d.ts.map +1 -1
  496. package/dist/components/composed/ai/index.cjs +1 -1
  497. package/dist/components/composed/ai/index.cjs.map +1 -1
  498. package/dist/components/composed/ai/index.js +111 -105
  499. package/dist/components/composed/ai/index.js.map +1 -1
  500. package/dist/components/composed/analytics/activity-heatmap/types.d.ts +2 -1
  501. package/dist/components/composed/analytics/activity-heatmap/types.d.ts.map +1 -1
  502. package/dist/components/composed/analytics/index.cjs +1 -1
  503. package/dist/components/composed/analytics/index.cjs.map +1 -1
  504. package/dist/components/composed/analytics/index.js +87 -87
  505. package/dist/components/composed/analytics/index.js.map +1 -1
  506. package/dist/components/composed/cards/contact-card/types.d.ts +2 -1
  507. package/dist/components/composed/cards/contact-card/types.d.ts.map +1 -1
  508. package/dist/components/composed/cards/course-card/types.d.ts +2 -1
  509. package/dist/components/composed/cards/course-card/types.d.ts.map +1 -1
  510. package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
  511. package/dist/components/composed/cards/giftcard-card/types.d.ts +2 -1
  512. package/dist/components/composed/cards/giftcard-card/types.d.ts.map +1 -1
  513. package/dist/components/composed/cards/index.cjs +1 -1
  514. package/dist/components/composed/cards/index.cjs.map +1 -1
  515. package/dist/components/composed/cards/index.js +186 -190
  516. package/dist/components/composed/cards/index.js.map +1 -1
  517. package/dist/components/composed/cards/vendor-profile/types.d.ts +2 -1
  518. package/dist/components/composed/cards/vendor-profile/types.d.ts.map +1 -1
  519. package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
  520. package/dist/components/composed/commerce/address-card/types.d.ts +2 -1
  521. package/dist/components/composed/commerce/address-card/types.d.ts.map +1 -1
  522. package/dist/components/composed/commerce/cart-summary/types.d.ts +2 -1
  523. package/dist/components/composed/commerce/cart-summary/types.d.ts.map +1 -1
  524. package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
  525. package/dist/components/composed/commerce/coupon-input/types.d.ts +2 -1
  526. package/dist/components/composed/commerce/coupon-input/types.d.ts.map +1 -1
  527. package/dist/components/composed/commerce/discount-stack/types.d.ts +2 -1
  528. package/dist/components/composed/commerce/discount-stack/types.d.ts.map +1 -1
  529. package/dist/components/composed/commerce/index.cjs +1 -1
  530. package/dist/components/composed/commerce/index.cjs.map +1 -1
  531. package/dist/components/composed/commerce/index.js +205 -211
  532. package/dist/components/composed/commerce/index.js.map +1 -1
  533. package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
  534. package/dist/components/composed/commerce/loyalty-points/types.d.ts +2 -1
  535. package/dist/components/composed/commerce/loyalty-points/types.d.ts.map +1 -1
  536. package/dist/components/composed/commerce/order-status/types.d.ts +2 -1
  537. package/dist/components/composed/commerce/order-status/types.d.ts.map +1 -1
  538. package/dist/components/composed/commerce/payment-method/types.d.ts +2 -1
  539. package/dist/components/composed/commerce/payment-method/types.d.ts.map +1 -1
  540. package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
  541. package/dist/components/composed/commerce/refund-status/types.d.ts +2 -1
  542. package/dist/components/composed/commerce/refund-status/types.d.ts.map +1 -1
  543. package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
  544. package/dist/components/composed/commerce/subscription-summary/types.d.ts +2 -1
  545. package/dist/components/composed/commerce/subscription-summary/types.d.ts.map +1 -1
  546. package/dist/components/composed/commerce/tax-breakdown/types.d.ts +2 -1
  547. package/dist/components/composed/commerce/tax-breakdown/types.d.ts.map +1 -1
  548. package/dist/components/composed/commerce/voucher-entry/types.d.ts +2 -1
  549. package/dist/components/composed/commerce/voucher-entry/types.d.ts.map +1 -1
  550. package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
  551. package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
  552. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  553. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  554. package/dist/components/composed/dark-surfaces/index.js +65 -66
  555. package/dist/components/composed/dark-surfaces/index.js.map +1 -1
  556. package/dist/components/composed/data-display/empty-state/empty-state.d.ts.map +1 -0
  557. package/dist/components/composed/data-display/empty-state/empty-state.strings.d.ts.map +1 -0
  558. package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts +85 -0
  559. package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts.map +1 -0
  560. package/dist/components/composed/data-display/empty-state/index.d.ts.map +1 -0
  561. package/dist/components/composed/data-display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -0
  562. package/dist/components/composed/data-display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -0
  563. package/dist/components/composed/data-display/empty-state/partials/illustrations/index.d.ts.map +1 -0
  564. package/dist/components/composed/data-display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -0
  565. package/dist/components/composed/data-display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -0
  566. package/dist/components/composed/data-display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -0
  567. package/dist/components/composed/data-display/fields/email-display.d.ts +23 -0
  568. package/dist/components/composed/data-display/fields/email-display.d.ts.map +1 -0
  569. package/dist/components/composed/data-display/fields/index.d.ts.map +1 -0
  570. package/dist/components/composed/data-display/fields/phone-display.d.ts +23 -0
  571. package/dist/components/composed/data-display/fields/phone-display.d.ts.map +1 -0
  572. package/dist/components/composed/data-display/fields/url-display.d.ts +29 -0
  573. package/dist/components/composed/data-display/fields/url-display.d.ts.map +1 -0
  574. package/dist/components/composed/data-display/index.cjs +1 -2
  575. package/dist/components/composed/data-display/index.d.ts +8 -0
  576. package/dist/components/composed/data-display/index.d.ts.map +1 -1
  577. package/dist/components/composed/data-display/index.js +2 -1095
  578. package/dist/components/composed/data-display/inline-stat/index.d.ts.map +1 -0
  579. package/dist/components/composed/data-display/inline-stat/inline-stat.d.ts.map +1 -0
  580. package/dist/components/composed/data-display/invoice-header/types.d.ts +2 -1
  581. package/dist/components/composed/data-display/invoice-header/types.d.ts.map +1 -1
  582. package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
  583. package/dist/components/composed/data-display/invoice-mini/types.d.ts +2 -1
  584. package/dist/components/composed/data-display/invoice-mini/types.d.ts.map +1 -1
  585. package/dist/components/composed/data-display/invoice-table/types.d.ts +2 -1
  586. package/dist/components/composed/data-display/invoice-table/types.d.ts.map +1 -1
  587. package/dist/components/composed/data-display/metadata/index.d.ts.map +1 -0
  588. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -0
  589. package/dist/components/composed/data-display/metadata/metadata-list.strings.d.ts.map +1 -0
  590. package/dist/components/composed/data-display/numeric-value/index.d.ts.map +1 -0
  591. package/dist/components/composed/data-display/numeric-value/numeric-value.d.ts.map +1 -0
  592. package/dist/components/composed/data-display/resource-selector-card.d.ts +43 -0
  593. package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -0
  594. package/dist/components/composed/data-display/section-header/index.d.ts.map +1 -0
  595. package/dist/components/composed/data-display/section-header/section-header.d.ts.map +1 -0
  596. package/dist/components/composed/data-display/user-cell/index.d.ts.map +1 -0
  597. package/dist/components/composed/data-display/user-cell/user-cell.d.ts +20 -0
  598. package/dist/components/composed/data-display/user-cell/user-cell.d.ts.map +1 -0
  599. package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts +2 -1
  600. package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts.map +1 -1
  601. package/dist/components/composed/navigation/index.cjs +1 -1
  602. package/dist/components/composed/navigation/index.cjs.map +1 -1
  603. package/dist/components/composed/navigation/index.js +12 -12
  604. package/dist/components/composed/navigation/index.js.map +1 -1
  605. package/dist/components/composed/onboarding/index.cjs +1 -1
  606. package/dist/components/composed/onboarding/index.cjs.map +1 -1
  607. package/dist/components/composed/onboarding/index.js +3 -3
  608. package/dist/components/composed/timelines/activity-stream/types.d.ts +2 -1
  609. package/dist/components/composed/timelines/activity-stream/types.d.ts.map +1 -1
  610. package/dist/components/composed/timelines/changelog/types.d.ts +2 -1
  611. package/dist/components/composed/timelines/changelog/types.d.ts.map +1 -1
  612. package/dist/components/composed/timelines/index.cjs +1 -1
  613. package/dist/components/composed/timelines/index.cjs.map +1 -1
  614. package/dist/components/composed/timelines/index.js +6 -6
  615. package/dist/components/composed/timelines/index.js.map +1 -1
  616. package/dist/components/composed/timelines/milestones/types.d.ts +2 -1
  617. package/dist/components/composed/timelines/milestones/types.d.ts.map +1 -1
  618. package/dist/components/features/activities/activities.types.d.ts +3 -2
  619. package/dist/components/features/activities/activities.types.d.ts.map +1 -1
  620. package/dist/components/features/activities/index.cjs +1 -1
  621. package/dist/components/features/activities/index.cjs.map +1 -1
  622. package/dist/components/features/activities/index.js +33 -30
  623. package/dist/components/features/activities/index.js.map +1 -1
  624. package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
  625. package/dist/components/features/ai-chat/index.cjs +2 -2
  626. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  627. package/dist/components/features/ai-chat/index.js +42 -42
  628. package/dist/components/features/ai-chat/index.js.map +1 -1
  629. package/dist/components/features/card/index.cjs +1 -1
  630. package/dist/components/features/card/index.cjs.map +1 -1
  631. package/dist/components/features/card/index.js +6 -6
  632. package/dist/components/features/card/index.js.map +1 -1
  633. package/dist/components/features/comments/index.cjs +1 -1
  634. package/dist/components/features/comments/index.js +2 -2
  635. package/dist/components/features/data-view/data-view.d.ts +6 -0
  636. package/dist/components/features/data-view/data-view.d.ts.map +1 -0
  637. package/dist/components/features/data-view/data-view.strings.d.ts +7 -0
  638. package/dist/components/features/data-view/data-view.strings.d.ts.map +1 -0
  639. package/dist/components/features/data-view/data-view.types.d.ts +57 -0
  640. package/dist/components/features/data-view/data-view.types.d.ts.map +1 -0
  641. package/dist/components/features/data-view/index.cjs +2 -0
  642. package/dist/components/features/data-view/index.cjs.map +1 -0
  643. package/dist/components/features/data-view/index.d.ts +4 -0
  644. package/dist/components/features/data-view/index.d.ts.map +1 -0
  645. package/dist/components/features/data-view/index.js +146 -0
  646. package/dist/components/features/data-view/index.js.map +1 -0
  647. package/dist/components/features/event-log/index.cjs +1 -1
  648. package/dist/components/features/event-log/index.cjs.map +1 -1
  649. package/dist/components/features/event-log/index.js +6 -6
  650. package/dist/components/features/event-log/index.js.map +1 -1
  651. package/dist/components/features/filters/filter-context.d.ts +5 -0
  652. package/dist/components/features/filters/filter-context.d.ts.map +1 -1
  653. package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
  654. package/dist/components/features/filters/filter-query.d.ts +22 -0
  655. package/dist/components/features/filters/filter-query.d.ts.map +1 -0
  656. package/dist/components/features/filters/filters.types.d.ts +1 -1
  657. package/dist/components/features/filters/filters.types.d.ts.map +1 -1
  658. package/dist/components/features/filters/index.cjs +1 -1
  659. package/dist/components/features/filters/index.cjs.map +1 -1
  660. package/dist/components/features/filters/index.d.ts +1 -0
  661. package/dist/components/features/filters/index.d.ts.map +1 -1
  662. package/dist/components/features/filters/index.js +394 -286
  663. package/dist/components/features/filters/index.js.map +1 -1
  664. package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
  665. package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
  666. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
  667. package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
  668. package/dist/components/features/global-search/global-search.d.ts.map +1 -1
  669. package/dist/components/features/global-search/index.cjs +1 -1
  670. package/dist/components/features/global-search/index.cjs.map +1 -1
  671. package/dist/components/features/global-search/index.js +36 -28
  672. package/dist/components/features/global-search/index.js.map +1 -1
  673. package/dist/components/features/global-search/partials/global-search-input.d.ts.map +1 -1
  674. package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
  675. package/dist/components/features/index.d.ts.map +1 -1
  676. package/dist/components/features/kanban/index.cjs +1 -1
  677. package/dist/components/features/kanban/index.cjs.map +1 -1
  678. package/dist/components/features/kanban/index.js +5 -5
  679. package/dist/components/features/kanban/index.js.map +1 -1
  680. package/dist/components/features/media-library/index.cjs +1 -1
  681. package/dist/components/features/media-library/index.cjs.map +1 -1
  682. package/dist/components/features/media-library/index.js +60 -61
  683. package/dist/components/features/media-library/index.js.map +1 -1
  684. package/dist/components/features/mentions/index.cjs +1 -1
  685. package/dist/components/features/mentions/index.js +1 -1
  686. package/dist/components/features/overlays/index.cjs +1 -1
  687. package/dist/components/features/overlays/index.js +1 -1
  688. package/dist/components/features/products/components/product-contract-overview.d.ts.map +1 -1
  689. package/dist/components/features/products/components/product-details-card.d.ts.map +1 -1
  690. package/dist/components/features/products/components/product-quote-preview-card.d.ts.map +1 -1
  691. package/dist/components/features/products/components/product-readiness-card.d.ts.map +1 -1
  692. package/dist/components/features/products/index.cjs +1 -1
  693. package/dist/components/features/products/index.cjs.map +1 -1
  694. package/dist/components/features/products/index.js +135 -136
  695. package/dist/components/features/products/index.js.map +1 -1
  696. package/dist/components/features/products/products.types.d.ts +1 -1
  697. package/dist/components/features/products/products.types.d.ts.map +1 -1
  698. package/dist/components/features/resource/index.cjs +2 -0
  699. package/dist/components/features/resource/index.cjs.map +1 -0
  700. package/dist/components/features/resource/index.d.ts +3 -0
  701. package/dist/components/features/resource/index.d.ts.map +1 -0
  702. package/dist/components/features/resource/index.js +240 -0
  703. package/dist/components/features/resource/index.js.map +1 -0
  704. package/dist/components/features/resource/resource.d.ts +13 -0
  705. package/dist/components/features/resource/resource.d.ts.map +1 -0
  706. package/dist/components/features/resource/resource.types.d.ts +87 -0
  707. package/dist/components/features/resource/resource.types.d.ts.map +1 -0
  708. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  709. package/dist/components/features/rich-text-editor/index.js +1 -1
  710. package/dist/components/features/schema-form/index.cjs +1 -1
  711. package/dist/components/features/schema-form/index.cjs.map +1 -1
  712. package/dist/components/features/schema-form/index.js +11 -11
  713. package/dist/components/features/suggestions/index.cjs +1 -1
  714. package/dist/components/features/suggestions/index.js +1 -1
  715. package/dist/components/features/sync/index.cjs +1 -1
  716. package/dist/components/features/sync/index.cjs.map +1 -1
  717. package/dist/components/features/sync/index.js +53 -31
  718. package/dist/components/features/sync/index.js.map +1 -1
  719. package/dist/components/features/sync/sync-range-dialog-form.d.ts.map +1 -1
  720. package/dist/components/features/sync/sync.strings.d.ts +6 -0
  721. package/dist/components/features/sync/sync.strings.d.ts.map +1 -1
  722. package/dist/components/layout/app-shell/app-shell.types.d.ts +7 -7
  723. package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -1
  724. package/dist/components/layout/app-shell/index.cjs +1 -1
  725. package/dist/components/layout/app-shell/index.d.ts +1 -0
  726. package/dist/components/layout/app-shell/index.d.ts.map +1 -1
  727. package/dist/components/layout/app-shell/index.js +2 -2
  728. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -1
  729. package/dist/components/layout/auth/index.cjs +1 -1
  730. package/dist/components/layout/auth/index.js +1 -1
  731. package/dist/components/layout/header/header.types.d.ts +40 -4
  732. package/dist/components/layout/header/header.types.d.ts.map +1 -1
  733. package/dist/components/layout/header/index.cjs +1 -1
  734. package/dist/components/layout/header/index.d.ts +5 -1
  735. package/dist/components/layout/header/index.d.ts.map +1 -1
  736. package/dist/components/layout/header/index.js +2 -2
  737. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +3 -0
  738. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts.map +1 -0
  739. package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
  740. package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
  741. package/dist/components/layout/header/partials/header-tool-button.d.ts +5 -0
  742. package/dist/components/layout/header/partials/header-tool-button.d.ts.map +1 -0
  743. package/dist/components/layout/header/partials/header-tool-popover.d.ts +3 -0
  744. package/dist/components/layout/header/partials/header-tool-popover.d.ts.map +1 -0
  745. package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
  746. package/dist/components/layout/hooks/index.cjs +1 -1
  747. package/dist/components/layout/hooks/index.js +1 -1
  748. package/dist/components/layout/index.cjs +1 -1
  749. package/dist/components/layout/index.d.ts +1 -0
  750. package/dist/components/layout/index.d.ts.map +1 -1
  751. package/dist/components/layout/index.js +10 -8
  752. package/dist/components/layout/page/index.cjs +1 -1
  753. package/dist/components/layout/page/index.js +1 -1
  754. package/dist/components/layout/page/page.types.d.ts +2 -1
  755. package/dist/components/layout/page/page.types.d.ts.map +1 -1
  756. package/dist/components/layout/settings/index.cjs +1 -0
  757. package/dist/components/layout/settings/index.d.ts +2 -0
  758. package/dist/components/layout/settings/index.d.ts.map +1 -0
  759. package/dist/components/layout/settings/index.js +2 -0
  760. package/dist/components/layout/settings/settings.d.ts +47 -0
  761. package/dist/components/layout/settings/settings.d.ts.map +1 -0
  762. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
  763. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +2 -1
  764. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
  765. package/dist/components/layout/sidebar/index.cjs +1 -1
  766. package/dist/components/layout/sidebar/index.d.ts +1 -0
  767. package/dist/components/layout/sidebar/index.d.ts.map +1 -1
  768. package/dist/components/layout/sidebar/index.js +3 -3
  769. package/dist/components/layout/sidebar/sidebar.d.ts +2 -1
  770. package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
  771. package/dist/components/layout/sidebar/sidebar.types.d.ts +3 -2
  772. package/dist/components/layout/sidebar/sidebar.types.d.ts.map +1 -1
  773. package/dist/components/layout/workspace/index.cjs +1 -1
  774. package/dist/components/layout/workspace/index.js +1 -1
  775. package/dist/components/layout/workspace/workspace.d.ts.map +1 -1
  776. package/dist/components/typography/index.cjs +1 -1
  777. package/dist/components/typography/index.js +2 -3
  778. package/dist/components/typography/label.d.ts.map +1 -1
  779. package/dist/components/ui/button.d.ts +1 -1
  780. package/dist/components/ui/input-group.d.ts +1 -1
  781. package/dist/index.cjs +1 -1
  782. package/dist/index.js +3 -3
  783. package/dist/lib/ui-provider/defaults.d.ts.map +1 -1
  784. package/dist/lib/ui-provider/hooks.d.ts +1 -2
  785. package/dist/lib/ui-provider/hooks.d.ts.map +1 -1
  786. package/dist/lib/ui-provider/index.cjs +1 -1
  787. package/dist/lib/ui-provider/index.d.ts +2 -2
  788. package/dist/lib/ui-provider/index.d.ts.map +1 -1
  789. package/dist/lib/ui-provider/index.js +2 -2
  790. package/dist/lib/ui-provider/types.d.ts +13 -14
  791. package/dist/lib/ui-provider/types.d.ts.map +1 -1
  792. package/dist/lib/utils.cjs +1 -1
  793. package/dist/lib/utils.cjs.map +1 -1
  794. package/dist/lib/utils.d.ts.map +1 -1
  795. package/dist/lib/utils.js +31 -10
  796. package/dist/lib/utils.js.map +1 -1
  797. package/dist/services/actions/action-adapters.d.ts +5 -0
  798. package/dist/services/actions/action-adapters.d.ts.map +1 -1
  799. package/dist/services/actions/action-provider.d.ts +1 -1
  800. package/dist/services/actions/action-provider.d.ts.map +1 -1
  801. package/dist/services/actions/action-store.d.ts.map +1 -1
  802. package/dist/services/actions/actions.types.d.ts +25 -0
  803. package/dist/services/actions/actions.types.d.ts.map +1 -1
  804. package/dist/services/actions/index.cjs +1 -1
  805. package/dist/services/actions/index.cjs.map +1 -1
  806. package/dist/services/actions/index.d.ts +1 -1
  807. package/dist/services/actions/index.d.ts.map +1 -1
  808. package/dist/services/actions/index.js +114 -96
  809. package/dist/services/actions/index.js.map +1 -1
  810. package/dist/showcase/assets/AreaChart-CGkuyNyy.js +6 -0
  811. package/dist/showcase/assets/CSPContext-Bfs88_eg.js +1 -0
  812. package/dist/showcase/assets/CompositeItem-DAQ048AO.js +1 -0
  813. package/dist/showcase/assets/CompositeRoot-8-OuCMMq.js +1 -0
  814. package/dist/showcase/assets/DialogTrigger-1P-jwcoH.js +1 -0
  815. package/dist/showcase/assets/FieldItemContext-ChrM5Ge4.js +1 -0
  816. package/dist/showcase/assets/LabelableContext-BDyZArAc.js +1 -0
  817. package/dist/showcase/assets/PreviewLayout-wYGhlcJt.js +1 -0
  818. package/dist/showcase/assets/RadioGroup-DuiI4W--.js +1 -0
  819. package/dist/showcase/assets/ScrollAreaCorner-Df5uTkWT.js +1 -0
  820. package/dist/showcase/assets/Separator-BuTBo5a_.js +1 -0
  821. package/dist/showcase/assets/ToolbarRootContext-B4S4Fn7d.js +1 -0
  822. package/dist/showcase/assets/accordion-D3beuJpC.js +171 -0
  823. package/dist/showcase/assets/accordion-variants-BTMpfSPI.js +1 -0
  824. package/dist/showcase/assets/action-menu-DsAr1OqF.js +1 -0
  825. package/dist/showcase/assets/actions-BzyHAEZR.js +310 -0
  826. package/dist/showcase/assets/activities-BgoelWKu.js +500 -0
  827. package/dist/showcase/assets/activities-feed-card-DI4MIm3-.js +1 -0
  828. package/dist/showcase/assets/admin-n-JemkNh.js +140 -0
  829. package/dist/showcase/assets/ai-BXyk1mT0.js +207 -0
  830. package/dist/showcase/assets/ai-artifact-C8CmZ94f.js +2 -0
  831. package/dist/showcase/assets/ai-chat-CTQQ4e4X.js +568 -0
  832. package/dist/showcase/assets/ai-elements-DGnlBq8E.js +387 -0
  833. package/dist/showcase/assets/ai-tool-call-bHnWNBtN.js +1 -0
  834. package/dist/showcase/assets/alert-CIHGXUul.js +62 -0
  835. package/dist/showcase/assets/alert-N79A6qIx.js +93 -0
  836. package/dist/showcase/assets/alert-bPnj3_cC.js +1 -0
  837. package/dist/showcase/assets/api-key-list-Bf1KoRJq.js +1 -0
  838. package/dist/showcase/assets/api-key-list-DyZ_DaRx.js +73 -0
  839. package/dist/showcase/assets/app-sidebar-Co0LUSvz.js +1 -0
  840. package/dist/showcase/assets/arrow-down-BttnoDxP.js +1 -0
  841. package/dist/showcase/assets/arrow-left-B1kFGJ8v.js +1 -0
  842. package/dist/showcase/assets/arrow-right-Md96ra7v.js +1 -0
  843. package/dist/showcase/assets/arrow-up-B9e9cP-q.js +1 -0
  844. package/dist/showcase/assets/arrow-up-right-BOHJNdrp.js +1 -0
  845. package/dist/showcase/assets/avatar-CJaCYGWf.js +1 -0
  846. package/dist/showcase/assets/avatar-CxwFyL4T.js +57 -0
  847. package/dist/showcase/assets/avatar-D3kvVy00.js +1 -0
  848. package/dist/showcase/assets/avatar-DKLsNeBi.js +67 -0
  849. package/dist/showcase/assets/badge-CSMmwDLr.js +31 -0
  850. package/dist/showcase/assets/badge-check-TQRmqI7C.js +1 -0
  851. package/dist/showcase/assets/bell-CwRy7zpP.js +1 -0
  852. package/dist/showcase/assets/bot-Bt02Uzhq.js +1 -0
  853. package/dist/showcase/assets/box-Bfv5RQBf.js +1 -0
  854. package/dist/showcase/assets/braces-CxUoAPd4.js +1 -0
  855. package/dist/showcase/assets/brain-CNapE0CP.js +1 -0
  856. package/dist/showcase/assets/brand-CBq1YoS0.js +36 -0
  857. package/dist/showcase/assets/breadcrumb-DRioiUd_.js +1 -0
  858. package/dist/showcase/assets/breadcrumb-DyXpErBT.js +52 -0
  859. package/dist/showcase/assets/breadcrumbs-BzHeoItO.js +1 -0
  860. package/dist/showcase/assets/briefcase-N74Hu0O2.js +1 -0
  861. package/dist/showcase/assets/building-2-D81ygy-F.js +1 -0
  862. package/dist/showcase/assets/button-Bgqg7AmN.js +44 -0
  863. package/dist/showcase/assets/button-group-DPV1XIW3.js +1 -0
  864. package/dist/showcase/assets/buttons-qpZWlILG.js +272 -0
  865. package/dist/showcase/assets/calendar-BXG5CwbY.js +1 -0
  866. package/dist/showcase/assets/calendar-D-CSqGtC.js +16 -0
  867. package/dist/showcase/assets/calendar-DcYyOrNY.js +1 -0
  868. package/dist/showcase/assets/calendar-days-CNNiyV9e.js +1 -0
  869. package/dist/showcase/assets/camera-D0yVo0xC.js +1 -0
  870. package/dist/showcase/assets/card-Bl-y9-8y.js +1 -0
  871. package/dist/showcase/assets/card-CH7Ev3xS.js +188 -0
  872. package/dist/showcase/assets/card-primitives-CiU5lL3a.js +1 -0
  873. package/dist/showcase/assets/card-radio-group-DpeIWyiO.js +1 -0
  874. package/dist/showcase/assets/cards-7xave3ub.js +354 -0
  875. package/dist/showcase/assets/carousel--kHTFkC7.js +449 -0
  876. package/dist/showcase/assets/cell-renderers-Cx8rAZln.js +1 -0
  877. package/dist/showcase/assets/chart-DU8INHbt.js +358 -0
  878. package/dist/showcase/assets/chart-column-Dbekq8cy.js +1 -0
  879. package/dist/showcase/assets/checkbox-ClPnzko9.js +1 -0
  880. package/dist/showcase/assets/checkbox-Qhh92dbS.js +1 -0
  881. package/dist/showcase/assets/chevron-down-BqrI6QzQ.js +1 -0
  882. package/dist/showcase/assets/chevron-left-TJKYH3rG.js +1 -0
  883. package/dist/showcase/assets/chevron-up-CPuAmh-d.js +1 -0
  884. package/dist/showcase/assets/chevrons-up-down-DZB44PVY.js +1 -0
  885. package/dist/showcase/assets/circle-CY0DkTje.js +1 -0
  886. package/dist/showcase/assets/circle-alert-9j29FrsT.js +1 -0
  887. package/dist/showcase/assets/circle-check-BkFKejsY.js +1 -0
  888. package/dist/showcase/assets/circle-check-big-vu3Znqdx.js +1 -0
  889. package/dist/showcase/assets/circle-dot-CsBIkbEH.js +1 -0
  890. package/dist/showcase/assets/circle-question-mark-BRiF5RV4.js +1 -0
  891. package/dist/showcase/assets/circle-x-BF20gddw.js +1 -0
  892. package/dist/showcase/assets/clock-3-mhWDhdka.js +1 -0
  893. package/dist/showcase/assets/clock-Dd-urPd2.js +1 -0
  894. package/dist/showcase/assets/code-xml-D2f-X63y.js +1 -0
  895. package/dist/showcase/assets/collapsible-CF0oQTVS.js +1 -0
  896. package/dist/showcase/assets/collapsible-Ru5-bssh.js +27 -0
  897. package/dist/showcase/assets/combobox-DpJTW_Rq.js +685 -0
  898. package/dist/showcase/assets/command-Dno8Ogez.js +1 -0
  899. package/dist/showcase/assets/command-LRFStKBy.js +1 -0
  900. package/dist/showcase/assets/comment-composer-Dht7nfbv.js +1 -0
  901. package/dist/showcase/assets/comment-item-B6IgQsMr.js +1 -0
  902. package/dist/showcase/assets/comments-B3ksV3Mn.js +357 -0
  903. package/dist/showcase/assets/commerce-B1_Offbz.js +267 -0
  904. package/dist/showcase/assets/composite-BjQWIYF-.js +1 -0
  905. package/dist/showcase/assets/contact-card-Bss4YHZz.js +65 -0
  906. package/dist/showcase/assets/content-container-D4BM1Zro.js +1 -0
  907. package/dist/showcase/assets/copyable-C0J88R_R.js +96 -0
  908. package/dist/showcase/assets/copyable-Dst8oaw5.js +1 -0
  909. package/dist/showcase/assets/course-card-BuqwjqtO.js +77 -0
  910. package/dist/showcase/assets/cpu-CFy0M0rN.js +1 -0
  911. package/dist/showcase/assets/credit-card-CFq0S1Ma.js +1 -0
  912. package/dist/showcase/assets/css-variables-BAALjDwD.js +1190 -0
  913. package/dist/showcase/assets/currency-BZzZRv2_.js +149 -0
  914. package/dist/showcase/assets/dark-surfaces-CVKt2Yww.js +90 -0
  915. package/dist/showcase/assets/data-view-Be0uoLqL.js +4 -0
  916. package/dist/showcase/assets/data-view-D6_zyFwk.js +124 -0
  917. package/dist/showcase/assets/database-DSC-ysYT.js +1 -0
  918. package/dist/showcase/assets/date-block-Bgu_LMxB.js +1 -0
  919. package/dist/showcase/assets/date-picker-ByYEZGMg.js +1 -0
  920. package/dist/showcase/assets/date-pickers-DzSQrvWs.js +73 -0
  921. package/dist/showcase/assets/dense-info-BhFkOQbt.js +106 -0
  922. package/dist/showcase/assets/design-system-consistency-D6iCJLcr.js +264 -0
  923. package/dist/showcase/assets/dialog-C1heXuxu.js +1 -0
  924. package/dist/showcase/assets/dialog-DzrcsKvl.js +1 -0
  925. package/dist/showcase/assets/display-utilities-eu-EVMrx.js +267 -0
  926. package/dist/showcase/assets/dist-BlIID0_L.js +1 -0
  927. package/dist/showcase/assets/dist-DV4Tv32d.js +45 -0
  928. package/dist/showcase/assets/dollar-sign-qp4G3P_K.js +1 -0
  929. package/dist/showcase/assets/download-zlcHjSdS.js +1 -0
  930. package/dist/showcase/assets/dropdown-menu-DZ47rJaE.js +1 -0
  931. package/dist/showcase/assets/dropzone-Dx4EqBHu.js +1 -0
  932. package/dist/showcase/assets/earth-BuXqXHh6.js +1 -0
  933. package/dist/showcase/assets/ellipsis-DgAjMZHc.js +1 -0
  934. package/dist/showcase/assets/ellipsis-vertical-BA8_YMyV.js +1 -0
  935. package/dist/showcase/assets/empty-DXjKmyNv.js +1 -0
  936. package/dist/showcase/assets/empty-item-DIGWYsI0.js +49 -0
  937. package/dist/showcase/assets/empty-state-BSc0tQNC.js +190 -0
  938. package/dist/showcase/assets/empty-state-CkixFVN1.js +1 -0
  939. package/dist/showcase/assets/enhanced-activities-CKbHgR4f.js +357 -0
  940. package/dist/showcase/assets/enhanced-combobox-DAKQyFUg.js +1 -0
  941. package/dist/showcase/assets/esm-C3PfkuOc.js +2 -0
  942. package/dist/showcase/assets/event-calendar-rNju8jaT.js +138 -0
  943. package/dist/showcase/assets/event-log-BUK1blGb.js +330 -0
  944. package/dist/showcase/assets/example-PsbgbESI.js +1 -0
  945. package/dist/showcase/assets/external-link-CgB9zfWz.js +1 -0
  946. package/dist/showcase/assets/eye-YnIHbdKe.js +1 -0
  947. package/dist/showcase/assets/feature-announcement-CWwjAPI1.js +34 -0
  948. package/dist/showcase/assets/file-3Z2xkc-8.js +1 -0
  949. package/dist/showcase/assets/file-text-BQeGXxPG.js +1 -0
  950. package/dist/showcase/assets/filter-layout-D7YskzbC.js +1 -0
  951. package/dist/showcase/assets/filters-2YY_wVwq.js +139 -0
  952. package/dist/showcase/assets/flag-Bw3wwRgF.js +1 -0
  953. package/dist/showcase/assets/folder-open-CZ5Bq4lK.js +1 -0
  954. package/dist/showcase/assets/form-field-AWNJL9FM.js +1 -0
  955. package/dist/showcase/assets/form-sizing-C3UG5WKC.js +1 -0
  956. package/dist/showcase/assets/format-DUU7-42g.js +1 -0
  957. package/dist/showcase/assets/forms-CWJ3HBbk.js +915 -0
  958. package/dist/showcase/assets/funnel-vxNNph7w.js +1 -0
  959. package/dist/showcase/assets/generic-DlyFJDj6.js +1 -0
  960. package/dist/showcase/assets/getPseudoElementBounds-CibNto5h.js +1 -0
  961. package/dist/showcase/assets/gift-BjRHqTcQ.js +1 -0
  962. package/dist/showcase/assets/giftcard-cards-DcujCFff.js +85 -0
  963. package/dist/showcase/assets/git-branch-B7XnpQE0.js +1 -0
  964. package/dist/showcase/assets/global-search-CWvNfmpe.js +1 -0
  965. package/dist/showcase/assets/global-search-Ct7I1Xd2.js +215 -0
  966. package/dist/showcase/assets/globe-CHleXWd2.js +1 -0
  967. package/dist/showcase/assets/gradient-card-Bw4oJljh.js +58 -0
  968. package/dist/showcase/assets/hash-BVGqnm6_.js +1 -0
  969. package/dist/showcase/assets/header-CgApizpk.js +1 -0
  970. package/dist/showcase/assets/header-notifications-B2v1Mdri.js +1 -0
  971. package/dist/showcase/assets/heart-BwvHCA-d.js +1 -0
  972. package/dist/showcase/assets/hooks-A_AQLIRZ.js +217 -0
  973. package/dist/showcase/assets/house-opqNxOmP.js +1 -0
  974. package/dist/showcase/assets/icon-badge-CsG95J1Z.js +37 -0
  975. package/dist/showcase/assets/icon-badge-ognVhKWR.js +1 -0
  976. package/dist/showcase/assets/image-apDSlTAx.js +1 -0
  977. package/dist/showcase/assets/inbox-WrbeTKEw.js +1 -0
  978. package/dist/showcase/assets/index-CCxHwV7T.css +2 -0
  979. package/dist/showcase/assets/index-QESvAJrb.js +10 -0
  980. package/dist/showcase/assets/index.esm-BXmcbSs7.js +1 -0
  981. package/dist/showcase/assets/inertValue-DrANZiJk.js +1 -0
  982. package/dist/showcase/assets/info-C3G9KRCx.js +1 -0
  983. package/dist/showcase/assets/inline-stat-BnjUqzDM.js +15 -0
  984. package/dist/showcase/assets/inline-stat-CO01t7SJ.js +1 -0
  985. package/dist/showcase/assets/input-CBJy1dMs.js +1 -0
  986. package/dist/showcase/assets/input-group-CZyYSq4r.js +47 -0
  987. package/dist/showcase/assets/input-group-Dfqufdp4.js +1 -0
  988. package/dist/showcase/assets/input-yYoqWQQ7.js +1 -0
  989. package/dist/showcase/assets/inputs-Bhw_FGDY.js +155 -0
  990. package/dist/showcase/assets/installation-DnvS2ZUn.js +134 -0
  991. package/dist/showcase/assets/invoice-header-B9Ak8GXX.js +36 -0
  992. package/dist/showcase/assets/invoice-items-DY5zUZhE.js +36 -0
  993. package/dist/showcase/assets/invoice-mini-BAryECEH.js +14 -0
  994. package/dist/showcase/assets/invoice-table-BUvjee74.js +30 -0
  995. package/dist/showcase/assets/isSameDay-DVP1ae2V.js +1 -0
  996. package/dist/showcase/assets/isToday-CNAQB-p9.js +1 -0
  997. package/dist/showcase/assets/italic-CjQCLJci.js +1 -0
  998. package/dist/showcase/assets/item-BMSdEK3V.js +1 -0
  999. package/dist/showcase/assets/item-D1Jxrpia.js +1 -0
  1000. package/dist/showcase/assets/item-DxPwk321.js +139 -0
  1001. package/dist/showcase/assets/kanban-DXWCGieQ.js +188 -0
  1002. package/dist/showcase/assets/key-round-DpuhXiJQ.js +1 -0
  1003. package/dist/showcase/assets/label-D1wLK5nY.js +1 -0
  1004. package/dist/showcase/assets/languages-CGYZVmbV.js +1 -0
  1005. package/dist/showcase/assets/layers-DJZSVGAu.js +1 -0
  1006. package/dist/showcase/assets/layout-app-shell-UX63nzTO.js +608 -0
  1007. package/dist/showcase/assets/layout-auth-Bav5BBqp.js +790 -0
  1008. package/dist/showcase/assets/layout-containers-DMHD2zdV.js +101 -0
  1009. package/dist/showcase/assets/layout-header-CGesu_kM.js +203 -0
  1010. package/dist/showcase/assets/layout-page-DHXu8SIv.js +314 -0
  1011. package/dist/showcase/assets/layout-primitives-CokzGwd2.js +34 -0
  1012. package/dist/showcase/assets/layout-sidebar-CLUYajcu.js +224 -0
  1013. package/dist/showcase/assets/layout-users-DHUNAnFA.js +117 -0
  1014. package/dist/showcase/assets/layout-workspace-y0v2FpDW.js +191 -0
  1015. package/dist/showcase/assets/lib-g_kR7X9Z.js +1 -0
  1016. package/dist/showcase/assets/list-checks-CXt8visd.js +1 -0
  1017. package/dist/showcase/assets/lock-CpZ5kLUd.js +1 -0
  1018. package/dist/showcase/assets/lock-keyhole-Cy2raRO6.js +1 -0
  1019. package/dist/showcase/assets/mail-Cj6uT4TA.js +1 -0
  1020. package/dist/showcase/assets/mail-check-Di70bdf6.js +1 -0
  1021. package/dist/showcase/assets/map-DMXbG_04.js +124 -0
  1022. package/dist/showcase/assets/map-pin-EKhu7vEj.js +1 -0
  1023. package/dist/showcase/assets/media-library-Dnp9S0oW.js +699 -0
  1024. package/dist/showcase/assets/mention-inline-suggestions-Bp-fVNYF.js +1 -0
  1025. package/dist/showcase/assets/mentions-DNRk30XZ.js +138 -0
  1026. package/dist/showcase/assets/menus-DFURb5VL.js +171 -0
  1027. package/dist/showcase/assets/message-square-DG0qIsG_.js +1 -0
  1028. package/dist/showcase/assets/metadata-list-BhlsEWYT.js +1 -0
  1029. package/dist/showcase/assets/metadata-list-Cb1DQd4S.js +286 -0
  1030. package/dist/showcase/assets/metric-BkzIsP8H.js +1 -0
  1031. package/dist/showcase/assets/metric-bar-CU73nx89.js +1 -0
  1032. package/dist/showcase/assets/metric-grid-BMLMbLjE.js +1 -0
  1033. package/dist/showcase/assets/metric-trend-chip-Dutl5uZo.js +1 -0
  1034. package/dist/showcase/assets/metrics-analytics-bar-AqG2oyIy.js +44 -0
  1035. package/dist/showcase/assets/metrics-analytics-cards-CrFHmR2f.js +50 -0
  1036. package/dist/showcase/assets/metrics-comparison-CY-DyLv7.js +76 -0
  1037. package/dist/showcase/assets/metrics-heatmap-BmX_CkiP.js +27 -0
  1038. package/dist/showcase/assets/metrics-inline-badge-C1IFjdJN.js +17 -0
  1039. package/dist/showcase/assets/metrics-kpi-row-8Kbn034e.js +31 -0
  1040. package/dist/showcase/assets/metrics-micro-grid-CodO02yA.js +42 -0
  1041. package/dist/showcase/assets/metrics-overview-CdPqEAAG.js +192 -0
  1042. package/dist/showcase/assets/metrics-stat-cards-Cw7UMWmb.js +54 -0
  1043. package/dist/showcase/assets/minus-B1es6KJX.js +1 -0
  1044. package/dist/showcase/assets/money-display-CFfUZLus.js +1 -0
  1045. package/dist/showcase/assets/month-year-picker-ChVcYm9f.js +1 -0
  1046. package/dist/showcase/assets/navigation-Boyt1q-1.js +231 -0
  1047. package/dist/showcase/assets/navigation-CThYYxkL.js +90 -0
  1048. package/dist/showcase/assets/navigation-extras-CxLc-Mqx.js +43 -0
  1049. package/dist/showcase/assets/onboarding-checklist-C15gqmFc.js +119 -0
  1050. package/dist/showcase/assets/overflow-tab-bar-B2Htn-Ft.js +1 -0
  1051. package/dist/showcase/assets/overlays-CPZfp0nk.js +159 -0
  1052. package/dist/showcase/assets/overlays-Cpj4akiw.js +408 -0
  1053. package/dist/showcase/assets/overview-BB-Xbkff.js +184 -0
  1054. package/dist/showcase/assets/package-DLn6nx-u.js +1 -0
  1055. package/dist/showcase/assets/package-check-B0wyBUSU.js +1 -0
  1056. package/dist/showcase/assets/page-BPFNsNh7.js +1 -0
  1057. package/dist/showcase/assets/page-action-button-DMS8Vcmz.js +1 -0
  1058. package/dist/showcase/assets/page-header-BGqE9hzO.js +1 -0
  1059. package/dist/showcase/assets/pagination-Be6ynLCp.js +1 -0
  1060. package/dist/showcase/assets/pagination-T4FmLNHn.js +42 -0
  1061. package/dist/showcase/assets/paperclip-B_kxXzSN.js +1 -0
  1062. package/dist/showcase/assets/password-input-qfQ5eIU4.js +1 -0
  1063. package/dist/showcase/assets/pencil-DlDLApli.js +1 -0
  1064. package/dist/showcase/assets/phone-D8tvvbSQ.js +1 -0
  1065. package/dist/showcase/assets/plus-BkhJjfUv.js +1 -0
  1066. package/dist/showcase/assets/popover-BsCx2XMI.js +1 -0
  1067. package/dist/showcase/assets/popover-Bu7aaPjE.js +1 -0
  1068. package/dist/showcase/assets/popover-menu-CD_JfEeq.js +1 -0
  1069. package/dist/showcase/assets/products-BzHX1ta0.js +423 -0
  1070. package/dist/showcase/assets/progress-CpW2ZGAy.js +18 -0
  1071. package/dist/showcase/assets/progress-jIJ_EIKE.js +1 -0
  1072. package/dist/showcase/assets/props-table-CCcohuyT.js +1 -0
  1073. package/dist/showcase/assets/props.generated-cO7HmIpY.json +41578 -0
  1074. package/dist/showcase/assets/quote-Bc9eHVKi.js +1 -0
  1075. package/dist/showcase/assets/react-sKtkuLrH.js +1 -0
  1076. package/dist/showcase/assets/receipt-B77_VWtt.js +1 -0
  1077. package/dist/showcase/assets/receipt-text-BlL_TJsS.js +1 -0
  1078. package/dist/showcase/assets/refinement-guide-BpzOvT_R.js +189 -0
  1079. package/dist/showcase/assets/refresh-cw-CELG4taF.js +1 -0
  1080. package/dist/showcase/assets/resolveValueLabel-LRTUaJTb.js +1 -0
  1081. package/dist/showcase/assets/resource-BT8_ck3n.js +1 -0
  1082. package/dist/showcase/assets/resource-C7J3yZp6.js +139 -0
  1083. package/dist/showcase/assets/resource-selector-card-Ay8ImvKg.js +43 -0
  1084. package/dist/showcase/assets/rich-text-editor-CdGVvtsm.js +143 -0
  1085. package/dist/showcase/assets/rich-text-editor-DVtTVuZ6.js +124 -0
  1086. package/dist/showcase/assets/rotate-ccw-MwEZ1b11.js +1 -0
  1087. package/dist/showcase/assets/route-CgBh1oKF.js +1 -0
  1088. package/dist/showcase/assets/save-BFsAGR7O.js +1 -0
  1089. package/dist/showcase/assets/schema-form-CaF-lBkN.js +327 -0
  1090. package/dist/showcase/assets/scroll-area-BkZULoZA.js +1 -0
  1091. package/dist/showcase/assets/scroll-area-CpDi_6FP.js +32 -0
  1092. package/dist/showcase/assets/section-D-N8Ze16.js +1 -0
  1093. package/dist/showcase/assets/select-C9Mfb_Gj.js +1 -0
  1094. package/dist/showcase/assets/select-ReMZs8K6.js +1 -0
  1095. package/dist/showcase/assets/send-C6PbwpHN.js +1 -0
  1096. package/dist/showcase/assets/separator-CywPSoE0.js +28 -0
  1097. package/dist/showcase/assets/separator-Ha9YxI2x.js +1 -0
  1098. package/dist/showcase/assets/settings-2-CVq5Uyv5.js +1 -0
  1099. package/dist/showcase/assets/settings-DkTHc0Ob.js +1 -0
  1100. package/dist/showcase/assets/sheet-k-P0gWlk.js +1 -0
  1101. package/dist/showcase/assets/shield-Cme7_JJR.js +1 -0
  1102. package/dist/showcase/assets/shield-alert-CxV0S5w0.js +1 -0
  1103. package/dist/showcase/assets/shield-check-BW_7p6Xf.js +1 -0
  1104. package/dist/showcase/assets/shopping-bag-CoR8AMYU.js +1 -0
  1105. package/dist/showcase/assets/showcase-m3FzbvoC.js +132 -0
  1106. package/dist/showcase/assets/sidebar-bz_FzvjM.js +1 -0
  1107. package/dist/showcase/assets/sidebar.context-BWMPnGn6.js +1 -0
  1108. package/dist/showcase/assets/skeleton-BJMnQDgf.js +29 -0
  1109. package/dist/showcase/assets/skeleton-DoWW5XZD.js +1 -0
  1110. package/dist/showcase/assets/slider-BH1Gtp_p.js +1 -0
  1111. package/dist/showcase/assets/smart-card-C6-idFYI.js +1 -0
  1112. package/dist/showcase/assets/sonner-CGZ3FC4U.js +22 -0
  1113. package/dist/showcase/assets/sortable.esm-CE0TA9V_.js +5 -0
  1114. package/dist/showcase/assets/sparkles-8yQFcmte.js +1 -0
  1115. package/dist/showcase/assets/spinner-BYUX0luk.js +30 -0
  1116. package/dist/showcase/assets/spinner-CNveVfOr.js +49 -0
  1117. package/dist/showcase/assets/spinner-CO8LjtjY.js +1 -0
  1118. package/dist/showcase/assets/square-pen-CWylvezY.js +1 -0
  1119. package/dist/showcase/assets/stacked-avatars-DiNA5OJK.js +1 -0
  1120. package/dist/showcase/assets/star-t53uwwyp.js +1 -0
  1121. package/dist/showcase/assets/startOfDay-BKFJecZ3.js +1 -0
  1122. package/dist/showcase/assets/styles-CwpnwrEQ.js +1 -0
  1123. package/dist/showcase/assets/suggestions-CvxZxsmc.js +126 -0
  1124. package/dist/showcase/assets/switch-CewkokYT.js +1 -0
  1125. package/dist/showcase/assets/switch-D-7uqDR8.js +1 -0
  1126. package/dist/showcase/assets/sync-DnBSRAwH.js +124 -0
  1127. package/dist/showcase/assets/table-3cUcSCBR.js +664 -0
  1128. package/dist/showcase/assets/table-actions-CrujG5R-.js +1 -0
  1129. package/dist/showcase/assets/table-ds5oNU0h.js +1 -0
  1130. package/dist/showcase/assets/tabs-C-hJfSn5.js +19 -0
  1131. package/dist/showcase/assets/tabs-GG911oaV.js +1 -0
  1132. package/dist/showcase/assets/tags-input-DBeIaeVn.js +1 -0
  1133. package/dist/showcase/assets/text-button-EZojp9Ye.js +1 -0
  1134. package/dist/showcase/assets/text-link-DcKeYjEX.js +1 -0
  1135. package/dist/showcase/assets/textarea-DgNgSl1g.js +1 -0
  1136. package/dist/showcase/assets/textarea-PXKZSiRa.js +1 -0
  1137. package/dist/showcase/assets/timelines-CaF_Ze8z.js +200 -0
  1138. package/dist/showcase/assets/toggle-group-D_iuhL1G.js +1 -0
  1139. package/dist/showcase/assets/toggles-BKaayRmE.js +71 -0
  1140. package/dist/showcase/assets/toggles-group-DRAksOw2.js +32 -0
  1141. package/dist/showcase/assets/tooltip-B_LnC5D2.js +31 -0
  1142. package/dist/showcase/assets/trash-2-DhUpICQq.js +1 -0
  1143. package/dist/showcase/assets/trending-up-Kfm5l65O.js +1 -0
  1144. package/dist/showcase/assets/truck-D6SGLjv1.js +1 -0
  1145. package/dist/showcase/assets/typography-qEz6MMn9.js +223 -0
  1146. package/dist/showcase/assets/ui-badge-BA334hdB.js +28 -0
  1147. package/dist/showcase/assets/ui-card-CjqUyGvB.js +30 -0
  1148. package/dist/showcase/assets/ui-table-cDgI6WMk.js +42 -0
  1149. package/dist/showcase/assets/upload-tray-BcA-7pqW.js +138 -0
  1150. package/dist/showcase/assets/use-form-field-state-CGGJFfWu.js +1 -0
  1151. package/dist/showcase/assets/use-layout-link-DIUWH-oo.js +1 -0
  1152. package/dist/showcase/assets/useAnchoredPopupScrollLock-BavpibMb.js +1 -0
  1153. package/dist/showcase/assets/useAriaLabelledBy-HDEJjv0f.js +1 -0
  1154. package/dist/showcase/assets/useCollapsiblePanel-CL0pCuxO.js +1 -0
  1155. package/dist/showcase/assets/useCompositeItem-LkMSD9DW.js +1 -0
  1156. package/dist/showcase/assets/useCompositeListItem-C_oLUvf8.js +1 -0
  1157. package/dist/showcase/assets/useControlled-BHUji6Sp.js +1 -0
  1158. package/dist/showcase/assets/useLabelableId-DDpjUdIO.js +1 -0
  1159. package/dist/showcase/assets/useOpenInteractionType-DQOSh-Eu.js +1 -0
  1160. package/dist/showcase/assets/useRender-CnmFaF3Y.js +1 -0
  1161. package/dist/showcase/assets/useTriggerFocusGuards-BPFrAxlp.js +1 -0
  1162. package/dist/showcase/assets/useValueChanged-lYlHqRM1.js +1 -0
  1163. package/dist/showcase/assets/user-DLuRcjl0.js +1 -0
  1164. package/dist/showcase/assets/user-plus-B1Pi7SNv.js +1 -0
  1165. package/dist/showcase/assets/users-DAlxvktS.js +1 -0
  1166. package/dist/showcase/assets/vendor-profile-ClJ6G6SO.js +37 -0
  1167. package/dist/showcase/assets/video-DxooIkh-.js +1 -0
  1168. package/dist/showcase/assets/wrench-BiwmotMF.js +1 -0
  1169. package/dist/showcase/assets/x-idpnOHil.js +1 -0
  1170. package/dist/showcase/assets/zap-a90eC6iO.js +1 -0
  1171. package/dist/showcase/index.html +3 -3
  1172. package/dist/style.css +1 -1
  1173. package/package.json +29 -13
  1174. package/scripts/install-skill.mjs +2 -0
  1175. package/scripts/metadata.json +67 -3
  1176. package/scripts/publish-theme.mjs +245 -0
  1177. package/src/App.css +10 -3
  1178. package/src/css/defaults.css +12 -0
  1179. package/src/css/themes/default.css +7 -0
  1180. package/src/css/themes/shadcn.default.css +144 -0
  1181. package/src/css/tokens/compat.css +46 -0
  1182. package/src/css/tokens/components.css +55 -0
  1183. package/src/css/tokens/foundation.css +90 -0
  1184. package/src/css/tokens/layout.css +44 -0
  1185. package/src/css/tokens/primitives.css +263 -0
  1186. package/src/css/tokens/states.css +58 -0
  1187. package/.agents/skills/component-library-rules/references/components/base__display.md +0 -627
  1188. package/.agents/skills/component-library-rules/references/components/base__empty-state.md +0 -310
  1189. package/.agents/skills/component-library-rules/references/components/base__frame.md +0 -235
  1190. package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +0 -430
  1191. package/.agents/skills/component-library-rules/references/components/composed__ai-new.md +0 -221
  1192. package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +0 -295
  1193. package/dist/_shared/accordion-Df1XrCDv.cjs +0 -2
  1194. package/dist/_shared/accordion-Df1XrCDv.cjs.map +0 -1
  1195. package/dist/_shared/accordion-Rzi9wEl6.js +0 -130
  1196. package/dist/_shared/accordion-Rzi9wEl6.js.map +0 -1
  1197. package/dist/_shared/action-menu-CrOJ63Q9.js +0 -96
  1198. package/dist/_shared/action-menu-CrOJ63Q9.js.map +0 -1
  1199. package/dist/_shared/action-menu-D9OowHKx.cjs +0 -2
  1200. package/dist/_shared/action-menu-D9OowHKx.cjs.map +0 -1
  1201. package/dist/_shared/ai-artifact-D4EjKoq6.cjs +0 -3
  1202. package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +0 -1
  1203. package/dist/_shared/ai-artifact-nlOrSeqT.js +0 -1099
  1204. package/dist/_shared/ai-artifact-nlOrSeqT.js.map +0 -1
  1205. package/dist/_shared/alert-CuIIKJC-.cjs +0 -2
  1206. package/dist/_shared/alert-CuIIKJC-.cjs.map +0 -1
  1207. package/dist/_shared/alert-k60OnTtb.js +0 -81
  1208. package/dist/_shared/alert-k60OnTtb.js.map +0 -1
  1209. package/dist/_shared/app-shell-DqDnnKT4.cjs +0 -2
  1210. package/dist/_shared/app-shell-DqDnnKT4.cjs.map +0 -1
  1211. package/dist/_shared/app-shell-w5h0vEKg.js +0 -69
  1212. package/dist/_shared/app-shell-w5h0vEKg.js.map +0 -1
  1213. package/dist/_shared/auth-C5HawWvp.cjs +0 -2
  1214. package/dist/_shared/auth-C5HawWvp.cjs.map +0 -1
  1215. package/dist/_shared/auth-DnMEJXP9.js +0 -643
  1216. package/dist/_shared/auth-DnMEJXP9.js.map +0 -1
  1217. package/dist/_shared/avatar-0spfQEHG.cjs +0 -2
  1218. package/dist/_shared/avatar-0spfQEHG.cjs.map +0 -1
  1219. package/dist/_shared/avatar-CBi4LGxy.js +0 -52
  1220. package/dist/_shared/avatar-CBi4LGxy.js.map +0 -1
  1221. package/dist/_shared/badge-6WYAMJwA.js +0 -108
  1222. package/dist/_shared/badge-6WYAMJwA.js.map +0 -1
  1223. package/dist/_shared/badge-CBof1rbF.cjs +0 -2
  1224. package/dist/_shared/badge-CBof1rbF.cjs.map +0 -1
  1225. package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +0 -2
  1226. package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +0 -1
  1227. package/dist/_shared/breadcrumbs-bJ-J0oCd.js +0 -111
  1228. package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +0 -1
  1229. package/dist/_shared/button-BGKY8UY0.js +0 -173
  1230. package/dist/_shared/button-BGKY8UY0.js.map +0 -1
  1231. package/dist/_shared/button-BI347RlM.cjs +0 -2
  1232. package/dist/_shared/button-BI347RlM.cjs.map +0 -1
  1233. package/dist/_shared/buttons-PL-TGJ32.js +0 -143
  1234. package/dist/_shared/buttons-PL-TGJ32.js.map +0 -1
  1235. package/dist/_shared/buttons-kVvSD_oI.cjs +0 -2
  1236. package/dist/_shared/buttons-kVvSD_oI.cjs.map +0 -1
  1237. package/dist/_shared/card-radio-group-Bna2uZs1.cjs +0 -2
  1238. package/dist/_shared/card-radio-group-Bna2uZs1.cjs.map +0 -1
  1239. package/dist/_shared/card-radio-group-D_CY1HRy.js +0 -158
  1240. package/dist/_shared/card-radio-group-D_CY1HRy.js.map +0 -1
  1241. package/dist/_shared/checkbox-CTqqawIT.js +0 -22
  1242. package/dist/_shared/checkbox-CTqqawIT.js.map +0 -1
  1243. package/dist/_shared/checkbox-D1n-nfLP.cjs +0 -2
  1244. package/dist/_shared/checkbox-D1n-nfLP.cjs.map +0 -1
  1245. package/dist/_shared/combobox-B4KmDZK0.cjs +0 -2
  1246. package/dist/_shared/combobox-B4KmDZK0.cjs.map +0 -1
  1247. package/dist/_shared/combobox-YUGi3xSc.js +0 -810
  1248. package/dist/_shared/combobox-YUGi3xSc.js.map +0 -1
  1249. package/dist/_shared/command-Bxe_FmGD.cjs +0 -2
  1250. package/dist/_shared/command-Bxe_FmGD.cjs.map +0 -1
  1251. package/dist/_shared/command-DwRnPIGs.js +0 -39
  1252. package/dist/_shared/command-DwRnPIGs.js.map +0 -1
  1253. package/dist/_shared/comments-GzXdwpq4.js +0 -952
  1254. package/dist/_shared/comments-GzXdwpq4.js.map +0 -1
  1255. package/dist/_shared/comments-Zj_foV1V.cjs +0 -2
  1256. package/dist/_shared/comments-Zj_foV1V.cjs.map +0 -1
  1257. package/dist/_shared/copyable-Bx4J7fuT.cjs +0 -2
  1258. package/dist/_shared/copyable-Bx4J7fuT.cjs.map +0 -1
  1259. package/dist/_shared/copyable-cfF4gZoT.js +0 -38
  1260. package/dist/_shared/copyable-cfF4gZoT.js.map +0 -1
  1261. package/dist/_shared/date-picker-Dl91BM3D.js +0 -1361
  1262. package/dist/_shared/date-picker-Dl91BM3D.js.map +0 -1
  1263. package/dist/_shared/date-picker-zFOqtmAS.cjs +0 -2
  1264. package/dist/_shared/date-picker-zFOqtmAS.cjs.map +0 -1
  1265. package/dist/_shared/date-pickers-BBydcIjN.cjs +0 -2
  1266. package/dist/_shared/date-pickers-BBydcIjN.cjs.map +0 -1
  1267. package/dist/_shared/date-pickers-D2OsgV4V.js +0 -330
  1268. package/dist/_shared/date-pickers-D2OsgV4V.js.map +0 -1
  1269. package/dist/_shared/display-Dhy5ogxC.cjs +0 -2
  1270. package/dist/_shared/display-Dhy5ogxC.cjs.map +0 -1
  1271. package/dist/_shared/display-NBtWdAMl.js +0 -1154
  1272. package/dist/_shared/display-NBtWdAMl.js.map +0 -1
  1273. package/dist/_shared/form-field-B7taMVbC.js +0 -329
  1274. package/dist/_shared/form-field-B7taMVbC.js.map +0 -1
  1275. package/dist/_shared/form-field-rMGPvHFK.cjs +0 -2
  1276. package/dist/_shared/form-field-rMGPvHFK.cjs.map +0 -1
  1277. package/dist/_shared/form-sizing-D74IS9KG.js +0 -21
  1278. package/dist/_shared/form-sizing-D74IS9KG.js.map +0 -1
  1279. package/dist/_shared/form-sizing-aVwVuF-w.cjs +0 -2
  1280. package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +0 -1
  1281. package/dist/_shared/forms-BweX9Lm8.cjs +0 -2
  1282. package/dist/_shared/forms-BweX9Lm8.cjs.map +0 -1
  1283. package/dist/_shared/forms-L1hyNKpZ.js +0 -3430
  1284. package/dist/_shared/forms-L1hyNKpZ.js.map +0 -1
  1285. package/dist/_shared/header-BSBPtGn4.cjs +0 -2
  1286. package/dist/_shared/header-BSBPtGn4.cjs.map +0 -1
  1287. package/dist/_shared/header-No6GSp4R.js +0 -360
  1288. package/dist/_shared/header-No6GSp4R.js.map +0 -1
  1289. package/dist/_shared/heading-0DYCOrgC.cjs +0 -2
  1290. package/dist/_shared/heading-0DYCOrgC.cjs.map +0 -1
  1291. package/dist/_shared/heading-HeP06nXG.js +0 -107
  1292. package/dist/_shared/heading-HeP06nXG.js.map +0 -1
  1293. package/dist/_shared/hooks-BkXvZ4py.js +0 -118
  1294. package/dist/_shared/hooks-BkXvZ4py.js.map +0 -1
  1295. package/dist/_shared/hooks-D3SbLBRk.cjs +0 -2
  1296. package/dist/_shared/hooks-D3SbLBRk.cjs.map +0 -1
  1297. package/dist/_shared/icon-badge-BAWl1oOe.cjs +0 -2
  1298. package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +0 -1
  1299. package/dist/_shared/icon-badge-zTBVtgt9.js +0 -52
  1300. package/dist/_shared/icon-badge-zTBVtgt9.js.map +0 -1
  1301. package/dist/_shared/input-C7t-RHYq.js +0 -182
  1302. package/dist/_shared/input-C7t-RHYq.js.map +0 -1
  1303. package/dist/_shared/input-COMcb1WY.cjs +0 -2
  1304. package/dist/_shared/input-COMcb1WY.cjs.map +0 -1
  1305. package/dist/_shared/item-DAjqQhhj.js +0 -225
  1306. package/dist/_shared/item-DAjqQhhj.js.map +0 -1
  1307. package/dist/_shared/item-DoXXYgPm.cjs +0 -2
  1308. package/dist/_shared/item-DoXXYgPm.cjs.map +0 -1
  1309. package/dist/_shared/mentions-CA1Ka_Bv.cjs +0 -2
  1310. package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +0 -1
  1311. package/dist/_shared/mentions-CdvvLGQG.js +0 -506
  1312. package/dist/_shared/mentions-CdvvLGQG.js.map +0 -1
  1313. package/dist/_shared/metadata-Ckcmar8d.js +0 -235
  1314. package/dist/_shared/metadata-Ckcmar8d.js.map +0 -1
  1315. package/dist/_shared/metadata-DamdYVZL.cjs +0 -2
  1316. package/dist/_shared/metadata-DamdYVZL.cjs.map +0 -1
  1317. package/dist/_shared/money-display-CFSMUtxS.cjs +0 -2
  1318. package/dist/_shared/money-display-CFSMUtxS.cjs.map +0 -1
  1319. package/dist/_shared/money-display-D4Z3P3f_.js +0 -198
  1320. package/dist/_shared/money-display-D4Z3P3f_.js.map +0 -1
  1321. package/dist/_shared/navigation-BemwPPC8.cjs +0 -2
  1322. package/dist/_shared/navigation-BemwPPC8.cjs.map +0 -1
  1323. package/dist/_shared/navigation-DY540HB0.js +0 -419
  1324. package/dist/_shared/navigation-DY540HB0.js.map +0 -1
  1325. package/dist/_shared/overlays-CJs_syAu.js +0 -648
  1326. package/dist/_shared/overlays-CJs_syAu.js.map +0 -1
  1327. package/dist/_shared/overlays-DWFEaAog.cjs +0 -2
  1328. package/dist/_shared/overlays-DWFEaAog.cjs.map +0 -1
  1329. package/dist/_shared/page-Cg_gNpyK.js +0 -262
  1330. package/dist/_shared/page-Cg_gNpyK.js.map +0 -1
  1331. package/dist/_shared/page-CpFWQuWU.cjs +0 -2
  1332. package/dist/_shared/page-CpFWQuWU.cjs.map +0 -1
  1333. package/dist/_shared/popover-CaHvG8Vj.cjs +0 -2
  1334. package/dist/_shared/popover-CaHvG8Vj.cjs.map +0 -1
  1335. package/dist/_shared/popover-L37RqoRO.js +0 -83
  1336. package/dist/_shared/popover-L37RqoRO.js.map +0 -1
  1337. package/dist/_shared/popover-menu-Fz-bvWJF.cjs +0 -2
  1338. package/dist/_shared/popover-menu-Fz-bvWJF.cjs.map +0 -1
  1339. package/dist/_shared/popover-menu-bKQatoYF.js +0 -93
  1340. package/dist/_shared/popover-menu-bKQatoYF.js.map +0 -1
  1341. package/dist/_shared/rich-text-editor-B2VqNi6j.js +0 -620
  1342. package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +0 -1
  1343. package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +0 -2
  1344. package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +0 -1
  1345. package/dist/_shared/scroll-area-BH5CPQh4.js +0 -41
  1346. package/dist/_shared/scroll-area-BH5CPQh4.js.map +0 -1
  1347. package/dist/_shared/scroll-area-u46BOVcC.cjs +0 -2
  1348. package/dist/_shared/scroll-area-u46BOVcC.cjs.map +0 -1
  1349. package/dist/_shared/sidebar-BGpi9K_Q.js +0 -389
  1350. package/dist/_shared/sidebar-BGpi9K_Q.js.map +0 -1
  1351. package/dist/_shared/sidebar-BTFfxmNG.cjs +0 -2
  1352. package/dist/_shared/sidebar-BTFfxmNG.cjs.map +0 -1
  1353. package/dist/_shared/sidebar-CC3lcvNX.cjs +0 -2
  1354. package/dist/_shared/sidebar-CC3lcvNX.cjs.map +0 -1
  1355. package/dist/_shared/sidebar-wmztVpnO.js +0 -538
  1356. package/dist/_shared/sidebar-wmztVpnO.js.map +0 -1
  1357. package/dist/_shared/smart-card-B6m7tmt0.cjs +0 -2
  1358. package/dist/_shared/smart-card-B6m7tmt0.cjs.map +0 -1
  1359. package/dist/_shared/smart-card-thLb85Ih.js +0 -361
  1360. package/dist/_shared/smart-card-thLb85Ih.js.map +0 -1
  1361. package/dist/_shared/spinner-BfAbXTQ7.js +0 -67
  1362. package/dist/_shared/spinner-BfAbXTQ7.js.map +0 -1
  1363. package/dist/_shared/spinner-DWn3x9Tl.cjs +0 -2
  1364. package/dist/_shared/spinner-DWn3x9Tl.cjs.map +0 -1
  1365. package/dist/_shared/switch-BBP3u1z5.js +0 -55
  1366. package/dist/_shared/switch-BBP3u1z5.js.map +0 -1
  1367. package/dist/_shared/switch-zFZhhOEP.cjs +0 -2
  1368. package/dist/_shared/switch-zFZhhOEP.cjs.map +0 -1
  1369. package/dist/_shared/table-BItnJ8lG.cjs +0 -2
  1370. package/dist/_shared/table-BItnJ8lG.cjs.map +0 -1
  1371. package/dist/_shared/table-D3349b-v.js +0 -1189
  1372. package/dist/_shared/table-D3349b-v.js.map +0 -1
  1373. package/dist/_shared/textarea-C4SOrh0z.cjs +0 -2
  1374. package/dist/_shared/textarea-C4SOrh0z.cjs.map +0 -1
  1375. package/dist/_shared/textarea-CsMkelmp.js +0 -119
  1376. package/dist/_shared/textarea-CsMkelmp.js.map +0 -1
  1377. package/dist/_shared/typography-Bzsl7aTu.cjs +0 -2
  1378. package/dist/_shared/typography-Bzsl7aTu.cjs.map +0 -1
  1379. package/dist/_shared/typography-CdxyWB1T.js +0 -102
  1380. package/dist/_shared/typography-CdxyWB1T.js.map +0 -1
  1381. package/dist/_shared/ui-provider-BF4m2cR0.cjs +0 -2
  1382. package/dist/_shared/ui-provider-BF4m2cR0.cjs.map +0 -1
  1383. package/dist/_shared/ui-provider-C8Ot88lS.js +0 -85
  1384. package/dist/_shared/ui-provider-C8Ot88lS.js.map +0 -1
  1385. package/dist/_shared/workspace-BGVeTeJy.js +0 -357
  1386. package/dist/_shared/workspace-BGVeTeJy.js.map +0 -1
  1387. package/dist/_shared/workspace-CWyzTUmE.cjs +0 -2
  1388. package/dist/_shared/workspace-CWyzTUmE.cjs.map +0 -1
  1389. package/dist/components/base/display/empty-state/empty-state.d.ts.map +0 -1
  1390. package/dist/components/base/display/empty-state/empty-state.strings.d.ts.map +0 -1
  1391. package/dist/components/base/display/empty-state/empty-state.types.d.ts +0 -85
  1392. package/dist/components/base/display/empty-state/empty-state.types.d.ts.map +0 -1
  1393. package/dist/components/base/display/empty-state/index.d.ts.map +0 -1
  1394. package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +0 -1
  1395. package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +0 -1
  1396. package/dist/components/base/display/empty-state/partials/illustrations/index.d.ts.map +0 -1
  1397. package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +0 -1
  1398. package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +0 -1
  1399. package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +0 -1
  1400. package/dist/components/base/display/fields/email-display.d.ts +0 -22
  1401. package/dist/components/base/display/fields/email-display.d.ts.map +0 -1
  1402. package/dist/components/base/display/fields/index.d.ts.map +0 -1
  1403. package/dist/components/base/display/fields/phone-display.d.ts +0 -22
  1404. package/dist/components/base/display/fields/phone-display.d.ts.map +0 -1
  1405. package/dist/components/base/display/fields/url-display.d.ts +0 -28
  1406. package/dist/components/base/display/fields/url-display.d.ts.map +0 -1
  1407. package/dist/components/base/display/inline-stat/index.d.ts.map +0 -1
  1408. package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +0 -1
  1409. package/dist/components/base/display/metadata/index.cjs +0 -1
  1410. package/dist/components/base/display/metadata/index.d.ts.map +0 -1
  1411. package/dist/components/base/display/metadata/index.js +0 -2
  1412. package/dist/components/base/display/metadata/metadata-list.d.ts.map +0 -1
  1413. package/dist/components/base/display/metadata/metadata-list.strings.d.ts.map +0 -1
  1414. package/dist/components/base/display/numeric-value/index.d.ts.map +0 -1
  1415. package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +0 -1
  1416. package/dist/components/base/display/section-header/index.d.ts.map +0 -1
  1417. package/dist/components/base/display/section-header/section-header.d.ts.map +0 -1
  1418. package/dist/components/base/display/user-cell/index.d.ts.map +0 -1
  1419. package/dist/components/base/display/user-cell/user-cell.d.ts +0 -19
  1420. package/dist/components/base/display/user-cell/user-cell.d.ts.map +0 -1
  1421. package/dist/components/base/frame/frame.d.ts +0 -24
  1422. package/dist/components/base/frame/frame.d.ts.map +0 -1
  1423. package/dist/components/base/frame/index.cjs +0 -2
  1424. package/dist/components/base/frame/index.cjs.map +0 -1
  1425. package/dist/components/base/frame/index.d.ts +0 -2
  1426. package/dist/components/base/frame/index.d.ts.map +0 -1
  1427. package/dist/components/base/frame/index.js +0 -164
  1428. package/dist/components/base/frame/index.js.map +0 -1
  1429. package/dist/components/composed/data-display/index.cjs.map +0 -1
  1430. package/dist/components/composed/data-display/index.js.map +0 -1
  1431. package/dist/showcase/assets/AreaChart-BYEewdc_.js +0 -6
  1432. package/dist/showcase/assets/CSPContext-B11tftuK.js +0 -1
  1433. package/dist/showcase/assets/CompositeItem-Duekeg4m.js +0 -1
  1434. package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +0 -1
  1435. package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +0 -1
  1436. package/dist/showcase/assets/FieldItemContext-BSFHjS7g.js +0 -1
  1437. package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +0 -1
  1438. package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +0 -1
  1439. package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +0 -1
  1440. package/dist/showcase/assets/Separator-9PWX3shz.js +0 -1
  1441. package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +0 -1
  1442. package/dist/showcase/assets/accordion-CfqHO9_z.js +0 -171
  1443. package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +0 -1
  1444. package/dist/showcase/assets/action-menu-DFzSuDjI.js +0 -1
  1445. package/dist/showcase/assets/activities-Bo97b2-I.js +0 -501
  1446. package/dist/showcase/assets/activities-feed-card-D77gf27B.js +0 -1
  1447. package/dist/showcase/assets/activity-BUlCWLI8.js +0 -1
  1448. package/dist/showcase/assets/admin-CxTV4kZX.js +0 -80
  1449. package/dist/showcase/assets/ai-Bym5H8bn.js +0 -41
  1450. package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +0 -2
  1451. package/dist/showcase/assets/ai-chat-M3X5-PgT.js +0 -568
  1452. package/dist/showcase/assets/ai-elements-DjppcMBD.js +0 -387
  1453. package/dist/showcase/assets/ai-new-CXnrIi5S.js +0 -167
  1454. package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +0 -1
  1455. package/dist/showcase/assets/alert-D6Pygy2s.js +0 -62
  1456. package/dist/showcase/assets/alert-DCrWLbEx.js +0 -93
  1457. package/dist/showcase/assets/alert-qTNM0vld.js +0 -1
  1458. package/dist/showcase/assets/api-key-list-CCpuHYHc.js +0 -73
  1459. package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +0 -1
  1460. package/dist/showcase/assets/arrow-down--phuskCV.js +0 -1
  1461. package/dist/showcase/assets/arrow-left-B__WWqyA.js +0 -1
  1462. package/dist/showcase/assets/arrow-right-1-EvXxjB.js +0 -1
  1463. package/dist/showcase/assets/arrow-up-lWotnmo7.js +0 -1
  1464. package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +0 -1
  1465. package/dist/showcase/assets/avatar-gugtNx4D.js +0 -57
  1466. package/dist/showcase/assets/avatar-n1nywTlx.js +0 -1
  1467. package/dist/showcase/assets/badge-TuE-u3Hv.js +0 -28
  1468. package/dist/showcase/assets/badge-check-CPDvpVzK.js +0 -1
  1469. package/dist/showcase/assets/bell-DeCVddCA.js +0 -1
  1470. package/dist/showcase/assets/bot-B_vzJEJH.js +0 -1
  1471. package/dist/showcase/assets/box-z4O8t_K5.js +0 -1
  1472. package/dist/showcase/assets/brain-DdKBE4Bh.js +0 -1
  1473. package/dist/showcase/assets/brand-CfW7mgTY.js +0 -36
  1474. package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +0 -52
  1475. package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +0 -1
  1476. package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +0 -1
  1477. package/dist/showcase/assets/briefcase-ClqzeNt3.js +0 -1
  1478. package/dist/showcase/assets/building-2-BQuWgjZj.js +0 -1
  1479. package/dist/showcase/assets/button-CWKNCI82.js +0 -44
  1480. package/dist/showcase/assets/button-group-BYhxtFwV.js +0 -1
  1481. package/dist/showcase/assets/buttons-mBRyBw3Q.js +0 -270
  1482. package/dist/showcase/assets/calendar-BgloJjlW.js +0 -1
  1483. package/dist/showcase/assets/calendar-CJDWspzi.js +0 -1
  1484. package/dist/showcase/assets/calendar-CgML2kJt.js +0 -16
  1485. package/dist/showcase/assets/calendar-days-C0gTLVnY.js +0 -1
  1486. package/dist/showcase/assets/camera-nIlaz4Sn.js +0 -1
  1487. package/dist/showcase/assets/card-1ncRnRvq.js +0 -1
  1488. package/dist/showcase/assets/card-CcgWzFB-.js +0 -188
  1489. package/dist/showcase/assets/card-primitives-By4-RTuP.js +0 -1
  1490. package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +0 -1
  1491. package/dist/showcase/assets/cards-DdqQr8rY.js +0 -328
  1492. package/dist/showcase/assets/carousel-CV8ltDl8.js +0 -449
  1493. package/dist/showcase/assets/chart-BNzHjskC.js +0 -358
  1494. package/dist/showcase/assets/chart-column-CpTxRLEH.js +0 -1
  1495. package/dist/showcase/assets/checkbox-CZTTm4Dv.js +0 -1
  1496. package/dist/showcase/assets/chevron-down-LWBNHe9S.js +0 -1
  1497. package/dist/showcase/assets/chevron-left-BsshO7nf.js +0 -1
  1498. package/dist/showcase/assets/chevron-right-t68um2_G.js +0 -1
  1499. package/dist/showcase/assets/chevron-up-DjhlESJB.js +0 -1
  1500. package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +0 -1
  1501. package/dist/showcase/assets/circle-BL52dLr9.js +0 -1
  1502. package/dist/showcase/assets/circle-alert-CXCt6zxc.js +0 -1
  1503. package/dist/showcase/assets/circle-check-CbiRRw7s.js +0 -1
  1504. package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +0 -1
  1505. package/dist/showcase/assets/circle-dot-WEOpGGJf.js +0 -1
  1506. package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +0 -1
  1507. package/dist/showcase/assets/circle-x-BT9TJbJC.js +0 -1
  1508. package/dist/showcase/assets/clock-3-CfRK8ckc.js +0 -1
  1509. package/dist/showcase/assets/clock-D-3zf0c1.js +0 -1
  1510. package/dist/showcase/assets/code-xml-CQYKKuBU.js +0 -1
  1511. package/dist/showcase/assets/collapsible-BC0hQvat.js +0 -27
  1512. package/dist/showcase/assets/collapsible-CRVtVDCF.js +0 -1
  1513. package/dist/showcase/assets/combobox-D4VYvYCT.js +0 -696
  1514. package/dist/showcase/assets/command-CxeHT4lL.js +0 -1
  1515. package/dist/showcase/assets/command-Do_t_Zou.js +0 -1
  1516. package/dist/showcase/assets/comment-composer-DoFwvVlq.js +0 -1
  1517. package/dist/showcase/assets/comment-item-CT8UbVeg.js +0 -1
  1518. package/dist/showcase/assets/comments-CqdXrjUn.js +0 -357
  1519. package/dist/showcase/assets/commerce-B9V2Wo_q.js +0 -79
  1520. package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +0 -189
  1521. package/dist/showcase/assets/composite-BXLXcagx.js +0 -1
  1522. package/dist/showcase/assets/contact-card-BLcAXepj.js +0 -65
  1523. package/dist/showcase/assets/content-container-DJVD3ZmI.js +0 -1
  1524. package/dist/showcase/assets/copyable-od17NrMu.js +0 -96
  1525. package/dist/showcase/assets/course-card-CdZQr5yy.js +0 -77
  1526. package/dist/showcase/assets/cpu-B8kRNR1R.js +0 -1
  1527. package/dist/showcase/assets/credit-card-BYMQj03s.js +0 -1
  1528. package/dist/showcase/assets/currency-Cxv3Cp6B.js +0 -149
  1529. package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +0 -90
  1530. package/dist/showcase/assets/database-DuUABvxU.js +0 -1
  1531. package/dist/showcase/assets/date-block-E9qfY7W7.js +0 -1
  1532. package/dist/showcase/assets/date-picker-I8BdaiiU.js +0 -1
  1533. package/dist/showcase/assets/date-pickers-BLJaqhcS.js +0 -73
  1534. package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +0 -106
  1535. package/dist/showcase/assets/dialog-BuatDnQ9.js +0 -1
  1536. package/dist/showcase/assets/dialog-DCx-LydW.js +0 -1
  1537. package/dist/showcase/assets/display-Bt7busw5.js +0 -403
  1538. package/dist/showcase/assets/dist-BPyBHOXU.js +0 -45
  1539. package/dist/showcase/assets/dist-CnonIdcR.js +0 -1
  1540. package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +0 -1
  1541. package/dist/showcase/assets/download-B2JAmHmJ.js +0 -1
  1542. package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +0 -1
  1543. package/dist/showcase/assets/dropzone-BKIxDJNy.js +0 -1
  1544. package/dist/showcase/assets/earth-7-Z3Gv2v.js +0 -1
  1545. package/dist/showcase/assets/ellipsis-6Krb3RRW.js +0 -1
  1546. package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +0 -1
  1547. package/dist/showcase/assets/empty-BSYKaeXQ.js +0 -1
  1548. package/dist/showcase/assets/empty-item-YElgv25f.js +0 -49
  1549. package/dist/showcase/assets/empty-state-D-LrvnKF.js +0 -1
  1550. package/dist/showcase/assets/empty-state-dNh1GtVU.js +0 -188
  1551. package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +0 -361
  1552. package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +0 -1
  1553. package/dist/showcase/assets/esm-CAF_uoYd.js +0 -2
  1554. package/dist/showcase/assets/event-calendar-CcSi7g5A.js +0 -138
  1555. package/dist/showcase/assets/event-log-2uq-eYxh.js +0 -330
  1556. package/dist/showcase/assets/example-CTJ8AdNR.js +0 -1
  1557. package/dist/showcase/assets/external-link-D0gqSa1q.js +0 -1
  1558. package/dist/showcase/assets/eye-CDMCDLei.js +0 -1
  1559. package/dist/showcase/assets/feature-announcement-BlyNck35.js +0 -34
  1560. package/dist/showcase/assets/file-Y5EbzufX.js +0 -1
  1561. package/dist/showcase/assets/file-text-DH1mBuPi.js +0 -1
  1562. package/dist/showcase/assets/filters-BtHF4GSM.js +0 -78
  1563. package/dist/showcase/assets/flag-CJ08LwLY.js +0 -1
  1564. package/dist/showcase/assets/folder-open-DODo2pjy.js +0 -1
  1565. package/dist/showcase/assets/form-field-CHY7jh1q.js +0 -1
  1566. package/dist/showcase/assets/form-sizing-DHUDpiPA.js +0 -1
  1567. package/dist/showcase/assets/format-DYJqAuDM.js +0 -1
  1568. package/dist/showcase/assets/forms-DgvQQXHO.js +0 -862
  1569. package/dist/showcase/assets/frame-CdKicP4A.js +0 -167
  1570. package/dist/showcase/assets/generic-BH5YLC_H.js +0 -1
  1571. package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +0 -1
  1572. package/dist/showcase/assets/gift-DD8O7cld.js +0 -1
  1573. package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +0 -85
  1574. package/dist/showcase/assets/git-branch-DZq1Vo2G.js +0 -1
  1575. package/dist/showcase/assets/global-search-BqDotXql.js +0 -215
  1576. package/dist/showcase/assets/global-search-PH6LXqZw.js +0 -1
  1577. package/dist/showcase/assets/globe-mRTwrUxM.js +0 -1
  1578. package/dist/showcase/assets/gradient-card-CaL88YKv.js +0 -58
  1579. package/dist/showcase/assets/hash-DuqvHQHv.js +0 -1
  1580. package/dist/showcase/assets/header-CiNgDop3.js +0 -1
  1581. package/dist/showcase/assets/header-notifications-B9XMBsK_.js +0 -1
  1582. package/dist/showcase/assets/heart-DsGJfnDx.js +0 -1
  1583. package/dist/showcase/assets/house-B504aFIP.js +0 -1
  1584. package/dist/showcase/assets/icon-badge-DMNu8xb5.js +0 -1
  1585. package/dist/showcase/assets/image-C3DaMxmn.js +0 -1
  1586. package/dist/showcase/assets/inbox-BWKQMLMx.js +0 -1
  1587. package/dist/showcase/assets/index-DN3tqopz.css +0 -2
  1588. package/dist/showcase/assets/index-DaYVSqKu.js +0 -10
  1589. package/dist/showcase/assets/index.esm-Ducg7a0P.js +0 -1
  1590. package/dist/showcase/assets/inertValue-DrtTkMGx.js +0 -1
  1591. package/dist/showcase/assets/info-_FrGoCay.js +0 -1
  1592. package/dist/showcase/assets/inline-stat-BYu-tiUU.js +0 -1
  1593. package/dist/showcase/assets/input-C96HMHWR.js +0 -1
  1594. package/dist/showcase/assets/input-fMPi7XxI.js +0 -1
  1595. package/dist/showcase/assets/input-group-BZnSgFCn.js +0 -47
  1596. package/dist/showcase/assets/input-group-CVONNP3T.js +0 -1
  1597. package/dist/showcase/assets/inputs-Blh0LJ8-.js +0 -155
  1598. package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +0 -36
  1599. package/dist/showcase/assets/invoice-items-OVIrbG0k.js +0 -36
  1600. package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +0 -14
  1601. package/dist/showcase/assets/invoice-table-BXd_HhUg.js +0 -30
  1602. package/dist/showcase/assets/isSameDay-NBVO9AKF.js +0 -1
  1603. package/dist/showcase/assets/isToday-Bk5HMXWn.js +0 -1
  1604. package/dist/showcase/assets/italic-BOv5bW4H.js +0 -1
  1605. package/dist/showcase/assets/item-B4rdcVVp.js +0 -134
  1606. package/dist/showcase/assets/item-BVt0zZ12.js +0 -1
  1607. package/dist/showcase/assets/item-C4Xk3DC1.js +0 -1
  1608. package/dist/showcase/assets/kanban-BXbelelR.js +0 -186
  1609. package/dist/showcase/assets/label-Cv6wotdv.js +0 -1
  1610. package/dist/showcase/assets/languages-BofyvcCF.js +0 -1
  1611. package/dist/showcase/assets/layers-DJK0t5px.js +0 -1
  1612. package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +0 -608
  1613. package/dist/showcase/assets/layout-auth-BTvSTwUz.js +0 -754
  1614. package/dist/showcase/assets/layout-containers-PMuo__2O.js +0 -101
  1615. package/dist/showcase/assets/layout-header-DQ3zeCHz.js +0 -170
  1616. package/dist/showcase/assets/layout-page-CbvWdHrK.js +0 -122
  1617. package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +0 -34
  1618. package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +0 -224
  1619. package/dist/showcase/assets/layout-users-Cypq-42s.js +0 -117
  1620. package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +0 -183
  1621. package/dist/showcase/assets/lib-DMGme4uo.js +0 -1
  1622. package/dist/showcase/assets/lock-DXmvLEEx.js +0 -1
  1623. package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +0 -1
  1624. package/dist/showcase/assets/mail-CXVFHkzh.js +0 -1
  1625. package/dist/showcase/assets/mail-check-BNEu3j2a.js +0 -1
  1626. package/dist/showcase/assets/map-DnE1pFCQ.js +0 -124
  1627. package/dist/showcase/assets/map-pin-CpOVa8IH.js +0 -1
  1628. package/dist/showcase/assets/media-library-C-KfEvm4.js +0 -695
  1629. package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +0 -1
  1630. package/dist/showcase/assets/mentions-C8ZdNFuC.js +0 -138
  1631. package/dist/showcase/assets/menus-B8yUL75K.js +0 -165
  1632. package/dist/showcase/assets/message-square-DNOTaOFs.js +0 -1
  1633. package/dist/showcase/assets/metadata-list-BQAanxM-.js +0 -1
  1634. package/dist/showcase/assets/metadata-list-DL9qgDAp.js +0 -288
  1635. package/dist/showcase/assets/metric-CYi09Ltx.js +0 -1
  1636. package/dist/showcase/assets/metric-bar-CQH1z8T3.js +0 -1
  1637. package/dist/showcase/assets/metric-grid-H1ixqMCI.js +0 -1
  1638. package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +0 -1
  1639. package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +0 -44
  1640. package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +0 -50
  1641. package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +0 -76
  1642. package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +0 -27
  1643. package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +0 -17
  1644. package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +0 -31
  1645. package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +0 -42
  1646. package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +0 -192
  1647. package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +0 -54
  1648. package/dist/showcase/assets/minus-20OTSSxf.js +0 -1
  1649. package/dist/showcase/assets/money-display-BoiAMxH8.js +0 -1
  1650. package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +0 -1
  1651. package/dist/showcase/assets/navigation-B8d2CDU6.js +0 -90
  1652. package/dist/showcase/assets/navigation-D16JX3kL.js +0 -230
  1653. package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +0 -43
  1654. package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +0 -119
  1655. package/dist/showcase/assets/overlays-CzlSqbFz.js +0 -408
  1656. package/dist/showcase/assets/overlays-DUFqbkb9.js +0 -159
  1657. package/dist/showcase/assets/package-BCXIwEPz.js +0 -1
  1658. package/dist/showcase/assets/package-check-Ol-Cw3j-.js +0 -1
  1659. package/dist/showcase/assets/page-action-button-DpzdSYvw.js +0 -1
  1660. package/dist/showcase/assets/page-header-B_b7SqW8.js +0 -1
  1661. package/dist/showcase/assets/pagination-BPDQo9Dl.js +0 -1
  1662. package/dist/showcase/assets/pagination-PvkEX0qs.js +0 -42
  1663. package/dist/showcase/assets/paperclip-CznEsmLN.js +0 -1
  1664. package/dist/showcase/assets/password-input-CWMY5q3b.js +0 -1
  1665. package/dist/showcase/assets/pencil-Cl9qi90g.js +0 -1
  1666. package/dist/showcase/assets/phone-DbvK_QQJ.js +0 -1
  1667. package/dist/showcase/assets/plus-CO8t66Yo.js +0 -1
  1668. package/dist/showcase/assets/popover-3QIVx9lU.js +0 -1
  1669. package/dist/showcase/assets/popover-Cyg9oYIU.js +0 -1
  1670. package/dist/showcase/assets/popover-menu-DJPHeIL1.js +0 -1
  1671. package/dist/showcase/assets/products-WsU-qdMz.js +0 -407
  1672. package/dist/showcase/assets/progress-C61sf-qt.js +0 -1
  1673. package/dist/showcase/assets/progress-PvTl8Fgf.js +0 -18
  1674. package/dist/showcase/assets/props-table-C8la6vcG.js +0 -1
  1675. package/dist/showcase/assets/props.generated-vFrhDrth.json +0 -38618
  1676. package/dist/showcase/assets/quote-N1_lRDnX.js +0 -1
  1677. package/dist/showcase/assets/react-dom-Bz4cALsF.js +0 -1
  1678. package/dist/showcase/assets/receipt-C6a_WyLu.js +0 -1
  1679. package/dist/showcase/assets/receipt-text-CDOh8FAv.js +0 -1
  1680. package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +0 -1
  1681. package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +0 -1
  1682. package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +0 -143
  1683. package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +0 -124
  1684. package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +0 -1
  1685. package/dist/showcase/assets/save-DDmFSQli.js +0 -1
  1686. package/dist/showcase/assets/schema-form-B7naqMvv.js +0 -325
  1687. package/dist/showcase/assets/scroll-area-CdaYm4UK.js +0 -32
  1688. package/dist/showcase/assets/scroll-area-DwWSHYHB.js +0 -1
  1689. package/dist/showcase/assets/select-CNzpb5ug.js +0 -1
  1690. package/dist/showcase/assets/select-DBXZ_Wzf.js +0 -1
  1691. package/dist/showcase/assets/send-eDm7YMmA.js +0 -1
  1692. package/dist/showcase/assets/separator-4IC9ED7s.js +0 -1
  1693. package/dist/showcase/assets/separator-DPGDsZpG.js +0 -28
  1694. package/dist/showcase/assets/settings-IANZGo2i.js +0 -1
  1695. package/dist/showcase/assets/sheet-2oCce5ae.js +0 -1
  1696. package/dist/showcase/assets/shield-CDZhhvFW.js +0 -1
  1697. package/dist/showcase/assets/shield-alert-5hL3sdf3.js +0 -1
  1698. package/dist/showcase/assets/shield-check-CaO2dhVS.js +0 -1
  1699. package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +0 -1
  1700. package/dist/showcase/assets/sidebar-Cds60-PS.js +0 -1
  1701. package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +0 -1
  1702. package/dist/showcase/assets/skeleton-2HajJKO4.js +0 -29
  1703. package/dist/showcase/assets/skeleton-CGEJwPdD.js +0 -1
  1704. package/dist/showcase/assets/slider-BjQViBR0.js +0 -1
  1705. package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +0 -1
  1706. package/dist/showcase/assets/smart-card-CHouYi8U.js +0 -1
  1707. package/dist/showcase/assets/sonner-Cog559j7.js +0 -22
  1708. package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +0 -5
  1709. package/dist/showcase/assets/sparkles-B18eTHVN.js +0 -1
  1710. package/dist/showcase/assets/spinner-BSI97i4D.js +0 -1
  1711. package/dist/showcase/assets/spinner-D0WhVyye.js +0 -30
  1712. package/dist/showcase/assets/spinner-DQmJ7k9y.js +0 -49
  1713. package/dist/showcase/assets/square-pen-CLyDWdhj.js +0 -1
  1714. package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +0 -1
  1715. package/dist/showcase/assets/star-C3mhkpSK.js +0 -1
  1716. package/dist/showcase/assets/startOfDay-ECIxhJGC.js +0 -1
  1717. package/dist/showcase/assets/styles-CDD7mDye.js +0 -1
  1718. package/dist/showcase/assets/suggestions-DOW6NBJp.js +0 -126
  1719. package/dist/showcase/assets/switch-D59YKmf6.js +0 -1
  1720. package/dist/showcase/assets/switch-NICmdoPn.js +0 -1
  1721. package/dist/showcase/assets/sync-B8nBZXQ9.js +0 -107
  1722. package/dist/showcase/assets/table-CckompuR.js +0 -382
  1723. package/dist/showcase/assets/table-DtA4-Q0p.js +0 -1
  1724. package/dist/showcase/assets/table-actions-DdoPJTMy.js +0 -1
  1725. package/dist/showcase/assets/tabs-BrC_HxL_.js +0 -1
  1726. package/dist/showcase/assets/tabs-UVxr80vY.js +0 -19
  1727. package/dist/showcase/assets/tags-input-iDfvhzZD.js +0 -1
  1728. package/dist/showcase/assets/text-button-DHFCLCoc.js +0 -1
  1729. package/dist/showcase/assets/text-link-nCLLDcS_.js +0 -1
  1730. package/dist/showcase/assets/textarea-DsSuQHQY.js +0 -1
  1731. package/dist/showcase/assets/textarea-DyGI3Kcn.js +0 -1
  1732. package/dist/showcase/assets/timelines-JmMcH657.js +0 -200
  1733. package/dist/showcase/assets/toggle-group-BZKzMmC8.js +0 -1
  1734. package/dist/showcase/assets/toggles-BSJvy4Tw.js +0 -71
  1735. package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +0 -32
  1736. package/dist/showcase/assets/trash-2-C9AC7Pcv.js +0 -1
  1737. package/dist/showcase/assets/trending-up-CGaDZj0S.js +0 -1
  1738. package/dist/showcase/assets/truck-Dq6heokm.js +0 -1
  1739. package/dist/showcase/assets/typography-ByvwR6Kg.js +0 -223
  1740. package/dist/showcase/assets/ui-badge-BYgJSE_w.js +0 -28
  1741. package/dist/showcase/assets/ui-card-BdueUfow.js +0 -30
  1742. package/dist/showcase/assets/ui-table-CxtCQUsg.js +0 -42
  1743. package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +0 -138
  1744. package/dist/showcase/assets/use-form-field-state-Sbo6tfr9.js +0 -1
  1745. package/dist/showcase/assets/use-layout-link-CGBQHZon.js +0 -1
  1746. package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +0 -1
  1747. package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +0 -1
  1748. package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +0 -1
  1749. package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +0 -1
  1750. package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +0 -1
  1751. package/dist/showcase/assets/useControlled-BF8maje6.js +0 -1
  1752. package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +0 -1
  1753. package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +0 -1
  1754. package/dist/showcase/assets/useRender-QhawWhpb.js +0 -1
  1755. package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +0 -1
  1756. package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +0 -1
  1757. package/dist/showcase/assets/user-plus-DbOuTfr7.js +0 -1
  1758. package/dist/showcase/assets/user-u65Fo7k7.js +0 -1
  1759. package/dist/showcase/assets/users-BUb7CmVp.js +0 -1
  1760. package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +0 -37
  1761. package/dist/showcase/assets/video-e4hDbTQ2.js +0 -1
  1762. package/dist/showcase/assets/wrench-CBUvtxdr.js +0 -1
  1763. package/dist/showcase/assets/x-oVTJnCJn.js +0 -1
  1764. package/dist/showcase/assets/zap-CzABYL3c.js +0 -1
  1765. /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.d.ts +0 -0
  1766. /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.strings.d.ts +0 -0
  1767. /package/dist/components/{base/display → composed/data-display}/empty-state/index.d.ts +0 -0
  1768. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/document-stack.d.ts +0 -0
  1769. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/inbox-clean.d.ts +0 -0
  1770. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/index.d.ts +0 -0
  1771. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/search-glass.d.ts +0 -0
  1772. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/stacked-cards.d.ts +0 -0
  1773. /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/users-circle.d.ts +0 -0
  1774. /package/dist/components/{base/display → composed/data-display}/fields/index.d.ts +0 -0
  1775. /package/dist/components/{base/display → composed/data-display}/inline-stat/index.d.ts +0 -0
  1776. /package/dist/components/{base/display → composed/data-display}/inline-stat/inline-stat.d.ts +0 -0
  1777. /package/dist/components/{base/display → composed/data-display}/metadata/index.d.ts +0 -0
  1778. /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.d.ts +0 -0
  1779. /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.strings.d.ts +0 -0
  1780. /package/dist/components/{base/display → composed/data-display}/numeric-value/index.d.ts +0 -0
  1781. /package/dist/components/{base/display → composed/data-display}/numeric-value/numeric-value.d.ts +0 -0
  1782. /package/dist/components/{base/display → composed/data-display}/section-header/index.d.ts +0 -0
  1783. /package/dist/components/{base/display → composed/data-display}/section-header/section-header.d.ts +0 -0
  1784. /package/dist/components/{base/display → composed/data-display}/user-cell/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/kanban/hooks/use-kanban.ts","../../../../src/components/features/kanban/kanban-context.tsx","../../../../src/components/features/kanban/kanban.strings.ts","../../../../src/components/features/kanban/kanban.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport type { KanbanItemMoveEvent, KanbanValue } from '../kanban.types';\n\n/**\n * Headless hook — exposes the same state machine `<Kanban>` uses\n * internally so consumers can build a fully custom UI against it.\n *\n * const { findItem, move } = useKanban({ value, onValueChange,\n * getItemValue });\n * move({ itemId: 'card-1', toColumnId: 'shipped', toIndex: 0 });\n */\nexport interface UseKanbanOptions<T> {\n\tvalue: KanbanValue<T>;\n\tonValueChange: (next: KanbanValue<T>) => void;\n\tgetItemValue: (item: T) => string;\n\tonItemMove?: (event: KanbanItemMoveEvent<T>) => void;\n}\n\nexport interface UseKanbanResult<T> {\n\tfindItem: (id: string) => { columnId: string; index: number; item: T } | undefined;\n\t/**\n\t * Move an item between columns / within the same column. Idempotent:\n\t * a no-op move is safe.\n\t */\n\tmove: (input: { itemId: string; toColumnId: string; toIndex?: number }) => void;\n}\n\nexport function useKanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n}: UseKanbanOptions<T>): UseKanbanResult<T> {\n\tconst findItem = useCallback(\n\t\t(id: string) => {\n\t\t\tfor (const [columnId, items] of Object.entries(value)) {\n\t\t\t\tconst index = items.findIndex((item) => getItemValue(item) === id);\n\t\t\t\tif (index >= 0) return { columnId, index, item: items[index] };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[value, getItemValue],\n\t);\n\n\tconst move = useCallback(\n\t\t({ itemId, toColumnId, toIndex }: { itemId: string; toColumnId: string; toIndex?: number }) => {\n\t\t\tconst found = findItem(itemId);\n\t\t\tif (!found) return;\n\t\t\tif (!Object.prototype.hasOwnProperty.call(value, toColumnId)) return;\n\n\t\t\tconst { columnId: fromColumnId, index: fromIndex, item } = found;\n\n\t\t\t// Same column, same slot — nothing to do.\n\t\t\tconst targetItems = value[toColumnId];\n\t\t\tconst resolvedToIndex =\n\t\t\t\ttoIndex === undefined\n\t\t\t\t\t? targetItems.length\n\t\t\t\t\t: Math.max(0, Math.min(toIndex, targetItems.length));\n\n\t\t\tif (fromColumnId === toColumnId && fromIndex === resolvedToIndex) return;\n\n\t\t\tconst next: KanbanValue<T> = { ...value };\n\t\t\tconst sourceCopy = [...next[fromColumnId]];\n\t\t\tsourceCopy.splice(fromIndex, 1);\n\t\t\tnext[fromColumnId] = sourceCopy;\n\n\t\t\tconst targetCopy = [...(fromColumnId === toColumnId ? sourceCopy : next[toColumnId])];\n\t\t\t// When moving within the same column to a later index, the splice\n\t\t\t// above shifted everything left — re-resolve the destination.\n\t\t\tlet landingIndex = resolvedToIndex;\n\t\t\tif (fromColumnId === toColumnId && fromIndex < resolvedToIndex) {\n\t\t\t\tlandingIndex = Math.max(0, resolvedToIndex - 1);\n\t\t\t}\n\t\t\ttargetCopy.splice(landingIndex, 0, item);\n\t\t\tnext[toColumnId] = targetCopy;\n\n\t\t\tonValueChange(next);\n\t\t\tonItemMove?.({\n\t\t\t\titem,\n\t\t\t\titemId,\n\t\t\t\tfrom: { columnId: fromColumnId, index: fromIndex },\n\t\t\t\tto: { columnId: toColumnId, index: landingIndex },\n\t\t\t});\n\t\t},\n\t\t[value, findItem, onValueChange, onItemMove],\n\t);\n\n\treturn useMemo(() => ({ findItem, move }), [findItem, move]);\n}\n","import { createContext, useContext } from 'react';\n\nimport type { KanbanContextShape } from './kanban.types';\n\n/**\n * Internal context for the Kanban — the parts use this to read\n * shared state (current value, getItemValue, active drag id).\n */\nconst KanbanContext = createContext<KanbanContextShape | null>(null);\n\nexport const KanbanContextProvider = KanbanContext.Provider;\n\nexport function useKanbanContext<T = unknown>(): KanbanContextShape<T> {\n\tconst ctx = useContext(KanbanContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'Kanban subcomponents must be rendered inside a <Kanban> root.',\n\t\t);\n\t}\n\treturn ctx as unknown as KanbanContextShape<T>;\n}\n\n/**\n * Internal context exposed by `<KanbanItem>` so the optional\n * `<KanbanItemHandle>` knows which listeners + accessibility props to\n * wire to the dedicated drag handle. Also carries the resolved\n * domain item so `<KanbanItemActions>` (and any other item-aware\n * subcomponent) can render per-item content without prop drilling.\n *\n * The dnd-kit shapes are widened to `unknown` so consumers can spread\n * them onto any HTMLElement.\n */\ninterface KanbanItemContextShape {\n\tlisteners: unknown;\n\tattributes: unknown;\n\tsetActivatorNodeRef: (node: HTMLElement | null) => void;\n\tregisterHandle: () => () => void;\n\t/** Stable id (the value returned by `getItemValue`). */\n\titemId: string;\n\t/** The domain item itself — null if it can't be resolved. */\n\titem: unknown;\n}\n\nconst KanbanItemContext = createContext<KanbanItemContextShape | null>(null);\n\nexport const KanbanItemContextProvider = KanbanItemContext.Provider;\n\nexport function useKanbanItemContext(): KanbanItemContextShape {\n\tconst ctx = useContext(KanbanItemContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.',\n\t\t);\n\t}\n\treturn ctx;\n}\n","/**\n * Strings for the Kanban — drag-and-drop screen-reader announcements\n * + accessibility labels. The library never renders user-visible copy\n * that the consumer hasn't already supplied via column headers / item\n * children, so the strings here are exclusively for assistive tech.\n */\nexport interface KanbanStrings {\n\t/** Read by screen readers when a drag begins. `{name}` = item id. */\n\tannounceDragStart: string;\n\t/** Read when an item moves over a column. `{from}` / `{to}` are column ids. */\n\tannounceDragMove: string;\n\t/** Read when an item is dropped into a column. */\n\tannounceDragEnd: string;\n\t/** Read when the user cancels a drag with Escape. */\n\tannounceDragCancel: string;\n\t/** Aria label on the drag handle. */\n\tdragHandleAria: string;\n\t/** Aria label on the board landmark. */\n\tboardAria: string;\n\t/** Aria label on the per-item actions trigger (`⋮`). */\n\titemActionsAria: string;\n}\n\nexport const defaultKanbanStrings: KanbanStrings = {\n\tannounceDragStart: 'Picked up item {name}.',\n\tannounceDragMove: 'Moving {name} from {from} to {to}.',\n\tannounceDragEnd: 'Dropped {name} into {to}.',\n\tannounceDragCancel: 'Cancelled drag of {name}.',\n\tdragHandleAria: 'Drag handle',\n\tboardAria: 'Kanban board',\n\titemActionsAria: 'Item actions',\n};\n\nexport function interpolateKanbanString(\n\ttemplate: string,\n\tparams: Record<string, string>,\n): string {\n\treturn Object.entries(params).reduce(\n\t\t(acc, [key, value]) => acc.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value),\n\t\ttemplate,\n\t);\n}\n","/**\n * Kanban — drag-and-drop board with multi-column item sorting and\n * cross-column moves. Headless behavior comes from `@dnd-kit/core` +\n * `@dnd-kit/sortable`; the library wires it into a callback-driven,\n * generic-T API:\n *\n * <Kanban\n * value={columns}\n * onValueChange={setColumns}\n * getItemValue={(c) => c.id}\n * onItemMove={(e) => api.persistMove(e)}\n * >\n * <KanbanBoard className=\"grid grid-cols-3 gap-3\">\n * {Object.entries(columns).map(([colId, items]) => (\n * <KanbanColumn key={colId} value={colId}>\n * <header>{COLUMNS[colId].title}</header>\n * <KanbanColumnContent value={colId}>\n * {items.map((card) => (\n * <KanbanItem key={card.id} value={card.id}>\n * …card body…\n * </KanbanItem>\n * ))}\n * </KanbanColumnContent>\n * </KanbanColumn>\n * ))}\n * </KanbanBoard>\n * <KanbanOverlay />\n * </Kanban>\n *\n * The library never reaches into a router, never persists state — your\n * `onValueChange` is the source of truth. Use `onItemMove` for\n * analytics / optimistic-update plumbing.\n */\nimport {\n\tDndContext,\n\tDragOverlay,\n\tPointerSensor,\n\tuseDroppable,\n\tuseSensor,\n\tuseSensors,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tuseSortable,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { MoreHorizontal } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useMemo, useState, type MouseEvent } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { PopoverMenu } from '@/components/base/popover-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useKanban } from './hooks/use-kanban';\nimport {\n\tKanbanContextProvider,\n\tKanbanItemContextProvider,\n\tuseKanbanContext,\n\tuseKanbanItemContext,\n} from './kanban-context';\nimport { defaultKanbanStrings } from './kanban.strings';\nimport type {\n\tKanbanBoardProps,\n\tKanbanColumnContentProps,\n\tKanbanColumnProps,\n\tKanbanItemAction,\n\tKanbanItemActionsConfig,\n\tKanbanItemActionsProps,\n\tKanbanItemHandleProps,\n\tKanbanItemProps,\n\tKanbanOverlayProps,\n\tKanbanProps,\n} from './kanban.types';\n\nexport function Kanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n\titemActions,\n\tonItemClick,\n\tstrings: stringsProp,\n\tclassName,\n\tchildren,\n}: KanbanProps<T>) {\n\tconst strings = useStrings(defaultKanbanStrings, stringsProp);\n\tconst { findItem, move } = useKanban({\n\t\tvalue,\n\t\tonValueChange,\n\t\tgetItemValue,\n\t\tonItemMove,\n\t});\n\tconst [activeId, setActiveId] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n\t);\n\n\tconst activeItem = useMemo(\n\t\t() => (activeId ? findItem(activeId)?.item ?? null : null),\n\t\t[activeId, findItem],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => {\n\t\t\tsetActiveId(String(event.active.id));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveId(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over) return;\n\t\t\tconst activeData = active.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overData = over.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overId = String(over.id);\n\n\t\t\t// Dropping on a column container (not a sortable item) → append.\n\t\t\tconst targetColumnId =\n\t\t\t\toverData?.columnId ?? (Object.prototype.hasOwnProperty.call(value, overId) ? overId : undefined);\n\t\t\tif (!targetColumnId) return;\n\n\t\t\tconst toIndex =\n\t\t\t\toverData?.columnId !== undefined ? overData.index : value[targetColumnId].length;\n\n\t\t\tmove({\n\t\t\t\titemId: String(active.id),\n\t\t\t\ttoColumnId: targetColumnId,\n\t\t\t\ttoIndex,\n\t\t\t});\n\t\t\tvoid activeData;\n\t\t},\n\t\t[move, value],\n\t);\n\n\tconst ctxValue = useMemo(\n\t\t() => ({\n\t\t\tvalue: value as Record<string, unknown[]>,\n\t\t\tonValueChange: onValueChange as (next: Record<string, unknown[]>) => void,\n\t\t\tgetItemValue: getItemValue as (item: unknown) => string,\n\t\t\tactiveId,\n\t\t\tactiveItem: activeItem as unknown,\n\t\t\tfindItem: findItem as (id: string) => { columnId: string; index: number; item: unknown } | undefined,\n\t\t\titemActions: itemActions as KanbanItemActionsConfig<unknown> | undefined,\n\t\t\tonItemClick: onItemClick as ((item: unknown) => void) | undefined,\n\t\t}),\n\t\t[value, onValueChange, getItemValue, activeId, activeItem, findItem, itemActions, onItemClick],\n\t);\n\n\treturn (\n\t\t<KanbanContextProvider value={ctxValue}>\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveId(null)}\n\t\t\t\taccessibility={{\n\t\t\t\t\tannouncements: {\n\t\t\t\t\t\tonDragStart({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragStart.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragOver({ active, over }) {\n\t\t\t\t\t\t\tif (!over) return undefined;\n\t\t\t\t\t\t\treturn strings.announceDragMove\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{from}', '')\n\t\t\t\t\t\t\t\t.replace('{to}', String(over.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragEnd({ active, over }) {\n\t\t\t\t\t\t\treturn strings.announceDragEnd\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{to}', over ? String(over.id) : '');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragCancel({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragCancel.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"application\"\n\t\t\t\t\taria-label={strings.boardAria}\n\t\t\t\t\tclassName={cn('kanban--component', 'w-full', className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</DndContext>\n\t\t</KanbanContextProvider>\n\t);\n}\n\nKanban.displayName = 'Kanban';\n\nexport function KanbanBoard({ className, style, children }: KanbanBoardProps) {\n\treturn (\n\t\t<div className={cn('grid w-full gap-3', className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanBoard.displayName = 'KanbanBoard';\n\nexport function KanbanColumn({ value, className, children }: KanbanColumnProps) {\n\tconst { setNodeRef, isOver } = useDroppable({ id: value });\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tdata-slot=\"kanban-column\"\n\t\t\tdata-column-id={value}\n\t\t\tdata-over={isOver ? 'true' : undefined}\n\t\t\tclassName={cn('flex min-w-0 flex-col', className)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanColumn.displayName = 'KanbanColumn';\n\nexport function KanbanColumnContent({\n\tvalue,\n\tclassName,\n\tchildren,\n}: KanbanColumnContentProps) {\n\tconst ctx = useKanbanContext();\n\tconst items = ctx.value[value] ?? [];\n\tconst ids = items.map((item) => ctx.getItemValue(item));\n\treturn (\n\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"kanban-column-content\"\n\t\t\t\tclassName={cn('flex flex-col gap-2', className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SortableContext>\n\t);\n}\n\nKanbanColumnContent.displayName = 'KanbanColumnContent';\n\nexport function KanbanItem({\n\tvalue,\n\tclassName,\n\tdisabled = false,\n\tonClick,\n\tchildren,\n}: KanbanItemProps) {\n\tconst ctx = useKanbanContext();\n\tconst found = ctx.findItem(value);\n\tconst {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetNodeRef,\n\t\tsetActivatorNodeRef,\n\t\ttransform,\n\t\ttransition,\n\t\tisDragging,\n\t} = useSortable({\n\t\tid: value,\n\t\tdisabled,\n\t\tdata: { columnId: found?.columnId, index: found?.index },\n\t});\n\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0.4 : undefined,\n\t};\n\tconst [handleCount, setHandleCount] = useState(0);\n\tconst hasHandle = handleCount > 0;\n\tconst registerHandle = useCallback(() => {\n\t\tsetHandleCount((count) => count + 1);\n\t\treturn () => setHandleCount((count) => Math.max(0, count - 1));\n\t}, []);\n\n\tconst itemCtx = useMemo(\n\t\t() => ({\n\t\t\tlisteners,\n\t\t\tattributes,\n\t\t\tsetActivatorNodeRef,\n\t\t\tregisterHandle,\n\t\t\titemId: value,\n\t\t\titem: found?.item ?? null,\n\t\t}),\n\t\t[listeners, attributes, setActivatorNodeRef, registerHandle, value, found?.item],\n\t);\n\n\tconst rootClick = ctx.onItemClick;\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent<HTMLDivElement>) => {\n\t\t\t// `<KanbanItemHandle>` and `<KanbanItemActions>` mark themselves\n\t\t\t// with `data-stop-item-click` so a click on the drag handle or\n\t\t\t// the actions menu doesn't bubble up as a card click.\n\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\tif (target?.closest('[data-stop-item-click]')) return;\n\t\t\tif (onClick) {\n\t\t\t\tonClick();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rootClick && found?.item !== undefined) {\n\t\t\t\trootClick(found.item);\n\t\t\t}\n\t\t},\n\t\t[onClick, rootClick, found?.item],\n\t);\n\n\tconst isClickable = Boolean(onClick || rootClick);\n\n\t// When no <KanbanItemHandle> is used, the whole row is the activator.\n\t// We attach listeners + attributes here as the default — KanbanItemHandle\n\t// can then override by wiring them to a more specific element.\n\treturn (\n\t\t<KanbanItemContextProvider value={itemCtx}>\n\t\t\t<div\n\t\t\t\tref={setNodeRef}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-slot=\"kanban-item\"\n\t\t\t\tdata-dragging={isDragging ? 'true' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'touch-none select-none',\n\t\t\t\t\tisClickable && 'cursor-pointer',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={isClickable ? handleClick : undefined}\n\t\t\t\t{...(!hasHandle ? attributes : {})}\n\t\t\t\t{...(!hasHandle ? listeners : {})}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</KanbanItemContextProvider>\n\t);\n}\n\nKanbanItem.displayName = 'KanbanItem';\n\nexport const KanbanItemHandle = forwardRef<HTMLButtonElement, KanbanItemHandleProps>(function KanbanItemHandle({ className, children }, forwardedRef) {\n\tconst { setActivatorNodeRef, listeners, attributes, registerHandle } = useKanbanItemContext();\n\tuseEffect(() => registerHandle(), [registerHandle]);\n\t// Merge dnd-kit's activator ref with the consumer's forwarded ref so a\n\t// `<Tooltip><KanbanItemHandle ref={…}/></Tooltip>` wiring still gets a\n\t// real ref to the button element.\n\tconst setMergedRef = useCallback(\n\t\t(node: HTMLButtonElement | null) => {\n\t\t\tsetActivatorNodeRef(node);\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(node);\n\t\t\t} else if (forwardedRef) {\n\t\t\t\tforwardedRef.current = node;\n\t\t\t}\n\t\t},\n\t\t[setActivatorNodeRef, forwardedRef],\n\t);\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"icon-xs\"\n\t\t\tref={setMergedRef}\n\t\t\tdata-slot=\"kanban-item-handle\"\n\t\t\tdata-stop-item-click\n\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\tclassName={cn(\n\t\t\t\t'cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...(attributes as Record<string, unknown>)}\n\t\t\t{...(listeners as Record<string, unknown>)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n});\n\nKanbanItemHandle.displayName = 'KanbanItemHandle';\n\n/**\n * Per-item actions menu (`⋮` trigger → popover with the actions\n * registered at the `<Kanban itemActions>` root). Place inside any\n * `<KanbanItem>` — typically in the card's top-right corner.\n *\n * The trigger marks itself with `data-stop-item-click` so opening the\n * menu doesn't fire the parent `onItemClick` callback.\n */\nexport function KanbanItemActions({\n\tclassName,\n\ticon,\n\tariaLabel,\n}: KanbanItemActionsProps) {\n\tconst [open, setOpen] = useState(false);\n\tconst ctx = useKanbanContext();\n\tconst itemCtx = useKanbanItemContext();\n\tconst strings = useStrings(defaultKanbanStrings, undefined);\n\n\tconst item = itemCtx.item;\n\tconst rawActions = ctx.itemActions;\n\tconst actions = useMemo(() => {\n\t\tif (!rawActions || item === null || item === undefined) return [] as ReadonlyArray<KanbanItemAction<unknown>>;\n\t\tconst list = typeof rawActions === 'function' ? rawActions(item) : rawActions;\n\t\treturn list.filter((action) =>\n\t\t\taction.isVisible ? action.isVisible(item) : true,\n\t\t);\n\t}, [rawActions, item]);\n\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<PopoverMenu\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\tsearch={false}\n\t\t\tcontentClassName=\"w-44\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\tdata-slot=\"kanban-item-actions-trigger\"\n\t\t\t\t\tdata-stop-item-click\n\t\t\t\t\taria-label={ariaLabel ?? strings.itemActionsAria}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\t\t\tonPointerDown={(event) => event.stopPropagation()}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-7 rounded-md p-0',\n\t\t\t\t\t\t'text-muted-foreground/70 hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'transition-colors',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon ?? <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\titems={actions.map((action) => ({\n\t\t\t\tvalue: action.id,\n\t\t\t\tlabel: action.label,\n\t\t\t\ticon: action.icon,\n\t\t\t\tdisabled: action.isDisabled?.(item) ?? false,\n\t\t\t\tdata: action,\n\t\t\t}))}\n\t\t\trenderItem={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown>;\n\t\t\t\tconst isDestructive = action.variant === 'destructive';\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\tisDestructive ? 'text-destructive' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{action.icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\t\tisDestructive && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t\tonSelect={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown> | undefined;\n\t\t\t\taction?.onSelect(item);\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nKanbanItemActions.displayName = 'KanbanItemActions';\n\nexport function KanbanOverlay({ className, render }: KanbanOverlayProps) {\n\tconst { activeItem, activeId, findItem } = useKanbanContext();\n\treturn (\n\t\t<DragOverlay>\n\t\t\t{activeId\n\t\t\t\t? render\n\t\t\t\t\t? render({\n\t\t\t\t\t\t\titem: activeItem,\n\t\t\t\t\t\t\tcolumnId: findItem(activeId)?.columnId ?? null,\n\t\t\t\t\t\t})\n\t\t\t\t\t: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"text-primary/80\">{activeId}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t: null}\n\t\t</DragOverlay>\n\t);\n}\n\nKanbanOverlay.displayName = 'KanbanOverlay';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/kanban/hooks/use-kanban.ts","../../../../src/components/features/kanban/kanban-context.tsx","../../../../src/components/features/kanban/kanban.strings.ts","../../../../src/components/features/kanban/kanban.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport type { KanbanItemMoveEvent, KanbanValue } from '../kanban.types';\n\n/**\n * Headless hook — exposes the same state machine `<Kanban>` uses\n * internally so consumers can build a fully custom UI against it.\n *\n * const { findItem, move } = useKanban({ value, onValueChange,\n * getItemValue });\n * move({ itemId: 'card-1', toColumnId: 'shipped', toIndex: 0 });\n */\nexport interface UseKanbanOptions<T> {\n\tvalue: KanbanValue<T>;\n\tonValueChange: (next: KanbanValue<T>) => void;\n\tgetItemValue: (item: T) => string;\n\tonItemMove?: (event: KanbanItemMoveEvent<T>) => void;\n}\n\nexport interface UseKanbanResult<T> {\n\tfindItem: (id: string) => { columnId: string; index: number; item: T } | undefined;\n\t/**\n\t * Move an item between columns / within the same column. Idempotent:\n\t * a no-op move is safe.\n\t */\n\tmove: (input: { itemId: string; toColumnId: string; toIndex?: number }) => void;\n}\n\nexport function useKanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n}: UseKanbanOptions<T>): UseKanbanResult<T> {\n\tconst findItem = useCallback(\n\t\t(id: string) => {\n\t\t\tfor (const [columnId, items] of Object.entries(value)) {\n\t\t\t\tconst index = items.findIndex((item) => getItemValue(item) === id);\n\t\t\t\tif (index >= 0) return { columnId, index, item: items[index] };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[value, getItemValue],\n\t);\n\n\tconst move = useCallback(\n\t\t({ itemId, toColumnId, toIndex }: { itemId: string; toColumnId: string; toIndex?: number }) => {\n\t\t\tconst found = findItem(itemId);\n\t\t\tif (!found) return;\n\t\t\tif (!Object.prototype.hasOwnProperty.call(value, toColumnId)) return;\n\n\t\t\tconst { columnId: fromColumnId, index: fromIndex, item } = found;\n\n\t\t\t// Same column, same slot — nothing to do.\n\t\t\tconst targetItems = value[toColumnId];\n\t\t\tconst resolvedToIndex =\n\t\t\t\ttoIndex === undefined\n\t\t\t\t\t? targetItems.length\n\t\t\t\t\t: Math.max(0, Math.min(toIndex, targetItems.length));\n\n\t\t\tif (fromColumnId === toColumnId && fromIndex === resolvedToIndex) return;\n\n\t\t\tconst next: KanbanValue<T> = { ...value };\n\t\t\tconst sourceCopy = [...next[fromColumnId]];\n\t\t\tsourceCopy.splice(fromIndex, 1);\n\t\t\tnext[fromColumnId] = sourceCopy;\n\n\t\t\tconst targetCopy = [...(fromColumnId === toColumnId ? sourceCopy : next[toColumnId])];\n\t\t\t// When moving within the same column to a later index, the splice\n\t\t\t// above shifted everything left — re-resolve the destination.\n\t\t\tlet landingIndex = resolvedToIndex;\n\t\t\tif (fromColumnId === toColumnId && fromIndex < resolvedToIndex) {\n\t\t\t\tlandingIndex = Math.max(0, resolvedToIndex - 1);\n\t\t\t}\n\t\t\ttargetCopy.splice(landingIndex, 0, item);\n\t\t\tnext[toColumnId] = targetCopy;\n\n\t\t\tonValueChange(next);\n\t\t\tonItemMove?.({\n\t\t\t\titem,\n\t\t\t\titemId,\n\t\t\t\tfrom: { columnId: fromColumnId, index: fromIndex },\n\t\t\t\tto: { columnId: toColumnId, index: landingIndex },\n\t\t\t});\n\t\t},\n\t\t[value, findItem, onValueChange, onItemMove],\n\t);\n\n\treturn useMemo(() => ({ findItem, move }), [findItem, move]);\n}\n","import { createContext, useContext } from 'react';\n\nimport type { KanbanContextShape } from './kanban.types';\n\n/**\n * Internal context for the Kanban — the parts use this to read\n * shared state (current value, getItemValue, active drag id).\n */\nconst KanbanContext = createContext<KanbanContextShape | null>(null);\n\nexport const KanbanContextProvider = KanbanContext.Provider;\n\nexport function useKanbanContext<T = unknown>(): KanbanContextShape<T> {\n\tconst ctx = useContext(KanbanContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'Kanban subcomponents must be rendered inside a <Kanban> root.',\n\t\t);\n\t}\n\treturn ctx as unknown as KanbanContextShape<T>;\n}\n\n/**\n * Internal context exposed by `<KanbanItem>` so the optional\n * `<KanbanItemHandle>` knows which listeners + accessibility props to\n * wire to the dedicated drag handle. Also carries the resolved\n * domain item so `<KanbanItemActions>` (and any other item-aware\n * subcomponent) can render per-item content without prop drilling.\n *\n * The dnd-kit shapes are widened to `unknown` so consumers can spread\n * them onto any HTMLElement.\n */\ninterface KanbanItemContextShape {\n\tlisteners: unknown;\n\tattributes: unknown;\n\tsetActivatorNodeRef: (node: HTMLElement | null) => void;\n\tregisterHandle: () => () => void;\n\t/** Stable id (the value returned by `getItemValue`). */\n\titemId: string;\n\t/** The domain item itself — null if it can't be resolved. */\n\titem: unknown;\n}\n\nconst KanbanItemContext = createContext<KanbanItemContextShape | null>(null);\n\nexport const KanbanItemContextProvider = KanbanItemContext.Provider;\n\nexport function useKanbanItemContext(): KanbanItemContextShape {\n\tconst ctx = useContext(KanbanItemContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.',\n\t\t);\n\t}\n\treturn ctx;\n}\n","/**\n * Strings for the Kanban — drag-and-drop screen-reader announcements\n * + accessibility labels. The library never renders user-visible copy\n * that the consumer hasn't already supplied via column headers / item\n * children, so the strings here are exclusively for assistive tech.\n */\nexport interface KanbanStrings {\n\t/** Read by screen readers when a drag begins. `{name}` = item id. */\n\tannounceDragStart: string;\n\t/** Read when an item moves over a column. `{from}` / `{to}` are column ids. */\n\tannounceDragMove: string;\n\t/** Read when an item is dropped into a column. */\n\tannounceDragEnd: string;\n\t/** Read when the user cancels a drag with Escape. */\n\tannounceDragCancel: string;\n\t/** Aria label on the drag handle. */\n\tdragHandleAria: string;\n\t/** Aria label on the board landmark. */\n\tboardAria: string;\n\t/** Aria label on the per-item actions trigger (`⋮`). */\n\titemActionsAria: string;\n}\n\nexport const defaultKanbanStrings: KanbanStrings = {\n\tannounceDragStart: 'Picked up item {name}.',\n\tannounceDragMove: 'Moving {name} from {from} to {to}.',\n\tannounceDragEnd: 'Dropped {name} into {to}.',\n\tannounceDragCancel: 'Cancelled drag of {name}.',\n\tdragHandleAria: 'Drag handle',\n\tboardAria: 'Kanban board',\n\titemActionsAria: 'Item actions',\n};\n\nexport function interpolateKanbanString(\n\ttemplate: string,\n\tparams: Record<string, string>,\n): string {\n\treturn Object.entries(params).reduce(\n\t\t(acc, [key, value]) => acc.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value),\n\t\ttemplate,\n\t);\n}\n","/**\n * Kanban — drag-and-drop board with multi-column item sorting and\n * cross-column moves. Headless behavior comes from `@dnd-kit/core` +\n * `@dnd-kit/sortable`; the library wires it into a callback-driven,\n * generic-T API:\n *\n * <Kanban\n * value={columns}\n * onValueChange={setColumns}\n * getItemValue={(c) => c.id}\n * onItemMove={(e) => api.persistMove(e)}\n * >\n * <KanbanBoard className=\"grid grid-cols-3 gap-3\">\n * {Object.entries(columns).map(([colId, items]) => (\n * <KanbanColumn key={colId} value={colId}>\n * <header>{COLUMNS[colId].title}</header>\n * <KanbanColumnContent value={colId}>\n * {items.map((card) => (\n * <KanbanItem key={card.id} value={card.id}>\n * …card body…\n * </KanbanItem>\n * ))}\n * </KanbanColumnContent>\n * </KanbanColumn>\n * ))}\n * </KanbanBoard>\n * <KanbanOverlay />\n * </Kanban>\n *\n * The library never reaches into a router, never persists state — your\n * `onValueChange` is the source of truth. Use `onItemMove` for\n * analytics / optimistic-update plumbing.\n */\nimport {\n\tDndContext,\n\tDragOverlay,\n\tPointerSensor,\n\tuseDroppable,\n\tuseSensor,\n\tuseSensors,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tuseSortable,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { MoreHorizontal } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useMemo, useState, type MouseEvent } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { PopoverMenu } from '@/components/base/popover-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useKanban } from './hooks/use-kanban';\nimport {\n\tKanbanContextProvider,\n\tKanbanItemContextProvider,\n\tuseKanbanContext,\n\tuseKanbanItemContext,\n} from './kanban-context';\nimport { defaultKanbanStrings } from './kanban.strings';\nimport type {\n\tKanbanBoardProps,\n\tKanbanColumnContentProps,\n\tKanbanColumnProps,\n\tKanbanItemAction,\n\tKanbanItemActionsConfig,\n\tKanbanItemActionsProps,\n\tKanbanItemHandleProps,\n\tKanbanItemProps,\n\tKanbanOverlayProps,\n\tKanbanProps,\n} from './kanban.types';\n\nexport function Kanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n\titemActions,\n\tonItemClick,\n\tstrings: stringsProp,\n\tclassName,\n\tchildren,\n}: KanbanProps<T>) {\n\tconst strings = useStrings(defaultKanbanStrings, stringsProp);\n\tconst { findItem, move } = useKanban({\n\t\tvalue,\n\t\tonValueChange,\n\t\tgetItemValue,\n\t\tonItemMove,\n\t});\n\tconst [activeId, setActiveId] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n\t);\n\n\tconst activeItem = useMemo(\n\t\t() => (activeId ? findItem(activeId)?.item ?? null : null),\n\t\t[activeId, findItem],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => {\n\t\t\tsetActiveId(String(event.active.id));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveId(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over) return;\n\t\t\tconst activeData = active.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overData = over.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overId = String(over.id);\n\n\t\t\t// Dropping on a column container (not a sortable item) → append.\n\t\t\tconst targetColumnId =\n\t\t\t\toverData?.columnId ?? (Object.prototype.hasOwnProperty.call(value, overId) ? overId : undefined);\n\t\t\tif (!targetColumnId) return;\n\n\t\t\tconst toIndex =\n\t\t\t\toverData?.columnId !== undefined ? overData.index : value[targetColumnId].length;\n\n\t\t\tmove({\n\t\t\t\titemId: String(active.id),\n\t\t\t\ttoColumnId: targetColumnId,\n\t\t\t\ttoIndex,\n\t\t\t});\n\t\t\tvoid activeData;\n\t\t},\n\t\t[move, value],\n\t);\n\n\tconst ctxValue = useMemo(\n\t\t() => ({\n\t\t\tvalue: value as Record<string, unknown[]>,\n\t\t\tonValueChange: onValueChange as (next: Record<string, unknown[]>) => void,\n\t\t\tgetItemValue: getItemValue as (item: unknown) => string,\n\t\t\tactiveId,\n\t\t\tactiveItem: activeItem as unknown,\n\t\t\tfindItem: findItem as (id: string) => { columnId: string; index: number; item: unknown } | undefined,\n\t\t\titemActions: itemActions as KanbanItemActionsConfig<unknown> | undefined,\n\t\t\tonItemClick: onItemClick as ((item: unknown) => void) | undefined,\n\t\t}),\n\t\t[value, onValueChange, getItemValue, activeId, activeItem, findItem, itemActions, onItemClick],\n\t);\n\n\treturn (\n\t\t<KanbanContextProvider value={ctxValue}>\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveId(null)}\n\t\t\t\taccessibility={{\n\t\t\t\t\tannouncements: {\n\t\t\t\t\t\tonDragStart({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragStart.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragOver({ active, over }) {\n\t\t\t\t\t\t\tif (!over) return undefined;\n\t\t\t\t\t\t\treturn strings.announceDragMove\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{from}', '')\n\t\t\t\t\t\t\t\t.replace('{to}', String(over.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragEnd({ active, over }) {\n\t\t\t\t\t\t\treturn strings.announceDragEnd\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{to}', over ? String(over.id) : '');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragCancel({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragCancel.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"application\"\n\t\t\t\t\taria-label={strings.boardAria}\n\t\t\t\t\tclassName={cn('kanban--component', 'w-full', className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</DndContext>\n\t\t</KanbanContextProvider>\n\t);\n}\n\nKanban.displayName = 'Kanban';\n\nexport function KanbanBoard({ className, style, children }: KanbanBoardProps) {\n\treturn (\n\t\t<div className={cn('grid w-full gap-3', className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanBoard.displayName = 'KanbanBoard';\n\nexport function KanbanColumn({ value, className, children }: KanbanColumnProps) {\n\tconst { setNodeRef, isOver } = useDroppable({ id: value });\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tdata-slot=\"kanban-column\"\n\t\t\tdata-column-id={value}\n\t\t\tdata-over={isOver ? 'true' : undefined}\n\t\t\tclassName={cn('flex min-w-0 flex-col', className)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanColumn.displayName = 'KanbanColumn';\n\nexport function KanbanColumnContent({\n\tvalue,\n\tclassName,\n\tchildren,\n}: KanbanColumnContentProps) {\n\tconst ctx = useKanbanContext();\n\tconst items = ctx.value[value] ?? [];\n\tconst ids = items.map((item) => ctx.getItemValue(item));\n\treturn (\n\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"kanban-column-content\"\n\t\t\t\tclassName={cn('flex flex-col gap-2', className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SortableContext>\n\t);\n}\n\nKanbanColumnContent.displayName = 'KanbanColumnContent';\n\nexport function KanbanItem({\n\tvalue,\n\tclassName,\n\tdisabled = false,\n\tonClick,\n\tchildren,\n}: KanbanItemProps) {\n\tconst ctx = useKanbanContext();\n\tconst found = ctx.findItem(value);\n\tconst {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetNodeRef,\n\t\tsetActivatorNodeRef,\n\t\ttransform,\n\t\ttransition,\n\t\tisDragging,\n\t} = useSortable({\n\t\tid: value,\n\t\tdisabled,\n\t\tdata: { columnId: found?.columnId, index: found?.index },\n\t});\n\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0.4 : undefined,\n\t};\n\tconst [handleCount, setHandleCount] = useState(0);\n\tconst hasHandle = handleCount > 0;\n\tconst registerHandle = useCallback(() => {\n\t\tsetHandleCount((count) => count + 1);\n\t\treturn () => setHandleCount((count) => Math.max(0, count - 1));\n\t}, []);\n\n\tconst itemCtx = useMemo(\n\t\t() => ({\n\t\t\tlisteners,\n\t\t\tattributes,\n\t\t\tsetActivatorNodeRef,\n\t\t\tregisterHandle,\n\t\t\titemId: value,\n\t\t\titem: found?.item ?? null,\n\t\t}),\n\t\t[listeners, attributes, setActivatorNodeRef, registerHandle, value, found?.item],\n\t);\n\n\tconst rootClick = ctx.onItemClick;\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent<HTMLDivElement>) => {\n\t\t\t// `<KanbanItemHandle>` and `<KanbanItemActions>` mark themselves\n\t\t\t// with `data-stop-item-click` so a click on the drag handle or\n\t\t\t// the actions menu doesn't bubble up as a card click.\n\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\tif (target?.closest('[data-stop-item-click]')) return;\n\t\t\tif (onClick) {\n\t\t\t\tonClick();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rootClick && found?.item !== undefined) {\n\t\t\t\trootClick(found.item);\n\t\t\t}\n\t\t},\n\t\t[onClick, rootClick, found?.item],\n\t);\n\n\tconst isClickable = Boolean(onClick || rootClick);\n\n\t// When no <KanbanItemHandle> is used, the whole row is the activator.\n\t// We attach listeners + attributes here as the default — KanbanItemHandle\n\t// can then override by wiring them to a more specific element.\n\treturn (\n\t\t<KanbanItemContextProvider value={itemCtx}>\n\t\t\t<div\n\t\t\t\tref={setNodeRef}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-slot=\"kanban-item\"\n\t\t\t\tdata-dragging={isDragging ? 'true' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'touch-none select-none',\n\t\t\t\t\tisClickable && 'cursor-pointer',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={isClickable ? handleClick : undefined}\n\t\t\t\t{...(!hasHandle ? attributes : {})}\n\t\t\t\t{...(!hasHandle ? listeners : {})}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</KanbanItemContextProvider>\n\t);\n}\n\nKanbanItem.displayName = 'KanbanItem';\n\nexport const KanbanItemHandle = forwardRef<HTMLButtonElement, KanbanItemHandleProps>(function KanbanItemHandle({ className, children }, forwardedRef) {\n\tconst { setActivatorNodeRef, listeners, attributes, registerHandle } = useKanbanItemContext();\n\tuseEffect(() => registerHandle(), [registerHandle]);\n\t// Merge dnd-kit's activator ref with the consumer's forwarded ref so a\n\t// `<Tooltip><KanbanItemHandle ref={…}/></Tooltip>` wiring still gets a\n\t// real ref to the button element.\n\tconst setMergedRef = useCallback(\n\t\t(node: HTMLButtonElement | null) => {\n\t\t\tsetActivatorNodeRef(node);\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(node);\n\t\t\t} else if (forwardedRef) {\n\t\t\t\tforwardedRef.current = node;\n\t\t\t}\n\t\t},\n\t\t[setActivatorNodeRef, forwardedRef],\n\t);\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"icon-small\"\n\t\t\tref={setMergedRef}\n\t\t\tdata-slot=\"kanban-item-handle\"\n\t\t\tdata-stop-item-click\n\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\tclassName={cn(\n\t\t\t\t'cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...(attributes as Record<string, unknown>)}\n\t\t\t{...(listeners as Record<string, unknown>)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n});\n\nKanbanItemHandle.displayName = 'KanbanItemHandle';\n\n/**\n * Per-item actions menu (`⋮` trigger → popover with the actions\n * registered at the `<Kanban itemActions>` root). Place inside any\n * `<KanbanItem>` — typically in the card's top-right corner.\n *\n * The trigger marks itself with `data-stop-item-click` so opening the\n * menu doesn't fire the parent `onItemClick` callback.\n */\nexport function KanbanItemActions({\n\tclassName,\n\ticon,\n\tariaLabel,\n}: KanbanItemActionsProps) {\n\tconst [open, setOpen] = useState(false);\n\tconst ctx = useKanbanContext();\n\tconst itemCtx = useKanbanItemContext();\n\tconst strings = useStrings(defaultKanbanStrings, undefined);\n\n\tconst item = itemCtx.item;\n\tconst rawActions = ctx.itemActions;\n\tconst actions = useMemo(() => {\n\t\tif (!rawActions || item === null || item === undefined) return [] as ReadonlyArray<KanbanItemAction<unknown>>;\n\t\tconst list = typeof rawActions === 'function' ? rawActions(item) : rawActions;\n\t\treturn list.filter((action) =>\n\t\t\taction.isVisible ? action.isVisible(item) : true,\n\t\t);\n\t}, [rawActions, item]);\n\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<PopoverMenu\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\tsearch={false}\n\t\t\tcontentClassName=\"w-44\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\tdata-slot=\"kanban-item-actions-trigger\"\n\t\t\t\t\tdata-stop-item-click\n\t\t\t\t\taria-label={ariaLabel ?? strings.itemActionsAria}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\t\t\tonPointerDown={(event) => event.stopPropagation()}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-7 rounded-md p-0',\n\t\t\t\t\t\t'text-muted-foreground/70 hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'transition-colors',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon ?? <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\titems={actions.map((action) => ({\n\t\t\t\tvalue: action.id,\n\t\t\t\tlabel: action.label,\n\t\t\t\ticon: action.icon,\n\t\t\t\tdisabled: action.isDisabled?.(item) ?? false,\n\t\t\t\tdata: action,\n\t\t\t}))}\n\t\t\trenderItem={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown>;\n\t\t\t\tconst isDestructive = action.variant === 'destructive';\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\tisDestructive ? 'text-destructive' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{action.icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\t\tisDestructive && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t\tonSelect={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown> | undefined;\n\t\t\t\taction?.onSelect(item);\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nKanbanItemActions.displayName = 'KanbanItemActions';\n\nexport function KanbanOverlay({ className, render }: KanbanOverlayProps) {\n\tconst { activeItem, activeId, findItem } = useKanbanContext();\n\treturn (\n\t\t<DragOverlay>\n\t\t\t{activeId\n\t\t\t\t? render\n\t\t\t\t\t? render({\n\t\t\t\t\t\t\titem: activeItem,\n\t\t\t\t\t\t\tcolumnId: findItem(activeId)?.columnId ?? null,\n\t\t\t\t\t\t})\n\t\t\t\t\t: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"text-primary/80\">{activeId}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t: null}\n\t\t</DragOverlay>\n\t);\n}\n\nKanbanOverlay.displayName = 'KanbanOverlay';\n"],"mappings":"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"}
@@ -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-BGKY8UY0.js";
4
- import { n as r } from "../../../_shared/heading-HeP06nXG.js";
5
- import { t as i } from "../../../_shared/popover-menu-bKQatoYF.js";
3
+ import { t as n } from "../../../_shared/button-DHksjMvc.js";
4
+ import { s as r } from "../../../_shared/typography-DE0NGEIE.js";
5
+ import { t as i } from "../../../_shared/popover-menu-qxBZlTck.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";
@@ -246,7 +246,7 @@ var B = o(function({ className: e, children: r }, i) {
246
246
  type: "button",
247
247
  variant: "secondary",
248
248
  buttonStyle: "ghost",
249
- size: "icon-xs",
249
+ size: "icon-small",
250
250
  ref: s((e) => {
251
251
  a(e), typeof i == "function" ? i(e) : i && (i.current = e);
252
252
  }, [a, i]),
@@ -271,7 +271,7 @@ function V({ className: a, icon: o, ariaLabel: s }) {
271
271
  type: "button",
272
272
  variant: "secondary",
273
273
  buttonStyle: "ghost",
274
- size: "icon-sm",
274
+ size: "icon-small",
275
275
  "data-slot": "kanban-item-actions-trigger",
276
276
  "data-stop-item-click": !0,
277
277
  "aria-label": s ?? v.itemActionsAria,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/kanban/hooks/use-kanban.ts","../../../../src/components/features/kanban/kanban-context.tsx","../../../../src/components/features/kanban/kanban.strings.ts","../../../../src/components/features/kanban/kanban.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport type { KanbanItemMoveEvent, KanbanValue } from '../kanban.types';\n\n/**\n * Headless hook — exposes the same state machine `<Kanban>` uses\n * internally so consumers can build a fully custom UI against it.\n *\n * const { findItem, move } = useKanban({ value, onValueChange,\n * getItemValue });\n * move({ itemId: 'card-1', toColumnId: 'shipped', toIndex: 0 });\n */\nexport interface UseKanbanOptions<T> {\n\tvalue: KanbanValue<T>;\n\tonValueChange: (next: KanbanValue<T>) => void;\n\tgetItemValue: (item: T) => string;\n\tonItemMove?: (event: KanbanItemMoveEvent<T>) => void;\n}\n\nexport interface UseKanbanResult<T> {\n\tfindItem: (id: string) => { columnId: string; index: number; item: T } | undefined;\n\t/**\n\t * Move an item between columns / within the same column. Idempotent:\n\t * a no-op move is safe.\n\t */\n\tmove: (input: { itemId: string; toColumnId: string; toIndex?: number }) => void;\n}\n\nexport function useKanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n}: UseKanbanOptions<T>): UseKanbanResult<T> {\n\tconst findItem = useCallback(\n\t\t(id: string) => {\n\t\t\tfor (const [columnId, items] of Object.entries(value)) {\n\t\t\t\tconst index = items.findIndex((item) => getItemValue(item) === id);\n\t\t\t\tif (index >= 0) return { columnId, index, item: items[index] };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[value, getItemValue],\n\t);\n\n\tconst move = useCallback(\n\t\t({ itemId, toColumnId, toIndex }: { itemId: string; toColumnId: string; toIndex?: number }) => {\n\t\t\tconst found = findItem(itemId);\n\t\t\tif (!found) return;\n\t\t\tif (!Object.prototype.hasOwnProperty.call(value, toColumnId)) return;\n\n\t\t\tconst { columnId: fromColumnId, index: fromIndex, item } = found;\n\n\t\t\t// Same column, same slot — nothing to do.\n\t\t\tconst targetItems = value[toColumnId];\n\t\t\tconst resolvedToIndex =\n\t\t\t\ttoIndex === undefined\n\t\t\t\t\t? targetItems.length\n\t\t\t\t\t: Math.max(0, Math.min(toIndex, targetItems.length));\n\n\t\t\tif (fromColumnId === toColumnId && fromIndex === resolvedToIndex) return;\n\n\t\t\tconst next: KanbanValue<T> = { ...value };\n\t\t\tconst sourceCopy = [...next[fromColumnId]];\n\t\t\tsourceCopy.splice(fromIndex, 1);\n\t\t\tnext[fromColumnId] = sourceCopy;\n\n\t\t\tconst targetCopy = [...(fromColumnId === toColumnId ? sourceCopy : next[toColumnId])];\n\t\t\t// When moving within the same column to a later index, the splice\n\t\t\t// above shifted everything left — re-resolve the destination.\n\t\t\tlet landingIndex = resolvedToIndex;\n\t\t\tif (fromColumnId === toColumnId && fromIndex < resolvedToIndex) {\n\t\t\t\tlandingIndex = Math.max(0, resolvedToIndex - 1);\n\t\t\t}\n\t\t\ttargetCopy.splice(landingIndex, 0, item);\n\t\t\tnext[toColumnId] = targetCopy;\n\n\t\t\tonValueChange(next);\n\t\t\tonItemMove?.({\n\t\t\t\titem,\n\t\t\t\titemId,\n\t\t\t\tfrom: { columnId: fromColumnId, index: fromIndex },\n\t\t\t\tto: { columnId: toColumnId, index: landingIndex },\n\t\t\t});\n\t\t},\n\t\t[value, findItem, onValueChange, onItemMove],\n\t);\n\n\treturn useMemo(() => ({ findItem, move }), [findItem, move]);\n}\n","import { createContext, useContext } from 'react';\n\nimport type { KanbanContextShape } from './kanban.types';\n\n/**\n * Internal context for the Kanban — the parts use this to read\n * shared state (current value, getItemValue, active drag id).\n */\nconst KanbanContext = createContext<KanbanContextShape | null>(null);\n\nexport const KanbanContextProvider = KanbanContext.Provider;\n\nexport function useKanbanContext<T = unknown>(): KanbanContextShape<T> {\n\tconst ctx = useContext(KanbanContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'Kanban subcomponents must be rendered inside a <Kanban> root.',\n\t\t);\n\t}\n\treturn ctx as unknown as KanbanContextShape<T>;\n}\n\n/**\n * Internal context exposed by `<KanbanItem>` so the optional\n * `<KanbanItemHandle>` knows which listeners + accessibility props to\n * wire to the dedicated drag handle. Also carries the resolved\n * domain item so `<KanbanItemActions>` (and any other item-aware\n * subcomponent) can render per-item content without prop drilling.\n *\n * The dnd-kit shapes are widened to `unknown` so consumers can spread\n * them onto any HTMLElement.\n */\ninterface KanbanItemContextShape {\n\tlisteners: unknown;\n\tattributes: unknown;\n\tsetActivatorNodeRef: (node: HTMLElement | null) => void;\n\tregisterHandle: () => () => void;\n\t/** Stable id (the value returned by `getItemValue`). */\n\titemId: string;\n\t/** The domain item itself — null if it can't be resolved. */\n\titem: unknown;\n}\n\nconst KanbanItemContext = createContext<KanbanItemContextShape | null>(null);\n\nexport const KanbanItemContextProvider = KanbanItemContext.Provider;\n\nexport function useKanbanItemContext(): KanbanItemContextShape {\n\tconst ctx = useContext(KanbanItemContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.',\n\t\t);\n\t}\n\treturn ctx;\n}\n","/**\n * Strings for the Kanban — drag-and-drop screen-reader announcements\n * + accessibility labels. The library never renders user-visible copy\n * that the consumer hasn't already supplied via column headers / item\n * children, so the strings here are exclusively for assistive tech.\n */\nexport interface KanbanStrings {\n\t/** Read by screen readers when a drag begins. `{name}` = item id. */\n\tannounceDragStart: string;\n\t/** Read when an item moves over a column. `{from}` / `{to}` are column ids. */\n\tannounceDragMove: string;\n\t/** Read when an item is dropped into a column. */\n\tannounceDragEnd: string;\n\t/** Read when the user cancels a drag with Escape. */\n\tannounceDragCancel: string;\n\t/** Aria label on the drag handle. */\n\tdragHandleAria: string;\n\t/** Aria label on the board landmark. */\n\tboardAria: string;\n\t/** Aria label on the per-item actions trigger (`⋮`). */\n\titemActionsAria: string;\n}\n\nexport const defaultKanbanStrings: KanbanStrings = {\n\tannounceDragStart: 'Picked up item {name}.',\n\tannounceDragMove: 'Moving {name} from {from} to {to}.',\n\tannounceDragEnd: 'Dropped {name} into {to}.',\n\tannounceDragCancel: 'Cancelled drag of {name}.',\n\tdragHandleAria: 'Drag handle',\n\tboardAria: 'Kanban board',\n\titemActionsAria: 'Item actions',\n};\n\nexport function interpolateKanbanString(\n\ttemplate: string,\n\tparams: Record<string, string>,\n): string {\n\treturn Object.entries(params).reduce(\n\t\t(acc, [key, value]) => acc.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value),\n\t\ttemplate,\n\t);\n}\n","/**\n * Kanban — drag-and-drop board with multi-column item sorting and\n * cross-column moves. Headless behavior comes from `@dnd-kit/core` +\n * `@dnd-kit/sortable`; the library wires it into a callback-driven,\n * generic-T API:\n *\n * <Kanban\n * value={columns}\n * onValueChange={setColumns}\n * getItemValue={(c) => c.id}\n * onItemMove={(e) => api.persistMove(e)}\n * >\n * <KanbanBoard className=\"grid grid-cols-3 gap-3\">\n * {Object.entries(columns).map(([colId, items]) => (\n * <KanbanColumn key={colId} value={colId}>\n * <header>{COLUMNS[colId].title}</header>\n * <KanbanColumnContent value={colId}>\n * {items.map((card) => (\n * <KanbanItem key={card.id} value={card.id}>\n * …card body…\n * </KanbanItem>\n * ))}\n * </KanbanColumnContent>\n * </KanbanColumn>\n * ))}\n * </KanbanBoard>\n * <KanbanOverlay />\n * </Kanban>\n *\n * The library never reaches into a router, never persists state — your\n * `onValueChange` is the source of truth. Use `onItemMove` for\n * analytics / optimistic-update plumbing.\n */\nimport {\n\tDndContext,\n\tDragOverlay,\n\tPointerSensor,\n\tuseDroppable,\n\tuseSensor,\n\tuseSensors,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tuseSortable,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { MoreHorizontal } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useMemo, useState, type MouseEvent } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { PopoverMenu } from '@/components/base/popover-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useKanban } from './hooks/use-kanban';\nimport {\n\tKanbanContextProvider,\n\tKanbanItemContextProvider,\n\tuseKanbanContext,\n\tuseKanbanItemContext,\n} from './kanban-context';\nimport { defaultKanbanStrings } from './kanban.strings';\nimport type {\n\tKanbanBoardProps,\n\tKanbanColumnContentProps,\n\tKanbanColumnProps,\n\tKanbanItemAction,\n\tKanbanItemActionsConfig,\n\tKanbanItemActionsProps,\n\tKanbanItemHandleProps,\n\tKanbanItemProps,\n\tKanbanOverlayProps,\n\tKanbanProps,\n} from './kanban.types';\n\nexport function Kanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n\titemActions,\n\tonItemClick,\n\tstrings: stringsProp,\n\tclassName,\n\tchildren,\n}: KanbanProps<T>) {\n\tconst strings = useStrings(defaultKanbanStrings, stringsProp);\n\tconst { findItem, move } = useKanban({\n\t\tvalue,\n\t\tonValueChange,\n\t\tgetItemValue,\n\t\tonItemMove,\n\t});\n\tconst [activeId, setActiveId] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n\t);\n\n\tconst activeItem = useMemo(\n\t\t() => (activeId ? findItem(activeId)?.item ?? null : null),\n\t\t[activeId, findItem],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => {\n\t\t\tsetActiveId(String(event.active.id));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveId(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over) return;\n\t\t\tconst activeData = active.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overData = over.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overId = String(over.id);\n\n\t\t\t// Dropping on a column container (not a sortable item) → append.\n\t\t\tconst targetColumnId =\n\t\t\t\toverData?.columnId ?? (Object.prototype.hasOwnProperty.call(value, overId) ? overId : undefined);\n\t\t\tif (!targetColumnId) return;\n\n\t\t\tconst toIndex =\n\t\t\t\toverData?.columnId !== undefined ? overData.index : value[targetColumnId].length;\n\n\t\t\tmove({\n\t\t\t\titemId: String(active.id),\n\t\t\t\ttoColumnId: targetColumnId,\n\t\t\t\ttoIndex,\n\t\t\t});\n\t\t\tvoid activeData;\n\t\t},\n\t\t[move, value],\n\t);\n\n\tconst ctxValue = useMemo(\n\t\t() => ({\n\t\t\tvalue: value as Record<string, unknown[]>,\n\t\t\tonValueChange: onValueChange as (next: Record<string, unknown[]>) => void,\n\t\t\tgetItemValue: getItemValue as (item: unknown) => string,\n\t\t\tactiveId,\n\t\t\tactiveItem: activeItem as unknown,\n\t\t\tfindItem: findItem as (id: string) => { columnId: string; index: number; item: unknown } | undefined,\n\t\t\titemActions: itemActions as KanbanItemActionsConfig<unknown> | undefined,\n\t\t\tonItemClick: onItemClick as ((item: unknown) => void) | undefined,\n\t\t}),\n\t\t[value, onValueChange, getItemValue, activeId, activeItem, findItem, itemActions, onItemClick],\n\t);\n\n\treturn (\n\t\t<KanbanContextProvider value={ctxValue}>\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveId(null)}\n\t\t\t\taccessibility={{\n\t\t\t\t\tannouncements: {\n\t\t\t\t\t\tonDragStart({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragStart.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragOver({ active, over }) {\n\t\t\t\t\t\t\tif (!over) return undefined;\n\t\t\t\t\t\t\treturn strings.announceDragMove\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{from}', '')\n\t\t\t\t\t\t\t\t.replace('{to}', String(over.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragEnd({ active, over }) {\n\t\t\t\t\t\t\treturn strings.announceDragEnd\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{to}', over ? String(over.id) : '');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragCancel({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragCancel.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"application\"\n\t\t\t\t\taria-label={strings.boardAria}\n\t\t\t\t\tclassName={cn('kanban--component', 'w-full', className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</DndContext>\n\t\t</KanbanContextProvider>\n\t);\n}\n\nKanban.displayName = 'Kanban';\n\nexport function KanbanBoard({ className, style, children }: KanbanBoardProps) {\n\treturn (\n\t\t<div className={cn('grid w-full gap-3', className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanBoard.displayName = 'KanbanBoard';\n\nexport function KanbanColumn({ value, className, children }: KanbanColumnProps) {\n\tconst { setNodeRef, isOver } = useDroppable({ id: value });\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tdata-slot=\"kanban-column\"\n\t\t\tdata-column-id={value}\n\t\t\tdata-over={isOver ? 'true' : undefined}\n\t\t\tclassName={cn('flex min-w-0 flex-col', className)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanColumn.displayName = 'KanbanColumn';\n\nexport function KanbanColumnContent({\n\tvalue,\n\tclassName,\n\tchildren,\n}: KanbanColumnContentProps) {\n\tconst ctx = useKanbanContext();\n\tconst items = ctx.value[value] ?? [];\n\tconst ids = items.map((item) => ctx.getItemValue(item));\n\treturn (\n\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"kanban-column-content\"\n\t\t\t\tclassName={cn('flex flex-col gap-2', className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SortableContext>\n\t);\n}\n\nKanbanColumnContent.displayName = 'KanbanColumnContent';\n\nexport function KanbanItem({\n\tvalue,\n\tclassName,\n\tdisabled = false,\n\tonClick,\n\tchildren,\n}: KanbanItemProps) {\n\tconst ctx = useKanbanContext();\n\tconst found = ctx.findItem(value);\n\tconst {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetNodeRef,\n\t\tsetActivatorNodeRef,\n\t\ttransform,\n\t\ttransition,\n\t\tisDragging,\n\t} = useSortable({\n\t\tid: value,\n\t\tdisabled,\n\t\tdata: { columnId: found?.columnId, index: found?.index },\n\t});\n\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0.4 : undefined,\n\t};\n\tconst [handleCount, setHandleCount] = useState(0);\n\tconst hasHandle = handleCount > 0;\n\tconst registerHandle = useCallback(() => {\n\t\tsetHandleCount((count) => count + 1);\n\t\treturn () => setHandleCount((count) => Math.max(0, count - 1));\n\t}, []);\n\n\tconst itemCtx = useMemo(\n\t\t() => ({\n\t\t\tlisteners,\n\t\t\tattributes,\n\t\t\tsetActivatorNodeRef,\n\t\t\tregisterHandle,\n\t\t\titemId: value,\n\t\t\titem: found?.item ?? null,\n\t\t}),\n\t\t[listeners, attributes, setActivatorNodeRef, registerHandle, value, found?.item],\n\t);\n\n\tconst rootClick = ctx.onItemClick;\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent<HTMLDivElement>) => {\n\t\t\t// `<KanbanItemHandle>` and `<KanbanItemActions>` mark themselves\n\t\t\t// with `data-stop-item-click` so a click on the drag handle or\n\t\t\t// the actions menu doesn't bubble up as a card click.\n\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\tif (target?.closest('[data-stop-item-click]')) return;\n\t\t\tif (onClick) {\n\t\t\t\tonClick();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rootClick && found?.item !== undefined) {\n\t\t\t\trootClick(found.item);\n\t\t\t}\n\t\t},\n\t\t[onClick, rootClick, found?.item],\n\t);\n\n\tconst isClickable = Boolean(onClick || rootClick);\n\n\t// When no <KanbanItemHandle> is used, the whole row is the activator.\n\t// We attach listeners + attributes here as the default — KanbanItemHandle\n\t// can then override by wiring them to a more specific element.\n\treturn (\n\t\t<KanbanItemContextProvider value={itemCtx}>\n\t\t\t<div\n\t\t\t\tref={setNodeRef}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-slot=\"kanban-item\"\n\t\t\t\tdata-dragging={isDragging ? 'true' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'touch-none select-none',\n\t\t\t\t\tisClickable && 'cursor-pointer',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={isClickable ? handleClick : undefined}\n\t\t\t\t{...(!hasHandle ? attributes : {})}\n\t\t\t\t{...(!hasHandle ? listeners : {})}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</KanbanItemContextProvider>\n\t);\n}\n\nKanbanItem.displayName = 'KanbanItem';\n\nexport const KanbanItemHandle = forwardRef<HTMLButtonElement, KanbanItemHandleProps>(function KanbanItemHandle({ className, children }, forwardedRef) {\n\tconst { setActivatorNodeRef, listeners, attributes, registerHandle } = useKanbanItemContext();\n\tuseEffect(() => registerHandle(), [registerHandle]);\n\t// Merge dnd-kit's activator ref with the consumer's forwarded ref so a\n\t// `<Tooltip><KanbanItemHandle ref={…}/></Tooltip>` wiring still gets a\n\t// real ref to the button element.\n\tconst setMergedRef = useCallback(\n\t\t(node: HTMLButtonElement | null) => {\n\t\t\tsetActivatorNodeRef(node);\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(node);\n\t\t\t} else if (forwardedRef) {\n\t\t\t\tforwardedRef.current = node;\n\t\t\t}\n\t\t},\n\t\t[setActivatorNodeRef, forwardedRef],\n\t);\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"icon-xs\"\n\t\t\tref={setMergedRef}\n\t\t\tdata-slot=\"kanban-item-handle\"\n\t\t\tdata-stop-item-click\n\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\tclassName={cn(\n\t\t\t\t'cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...(attributes as Record<string, unknown>)}\n\t\t\t{...(listeners as Record<string, unknown>)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n});\n\nKanbanItemHandle.displayName = 'KanbanItemHandle';\n\n/**\n * Per-item actions menu (`⋮` trigger → popover with the actions\n * registered at the `<Kanban itemActions>` root). Place inside any\n * `<KanbanItem>` — typically in the card's top-right corner.\n *\n * The trigger marks itself with `data-stop-item-click` so opening the\n * menu doesn't fire the parent `onItemClick` callback.\n */\nexport function KanbanItemActions({\n\tclassName,\n\ticon,\n\tariaLabel,\n}: KanbanItemActionsProps) {\n\tconst [open, setOpen] = useState(false);\n\tconst ctx = useKanbanContext();\n\tconst itemCtx = useKanbanItemContext();\n\tconst strings = useStrings(defaultKanbanStrings, undefined);\n\n\tconst item = itemCtx.item;\n\tconst rawActions = ctx.itemActions;\n\tconst actions = useMemo(() => {\n\t\tif (!rawActions || item === null || item === undefined) return [] as ReadonlyArray<KanbanItemAction<unknown>>;\n\t\tconst list = typeof rawActions === 'function' ? rawActions(item) : rawActions;\n\t\treturn list.filter((action) =>\n\t\t\taction.isVisible ? action.isVisible(item) : true,\n\t\t);\n\t}, [rawActions, item]);\n\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<PopoverMenu\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\tsearch={false}\n\t\t\tcontentClassName=\"w-44\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-sm\"\n\t\t\t\t\tdata-slot=\"kanban-item-actions-trigger\"\n\t\t\t\t\tdata-stop-item-click\n\t\t\t\t\taria-label={ariaLabel ?? strings.itemActionsAria}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\t\t\tonPointerDown={(event) => event.stopPropagation()}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-7 rounded-md p-0',\n\t\t\t\t\t\t'text-muted-foreground/70 hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'transition-colors',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon ?? <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\titems={actions.map((action) => ({\n\t\t\t\tvalue: action.id,\n\t\t\t\tlabel: action.label,\n\t\t\t\ticon: action.icon,\n\t\t\t\tdisabled: action.isDisabled?.(item) ?? false,\n\t\t\t\tdata: action,\n\t\t\t}))}\n\t\t\trenderItem={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown>;\n\t\t\t\tconst isDestructive = action.variant === 'destructive';\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\tisDestructive ? 'text-destructive' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{action.icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\t\tisDestructive && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t\tonSelect={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown> | undefined;\n\t\t\t\taction?.onSelect(item);\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nKanbanItemActions.displayName = 'KanbanItemActions';\n\nexport function KanbanOverlay({ className, render }: KanbanOverlayProps) {\n\tconst { activeItem, activeId, findItem } = useKanbanContext();\n\treturn (\n\t\t<DragOverlay>\n\t\t\t{activeId\n\t\t\t\t? render\n\t\t\t\t\t? render({\n\t\t\t\t\t\t\titem: activeItem,\n\t\t\t\t\t\t\tcolumnId: findItem(activeId)?.columnId ?? null,\n\t\t\t\t\t\t})\n\t\t\t\t\t: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"text-primary/80\">{activeId}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t: null}\n\t\t</DragOverlay>\n\t);\n}\n\nKanbanOverlay.displayName = 'KanbanOverlay';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/features/kanban/hooks/use-kanban.ts","../../../../src/components/features/kanban/kanban-context.tsx","../../../../src/components/features/kanban/kanban.strings.ts","../../../../src/components/features/kanban/kanban.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport type { KanbanItemMoveEvent, KanbanValue } from '../kanban.types';\n\n/**\n * Headless hook — exposes the same state machine `<Kanban>` uses\n * internally so consumers can build a fully custom UI against it.\n *\n * const { findItem, move } = useKanban({ value, onValueChange,\n * getItemValue });\n * move({ itemId: 'card-1', toColumnId: 'shipped', toIndex: 0 });\n */\nexport interface UseKanbanOptions<T> {\n\tvalue: KanbanValue<T>;\n\tonValueChange: (next: KanbanValue<T>) => void;\n\tgetItemValue: (item: T) => string;\n\tonItemMove?: (event: KanbanItemMoveEvent<T>) => void;\n}\n\nexport interface UseKanbanResult<T> {\n\tfindItem: (id: string) => { columnId: string; index: number; item: T } | undefined;\n\t/**\n\t * Move an item between columns / within the same column. Idempotent:\n\t * a no-op move is safe.\n\t */\n\tmove: (input: { itemId: string; toColumnId: string; toIndex?: number }) => void;\n}\n\nexport function useKanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n}: UseKanbanOptions<T>): UseKanbanResult<T> {\n\tconst findItem = useCallback(\n\t\t(id: string) => {\n\t\t\tfor (const [columnId, items] of Object.entries(value)) {\n\t\t\t\tconst index = items.findIndex((item) => getItemValue(item) === id);\n\t\t\t\tif (index >= 0) return { columnId, index, item: items[index] };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[value, getItemValue],\n\t);\n\n\tconst move = useCallback(\n\t\t({ itemId, toColumnId, toIndex }: { itemId: string; toColumnId: string; toIndex?: number }) => {\n\t\t\tconst found = findItem(itemId);\n\t\t\tif (!found) return;\n\t\t\tif (!Object.prototype.hasOwnProperty.call(value, toColumnId)) return;\n\n\t\t\tconst { columnId: fromColumnId, index: fromIndex, item } = found;\n\n\t\t\t// Same column, same slot — nothing to do.\n\t\t\tconst targetItems = value[toColumnId];\n\t\t\tconst resolvedToIndex =\n\t\t\t\ttoIndex === undefined\n\t\t\t\t\t? targetItems.length\n\t\t\t\t\t: Math.max(0, Math.min(toIndex, targetItems.length));\n\n\t\t\tif (fromColumnId === toColumnId && fromIndex === resolvedToIndex) return;\n\n\t\t\tconst next: KanbanValue<T> = { ...value };\n\t\t\tconst sourceCopy = [...next[fromColumnId]];\n\t\t\tsourceCopy.splice(fromIndex, 1);\n\t\t\tnext[fromColumnId] = sourceCopy;\n\n\t\t\tconst targetCopy = [...(fromColumnId === toColumnId ? sourceCopy : next[toColumnId])];\n\t\t\t// When moving within the same column to a later index, the splice\n\t\t\t// above shifted everything left — re-resolve the destination.\n\t\t\tlet landingIndex = resolvedToIndex;\n\t\t\tif (fromColumnId === toColumnId && fromIndex < resolvedToIndex) {\n\t\t\t\tlandingIndex = Math.max(0, resolvedToIndex - 1);\n\t\t\t}\n\t\t\ttargetCopy.splice(landingIndex, 0, item);\n\t\t\tnext[toColumnId] = targetCopy;\n\n\t\t\tonValueChange(next);\n\t\t\tonItemMove?.({\n\t\t\t\titem,\n\t\t\t\titemId,\n\t\t\t\tfrom: { columnId: fromColumnId, index: fromIndex },\n\t\t\t\tto: { columnId: toColumnId, index: landingIndex },\n\t\t\t});\n\t\t},\n\t\t[value, findItem, onValueChange, onItemMove],\n\t);\n\n\treturn useMemo(() => ({ findItem, move }), [findItem, move]);\n}\n","import { createContext, useContext } from 'react';\n\nimport type { KanbanContextShape } from './kanban.types';\n\n/**\n * Internal context for the Kanban — the parts use this to read\n * shared state (current value, getItemValue, active drag id).\n */\nconst KanbanContext = createContext<KanbanContextShape | null>(null);\n\nexport const KanbanContextProvider = KanbanContext.Provider;\n\nexport function useKanbanContext<T = unknown>(): KanbanContextShape<T> {\n\tconst ctx = useContext(KanbanContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'Kanban subcomponents must be rendered inside a <Kanban> root.',\n\t\t);\n\t}\n\treturn ctx as unknown as KanbanContextShape<T>;\n}\n\n/**\n * Internal context exposed by `<KanbanItem>` so the optional\n * `<KanbanItemHandle>` knows which listeners + accessibility props to\n * wire to the dedicated drag handle. Also carries the resolved\n * domain item so `<KanbanItemActions>` (and any other item-aware\n * subcomponent) can render per-item content without prop drilling.\n *\n * The dnd-kit shapes are widened to `unknown` so consumers can spread\n * them onto any HTMLElement.\n */\ninterface KanbanItemContextShape {\n\tlisteners: unknown;\n\tattributes: unknown;\n\tsetActivatorNodeRef: (node: HTMLElement | null) => void;\n\tregisterHandle: () => () => void;\n\t/** Stable id (the value returned by `getItemValue`). */\n\titemId: string;\n\t/** The domain item itself — null if it can't be resolved. */\n\titem: unknown;\n}\n\nconst KanbanItemContext = createContext<KanbanItemContextShape | null>(null);\n\nexport const KanbanItemContextProvider = KanbanItemContext.Provider;\n\nexport function useKanbanItemContext(): KanbanItemContextShape {\n\tconst ctx = useContext(KanbanItemContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'<KanbanItemHandle> / <KanbanItemActions> must be rendered inside a <KanbanItem>.',\n\t\t);\n\t}\n\treturn ctx;\n}\n","/**\n * Strings for the Kanban — drag-and-drop screen-reader announcements\n * + accessibility labels. The library never renders user-visible copy\n * that the consumer hasn't already supplied via column headers / item\n * children, so the strings here are exclusively for assistive tech.\n */\nexport interface KanbanStrings {\n\t/** Read by screen readers when a drag begins. `{name}` = item id. */\n\tannounceDragStart: string;\n\t/** Read when an item moves over a column. `{from}` / `{to}` are column ids. */\n\tannounceDragMove: string;\n\t/** Read when an item is dropped into a column. */\n\tannounceDragEnd: string;\n\t/** Read when the user cancels a drag with Escape. */\n\tannounceDragCancel: string;\n\t/** Aria label on the drag handle. */\n\tdragHandleAria: string;\n\t/** Aria label on the board landmark. */\n\tboardAria: string;\n\t/** Aria label on the per-item actions trigger (`⋮`). */\n\titemActionsAria: string;\n}\n\nexport const defaultKanbanStrings: KanbanStrings = {\n\tannounceDragStart: 'Picked up item {name}.',\n\tannounceDragMove: 'Moving {name} from {from} to {to}.',\n\tannounceDragEnd: 'Dropped {name} into {to}.',\n\tannounceDragCancel: 'Cancelled drag of {name}.',\n\tdragHandleAria: 'Drag handle',\n\tboardAria: 'Kanban board',\n\titemActionsAria: 'Item actions',\n};\n\nexport function interpolateKanbanString(\n\ttemplate: string,\n\tparams: Record<string, string>,\n): string {\n\treturn Object.entries(params).reduce(\n\t\t(acc, [key, value]) => acc.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), value),\n\t\ttemplate,\n\t);\n}\n","/**\n * Kanban — drag-and-drop board with multi-column item sorting and\n * cross-column moves. Headless behavior comes from `@dnd-kit/core` +\n * `@dnd-kit/sortable`; the library wires it into a callback-driven,\n * generic-T API:\n *\n * <Kanban\n * value={columns}\n * onValueChange={setColumns}\n * getItemValue={(c) => c.id}\n * onItemMove={(e) => api.persistMove(e)}\n * >\n * <KanbanBoard className=\"grid grid-cols-3 gap-3\">\n * {Object.entries(columns).map(([colId, items]) => (\n * <KanbanColumn key={colId} value={colId}>\n * <header>{COLUMNS[colId].title}</header>\n * <KanbanColumnContent value={colId}>\n * {items.map((card) => (\n * <KanbanItem key={card.id} value={card.id}>\n * …card body…\n * </KanbanItem>\n * ))}\n * </KanbanColumnContent>\n * </KanbanColumn>\n * ))}\n * </KanbanBoard>\n * <KanbanOverlay />\n * </Kanban>\n *\n * The library never reaches into a router, never persists state — your\n * `onValueChange` is the source of truth. Use `onItemMove` for\n * analytics / optimistic-update plumbing.\n */\nimport {\n\tDndContext,\n\tDragOverlay,\n\tPointerSensor,\n\tuseDroppable,\n\tuseSensor,\n\tuseSensors,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tuseSortable,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { MoreHorizontal } from 'lucide-react';\nimport { forwardRef, useCallback, useEffect, useMemo, useState, type MouseEvent } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { PopoverMenu } from '@/components/base/popover-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useKanban } from './hooks/use-kanban';\nimport {\n\tKanbanContextProvider,\n\tKanbanItemContextProvider,\n\tuseKanbanContext,\n\tuseKanbanItemContext,\n} from './kanban-context';\nimport { defaultKanbanStrings } from './kanban.strings';\nimport type {\n\tKanbanBoardProps,\n\tKanbanColumnContentProps,\n\tKanbanColumnProps,\n\tKanbanItemAction,\n\tKanbanItemActionsConfig,\n\tKanbanItemActionsProps,\n\tKanbanItemHandleProps,\n\tKanbanItemProps,\n\tKanbanOverlayProps,\n\tKanbanProps,\n} from './kanban.types';\n\nexport function Kanban<T>({\n\tvalue,\n\tonValueChange,\n\tgetItemValue,\n\tonItemMove,\n\titemActions,\n\tonItemClick,\n\tstrings: stringsProp,\n\tclassName,\n\tchildren,\n}: KanbanProps<T>) {\n\tconst strings = useStrings(defaultKanbanStrings, stringsProp);\n\tconst { findItem, move } = useKanban({\n\t\tvalue,\n\t\tonValueChange,\n\t\tgetItemValue,\n\t\tonItemMove,\n\t});\n\tconst [activeId, setActiveId] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n\t);\n\n\tconst activeItem = useMemo(\n\t\t() => (activeId ? findItem(activeId)?.item ?? null : null),\n\t\t[activeId, findItem],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => {\n\t\t\tsetActiveId(String(event.active.id));\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveId(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over) return;\n\t\t\tconst activeData = active.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overData = over.data.current as\n\t\t\t\t| { columnId?: string; index?: number }\n\t\t\t\t| undefined;\n\t\t\tconst overId = String(over.id);\n\n\t\t\t// Dropping on a column container (not a sortable item) → append.\n\t\t\tconst targetColumnId =\n\t\t\t\toverData?.columnId ?? (Object.prototype.hasOwnProperty.call(value, overId) ? overId : undefined);\n\t\t\tif (!targetColumnId) return;\n\n\t\t\tconst toIndex =\n\t\t\t\toverData?.columnId !== undefined ? overData.index : value[targetColumnId].length;\n\n\t\t\tmove({\n\t\t\t\titemId: String(active.id),\n\t\t\t\ttoColumnId: targetColumnId,\n\t\t\t\ttoIndex,\n\t\t\t});\n\t\t\tvoid activeData;\n\t\t},\n\t\t[move, value],\n\t);\n\n\tconst ctxValue = useMemo(\n\t\t() => ({\n\t\t\tvalue: value as Record<string, unknown[]>,\n\t\t\tonValueChange: onValueChange as (next: Record<string, unknown[]>) => void,\n\t\t\tgetItemValue: getItemValue as (item: unknown) => string,\n\t\t\tactiveId,\n\t\t\tactiveItem: activeItem as unknown,\n\t\t\tfindItem: findItem as (id: string) => { columnId: string; index: number; item: unknown } | undefined,\n\t\t\titemActions: itemActions as KanbanItemActionsConfig<unknown> | undefined,\n\t\t\tonItemClick: onItemClick as ((item: unknown) => void) | undefined,\n\t\t}),\n\t\t[value, onValueChange, getItemValue, activeId, activeItem, findItem, itemActions, onItemClick],\n\t);\n\n\treturn (\n\t\t<KanbanContextProvider value={ctxValue}>\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveId(null)}\n\t\t\t\taccessibility={{\n\t\t\t\t\tannouncements: {\n\t\t\t\t\t\tonDragStart({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragStart.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragOver({ active, over }) {\n\t\t\t\t\t\t\tif (!over) return undefined;\n\t\t\t\t\t\t\treturn strings.announceDragMove\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{from}', '')\n\t\t\t\t\t\t\t\t.replace('{to}', String(over.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragEnd({ active, over }) {\n\t\t\t\t\t\t\treturn strings.announceDragEnd\n\t\t\t\t\t\t\t\t.replace('{name}', String(active.id))\n\t\t\t\t\t\t\t\t.replace('{to}', over ? String(over.id) : '');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonDragCancel({ active }) {\n\t\t\t\t\t\t\treturn strings.announceDragCancel.replace('{name}', String(active.id));\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\trole=\"application\"\n\t\t\t\t\taria-label={strings.boardAria}\n\t\t\t\t\tclassName={cn('kanban--component', 'w-full', className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</DndContext>\n\t\t</KanbanContextProvider>\n\t);\n}\n\nKanban.displayName = 'Kanban';\n\nexport function KanbanBoard({ className, style, children }: KanbanBoardProps) {\n\treturn (\n\t\t<div className={cn('grid w-full gap-3', className)} style={style}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanBoard.displayName = 'KanbanBoard';\n\nexport function KanbanColumn({ value, className, children }: KanbanColumnProps) {\n\tconst { setNodeRef, isOver } = useDroppable({ id: value });\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tdata-slot=\"kanban-column\"\n\t\t\tdata-column-id={value}\n\t\t\tdata-over={isOver ? 'true' : undefined}\n\t\t\tclassName={cn('flex min-w-0 flex-col', className)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n\nKanbanColumn.displayName = 'KanbanColumn';\n\nexport function KanbanColumnContent({\n\tvalue,\n\tclassName,\n\tchildren,\n}: KanbanColumnContentProps) {\n\tconst ctx = useKanbanContext();\n\tconst items = ctx.value[value] ?? [];\n\tconst ids = items.map((item) => ctx.getItemValue(item));\n\treturn (\n\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"kanban-column-content\"\n\t\t\t\tclassName={cn('flex flex-col gap-2', className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SortableContext>\n\t);\n}\n\nKanbanColumnContent.displayName = 'KanbanColumnContent';\n\nexport function KanbanItem({\n\tvalue,\n\tclassName,\n\tdisabled = false,\n\tonClick,\n\tchildren,\n}: KanbanItemProps) {\n\tconst ctx = useKanbanContext();\n\tconst found = ctx.findItem(value);\n\tconst {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetNodeRef,\n\t\tsetActivatorNodeRef,\n\t\ttransform,\n\t\ttransition,\n\t\tisDragging,\n\t} = useSortable({\n\t\tid: value,\n\t\tdisabled,\n\t\tdata: { columnId: found?.columnId, index: found?.index },\n\t});\n\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0.4 : undefined,\n\t};\n\tconst [handleCount, setHandleCount] = useState(0);\n\tconst hasHandle = handleCount > 0;\n\tconst registerHandle = useCallback(() => {\n\t\tsetHandleCount((count) => count + 1);\n\t\treturn () => setHandleCount((count) => Math.max(0, count - 1));\n\t}, []);\n\n\tconst itemCtx = useMemo(\n\t\t() => ({\n\t\t\tlisteners,\n\t\t\tattributes,\n\t\t\tsetActivatorNodeRef,\n\t\t\tregisterHandle,\n\t\t\titemId: value,\n\t\t\titem: found?.item ?? null,\n\t\t}),\n\t\t[listeners, attributes, setActivatorNodeRef, registerHandle, value, found?.item],\n\t);\n\n\tconst rootClick = ctx.onItemClick;\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent<HTMLDivElement>) => {\n\t\t\t// `<KanbanItemHandle>` and `<KanbanItemActions>` mark themselves\n\t\t\t// with `data-stop-item-click` so a click on the drag handle or\n\t\t\t// the actions menu doesn't bubble up as a card click.\n\t\t\tconst target = event.target as HTMLElement | null;\n\t\t\tif (target?.closest('[data-stop-item-click]')) return;\n\t\t\tif (onClick) {\n\t\t\t\tonClick();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (rootClick && found?.item !== undefined) {\n\t\t\t\trootClick(found.item);\n\t\t\t}\n\t\t},\n\t\t[onClick, rootClick, found?.item],\n\t);\n\n\tconst isClickable = Boolean(onClick || rootClick);\n\n\t// When no <KanbanItemHandle> is used, the whole row is the activator.\n\t// We attach listeners + attributes here as the default — KanbanItemHandle\n\t// can then override by wiring them to a more specific element.\n\treturn (\n\t\t<KanbanItemContextProvider value={itemCtx}>\n\t\t\t<div\n\t\t\t\tref={setNodeRef}\n\t\t\t\tstyle={style}\n\t\t\t\tdata-slot=\"kanban-item\"\n\t\t\t\tdata-dragging={isDragging ? 'true' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'touch-none select-none',\n\t\t\t\t\tisClickable && 'cursor-pointer',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={isClickable ? handleClick : undefined}\n\t\t\t\t{...(!hasHandle ? attributes : {})}\n\t\t\t\t{...(!hasHandle ? listeners : {})}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</KanbanItemContextProvider>\n\t);\n}\n\nKanbanItem.displayName = 'KanbanItem';\n\nexport const KanbanItemHandle = forwardRef<HTMLButtonElement, KanbanItemHandleProps>(function KanbanItemHandle({ className, children }, forwardedRef) {\n\tconst { setActivatorNodeRef, listeners, attributes, registerHandle } = useKanbanItemContext();\n\tuseEffect(() => registerHandle(), [registerHandle]);\n\t// Merge dnd-kit's activator ref with the consumer's forwarded ref so a\n\t// `<Tooltip><KanbanItemHandle ref={…}/></Tooltip>` wiring still gets a\n\t// real ref to the button element.\n\tconst setMergedRef = useCallback(\n\t\t(node: HTMLButtonElement | null) => {\n\t\t\tsetActivatorNodeRef(node);\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(node);\n\t\t\t} else if (forwardedRef) {\n\t\t\t\tforwardedRef.current = node;\n\t\t\t}\n\t\t},\n\t\t[setActivatorNodeRef, forwardedRef],\n\t);\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize=\"icon-small\"\n\t\t\tref={setMergedRef}\n\t\t\tdata-slot=\"kanban-item-handle\"\n\t\t\tdata-stop-item-click\n\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\tclassName={cn(\n\t\t\t\t'cursor-grab rounded-sm shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 active:cursor-grabbing',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...(attributes as Record<string, unknown>)}\n\t\t\t{...(listeners as Record<string, unknown>)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n});\n\nKanbanItemHandle.displayName = 'KanbanItemHandle';\n\n/**\n * Per-item actions menu (`⋮` trigger → popover with the actions\n * registered at the `<Kanban itemActions>` root). Place inside any\n * `<KanbanItem>` — typically in the card's top-right corner.\n *\n * The trigger marks itself with `data-stop-item-click` so opening the\n * menu doesn't fire the parent `onItemClick` callback.\n */\nexport function KanbanItemActions({\n\tclassName,\n\ticon,\n\tariaLabel,\n}: KanbanItemActionsProps) {\n\tconst [open, setOpen] = useState(false);\n\tconst ctx = useKanbanContext();\n\tconst itemCtx = useKanbanItemContext();\n\tconst strings = useStrings(defaultKanbanStrings, undefined);\n\n\tconst item = itemCtx.item;\n\tconst rawActions = ctx.itemActions;\n\tconst actions = useMemo(() => {\n\t\tif (!rawActions || item === null || item === undefined) return [] as ReadonlyArray<KanbanItemAction<unknown>>;\n\t\tconst list = typeof rawActions === 'function' ? rawActions(item) : rawActions;\n\t\treturn list.filter((action) =>\n\t\t\taction.isVisible ? action.isVisible(item) : true,\n\t\t);\n\t}, [rawActions, item]);\n\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<PopoverMenu\n\t\t\topen={open}\n\t\t\tonOpenChange={setOpen}\n\t\t\tsearch={false}\n\t\t\tcontentClassName=\"w-44\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\tdata-slot=\"kanban-item-actions-trigger\"\n\t\t\t\t\tdata-stop-item-click\n\t\t\t\t\taria-label={ariaLabel ?? strings.itemActionsAria}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}\n\t\t\t\t\tonPointerDown={(event) => event.stopPropagation()}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'size-7 rounded-md p-0',\n\t\t\t\t\t\t'text-muted-foreground/70 hover:bg-muted hover:text-foreground',\n\t\t\t\t\t\t'transition-colors',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon ?? <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />}\n\t\t\t\t</Button>\n\t\t\t}\n\t\t\titems={actions.map((action) => ({\n\t\t\t\tvalue: action.id,\n\t\t\t\tlabel: action.label,\n\t\t\t\ticon: action.icon,\n\t\t\t\tdisabled: action.isDisabled?.(item) ?? false,\n\t\t\t\tdata: action,\n\t\t\t}))}\n\t\t\trenderItem={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown>;\n\t\t\t\tconst isDestructive = action.variant === 'destructive';\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'shrink-0',\n\t\t\t\t\t\t\t\t\tisDestructive ? 'text-destructive' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{action.icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'truncate',\n\t\t\t\t\t\t\t\tisDestructive && 'text-destructive',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t\tonSelect={(menuItem) => {\n\t\t\t\tconst action = menuItem.data as KanbanItemAction<unknown> | undefined;\n\t\t\t\taction?.onSelect(item);\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nKanbanItemActions.displayName = 'KanbanItemActions';\n\nexport function KanbanOverlay({ className, render }: KanbanOverlayProps) {\n\tconst { activeItem, activeId, findItem } = useKanbanContext();\n\treturn (\n\t\t<DragOverlay>\n\t\t\t{activeId\n\t\t\t\t? render\n\t\t\t\t\t? render({\n\t\t\t\t\t\t\titem: activeItem,\n\t\t\t\t\t\t\tcolumnId: findItem(activeId)?.columnId ?? null,\n\t\t\t\t\t\t})\n\t\t\t\t\t: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'pointer-events-none rounded-md border-2 border-dashed border-primary/40 bg-primary/5 p-3 shadow-lg',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"text-primary/80\">{activeId}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)\n\t\t\t\t: null}\n\t\t</DragOverlay>\n\t);\n}\n\nKanbanOverlay.displayName = 'KanbanOverlay';\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-BI347RlM.cjs"),r=require("../../../_shared/heading-0DYCOrgC.cjs"),i=require("../../../_shared/overlays-DWFEaAog.cjs"),a=require("../../../_shared/badge-CBof1rbF.cjs"),o=require("../../../_shared/alert-CuIIKJC-.cjs"),s=require("../../../_shared/input-COMcb1WY.cjs"),c=require("../../../_shared/forms-BweX9Lm8.cjs"),l=require("../../../_shared/form-field-rMGPvHFK.cjs"),u=require("../../../_shared/switch-zFZhhOEP.cjs");let d=require("react"),f=require("react/jsx-runtime"),p=require("lucide-react"),m=require("react-dom");var h={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 g(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 _={collection:void 0,tags:[],public:!0},v=[],y={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 b(e){return{...y,...e??{}}}function x(e){return!e||e<=0?``:e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function S(e,t){let n=t.getWidth(e),r=t.getHeight(e);return!n||!r?``:`${n} x ${r}`}function C(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 w(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:`file`}function T(e){if(e.type.startsWith(`image/`)&&!(typeof URL>`u`||typeof URL.createObjectURL!=`function`))return URL.createObjectURL(e)}function E(e){!e||typeof URL>`u`||typeof URL.revokeObjectURL!=`function`||URL.revokeObjectURL(e)}function ee(e){return Array.isArray(e)?{items:e,total:e.length}:e}function te(e,t){return t&&typeof e==`object`&&e?{...e,...t}:e}function ne(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 D(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)=>C(n,t)-C(e,t)),r}function O({items:e=v,fetcher:t,accessors:n,selectionMode:r=`multiple`,value:i,defaultValue:a=[],onValueChange:o,onItemUpdate:s,onItemDelete:c,onUpload:l,onError:u,initialTab:f=`library`,defaultView:p=`grid`,defaultQuery:m=``,defaultType:h=`all`,defaultCollection:g=`all`,defaultSort:y=`newest`,defaultUploadOptions:x}={}){let S=(0,d.useMemo)(()=>b(n),[n]),[C,O]=(0,d.useState)(f),[k,A]=(0,d.useState)(p),[j,M]=(0,d.useState)(m),[N,P]=(0,d.useState)(h),[F,I]=(0,d.useState)(g),[L,re]=(0,d.useState)(y),[ie,ae]=(0,d.useState)(null),[R,oe]=(0,d.useState)(()=>[...a]),[se,ce]=(0,d.useState)([]),[le,ue]=(0,d.useState)(),[de,fe]=(0,d.useState)(!1),[pe,z]=(0,d.useState)(null),[me,he]=(0,d.useState)([]),[ge,_e]=(0,d.useState)(()=>new Set),[ve,B]=(0,d.useState)({}),[V,H]=(0,d.useState)([]),[U,W]=(0,d.useState)(!1),[G,ye]=(0,d.useState)({..._,...x,tags:x?.tags??_.tags}),K=i!==void 0,q=(0,d.useMemo)(()=>K?[...i??[]]:R,[R,K,i]),J=(0,d.useMemo)(()=>new Set(q),[q]),Y=(0,d.useRef)(new Set);(0,d.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=ee(t);ce(n.items),ue(n.total)}).catch(t=>{e.signal.aborted||(z(t),u?.(t))}).finally(()=>{e.signal.aborted||fe(!1)}),()=>e.abort()},[F,t,u,j,L,N]),(0,d.useEffect)(()=>{let e=Y.current;return()=>{for(let t of e)E(t);e.clear()}},[]);let X=(0,d.useMemo)(()=>t?se:[...me,...e],[me,se,t,e]),Z=(0,d.useMemo)(()=>X.filter(e=>!ge.has(S.getId(e))).map(e=>te(e,ve[S.getId(e)])),[S,ve,ge,X]),Q=(0,d.useMemo)(()=>{let e=t?Z:ne(Z,S,j,N,F);return t?e:D(e,S,L)},[S,F,t,Z,j,L,N]),be=le??Z.length,xe=Q.length,Se=(0,d.useMemo)(()=>Z.filter(e=>J.has(S.getId(e))),[S,Z,J]),Ce=!!j.trim()||N!==`all`||F!==`all`,$=(0,d.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,d.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,d.useCallback)(()=>$([]),[$]),Ee=(0,d.useCallback)(()=>{M(``),P(`all`),I(`all`)},[]),De=(0,d.useCallback)(e=>{H(t=>[...t,...e.map((e,t)=>{let n=T(e);return n&&Y.current.add(n),{id:`staged-${Date.now()}-${t}`,file:e,name:e.name,size:e.size,type:w(e),src:n,progress:0,status:`staged`}})])},[]),Oe=(0,d.useCallback)(e=>{H(t=>{let n=t.find(t=>t.id===e);return n?.src&&(E(n.src),Y.current.delete(n.src)),t.filter(t=>t.id!==e)})},[]),ke=(0,d.useCallback)(()=>{H(e=>{for(let t of e)t.src&&(E(t.src),Y.current.delete(t.src));return[]})},[]),Ae=(0,d.useCallback)(e=>{ye(t=>({...t,...e}))},[]),je=(0,d.useCallback)((e,t)=>{H(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]);return{tab:C,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,d.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)),u?.(e)}finally{W(!1)}},[S,$,ke,u,l,q,r,je,V,G,U]),updateItem:(0,d.useCallback)((e,t)=>{let n=S.getId(e);B(e=>({...e,[n]:{...e[n],...t}})),s?.(e,t)},[S,s]),removeItem:(0,d.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 k(e,t){return e===`image`?(0,f.jsx)(p.ImageIcon,{className:t??`size-4`}):e===`video`?(0,f.jsx)(p.Video,{className:t??`size-4`}):(0,f.jsx)(p.File,{className:t??`size-4`})}function A(e,t){return e===`image`?t.typeImage:e===`video`?t.typeVideo:t.typeFile}function j(e,t){return e?g(t.usedIn,{count:e}):t.notUsed}function M({children:e,tint:n,className:r}){return(0,f.jsx)(`div`,{className:t.cn(`media-library-preview relative overflow-hidden bg-muted`,r),style:n?{background:n}:void 0,children:e})}function N({src:e,alt:t,type:n,className:r,loading:i=`lazy`}){let[a,o]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{o(!1)},[e]),!e||a?(0,f.jsx)(`div`,{className:`media-library-preview--fallback flex size-full items-center justify-center text-muted-foreground`,children:k(n,`size-6`)}):(0,f.jsx)(`img`,{src:e,alt:t,loading:i,className:r,onError:()=>o(!0)})}function P({icon:e,title:n,description:i,action:a,className:o}){return(0,f.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,f.jsx)(`div`,{className:`mb-3 inline-flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:e??(0,f.jsx)(p.ImageIcon,{className:`size-5`})}),(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,children:n}),!!i&&(0,f.jsx)(r.n,{type:`secondary`,size:`xs`,className:`mt-1 max-w-sm`,children:i}),!!a&&(0,f.jsx)(`div`,{className:`mt-4`,children:a})]})}function F({query:e,type:r,typeFilters:i,collection:a,sort:o,view:l,collections:u=[],strings:d,onQueryChange:m,onTypeChange:h,onCollectionChange:g,onSortChange:_,onViewChange:v,onClearFilters:y,toolbarEnd:b}){let x=[{value:`all`,label:d.allTypes,icon:null},{value:`image`,label:d.images,icon:p.ImageIcon},{value:`video`,label:d.videos,icon:p.Video},{value:`file`,label:d.files,icon:p.File}].filter(e=>(i??[`all`,`image`,`video`]).includes(e.value)),S=[{value:`all`,label:d.allCollections},...u.map(e=>({value:e.value,label:String(e.label)}))],C=[{value:`newest`,label:d.sortNewest},{value:`name`,label:d.sortName},{value:`size`,label:d.sortSize},{value:`usage`,label:d.sortUsage}];return(0,f.jsxs)(`div`,{className:`media-library-toolbar--component flex flex-wrap items-center gap-2`,children:[(0,f.jsx)(`div`,{className:`min-w-52 flex-1`,children:(0,f.jsx)(s.t,{value:e,onChange:e=>m(e.target.value),placeholder:d.searchPlaceholder,startIcon:p.Search,clearable:!0,onClear:()=>m(``),strings:{clear:d.clearSearch},className:`rounded-full bg-muted/20`})}),(0,f.jsx)(`div`,{className:`media-library-toolbar--type-toggle flex h-9 items-center rounded-md bg-muted p-0.5`,role:`tablist`,"aria-label":d.typeFilterLabel,children:x.map(e=>{let i=e.icon,a=r===e.value;return(0,f.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,f.jsx)(i,{className:`size-3.5`}),e.label]},e.value)})}),(0,f.jsx)(`div`,{className:`min-w-40`,children:(0,f.jsx)(c.H,{value:a,options:S,onChange:e=>g(e??`all`),placeholder:d.collectionFilterLabel,"aria-label":d.collectionFilterLabel,className:`bg-background`})}),(0,f.jsx)(`div`,{className:`min-w-32`,children:(0,f.jsx)(c.H,{value:o,options:C,onChange:e=>_(e??`newest`),placeholder:d.sortLabel,"aria-label":d.sortLabel,className:`bg-background`})}),(0,f.jsxs)(`div`,{className:`media-library-toolbar--view-toggle ml-auto flex h-9 items-center rounded-md bg-muted p-0.5`,children:[(0,f.jsx)(n.t,{type:`button`,variant:l===`grid`?`dark`:`secondary`,buttonStyle:l===`grid`?`solid`:`ghost`,size:`icon-xs`,className:t.cn(l===`grid`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":d.gridView,onClick:()=>v(`grid`),children:(0,f.jsx)(p.Grid2X2,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:l===`table`?`dark`:`secondary`,buttonStyle:l===`table`?`solid`:`ghost`,size:`icon-xs`,className:t.cn(l===`table`&&`bg-background text-foreground shadow-xs hover:bg-background`),"aria-label":d.tableView,onClick:()=>v(`table`),children:(0,f.jsx)(p.LayoutList,{className:`size-3.5`})})]}),!!e&&(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:y,children:d.clearFilters}),b]})}function I({item:e,selected:i=!1,density:o=`comfortable`,showMeta:s=!0,accessors:c,strings:l,onToggle:u,onDetails:d,className:m}){let h=c.getType(e),_=c.getName(e),v=c.getSrc(e),y=c.getAlt(e)||_,b=c.getSize(e),S=c.getUsageCount(e),C=c.getPublic(e)===!1,w=c.getDuration(e);return(0,f.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,f.jsxs)(M,{tint:c.getTint(e),className:t.cn(o===`compact`?`aspect-square`:`aspect-[4/3]`),children:[(0,f.jsx)(N,{src:v,alt:y,type:h,className:`size-full object-cover`}),(0,f.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,f.jsx)(p.Check,{className:`size-3`})}),!!d&&(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-xs`,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":g(l.cardDetails,{name:_}),onClick:e=>{e.stopPropagation(),d()},children:(0,f.jsx)(p.Info,{className:`size-3.5`})}),h===`video`&&!!w&&(0,f.jsxs)(a.t,{variant:`secondary`,className:`media-library-card--duration absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,f.jsx)(p.Play,{className:`size-3 fill-current`}),w]}),C&&(0,f.jsx)(a.t,{variant:`secondary`,className:`media-library-card--private absolute bottom-2 right-2 bg-background/90`,children:(0,f.jsx)(p.Lock,{className:`size-3`})})]}),(0,f.jsxs)(`div`,{className:`media-library-card--body grid gap-1 px-3 py-2.5`,children:[(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:_}),s&&(0,f.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,className:`truncate`,children:x(b)||l.unknownSize}),!!S&&(0,f.jsxs)(r.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`ml-auto inline-flex items-center gap-1`,children:[(0,f.jsx)(p.Layers3,{className:`size-3`}),S]})]})]})]})}function L({items:e,selectedSet:i,accessors:o,strings:s,onToggle:c,onDetails:l}){return(0,f.jsxs)(`div`,{className:`media-library-table--component min-w-[720px]`,children:[(0,f.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,f.jsx)(`span`,{}),(0,f.jsx)(`span`,{}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.name}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.type}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.size}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.collection}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`semibold`,children:s.table.used}),(0,f.jsx)(`span`,{})]}),e.map(e=>{let u=o.getId(e),d=i.has(u),m=o.getType(e),h=o.getName(e),_=o.getSrc(e),v=o.getPublic(e)===!1;return(0,f.jsxs)(`div`,{"data-selected":d||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`,d&&`bg-primary/10`),onClick:()=>c(u),children:[(0,f.jsx)(`span`,{className:t.cn(`inline-flex size-5 items-center justify-center rounded-md border border-border text-transparent`,d&&`border-primary bg-primary text-primary-foreground`),"aria-hidden":`true`,children:(0,f.jsx)(p.Check,{className:`size-3`})}),(0,f.jsx)(M,{tint:o.getTint(e),className:`size-9 rounded-md`,children:_?(0,f.jsx)(`img`,{src:_,alt:``,loading:`lazy`,className:`size-full object-cover`}):(0,f.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:k(m,`size-4`)})}),(0,f.jsxs)(r.n,{tag:`div`,weight:`semibold`,size:`xs`,className:`flex min-w-0 items-center gap-1 truncate`,children:[(0,f.jsx)(`span`,{className:`truncate`,children:h}),v&&(0,f.jsx)(p.Lock,{className:`size-3 shrink-0 text-muted-foreground`})]}),(0,f.jsx)(a.t,{variant:`secondary`,children:A(m,s)}),(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,children:x(o.getSize(e))||s.unknownSize}),(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`truncate`,children:o.getCollection(e)||`-`}),(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,children:o.getUsageCount(e)?o.getUsageCount(e):`-`}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":g(s.cardDetails,{name:h}),onClick:e=>{e.stopPropagation(),l(u)},children:(0,f.jsx)(p.Info,{className:`size-3.5`})})]},u)})]})}function re({item:e,collections:t=[],accessors:i,strings:o,onClose:d,onUpdate:m,onRemove:h,renderDetail:g}){if(!e)return null;let _=i.getName(e),v=i.getType(e),y=i.getSrc(e),b=i.getCollection(e)??t[0]?.value??``,C=i.getTags(e),w=i.getPublic(e)??!0,T=g?.(e,{accessors:i,update:m,remove:h,close:d});return T?(0,f.jsx)(f.Fragment,{children:T}):(0,f.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,f.jsxs)(`div`,{className:`media-library-detail-panel--header flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":o.detail.close,onClick:d,children:(0,f.jsx)(p.ArrowLeft,{className:`size-3.5`})}),(0,f.jsx)(r.n,{weight:`semibold`,children:o.detail.title})]}),(0,f.jsxs)(`div`,{className:`media-library-detail-panel--body grid min-h-0 gap-4 overflow-y-auto p-4`,children:[(0,f.jsxs)(M,{tint:i.getTint(e),className:`aspect-[4/3] rounded-lg border border-border`,children:[(0,f.jsx)(N,{src:y,alt:i.getAlt(e)||_,type:v,className:`size-full object-cover`}),v===`video`&&!!i.getDuration(e)&&(0,f.jsxs)(a.t,{className:`absolute bottom-2 right-2 bg-foreground text-background`,children:[(0,f.jsx)(p.Play,{className:`size-3 fill-current`}),i.getDuration(e)]})]}),(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,className:`break-words`,children:_}),(0,f.jsx)(`dl`,{className:`media-library-detail-panel--facts grid gap-2`,children:[[o.detail.type,A(v,o)],[o.detail.size,x(i.getSize(e))||o.unknownSize],[o.detail.dimensions,S(e,i)||`-`],[o.detail.uploaded,String(i.getUploadedAt(e)??`-`)],[o.detail.usedIn,j(i.getUsageCount(e),o)]].map(([e,t])=>(0,f.jsxs)(`div`,{className:`flex justify-between gap-4`,children:[(0,f.jsx)(`dt`,{children:(0,f.jsx)(r.n,{tag:`span`,size:`xs`,type:`secondary`,children:e})}),(0,f.jsx)(`dd`,{className:`m-0 text-right`,children:(0,f.jsx)(r.n,{tag:`span`,size:`xs`,weight:`medium`,children:t})})]},e))}),(0,f.jsx)(l.n,{label:o.detail.altText,children:(0,f.jsx)(s.t,{value:i.getAlt(e)??``,placeholder:o.detail.altPlaceholder,onChange:e=>m({alt:e.target.value})})}),(0,f.jsx)(l.n,{label:o.detail.collection,children:(0,f.jsx)(c.H,{value:b,options:t.map(e=>({value:e.value,label:String(e.label)})),"aria-label":o.detail.collection,onChange:e=>m({collection:e})})}),(0,f.jsx)(l.n,{label:o.detail.tags,children:(0,f.jsx)(s.t,{value:C.join(`, `),placeholder:o.detail.tagsPlaceholder,onChange:e=>m({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,f.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,f.jsxs)(`div`,{children:[(0,f.jsx)(r.n,{weight:`semibold`,size:`xs`,children:o.detail.public}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,children:w?o.detail.publicHint:o.detail.privateHint})]}),(0,f.jsx)(u.n,{checked:w,onCheckedChange:e=>m({public:e})})]}),(0,f.jsxs)(`div`,{className:`media-library-detail-panel--actions flex flex-wrap gap-2`,children:[(0,f.jsxs)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,children:[(0,f.jsx)(p.UploadCloud,{className:`size-3.5`}),o.detail.replace]}),(0,f.jsxs)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,onClick:h,children:[(0,f.jsx)(p.Trash2,{className:`size-3.5`}),o.detail.delete]})]})]})]})}function ie({stagedFiles:e,uploadOptions:t,collections:i=[],uploading:o=!1,strings:d,onFiles:m,onRemoveFile:h,onOptionsChange:_,empty:v}){return(0,f.jsxs)(`div`,{className:`media-library-upload-panel--component grid gap-4 p-4`,children:[(0,f.jsx)(c.b,{onDrop:m,accept:`image/*,video/*`,multiple:!0,size:`base`,strings:{instruction:d.upload.dropTitle,helper:d.upload.dropHint,dragOver:d.upload.dragOver}}),e.length>0?(0,f.jsx)(`div`,{className:`media-library-upload-panel--staged grid gap-2`,children:e.map(e=>(0,f.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,f.jsx)(M,{className:`size-10 rounded-md`,children:e.src?(0,f.jsx)(`img`,{src:e.src,alt:e.name,className:`size-full object-cover`}):(0,f.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:k(e.type,`size-4`)})}),(0,f.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,f.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,f.jsx)(r.n,{weight:`semibold`,size:`xs`,className:`truncate`,children:e.name}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,className:`ml-auto shrink-0`,children:x(e.size)})]}),(e.status===`uploading`||e.status===`done`)&&(0,f.jsx)(`div`,{className:`mt-2 h-1 overflow-hidden rounded-full bg-muted`,children:(0,f.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${e.progress}%`}})}),e.status===`error`&&(0,f.jsx)(r.n,{size:`xxs`,type:`error`,children:e.error})]}),e.status===`done`?(0,f.jsx)(a.t,{variant:`success`,children:d.upload.done}):e.status===`uploading`?(0,f.jsxs)(r.n,{size:`xxs`,type:`secondary`,className:`tabular-nums`,children:[Math.round(e.progress),`%`]}):(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:o,"aria-label":g(d.upload.removeFile,{name:e.name}),onClick:()=>h(e.id),children:(0,f.jsx)(p.X,{className:`size-3.5`})})]},e.id))}):v,(0,f.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,f.jsx)(l.n,{label:d.upload.collection,children:(0,f.jsx)(c.H,{value:t.collection??i[0]?.value,options:i.map(e=>({value:e.value,label:String(e.label)})),"aria-label":d.upload.collection,onChange:e=>_({collection:e})})}),(0,f.jsx)(l.n,{label:d.upload.tags,children:(0,f.jsx)(s.t,{value:t.tags.join(`, `),placeholder:d.upload.tagsPlaceholder,onChange:e=>_({tags:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})})}),(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-4 md:self-end`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(r.n,{weight:`semibold`,size:`xs`,children:d.upload.public}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,children:d.upload.publicHint})]}),(0,f.jsx)(u.n,{checked:t.public,onCheckedChange:e=>_({public:e})})]})]})]})}function ae({tab:e,selectedIds:i,selectionMode:a,stagedFiles:o,strings:s,onClearSelection:c,className:l}){let u=i.length,d=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,f.jsx)(`div`,{className:m,"aria-live":`polite`,children:(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`truncate`,children:p===0?s.footer.noFiles:g(s.footer.stagedSummary,{count:p,size:x(d)})})}):(0,f.jsx)(`div`,{className:m,"aria-live":`polite`,children:u>0?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(r.n,{weight:`semibold`,size:`xs`,className:`whitespace-nowrap`,children:g(s.footer.selectedCount,{count:u})}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`xs`,onClick:c,children:s.footer.clear})]}):(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`truncate`,children:a===`single`?s.footer.pickOne:s.footer.pickMany})})}function R({tab:e,selectedItems:r,selectedIds:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:d,onUpload:p,onCancelUpload:m,className:h}){let _=i.length,v=a.length;return e===`upload`?(0,f.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,h),children:[(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,disabled:o,onClick:m,children:l??s.footer.cancel}),(0,f.jsx)(n.t,{type:`button`,disabled:v===0||o,onClick:p,loading:o,loadingLabels:{loading:s.footer.uploading},children:v<=1?s.footer.upload:g(s.footer.uploadMany,{count:v})})]}):(0,f.jsxs)(`div`,{className:t.cn(`media-library-footer-actions--component flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,h),children:[(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:u,children:l??s.footer.cancel}),(0,f.jsx)(n.t,{type:`button`,disabled:_===0,onClick:d,children:c??(_===0?s.footer.confirmEmpty:r.length===1?s.footer.confirmOne:g(s.footer.confirmMany,{count:_}))})]})}function oe({tab:e,selectedItems:n,selectedIds:r,selectionMode:i,stagedFiles:a,uploading:o=!1,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:d,onClearSelection:p,onUpload:m,onCancelUpload:h,chrome:g=`section`,className:_}){return(0,f.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,f.jsx)(ae,{tab:e,selectedIds:r,selectionMode:i,stagedFiles:a,strings:s,onClearSelection:p}),(0,f.jsx)(R,{tab:e,selectedItems:n,selectedIds:r,stagedFiles:a,uploading:o,strings:s,confirmLabel:c,cancelLabel:l,onCancel:u,onConfirm:d,onUpload:m,onCancelUpload:h})]})}var se=(0,d.createContext)(null);function ce(e,t,n){return(0,d.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 le({title:i,description:a,confirmLabel:s,cancelLabel:c,selectionMode:l=`multiple`,density:u=`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:D,collections:k,value:A,defaultValue:j,onValueChange:M,onItemUpdate:N,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(h,w),V=O({items:te,fetcher:ne,accessors:D,collections:k,selectionMode:l,value:A,defaultValue:j,onValueChange:M,onItemUpdate:N,onItemDelete:le,onUpload:ue,onError:de,initialTab:fe,defaultView:pe,defaultQuery:z,defaultType:me,defaultCollection:he,defaultSort:ge,defaultUploadOptions:_e}),H=ce(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,d.useContext)(se),ye=!T?.footer,K=G&&ye?(0,f.jsx)(ae,{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?g(B.countAll,{count:V.totalCount}):g(B.countFiltered,{count:V.filteredCount,total:V.totalCount}),xe=T?.footer??(G?(0,f.jsx)(R,{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,f.jsx)(oe,{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,f.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-[min(760px,calc(100vh-7rem))]`,ee),...ve,children:[Y&&(0,f.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,f.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[T?.headerStart,(i||a)&&(0,f.jsxs)(`div`,{className:`min-w-0`,children:[!!i&&(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,children:i}),!!a&&(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:a})]})]}),J&&(0,f.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,f.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[v&&(0,f.jsxs)(`div`,{className:`media-library--tabs flex items-center rounded-md bg-muted p-0.5`,role:`tablist`,children:[(0,f.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,f.jsx)(p.ImageIcon,{className:`size-3.5`}),B.tabs.library]}),(0,f.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,f.jsx)(p.UploadCloud,{className:`size-3.5`}),B.tabs.upload,V.stagedFiles.length>0&&(0,f.jsx)(`span`,{className:`rounded-full bg-background/20 px-1.5 text-xxs tabular-nums`,children:V.stagedFiles.length})]})]}),T?.headerEnd]}),K]})]}),(0,f.jsxs)(`div`,{className:`media-library--body flex min-h-0 flex-1`,children:[U===`upload`?(0,f.jsx)(`div`,{className:`min-w-0 flex-1 overflow-y-auto`,children:(0,f.jsx)(ie,{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,f.jsxs)(`div`,{className:t.cn(`media-library--library min-w-0 flex-1 flex-col`,W?`hidden lg:flex`:`flex`),children:[(0,f.jsxs)(`div`,{className:`media-library--toolbar border-b border-border/70 px-4 py-3`,children:[(0,f.jsx)(F,{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,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`mt-2`,"aria-live":`polite`,children:be})]}),(0,f.jsx)(`div`,{className:`media-library--results min-h-0 flex-1 overflow-y-auto p-4`,children:V.loading?T?.loading??(0,f.jsx)(`div`,{className:`flex min-h-64 items-center justify-center`,children:(0,f.jsx)(r.n,{type:`secondary`,children:B.loading})}):V.error?T?.error??(0,f.jsxs)(o.t,{variant:`destructive`,children:[(0,f.jsx)(o.i,{children:B.errorTitle}),(0,f.jsx)(o.r,{children:B.errorDescription})]}):V.visibleItems.length===0?T?.empty??(0,f.jsx)(P,{title:V.hasFilters?B.emptyFilteredTitle:B.emptyLibraryTitle,description:V.hasFilters?B.emptyFilteredDescription:B.emptyLibraryDescription,action:V.hasFilters?(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,onClick:V.clearFilters,children:B.clearFilters}):v?(0,f.jsxs)(n.t,{type:`button`,onClick:()=>V.setTab(`upload`),children:[(0,f.jsx)(p.UploadCloud,{className:`size-3.5`}),B.uploadMedia]}):void 0}):V.view===`table`?(0,f.jsx)(`div`,{className:`overflow-x-auto`,children:(0,f.jsx)(L,{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,f.jsx)(`div`,{className:t.cn(`media-library--grid grid gap-3`,u===`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,f.jsx)(`div`,{children:r},t):(0,f.jsx)(I,{item:e,selected:n.selected,density:u,showMeta:_,selectionMode:l,accessors:V.accessors,strings:B,onToggle:n.toggle,onDetails:n.openDetails},t)})})})]}),U===`library`&&(0,f.jsx)(re,{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,m.createPortal)(xe,G.element):null:xe]})}function ue({open:n,onOpenChange:r,trigger:a,dialogTitle:o,dialogDescription:s,onClose:c,className:l,dialogClassName:u,contentClassName:p,closeOnEscape:m=!0,closeOnBackdropClick:g=!0,..._}){let v=e.useStrings(h,_.strings),[y,b]=(0,d.useState)(!1),[x,S]=(0,d.useState)(null),C=n!==void 0,w=C?n:y,T=e=>{C||b(e),r?.(e)},E=()=>{T(!1),c?.()};return(0,f.jsx)(se.Provider,{value:{element:x},children:(0,f.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,f.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))]`,u),contentClassName:t.cn(`media-library-dialog--body flex min-h-0 flex-col overflow-hidden p-0`,p),closeOnBackdropClick:g,closeOnEscape:m,children:(0,f.jsx)(le,{..._,onClose:E,className:t.cn(`media-library-dialog--library rounded-none border-0`,l),heightClassName:_.heightClassName??`min-h-0 flex-1`,strings:_.strings})})})}function de(e,t,n){let r=e.slice(),[i]=r.splice(t,1);return i===void 0||r.splice(n,0,i),r}function fe({items:i,accessors:o,title:s,description:c,primaryId:l,onPrimaryChange:u,onRemove:d,onReorder:m,onAdd:_,maxItems:v,layout:y=`field`,density:S=`comfortable`,readOnly:C=!1,empty:w,action:T,renderItem:E,strings:ee,className:te,...ne}){let D=e.useStrings(h,ee),O=b(o),k=i.length,A=l??(k>0?O.getId(i[0]):void 0),j=!C&&!!_&&(v===void 0||k<v),M=j&&(y===`field`||k>0)?(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,icon:p.Plus,onClick:_,children:D.gallery.add}):v!==void 0&&k>=v?(0,f.jsx)(a.t,{variant:`secondary`,children:D.gallery.maxReached}):null,N=(e,t)=>{if(t<0||t>=k||e===t)return;let n=de(i,e,t);m?.(n.map(e=>O.getId(e)),n)},F=!!(s||c||T||M),I=k===0&&y!==`field`,L=()=>!j||y!==`field`?null:(0,f.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,f.jsx)(p.Plus,{className:`size-4`}),(0,f.jsx)(`span`,{className:`sr-only`,children:D.gallery.addTile})]});return(0,f.jsxs)(`section`,{className:t.cn(`media-resource-gallery--component rounded-lg border border-border bg-card shadow-xs`,te),"data-layout":y,"data-density":S,...ne,children:[F&&(0,f.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,f.jsxs)(`div`,{className:`min-w-0`,children:[!!s&&(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,children:s}),!!c&&(0,f.jsx)(r.n,{size:`xs`,type:`secondary`,className:`mt-0.5`,children:c})]}),(0,f.jsx)(`div`,{className:`media-resource-gallery--actions flex flex-wrap items-center gap-2`,children:T??M})]}),I?(0,f.jsx)(`div`,{className:`media-resource-gallery--empty p-4 pt-0`,children:w??(0,f.jsx)(P,{title:D.gallery.emptyTitle,description:D.gallery.emptyDescription,action:j?(0,f.jsx)(n.t,{type:`button`,icon:p.ImagePlus,onClick:_,children:D.gallery.add}):void 0})}):(0,f.jsxs)(`div`,{className:t.cn(`media-resource-gallery--items p-4`,F&&`pt-0`,y===`list`?`grid gap-2`:y===`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,h=o===A,_=O.getPublic(e)===!1,v=O.getDuration(e),b=i>0,S=i<k-1,w=E?.(e,{id:o,index:i,total:k,primary:h,accessors:O,canMovePrevious:b,canMoveNext:S,setPrimary:()=>u?.(o,e),remove:()=>d?.(o,e),movePrevious:()=>N(i,i-1),moveNext:()=>N(i,i+1)});return w?(0,f.jsx)(`div`,{children:w},o):y===`field`?(0,f.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`,h&&`col-span-2 row-span-2 min-h-52`),"data-primary":h||void 0,children:[l?(0,f.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,f.jsx)(`div`,{className:`flex size-full items-center justify-center bg-muted text-muted-foreground`,children:(0,f.jsx)(p.File,{className:h?`size-7`:`size-5`})}),h&&(0,f.jsx)(a.t,{variant:`secondary`,className:`absolute left-2 top-2 bg-background/90 shadow-xs`,children:D.gallery.cover}),c===`video`&&!!v&&(0,f.jsxs)(a.t,{variant:`secondary`,className:`absolute bottom-2 left-2 bg-foreground text-background`,children:[(0,f.jsx)(p.Play,{className:`size-3 fill-current`}),v]}),_&&(0,f.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,f.jsx)(p.Lock,{className:`size-3`})}),!C&&(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`solid`,size:`icon-xs`,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:()=>d?.(o,e),children:(0,f.jsx)(p.X,{className:`size-3.5`})})]},o):y===`list`?(0,f.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":h||void 0,children:[(0,f.jsx)(`div`,{className:`relative size-12 shrink-0 overflow-hidden rounded-md bg-muted`,children:l?(0,f.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,f.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,f.jsx)(p.File,{className:`size-4`})})}),(0,f.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,f.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),h&&(0,f.jsx)(a.t,{variant:`info`,children:D.gallery.primary})]}),(0,f.jsxs)(r.n,{size:`xxs`,type:`secondary`,children:[g(D.gallery.itemPosition,{index:i+1,total:k}),` · `,x(O.getSize(e))||D.unknownSize]})]}),!C&&(0,f.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:h,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,f.jsx)(p.Star,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:!b,"aria-label":D.gallery.movePrevious,onClick:()=>N(i,i-1),children:(0,f.jsx)(p.ArrowLeft,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>N(i,i+1),children:(0,f.jsx)(p.ArrowRight,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-xs`,"aria-label":D.gallery.remove,onClick:()=>d?.(o,e),children:(0,f.jsx)(p.Trash2,{className:`size-3.5`})})]})]},o):(0,f.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":h||void 0,children:[(0,f.jsxs)(`div`,{className:`relative aspect-[4/3] bg-muted`,children:[l?(0,f.jsx)(`img`,{src:l,alt:m,loading:`lazy`,className:`size-full object-cover`}):(0,f.jsx)(`div`,{className:`flex size-full items-center justify-center text-muted-foreground`,children:(0,f.jsx)(p.File,{className:`size-6`})}),(0,f.jsxs)(`div`,{className:`absolute left-2 top-2 flex flex-wrap gap-1`,children:[h&&(0,f.jsx)(a.t,{variant:`info`,children:D.gallery.primary}),(0,f.jsx)(a.t,{variant:`secondary`,children:g(D.gallery.itemPosition,{index:i+1,total:k})})]})]}),(0,f.jsxs)(`div`,{className:`media-resource-gallery--item-body grid gap-2 p-3`,children:[(0,f.jsxs)(`div`,{className:`min-w-0`,children:[(0,f.jsx)(r.n,{tag:`div`,weight:`semibold`,size:`xs`,className:`truncate`,children:s}),(0,f.jsx)(r.n,{size:`xxs`,type:`secondary`,children:x(O.getSize(e))||D.unknownSize})]}),!C&&(0,f.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:h,"aria-label":D.gallery.setPrimary,onClick:()=>u?.(o,e),children:(0,f.jsx)(p.Star,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:!b,"aria-label":D.gallery.movePrevious,onClick:()=>N(i,i-1),children:(0,f.jsx)(p.ArrowLeft,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-xs`,disabled:!S,"aria-label":D.gallery.moveNext,onClick:()=>N(i,i+1),children:(0,f.jsx)(p.ArrowRight,{className:`size-3.5`})}),(0,f.jsx)(n.t,{type:`button`,variant:`error`,buttonStyle:`ghost`,size:`icon-xs`,className:`ml-auto`,"aria-label":D.gallery.remove,onClick:()=>d?.(o,e),children:(0,f.jsx)(p.Trash2,{className:`size-3.5`})})]})]})]},o)}),L()]})]})}exports.MediaLibrary=le,exports.MediaLibraryCard=I,exports.MediaLibraryDetailPanel=re,exports.MediaLibraryDialog=ue,exports.MediaLibraryEmptyState=P,exports.MediaLibraryFooter=oe,exports.MediaLibraryTable=L,exports.MediaLibraryToolbar=F,exports.MediaLibraryUploadPanel=ie,exports.MediaResourceGallery=fe,exports.defaultMediaLibraryStrings=h,exports.formatMediaLibrarySize=x,exports.formatMediaLibraryString=g,exports.getMediaLibraryDimensions=S,exports.resolveMediaLibraryAccessors=b,exports.useMediaLibrary=O;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/button-Bd5bEIiB.cjs"),r=require("../../../_shared/typography-CO9uwZhF.cjs"),i=require("../../../_shared/overlays-Diy_H0Au.cjs"),a=require("../../../_shared/badge-BeSKxX1u.cjs"),o=require("../../../_shared/alert-V0V36Sny.cjs"),s=require("../../../_shared/input-CB6hxh-5.cjs"),c=require("../../../_shared/forms-rmKcy5uO.cjs"),l=require("../../../_shared/display-Bin2vVex.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;
2
2
  //# sourceMappingURL=index.cjs.map