@univers42/ui-collection 1.0.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 (246) hide show
  1. package/README.md +652 -0
  2. package/dist/components/blocks/ColorPickerBoard.d.ts +2 -0
  3. package/dist/components/blocks/ColorPickerBoard.d.ts.map +1 -0
  4. package/dist/components/blocks/ColorPickerBoard.js +13 -0
  5. package/dist/components/blocks/ColorPickerBoard.js.map +1 -0
  6. package/dist/components/blocks/EmojiPickerBoard.d.ts +2 -0
  7. package/dist/components/blocks/EmojiPickerBoard.d.ts.map +1 -0
  8. package/dist/components/blocks/EmojiPickerBoard.js +13 -0
  9. package/dist/components/blocks/EmojiPickerBoard.js.map +1 -0
  10. package/dist/components/blocks/IconPickerBoard.d.ts +2 -0
  11. package/dist/components/blocks/IconPickerBoard.d.ts.map +1 -0
  12. package/dist/components/blocks/IconPickerBoard.js +13 -0
  13. package/dist/components/blocks/IconPickerBoard.js.map +1 -0
  14. package/dist/components/blocks/SlashMenuIcons.d.ts +2 -0
  15. package/dist/components/blocks/SlashMenuIcons.d.ts.map +1 -0
  16. package/dist/components/blocks/SlashMenuIcons.js +2 -0
  17. package/dist/components/blocks/SlashMenuIcons.js.map +1 -0
  18. package/dist/components/blocks/SlashMenuIconsBasic.d.ts +2 -0
  19. package/dist/components/blocks/SlashMenuIconsBasic.d.ts.map +1 -0
  20. package/dist/components/blocks/SlashMenuIconsBasic.js +2 -0
  21. package/dist/components/blocks/SlashMenuIconsBasic.js.map +1 -0
  22. package/dist/components/blocks/SlashMenuIconsExtended.d.ts +2 -0
  23. package/dist/components/blocks/SlashMenuIconsExtended.d.ts.map +1 -0
  24. package/dist/components/blocks/SlashMenuIconsExtended.js +2 -0
  25. package/dist/components/blocks/SlashMenuIconsExtended.js.map +1 -0
  26. package/dist/components/blocks/slashMenuCatalog.d.ts +2 -0
  27. package/dist/components/blocks/slashMenuCatalog.d.ts.map +1 -0
  28. package/dist/components/blocks/slashMenuCatalog.js +2 -0
  29. package/dist/components/blocks/slashMenuCatalog.js.map +1 -0
  30. package/dist/library/catalogs/index.d.ts +3 -0
  31. package/dist/library/catalogs/index.d.ts.map +1 -0
  32. package/dist/library/catalogs/index.js +3 -0
  33. package/dist/library/catalogs/index.js.map +1 -0
  34. package/dist/library/catalogs/slashMenuCatalog.d.ts +17 -0
  35. package/dist/library/catalogs/slashMenuCatalog.d.ts.map +1 -0
  36. package/dist/library/catalogs/slashMenuCatalog.js +294 -0
  37. package/dist/library/catalogs/slashMenuCatalog.js.map +1 -0
  38. package/dist/library/catalogs/types.d.ts +4 -0
  39. package/dist/library/catalogs/types.d.ts.map +1 -0
  40. package/dist/library/catalogs/types.js +13 -0
  41. package/dist/library/catalogs/types.js.map +1 -0
  42. package/dist/library/components/react/analytics/formula/FormulaCharts.d.ts +22 -0
  43. package/dist/library/components/react/analytics/formula/FormulaCharts.d.ts.map +1 -0
  44. package/dist/library/components/react/analytics/formula/FormulaCharts.js +91 -0
  45. package/dist/library/components/react/analytics/formula/FormulaCharts.js.map +1 -0
  46. package/dist/library/components/react/analytics/formula/TextDistributionCard.d.ts +8 -0
  47. package/dist/library/components/react/analytics/formula/TextDistributionCard.d.ts.map +1 -0
  48. package/dist/library/components/react/analytics/formula/TextDistributionCard.js +43 -0
  49. package/dist/library/components/react/analytics/formula/TextDistributionCard.js.map +1 -0
  50. package/dist/library/components/react/analytics/formula/index.d.ts +3 -0
  51. package/dist/library/components/react/analytics/formula/index.d.ts.map +1 -0
  52. package/dist/library/components/react/analytics/formula/index.js +14 -0
  53. package/dist/library/components/react/analytics/formula/index.js.map +1 -0
  54. package/dist/library/components/react/analytics/index.d.ts +3 -0
  55. package/dist/library/components/react/analytics/index.d.ts.map +1 -0
  56. package/dist/library/components/react/analytics/index.js +14 -0
  57. package/dist/library/components/react/analytics/index.js.map +1 -0
  58. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCards.d.ts +21 -0
  59. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCards.d.ts.map +1 -0
  60. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCards.js +77 -0
  61. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCards.js.map +1 -0
  62. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCharts.d.ts +61 -0
  63. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCharts.d.ts.map +1 -0
  64. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCharts.js +58 -0
  65. package/dist/library/components/react/analytics/relation-rollup/RelationRollupCharts.js.map +1 -0
  66. package/dist/library/components/react/analytics/relation-rollup/RollupEditorHelpers.d.ts +51 -0
  67. package/dist/library/components/react/analytics/relation-rollup/RollupEditorHelpers.d.ts.map +1 -0
  68. package/dist/library/components/react/analytics/relation-rollup/RollupEditorHelpers.js +82 -0
  69. package/dist/library/components/react/analytics/relation-rollup/RollupEditorHelpers.js.map +1 -0
  70. package/dist/library/components/react/analytics/relation-rollup/index.d.ts +4 -0
  71. package/dist/library/components/react/analytics/relation-rollup/index.d.ts.map +1 -0
  72. package/dist/library/components/react/analytics/relation-rollup/index.js +15 -0
  73. package/dist/library/components/react/analytics/relation-rollup/index.js.map +1 -0
  74. package/dist/library/components/react/asset-picker/AssetPickerBoard.d.ts +20 -0
  75. package/dist/library/components/react/asset-picker/AssetPickerBoard.d.ts.map +1 -0
  76. package/dist/library/components/react/asset-picker/AssetPickerBoard.js +229 -0
  77. package/dist/library/components/react/asset-picker/AssetPickerBoard.js.map +1 -0
  78. package/dist/library/components/react/asset-picker/defaultTabs.d.ts +28 -0
  79. package/dist/library/components/react/asset-picker/defaultTabs.d.ts.map +1 -0
  80. package/dist/library/components/react/asset-picker/defaultTabs.js +104 -0
  81. package/dist/library/components/react/asset-picker/defaultTabs.js.map +1 -0
  82. package/dist/library/components/react/asset-picker/index.d.ts +4 -0
  83. package/dist/library/components/react/asset-picker/index.d.ts.map +1 -0
  84. package/dist/library/components/react/asset-picker/index.js +4 -0
  85. package/dist/library/components/react/asset-picker/index.js.map +1 -0
  86. package/dist/library/components/react/asset-picker/types.d.ts +45 -0
  87. package/dist/library/components/react/asset-picker/types.d.ts.map +1 -0
  88. package/dist/library/components/react/asset-picker/types.js +2 -0
  89. package/dist/library/components/react/asset-picker/types.js.map +1 -0
  90. package/dist/library/components/react/charts/BarCharts.d.ts +8 -0
  91. package/dist/library/components/react/charts/BarCharts.d.ts.map +1 -0
  92. package/dist/library/components/react/charts/BarCharts.js +38 -0
  93. package/dist/library/components/react/charts/BarCharts.js.map +1 -0
  94. package/dist/library/components/react/charts/DonutPieChart.d.ts +8 -0
  95. package/dist/library/components/react/charts/DonutPieChart.d.ts.map +1 -0
  96. package/dist/library/components/react/charts/DonutPieChart.js +52 -0
  97. package/dist/library/components/react/charts/DonutPieChart.js.map +1 -0
  98. package/dist/library/components/react/charts/LineChart.d.ts +7 -0
  99. package/dist/library/components/react/charts/LineChart.d.ts.map +1 -0
  100. package/dist/library/components/react/charts/LineChart.js +34 -0
  101. package/dist/library/components/react/charts/LineChart.js.map +1 -0
  102. package/dist/library/components/react/charts/MultiLineChart.d.ts +23 -0
  103. package/dist/library/components/react/charts/MultiLineChart.d.ts.map +1 -0
  104. package/dist/library/components/react/charts/MultiLineChart.js +93 -0
  105. package/dist/library/components/react/charts/MultiLineChart.js.map +1 -0
  106. package/dist/library/components/react/charts/SVGCharts.d.ts +17 -0
  107. package/dist/library/components/react/charts/SVGCharts.d.ts.map +1 -0
  108. package/dist/library/components/react/charts/SVGCharts.js +63 -0
  109. package/dist/library/components/react/charts/SVGCharts.js.map +1 -0
  110. package/dist/library/components/react/charts/chartUtils.d.ts +19 -0
  111. package/dist/library/components/react/charts/chartUtils.d.ts.map +1 -0
  112. package/dist/library/components/react/charts/chartUtils.js +64 -0
  113. package/dist/library/components/react/charts/chartUtils.js.map +1 -0
  114. package/dist/library/components/react/charts/index.d.ts +8 -0
  115. package/dist/library/components/react/charts/index.d.ts.map +1 -0
  116. package/dist/library/components/react/charts/index.js +18 -0
  117. package/dist/library/components/react/charts/index.js.map +1 -0
  118. package/dist/library/components/react/color-picker/ColorPickerBoard.d.ts +18 -0
  119. package/dist/library/components/react/color-picker/ColorPickerBoard.d.ts.map +1 -0
  120. package/dist/library/components/react/color-picker/ColorPickerBoard.js +382 -0
  121. package/dist/library/components/react/color-picker/ColorPickerBoard.js.map +1 -0
  122. package/dist/library/components/react/color-picker/index.d.ts +2 -0
  123. package/dist/library/components/react/color-picker/index.d.ts.map +1 -0
  124. package/dist/library/components/react/color-picker/index.js +13 -0
  125. package/dist/library/components/react/color-picker/index.js.map +1 -0
  126. package/dist/library/components/react/emoji-picker/EmojiPickerBoard.d.ts +14 -0
  127. package/dist/library/components/react/emoji-picker/EmojiPickerBoard.d.ts.map +1 -0
  128. package/dist/library/components/react/emoji-picker/EmojiPickerBoard.js +26 -0
  129. package/dist/library/components/react/emoji-picker/EmojiPickerBoard.js.map +1 -0
  130. package/dist/library/components/react/emoji-picker/emojiPickerData.d.ts +10 -0
  131. package/dist/library/components/react/emoji-picker/emojiPickerData.d.ts.map +1 -0
  132. package/dist/library/components/react/emoji-picker/emojiPickerData.js +27 -0
  133. package/dist/library/components/react/emoji-picker/emojiPickerData.js.map +1 -0
  134. package/dist/library/components/react/emoji-picker/index.d.ts +3 -0
  135. package/dist/library/components/react/emoji-picker/index.d.ts.map +1 -0
  136. package/dist/library/components/react/emoji-picker/index.js +14 -0
  137. package/dist/library/components/react/emoji-picker/index.js.map +1 -0
  138. package/dist/library/components/react/formula/ExampleBlock.d.ts +8 -0
  139. package/dist/library/components/react/formula/ExampleBlock.d.ts.map +1 -0
  140. package/dist/library/components/react/formula/ExampleBlock.js +41 -0
  141. package/dist/library/components/react/formula/ExampleBlock.js.map +1 -0
  142. package/dist/library/components/react/formula/index.d.ts +2 -0
  143. package/dist/library/components/react/formula/index.d.ts.map +1 -0
  144. package/dist/library/components/react/formula/index.js +13 -0
  145. package/dist/library/components/react/formula/index.js.map +1 -0
  146. package/dist/library/components/react/icon-picker/IconPickerBoard.d.ts +14 -0
  147. package/dist/library/components/react/icon-picker/IconPickerBoard.d.ts.map +1 -0
  148. package/dist/library/components/react/icon-picker/IconPickerBoard.js +26 -0
  149. package/dist/library/components/react/icon-picker/IconPickerBoard.js.map +1 -0
  150. package/dist/library/components/react/icon-picker/iconPickerData.d.ts +11 -0
  151. package/dist/library/components/react/icon-picker/iconPickerData.d.ts.map +1 -0
  152. package/dist/library/components/react/icon-picker/iconPickerData.js +52 -0
  153. package/dist/library/components/react/icon-picker/iconPickerData.js.map +1 -0
  154. package/dist/library/components/react/icon-picker/index.d.ts +3 -0
  155. package/dist/library/components/react/icon-picker/index.d.ts.map +1 -0
  156. package/dist/library/components/react/icon-picker/index.js +14 -0
  157. package/dist/library/components/react/icon-picker/index.js.map +1 -0
  158. package/dist/library/components/react/index.d.ts +10 -0
  159. package/dist/library/components/react/index.d.ts.map +1 -0
  160. package/dist/library/components/react/index.js +21 -0
  161. package/dist/library/components/react/index.js.map +1 -0
  162. package/dist/library/components/react/primitives/SettingsPrimitives.d.ts +39 -0
  163. package/dist/library/components/react/primitives/SettingsPrimitives.d.ts.map +1 -0
  164. package/dist/library/components/react/primitives/SettingsPrimitives.js +35 -0
  165. package/dist/library/components/react/primitives/SettingsPrimitives.js.map +1 -0
  166. package/dist/library/components/react/primitives/index.d.ts +2 -0
  167. package/dist/library/components/react/primitives/index.d.ts.map +1 -0
  168. package/dist/library/components/react/primitives/index.js +13 -0
  169. package/dist/library/components/react/primitives/index.js.map +1 -0
  170. package/dist/library/components/react/theme/ThemeToggle.d.ts +12 -0
  171. package/dist/library/components/react/theme/ThemeToggle.d.ts.map +1 -0
  172. package/dist/library/components/react/theme/ThemeToggle.js +57 -0
  173. package/dist/library/components/react/theme/ThemeToggle.js.map +1 -0
  174. package/dist/library/components/react/theme/index.d.ts +2 -0
  175. package/dist/library/components/react/theme/index.d.ts.map +1 -0
  176. package/dist/library/components/react/theme/index.js +13 -0
  177. package/dist/library/components/react/theme/index.js.map +1 -0
  178. package/dist/library/icons/react/cn.d.ts +2 -0
  179. package/dist/library/icons/react/cn.d.ts.map +1 -0
  180. package/dist/library/icons/react/cn.js +15 -0
  181. package/dist/library/icons/react/cn.js.map +1 -0
  182. package/dist/library/icons/react/index.d.ts +2 -0
  183. package/dist/library/icons/react/index.d.ts.map +1 -0
  184. package/dist/library/icons/react/index.js +2 -0
  185. package/dist/library/icons/react/index.js.map +1 -0
  186. package/dist/library/icons/react/slash-menu/SlashMenuIconsBasic.d.ts +20 -0
  187. package/dist/library/icons/react/slash-menu/SlashMenuIconsBasic.d.ts.map +1 -0
  188. package/dist/library/icons/react/slash-menu/SlashMenuIconsBasic.js +72 -0
  189. package/dist/library/icons/react/slash-menu/SlashMenuIconsBasic.js.map +1 -0
  190. package/dist/library/icons/react/slash-menu/SlashMenuIconsExtended.d.ts +14 -0
  191. package/dist/library/icons/react/slash-menu/SlashMenuIconsExtended.d.ts.map +1 -0
  192. package/dist/library/icons/react/slash-menu/SlashMenuIconsExtended.js +54 -0
  193. package/dist/library/icons/react/slash-menu/SlashMenuIconsExtended.js.map +1 -0
  194. package/dist/library/icons/react/slash-menu/index.d.ts +3 -0
  195. package/dist/library/icons/react/slash-menu/index.d.ts.map +1 -0
  196. package/dist/library/icons/react/slash-menu/index.js +14 -0
  197. package/dist/library/icons/react/slash-menu/index.js.map +1 -0
  198. package/dist/library/index.d.ts +11 -0
  199. package/dist/library/index.d.ts.map +1 -0
  200. package/dist/library/index.js +9 -0
  201. package/dist/library/index.js.map +1 -0
  202. package/dist/library/media/collections/emojis.d.ts +2 -0
  203. package/dist/library/media/collections/emojis.d.ts.map +1 -0
  204. package/dist/library/media/collections/emojis.js +44 -0
  205. package/dist/library/media/collections/emojis.js.map +1 -0
  206. package/dist/library/media/collections/index.d.ts +12 -0
  207. package/dist/library/media/collections/index.d.ts.map +1 -0
  208. package/dist/library/media/collections/index.js +34 -0
  209. package/dist/library/media/collections/index.js.map +1 -0
  210. package/dist/library/media/collections/other-media.d.ts +2 -0
  211. package/dist/library/media/collections/other-media.d.ts.map +1 -0
  212. package/dist/library/media/collections/other-media.js +60 -0
  213. package/dist/library/media/collections/other-media.js.map +1 -0
  214. package/dist/library/media/collections/photos.d.ts +2 -0
  215. package/dist/library/media/collections/photos.d.ts.map +1 -0
  216. package/dist/library/media/collections/photos.js +25 -0
  217. package/dist/library/media/collections/photos.js.map +1 -0
  218. package/dist/library/media/collections/svg.d.ts +2 -0
  219. package/dist/library/media/collections/svg.d.ts.map +1 -0
  220. package/dist/library/media/collections/svg.js +51 -0
  221. package/dist/library/media/collections/svg.js.map +1 -0
  222. package/dist/library/media/collections/videos.d.ts +2 -0
  223. package/dist/library/media/collections/videos.d.ts.map +1 -0
  224. package/dist/library/media/collections/videos.js +35 -0
  225. package/dist/library/media/collections/videos.js.map +1 -0
  226. package/dist/library/media/index.d.ts +6 -0
  227. package/dist/library/media/index.d.ts.map +1 -0
  228. package/dist/library/media/index.js +6 -0
  229. package/dist/library/media/index.js.map +1 -0
  230. package/dist/library/media/providers.d.ts +13 -0
  231. package/dist/library/media/providers.d.ts.map +1 -0
  232. package/dist/library/media/providers.js +39 -0
  233. package/dist/library/media/providers.js.map +1 -0
  234. package/dist/library/media/registry.d.ts +19 -0
  235. package/dist/library/media/registry.d.ts.map +1 -0
  236. package/dist/library/media/registry.js +35 -0
  237. package/dist/library/media/registry.js.map +1 -0
  238. package/dist/library/media/types.d.ts +53 -0
  239. package/dist/library/media/types.d.ts.map +1 -0
  240. package/dist/library/media/types.js +26 -0
  241. package/dist/library/media/types.js.map +1 -0
  242. package/dist/library/media/utils.d.ts +6 -0
  243. package/dist/library/media/utils.d.ts.map +1 -0
  244. package/dist/library/media/utils.js +77 -0
  245. package/dist/library/media/utils.js.map +1 -0
  246. package/package.json +143 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetPickerBoard.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/AssetPickerBoard.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAEV,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC1D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAsE9C,wBAAgB,gBAAgB,CAAC,EAC/B,IAAgC,EAChC,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,KAAsB,EACtB,UAAiB,EACjB,QAAQ,EACR,OAAO,EACP,KAAW,EACX,SAAS,GACV,EAAE,QAAQ,CAAC,qBAAqB,CAAC,kDAyTjC"}
@@ -0,0 +1,229 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState, } from 'react';
3
+ import { DEFAULT_ASSET_PICKER_TABS, } from './defaultTabs.js';
4
+ function getSearchText(item) {
5
+ return [
6
+ item.id,
7
+ item.label,
8
+ item.group ?? '',
9
+ ...(item.keywords ?? []),
10
+ ].join(' ').toLowerCase();
11
+ }
12
+ function renderItemPreview(item, size) {
13
+ const { preview } = item;
14
+ if (preview.kind === 'emoji') {
15
+ return _jsx("span", { style: { fontSize: size, lineHeight: 1 }, children: preview.value });
16
+ }
17
+ if (preview.kind === 'image') {
18
+ return (_jsx("img", { src: preview.src, alt: preview.alt ?? item.label, style: { width: size, height: size, objectFit: 'contain' } }));
19
+ }
20
+ if (preview.kind === 'text') {
21
+ return (_jsx("span", { style: { fontSize: Math.max(12, size * 0.45), lineHeight: 1.15 }, children: preview.value }));
22
+ }
23
+ return preview.render(size);
24
+ }
25
+ function createSelection(tab, item) {
26
+ return {
27
+ tab,
28
+ item,
29
+ value: {
30
+ tabId: tab.id,
31
+ itemId: item.id,
32
+ },
33
+ };
34
+ }
35
+ function getInitialSelectedByTab(value, defaultValue) {
36
+ const selectedByTab = {};
37
+ if (defaultValue) {
38
+ selectedByTab[defaultValue.tabId] = defaultValue.itemId;
39
+ }
40
+ if (value) {
41
+ selectedByTab[value.tabId] = value.itemId;
42
+ }
43
+ return selectedByTab;
44
+ }
45
+ export function AssetPickerBoard({ tabs = DEFAULT_ASSET_PICKER_TABS, value, defaultValue, defaultTabId, onChange, onChangeComplete, onTabChange, label = 'Asset picker', showSearch = true, showTabs, columns, width = 352, className, }) {
46
+ const availableTabs = tabs.length > 0 ? tabs : DEFAULT_ASSET_PICKER_TABS;
47
+ const [activeTabId, setActiveTabId] = useState(defaultTabId ?? defaultValue?.tabId ?? availableTabs[0]?.id ?? '');
48
+ const [selectedByTab, setSelectedByTab] = useState(() => getInitialSelectedByTab(value, defaultValue));
49
+ const [query, setQuery] = useState('');
50
+ useEffect(() => {
51
+ if (!value) {
52
+ return;
53
+ }
54
+ setSelectedByTab((current) => {
55
+ if (current[value.tabId] === value.itemId) {
56
+ return current;
57
+ }
58
+ return {
59
+ ...current,
60
+ [value.tabId]: value.itemId,
61
+ };
62
+ });
63
+ }, [value]);
64
+ useEffect(() => {
65
+ if (availableTabs.some((tab) => tab.id === activeTabId)) {
66
+ return;
67
+ }
68
+ setActiveTabId(defaultTabId ?? availableTabs[0]?.id ?? '');
69
+ }, [activeTabId, availableTabs, defaultTabId]);
70
+ const activeTab = availableTabs.find((tab) => tab.id === activeTabId) ??
71
+ availableTabs[0] ??
72
+ null;
73
+ useEffect(() => {
74
+ if (!activeTab || activeTab.items.length === 0) {
75
+ return;
76
+ }
77
+ setSelectedByTab((current) => {
78
+ if (current[activeTab.id]) {
79
+ return current;
80
+ }
81
+ return {
82
+ ...current,
83
+ [activeTab.id]: activeTab.items[0].id,
84
+ };
85
+ });
86
+ }, [activeTab]);
87
+ const filteredItems = useMemo(() => {
88
+ if (!activeTab) {
89
+ return [];
90
+ }
91
+ const normalizedQuery = query.trim().toLowerCase();
92
+ if (!normalizedQuery) {
93
+ return activeTab.items;
94
+ }
95
+ return activeTab.items.filter((item) => getSearchText(item).includes(normalizedQuery));
96
+ }, [activeTab, query]);
97
+ const activeSelectedId = activeTab
98
+ ? (value?.tabId === activeTab.id ? value.itemId : selectedByTab[activeTab.id])
99
+ : undefined;
100
+ const activeItem = filteredItems.find((item) => item.id === activeSelectedId) ??
101
+ filteredItems[0] ??
102
+ activeTab?.items[0] ??
103
+ null;
104
+ const gridColumns = activeTab?.columns ?? columns ?? 5;
105
+ const shouldShowTabs = showTabs ?? availableTabs.length > 1;
106
+ function handleTabChange(nextTab) {
107
+ setActiveTabId(nextTab.id);
108
+ setQuery('');
109
+ onTabChange?.(nextTab);
110
+ }
111
+ function handleItemSelect(item) {
112
+ if (!activeTab) {
113
+ return;
114
+ }
115
+ setSelectedByTab((current) => ({
116
+ ...current,
117
+ [activeTab.id]: item.id,
118
+ }));
119
+ const selection = createSelection(activeTab, item);
120
+ onChange?.(selection);
121
+ onChangeComplete?.(selection);
122
+ }
123
+ const rootStyle = {
124
+ width,
125
+ padding: 16,
126
+ borderRadius: 24,
127
+ border: '1px solid rgba(148, 163, 184, 0.22)',
128
+ background: 'linear-gradient(180deg, rgba(15, 23, 42, 0.98) 0%, rgba(30, 41, 59, 0.96) 100%)',
129
+ boxShadow: '0 24px 60px rgba(15, 23, 42, 0.28)',
130
+ color: '#E2E8F0',
131
+ fontFamily: 'ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
132
+ };
133
+ if (!activeTab) {
134
+ return null;
135
+ }
136
+ return (_jsxs("section", { className: className, style: rootStyle, "aria-label": label, children: [_jsxs("div", { style: {
137
+ display: 'flex',
138
+ justifyContent: 'space-between',
139
+ alignItems: 'center',
140
+ gap: 16,
141
+ marginBottom: 16,
142
+ }, children: [_jsxs("div", { children: [_jsx("div", { style: { fontSize: 12, letterSpacing: '0.08em', textTransform: 'uppercase', opacity: 0.7 }, children: "Unified Picker Board" }), _jsx("h3", { style: { margin: '6px 0 0', fontSize: 20, lineHeight: 1.1 }, children: label })] }), activeItem ? (_jsxs("div", { style: {
143
+ minWidth: 96,
144
+ padding: '10px 12px',
145
+ borderRadius: 16,
146
+ background: 'rgba(255, 255, 255, 0.08)',
147
+ border: '1px solid rgba(148, 163, 184, 0.18)',
148
+ display: 'grid',
149
+ justifyItems: 'center',
150
+ gap: 6,
151
+ }, children: [_jsx("span", { style: { display: 'grid', placeItems: 'center', minHeight: 30, color: '#F8FAFC' }, children: renderItemPreview(activeItem, 28) }), _jsx("span", { style: { fontSize: 11, color: '#CBD5E1', lineHeight: 1.1, textAlign: 'center' }, children: activeItem.label })] })) : null] }), shouldShowTabs ? (_jsx("div", { role: "tablist", "aria-label": `${label} tabs`, style: {
152
+ display: 'flex',
153
+ gap: 8,
154
+ marginBottom: 14,
155
+ overflowX: 'auto',
156
+ paddingBottom: 2,
157
+ }, children: availableTabs.map((tab) => {
158
+ const isActiveTab = tab.id === activeTab.id;
159
+ return (_jsxs("button", { type: "button", role: "tab", "aria-selected": isActiveTab, onClick: () => {
160
+ handleTabChange(tab);
161
+ }, style: {
162
+ display: 'inline-flex',
163
+ alignItems: 'center',
164
+ gap: 8,
165
+ padding: '8px 12px',
166
+ borderRadius: 999,
167
+ border: isActiveTab
168
+ ? '1px solid rgba(255, 255, 255, 0.4)'
169
+ : '1px solid rgba(148, 163, 184, 0.18)',
170
+ background: isActiveTab ? tab.activeBackground ?? 'rgba(255, 255, 255, 0.12)' : 'rgba(255, 255, 255, 0.04)',
171
+ color: '#F8FAFC',
172
+ cursor: 'pointer',
173
+ whiteSpace: 'nowrap',
174
+ }, children: [_jsx("span", { style: { fontSize: 13, fontWeight: 600 }, children: tab.label }), _jsx("span", { style: { fontSize: 11, color: '#CBD5E1' }, children: tab.items.length })] }, tab.id));
175
+ }) })) : null, showSearch ? (_jsxs("label", { style: { display: 'grid', gap: 8, marginBottom: 14 }, children: [_jsx("span", { style: { fontSize: 12, fontWeight: 600, opacity: 0.78 }, children: activeTab.searchLabel ?? `Search ${activeTab.label.toLowerCase()}` }), _jsx("input", { value: query, onChange: (event) => {
176
+ setQuery(event.target.value);
177
+ }, placeholder: activeTab.searchPlaceholder ?? 'Search by name, group or keyword', style: {
178
+ height: 42,
179
+ borderRadius: 14,
180
+ border: '1px solid rgba(148, 163, 184, 0.22)',
181
+ background: 'rgba(15, 23, 42, 0.45)',
182
+ color: '#F8FAFC',
183
+ padding: '0 14px',
184
+ fontSize: 14,
185
+ outline: 'none',
186
+ } })] })) : null, _jsxs("div", { style: {
187
+ display: 'flex',
188
+ alignItems: 'center',
189
+ justifyContent: 'space-between',
190
+ marginBottom: 12,
191
+ fontSize: 12,
192
+ color: '#94A3B8',
193
+ }, children: [_jsxs("span", { children: [filteredItems.length, " ", activeTab.countLabel ?? activeTab.label.toLowerCase()] }), _jsx("span", { children: activeItem?.group ?? activeTab.label })] }), filteredItems.length === 0 ? (_jsx("div", { style: {
194
+ minHeight: 120,
195
+ display: 'grid',
196
+ placeItems: 'center',
197
+ borderRadius: 16,
198
+ border: '1px solid rgba(148, 163, 184, 0.18)',
199
+ background: 'rgba(255, 255, 255, 0.04)',
200
+ color: '#CBD5E1',
201
+ textAlign: 'center',
202
+ padding: 16,
203
+ }, children: activeTab.emptyStateLabel ?? 'No items match the current search.' })) : (_jsx("div", { style: {
204
+ display: 'grid',
205
+ gridTemplateColumns: `repeat(${gridColumns}, minmax(0, 1fr))`,
206
+ gap: 10,
207
+ }, children: filteredItems.map((item) => {
208
+ const isActive = item.id === activeItem?.id;
209
+ return (_jsxs("button", { type: "button", onClick: () => {
210
+ handleItemSelect(item);
211
+ }, title: item.label, style: {
212
+ display: 'grid',
213
+ gap: 8,
214
+ justifyItems: 'center',
215
+ minHeight: 76,
216
+ padding: '12px 8px',
217
+ borderRadius: 16,
218
+ border: isActive
219
+ ? '1px solid rgba(255, 255, 255, 0.48)'
220
+ : '1px solid rgba(148, 163, 184, 0.18)',
221
+ background: isActive
222
+ ? activeTab.activeBackground ?? 'rgba(255, 255, 255, 0.12)'
223
+ : 'rgba(255, 255, 255, 0.04)',
224
+ color: '#F8FAFC',
225
+ cursor: 'pointer',
226
+ }, children: [_jsx("span", { style: { display: 'grid', placeItems: 'center', minHeight: 28 }, children: renderItemPreview(item, 24) }), _jsx("span", { style: { fontSize: 10, lineHeight: 1.15, color: '#CBD5E1', textAlign: 'center' }, children: item.label })] }, item.id));
227
+ }) }))] }));
228
+ }
229
+ //# sourceMappingURL=AssetPickerBoard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetPickerBoard.js","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/AssetPickerBoard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type MediaCollectionName, type MediaItem } from '../../../media/index.js';
2
+ import { type EmojiPickerItem } from '../emoji-picker/emojiPickerData.js';
3
+ import { type IconPickerItem } from '../icon-picker/iconPickerData.js';
4
+ import type { AssetPickerBoardTab } from './types.js';
5
+ export interface AssetPickerTabOptions {
6
+ id?: string;
7
+ label?: string;
8
+ columns?: number;
9
+ countLabel?: string;
10
+ searchLabel?: string;
11
+ searchPlaceholder?: string;
12
+ emptyStateLabel?: string;
13
+ activeBackground?: string;
14
+ }
15
+ export interface DefaultAssetPickerTabsOptions {
16
+ iconItems?: IconPickerItem[];
17
+ emojiItems?: EmojiPickerItem[];
18
+ svgItems?: MediaItem[];
19
+ includeIcons?: boolean;
20
+ includeEmojis?: boolean;
21
+ includeSvg?: boolean;
22
+ }
23
+ export declare function createIconPickerTab(items?: IconPickerItem[], options?: AssetPickerTabOptions): AssetPickerBoardTab<IconPickerItem>;
24
+ export declare function createEmojiPickerTab(items?: EmojiPickerItem[], options?: AssetPickerTabOptions): AssetPickerBoardTab<EmojiPickerItem>;
25
+ export declare function createMediaCollectionPickerTab(collectionName: MediaCollectionName, items?: MediaItem[], options?: AssetPickerTabOptions): AssetPickerBoardTab<MediaItem>;
26
+ export declare function createDefaultAssetPickerTabs(options?: DefaultAssetPickerTabsOptions): AssetPickerBoardTab[];
27
+ export declare const DEFAULT_ASSET_PICKER_TABS: AssetPickerBoardTab<unknown>[];
28
+ //# sourceMappingURL=defaultTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultTabs.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/defaultTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,wBAAgB,mBAAmB,CACjC,KAAK,GAAE,cAAc,EAA8B,EACnD,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CAAC,cAAc,CAAC,CAuBrC;AAED,wBAAgB,oBAAoB,CAClC,KAAK,GAAE,eAAe,EAA+B,EACrD,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CAAC,eAAe,CAAC,CA6BtC;AAED,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,mBAAmB,EACnC,KAAK,GAAE,SAAS,EAAuC,EACvD,OAAO,GAAE,qBAA0B,GAClC,mBAAmB,CAAC,SAAS,CAAC,CA0BhC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,6BAAkC,GAC1C,mBAAmB,EAAE,CAgBvB;AAED,eAAO,MAAM,yBAAyB,gCAAiC,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { getMediaCollection, mediaCollections, resolveMediaUrl, } from '../../../media/index.js';
2
+ import { DEFAULT_EMOJI_PICKER_ITEMS, } from '../emoji-picker/emojiPickerData.js';
3
+ import { DEFAULT_ICON_PICKER_ITEMS, renderSizedIcon, } from '../icon-picker/iconPickerData.js';
4
+ const ICON_ACTIVE_BACKGROUND = 'linear-gradient(180deg, rgba(79, 70, 229, 0.32) 0%, rgba(37, 99, 235, 0.18) 100%)';
5
+ const EMOJI_ACTIVE_BACKGROUND = 'linear-gradient(180deg, rgba(16, 185, 129, 0.28) 0%, rgba(14, 165, 233, 0.16) 100%)';
6
+ const SVG_ACTIVE_BACKGROUND = 'linear-gradient(180deg, rgba(245, 158, 11, 0.28) 0%, rgba(249, 115, 22, 0.16) 100%)';
7
+ function getCollectionLabel(collectionName) {
8
+ return mediaCollections.find((collection) => collection.name === collectionName)?.label ?? collectionName;
9
+ }
10
+ export function createIconPickerTab(items = DEFAULT_ICON_PICKER_ITEMS, options = {}) {
11
+ return {
12
+ id: options.id ?? 'icons',
13
+ label: options.label ?? 'Icons',
14
+ columns: options.columns ?? 5,
15
+ countLabel: options.countLabel ?? 'icons',
16
+ searchLabel: options.searchLabel ?? 'Search icons',
17
+ searchPlaceholder: options.searchPlaceholder ?? 'Search by name, group or keyword',
18
+ emptyStateLabel: options.emptyStateLabel ?? 'No icons match the current search.',
19
+ activeBackground: options.activeBackground ?? ICON_ACTIVE_BACKGROUND,
20
+ items: items.map((item) => ({
21
+ id: item.id,
22
+ value: item.id,
23
+ label: item.label,
24
+ group: item.group,
25
+ keywords: item.keywords,
26
+ preview: {
27
+ kind: 'node',
28
+ render: (size) => renderSizedIcon(item.icon, size),
29
+ },
30
+ data: item,
31
+ })),
32
+ };
33
+ }
34
+ export function createEmojiPickerTab(items = DEFAULT_EMOJI_PICKER_ITEMS, options = {}) {
35
+ return {
36
+ id: options.id ?? 'emojis',
37
+ label: options.label ?? 'Emojis',
38
+ columns: options.columns ?? 6,
39
+ countLabel: options.countLabel ?? 'emojis',
40
+ searchLabel: options.searchLabel ?? 'Search emojis',
41
+ searchPlaceholder: options.searchPlaceholder ?? 'Search by name, group or keyword',
42
+ emptyStateLabel: options.emptyStateLabel ?? 'No emojis match the current search.',
43
+ activeBackground: options.activeBackground ?? EMOJI_ACTIVE_BACKGROUND,
44
+ items: items.map((item) => ({
45
+ id: item.id,
46
+ value: item.value,
47
+ label: item.label,
48
+ group: item.group,
49
+ keywords: item.keywords,
50
+ preview: item.src
51
+ ? {
52
+ kind: 'image',
53
+ src: item.src,
54
+ alt: item.label,
55
+ }
56
+ : {
57
+ kind: 'emoji',
58
+ value: item.value,
59
+ },
60
+ data: item,
61
+ })),
62
+ };
63
+ }
64
+ export function createMediaCollectionPickerTab(collectionName, items = getMediaCollection(collectionName), options = {}) {
65
+ const collectionLabel = getCollectionLabel(collectionName);
66
+ return {
67
+ id: options.id ?? collectionName,
68
+ label: options.label ?? collectionLabel,
69
+ columns: options.columns ?? 4,
70
+ countLabel: options.countLabel ?? collectionLabel.toLowerCase(),
71
+ searchLabel: options.searchLabel ?? `Search ${collectionLabel.toLowerCase()}`,
72
+ searchPlaceholder: options.searchPlaceholder ?? `Search ${collectionLabel.toLowerCase()} by name, category or tag`,
73
+ emptyStateLabel: options.emptyStateLabel ?? `No ${collectionLabel.toLowerCase()} items match the current search.`,
74
+ activeBackground: options.activeBackground ?? SVG_ACTIVE_BACKGROUND,
75
+ items: items.map((item) => ({
76
+ id: item.id,
77
+ value: item.ref,
78
+ label: item.label,
79
+ group: item.category,
80
+ keywords: item.tags,
81
+ preview: {
82
+ kind: 'image',
83
+ src: resolveMediaUrl(item.thumbnailRef ?? item.ref),
84
+ alt: item.alt ?? item.label,
85
+ },
86
+ data: item,
87
+ })),
88
+ };
89
+ }
90
+ export function createDefaultAssetPickerTabs(options = {}) {
91
+ const tabs = [];
92
+ if (options.includeEmojis !== false) {
93
+ tabs.push(createEmojiPickerTab(options.emojiItems));
94
+ }
95
+ if (options.includeSvg !== false) {
96
+ tabs.push(createMediaCollectionPickerTab('svg', options.svgItems));
97
+ }
98
+ if (options.includeIcons !== false) {
99
+ tabs.push(createIconPickerTab(options.iconItems));
100
+ }
101
+ return tabs;
102
+ }
103
+ export const DEFAULT_ASSET_PICKER_TABS = createDefaultAssetPickerTabs();
104
+ //# sourceMappingURL=defaultTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultTabs.js","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/defaultTabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './AssetPickerBoard.js';
2
+ export * from './defaultTabs.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './AssetPickerBoard.js';
2
+ export * from './defaultTabs.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { ReactNode } from 'react';
2
+ export type AssetPickerBoardItemPreview = {
3
+ kind: 'emoji';
4
+ value: string;
5
+ } | {
6
+ kind: 'image';
7
+ src: string;
8
+ alt?: string;
9
+ } | {
10
+ kind: 'text';
11
+ value: string;
12
+ } | {
13
+ kind: 'node';
14
+ render: (size: number) => ReactNode;
15
+ };
16
+ export interface AssetPickerBoardItem<TData = unknown> {
17
+ id: string;
18
+ value: string;
19
+ label: string;
20
+ group?: string;
21
+ keywords?: string[];
22
+ preview: AssetPickerBoardItemPreview;
23
+ data?: TData;
24
+ }
25
+ export interface AssetPickerBoardTab<TData = unknown> {
26
+ id: string;
27
+ label: string;
28
+ items: AssetPickerBoardItem<TData>[];
29
+ columns?: number;
30
+ countLabel?: string;
31
+ searchLabel?: string;
32
+ searchPlaceholder?: string;
33
+ emptyStateLabel?: string;
34
+ activeBackground?: string;
35
+ }
36
+ export interface AssetPickerBoardValue {
37
+ tabId: string;
38
+ itemId: string;
39
+ }
40
+ export interface AssetPickerBoardSelection<TData = unknown> {
41
+ tab: AssetPickerBoardTab<TData>;
42
+ item: AssetPickerBoardItem<TData>;
43
+ value: AssetPickerBoardValue;
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC;IACrC,IAAI,CAAC,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB,CAAC,KAAK,GAAG,OAAO;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB,CAAC,KAAK,GAAG,OAAO;IACxD,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,qBAAqB,CAAC;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../library/components/react/asset-picker/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { ChartDataItem } from './chartUtils.js';
2
+ export interface BarChartProps {
3
+ chartData: ChartDataItem[];
4
+ maxValue: number;
5
+ }
6
+ export declare function VerticalBarChart({ chartData, maxValue }: Readonly<BarChartProps>): import("react/jsx-runtime").JSX.Element;
7
+ export declare function HorizontalBarChart({ chartData, maxValue }: Readonly<BarChartProps>): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=BarCharts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarCharts.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/charts/BarCharts.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,2CA2EhF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAkDlF"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* ************************************************************************** */
3
+ /* */
4
+ /* ::: :::::::: */
5
+ /* BarCharts.tsx :+: :+: :+: */
6
+ /* +:+ +:+ +:+ */
7
+ /* By: rstancu <rstancu@student.42madrid.com> +#+ +:+ +#+ */
8
+ /* +#+#+#+#+#+ +#+ */
9
+ /* Created: 2026/04/09 12:03:00 by rstancu #+# #+# */
10
+ /* Updated: 2026/04/09 12:03:00 by rstancu ### ########.fr */
11
+ /* */
12
+ /* ************************************************************************** */
13
+ import React from 'react';
14
+ import { cn } from '../../../icons/react/cn.js';
15
+ export function VerticalBarChart({ chartData, maxValue }) {
16
+ const safeMaxValue = Math.max(maxValue, 1);
17
+ const barWidth = Math.max(24, Math.min(64, 600 / Math.max(chartData.length, 1)));
18
+ const chartWidth = Math.max(600, chartData.length * (barWidth + 16));
19
+ const chartHeight = 300;
20
+ return (_jsx("div", { className: cn('flex-1 overflow-auto p-8 bg-surface-primary'), children: _jsx("div", { className: cn('flex flex-col items-center'), children: _jsxs("svg", { width: chartWidth, height: chartHeight + 60, className: cn('overflow-visible'), children: [[0, 0.25, 0.5, 0.75, 1].map((pct) => (_jsxs("g", { children: [_jsx("line", { x1: 40, y1: chartHeight * (1 - pct) + 10, x2: chartWidth - 20, y2: chartHeight * (1 - pct) + 10, stroke: "var(--color-chart-grid, #CBD5E1)", strokeWidth: 1 }), _jsx("text", { x: 36, y: chartHeight * (1 - pct) + 14, textAnchor: "end", fontSize: 11, fill: "var(--color-chart-tick, #64748B)", children: Math.round(safeMaxValue * pct) })] }, pct))), chartData.map((datum, index) => {
21
+ const barHeight = (datum.value / safeMaxValue) * chartHeight;
22
+ const x = 50 + index * (barWidth + 16);
23
+ const y = chartHeight - barHeight + 10;
24
+ return (_jsxs("g", { children: [_jsx("rect", { x: x, y: y, width: barWidth, height: barHeight, fill: datum.color, rx: 4, className: cn('transition-all duration-200 hover:opacity-80') }), _jsx("text", { x: x + barWidth / 2, y: chartHeight + 28, textAnchor: "middle", fontSize: 11, fill: "var(--color-chart-label, #334155)", className: cn('select-none'), children: datum.label.length > 10 ? `${datum.label.slice(0, 10)}…` : datum.label }), _jsx("text", { x: x + barWidth / 2, y: y - 6, textAnchor: "middle", fontSize: 11, fill: "var(--color-chart-axis, #0F172A)", fontWeight: 600, children: datum.value % 1 === 0 ? datum.value : datum.value.toFixed(1) })] }, datum.label));
25
+ })] }) }) }));
26
+ }
27
+ export function HorizontalBarChart({ chartData, maxValue }) {
28
+ const safeMaxValue = Math.max(maxValue, 1);
29
+ const barHeight = 28;
30
+ const chartWidth = 500;
31
+ const labelWidth = 120;
32
+ return (_jsx("div", { className: cn('flex-1 overflow-auto p-8 bg-surface-primary'), children: _jsx("div", { className: cn('max-w-2xl mx-auto'), children: _jsx("svg", { width: chartWidth + labelWidth + 60, height: chartData.length * (barHeight + 8) + 20, children: chartData.map((datum, index) => {
33
+ const barWidth = (datum.value / safeMaxValue) * chartWidth;
34
+ const y = index * (barHeight + 8) + 10;
35
+ return (_jsxs("g", { children: [_jsx("text", { x: labelWidth - 8, y: y + barHeight / 2 + 4, textAnchor: "end", fontSize: 12, fill: "var(--color-chart-axis, #0F172A)", children: datum.label.length > 16 ? `${datum.label.slice(0, 16)}…` : datum.label }), _jsx("rect", { x: labelWidth, y: y, width: barWidth, height: barHeight, fill: datum.color, rx: 4, className: cn('transition-all duration-200 hover:opacity-80') }), _jsx("text", { x: labelWidth + barWidth + 8, y: y + barHeight / 2 + 4, fontSize: 12, fill: "var(--color-chart-axis, #0F172A)", fontWeight: 600, children: datum.value % 1 === 0 ? datum.value : datum.value.toFixed(1) })] }, datum.label));
36
+ }) }) }) }));
37
+ }
38
+ //# sourceMappingURL=BarCharts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarCharts.js","sourceRoot":"","sources":["../../../../../library/components/react/charts/BarCharts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ChartDataItem } from './chartUtils.js';
2
+ export interface DonutPieChartProps {
3
+ chartData: ChartDataItem[];
4
+ total: number;
5
+ isDonut: boolean;
6
+ }
7
+ export declare function DonutPieChart({ chartData, total, isDonut, }: Readonly<DonutPieChartProps>): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=DonutPieChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutPieChart.d.ts","sourceRoot":"","sources":["../../../../../library/components/react/charts/DonutPieChart.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,OAAO,GACR,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CAoF9B"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* ************************************************************************** */
3
+ /* */
4
+ /* ::: :::::::: */
5
+ /* DonutPieChart.tsx :+: :+: :+: */
6
+ /* +:+ +:+ +:+ */
7
+ /* By: rstancu <rstancu@student.42madrid.com> +#+ +:+ +#+ */
8
+ /* +#+#+#+#+#+ +#+ */
9
+ /* Created: 2026/04/09 12:03:00 by rstancu #+# #+# */
10
+ /* Updated: 2026/04/09 12:03:00 by rstancu ### ########.fr */
11
+ /* */
12
+ /* ************************************************************************** */
13
+ import React from 'react';
14
+ import { cn } from '../../../icons/react/cn.js';
15
+ export function DonutPieChart({ chartData, total, isDonut, }) {
16
+ const safeTotal = Math.max(total, 1);
17
+ const size = 300;
18
+ const centerX = size / 2;
19
+ const centerY = size / 2;
20
+ const outerRadius = size / 2 - 10;
21
+ const innerRadius = isDonut ? outerRadius * 0.55 : 0;
22
+ let startAngle = -Math.PI / 2;
23
+ const slices = chartData.map((datum) => {
24
+ const angle = (datum.value / safeTotal) * Math.PI * 2;
25
+ const slice = { ...datum, startAngle, endAngle: startAngle + angle };
26
+ startAngle += angle;
27
+ return slice;
28
+ });
29
+ function arcPath(start, end, radius) {
30
+ const x = centerX + radius * Math.cos(end);
31
+ const y = centerY + radius * Math.sin(end);
32
+ const largeArc = end - start > Math.PI ? 1 : 0;
33
+ return `A ${radius} ${radius} 0 ${largeArc} 1 ${x} ${y}`;
34
+ }
35
+ return (_jsx("div", { className: cn('flex-1 overflow-auto p-8 bg-surface-primary'), children: _jsxs("div", { className: cn('flex items-center justify-center gap-12'), children: [_jsxs("svg", { width: size, height: size, children: [slices.map((slice) => {
36
+ const startX = centerX + outerRadius * Math.cos(slice.startAngle);
37
+ const startY = centerY + outerRadius * Math.sin(slice.startAngle);
38
+ const outerArc = arcPath(slice.startAngle, slice.endAngle, outerRadius);
39
+ let path = '';
40
+ if (innerRadius > 0) {
41
+ const innerX = centerX + innerRadius * Math.cos(slice.endAngle);
42
+ const innerY = centerY + innerRadius * Math.sin(slice.endAngle);
43
+ const innerArc = arcPath(slice.endAngle, slice.startAngle, innerRadius);
44
+ path = `M ${startX} ${startY} ${outerArc} L ${innerX} ${innerY} ${innerArc} L ${startX} ${startY} Z`;
45
+ }
46
+ else {
47
+ path = `M ${centerX} ${centerY} L ${startX} ${startY} ${outerArc} Z`;
48
+ }
49
+ return (_jsx("path", { d: path, fill: slice.color, stroke: "white", strokeWidth: 2, className: cn('transition-all duration-200 hover:opacity-80 cursor-pointer') }, slice.label));
50
+ }), isDonut ? (_jsx("text", { x: centerX, y: centerY, textAnchor: "middle", dominantBaseline: "central", fontSize: 24, fontWeight: 700, fill: "var(--color-chart-axis, #0F172A)", children: total })) : null] }), _jsx("div", { className: cn('flex flex-col gap-2'), children: chartData.map((datum) => (_jsxs("div", { className: cn('flex items-center gap-2'), children: [_jsx("div", { className: cn('w-3 h-3 rounded-sm shrink-0'), style: { backgroundColor: datum.color } }), _jsx("span", { className: cn('text-sm text-ink-body'), children: datum.label }), _jsx("span", { className: cn('text-sm text-ink-muted tabular-nums ml-1'), children: datum.value }), _jsxs("span", { className: cn('text-xs text-ink-muted'), children: ["(", Math.round((datum.value / safeTotal) * 100), "%)"] })] }, datum.label))) })] }) }));
51
+ }
52
+ //# sourceMappingURL=DonutPieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutPieChart.js","sourceRoot":"","sources":["../../../../../library/components/react/charts/DonutPieChart.tsx"],"names":[],"mappings":"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"}