@open-mercato/core 0.7.1-develop.7203.1.9396450b78 → 0.8.1-develop.7204.1.83330e271e

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 (416) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/build.mjs +11 -0
  3. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +23 -0
  4. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  5. package/dist/modules/customers/backend/customers/companies/[id]/page.js +2 -1
  6. package/dist/modules/customers/backend/customers/companies/[id]/page.js.map +2 -2
  7. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +2 -1
  8. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
  9. package/dist/modules/customers/backend/customers/people/[id]/page.js +2 -2
  10. package/dist/modules/customers/backend/customers/people/[id]/page.js.map +2 -2
  11. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +2 -1
  12. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
  13. package/dist/modules/customers/lib/detailHelpers.js +4 -0
  14. package/dist/modules/customers/lib/detailHelpers.js.map +2 -2
  15. package/dist/modules/customers/lib/todoCompatibility.js +5 -0
  16. package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
  17. package/dist/modules/design_system/backend/design-system/page.meta.js +3 -2
  18. package/dist/modules/design_system/backend/design-system/page.meta.js.map +2 -2
  19. package/dist/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
  20. package/dist/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
  21. package/dist/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
  22. package/dist/modules/design_system/gallery/assets/avatar-photo.png +0 -0
  23. package/dist/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
  24. package/dist/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
  25. package/dist/modules/design_system/gallery/assets/crypto-ada.png +0 -0
  26. package/dist/modules/design_system/gallery/assets/crypto-avax.png +0 -0
  27. package/dist/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
  28. package/dist/modules/design_system/gallery/assets/crypto-brand.png +0 -0
  29. package/dist/modules/design_system/gallery/assets/crypto-btc.png +0 -0
  30. package/dist/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
  31. package/dist/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
  32. package/dist/modules/design_system/gallery/assets/crypto-dot.png +0 -0
  33. package/dist/modules/design_system/gallery/assets/crypto-eth.png +0 -0
  34. package/dist/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
  35. package/dist/modules/design_system/gallery/assets/crypto-history.svg +3 -0
  36. package/dist/modules/design_system/gallery/assets/crypto-link.svg +3 -0
  37. package/dist/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
  38. package/dist/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
  39. package/dist/modules/design_system/gallery/assets/crypto-more.svg +3 -0
  40. package/dist/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
  41. package/dist/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
  42. package/dist/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
  43. package/dist/modules/design_system/gallery/assets/crypto-sol.png +0 -0
  44. package/dist/modules/design_system/gallery/assets/crypto-star.svg +3 -0
  45. package/dist/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
  46. package/dist/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
  47. package/dist/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
  48. package/dist/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
  49. package/dist/modules/design_system/gallery/assets/crypto-trx.png +0 -0
  50. package/dist/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
  51. package/dist/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
  52. package/dist/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
  53. package/dist/modules/design_system/gallery/assets/crypto-wei.png +0 -0
  54. package/dist/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
  55. package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js +67 -0
  56. package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js.map +7 -0
  57. package/dist/modules/design_system/gallery/assets/github-logo.png +0 -0
  58. package/dist/modules/design_system/gallery/assets/images.d.js +1 -0
  59. package/dist/modules/design_system/gallery/assets/images.d.js.map +7 -0
  60. package/dist/modules/design_system/gallery/assets/input-european-union.svg +18 -0
  61. package/dist/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
  62. package/dist/modules/design_system/gallery/assets/marketing-artwork.js +83 -0
  63. package/dist/modules/design_system/gallery/assets/marketing-artwork.js.map +7 -0
  64. package/dist/modules/design_system/gallery/assets/menu-apex.svg +18 -0
  65. package/dist/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
  66. package/dist/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
  67. package/dist/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
  68. package/dist/modules/design_system/gallery/assets/select-google.png +0 -0
  69. package/dist/modules/design_system/gallery/assets/select-poland.png +0 -0
  70. package/dist/modules/design_system/gallery/assets/selection-artwork.js +5 -0
  71. package/dist/modules/design_system/gallery/assets/selection-artwork.js.map +7 -0
  72. package/dist/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
  73. package/dist/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
  74. package/dist/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
  75. package/dist/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
  76. package/dist/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
  77. package/dist/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
  78. package/dist/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
  79. package/dist/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
  80. package/dist/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
  81. package/dist/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
  82. package/dist/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
  83. package/dist/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
  84. package/dist/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
  85. package/dist/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
  86. package/dist/modules/design_system/gallery/assets/style-studio-product.png +0 -0
  87. package/dist/modules/design_system/gallery/assets/upload-images.js +8 -0
  88. package/dist/modules/design_system/gallery/assets/upload-images.js.map +7 -0
  89. package/dist/modules/design_system/gallery/components/BrandStylePreview.js +74 -0
  90. package/dist/modules/design_system/gallery/components/BrandStylePreview.js.map +7 -0
  91. package/dist/modules/design_system/gallery/components/CodeSnippet.js +31 -31
  92. package/dist/modules/design_system/gallery/components/CodeSnippet.js.map +2 -2
  93. package/dist/modules/design_system/gallery/components/ColorPlayground.js +408 -0
  94. package/dist/modules/design_system/gallery/components/ColorPlayground.js.map +7 -0
  95. package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js +166 -0
  96. package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js.map +7 -0
  97. package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js +182 -0
  98. package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js.map +7 -0
  99. package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js +80 -0
  100. package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js.map +7 -0
  101. package/dist/modules/design_system/gallery/components/ComponentIndex.js +42 -0
  102. package/dist/modules/design_system/gallery/components/ComponentIndex.js.map +7 -0
  103. package/dist/modules/design_system/gallery/components/DesignSystemHome.js +69 -0
  104. package/dist/modules/design_system/gallery/components/DesignSystemHome.js.map +7 -0
  105. package/dist/modules/design_system/gallery/components/EntryCard.js +47 -41
  106. package/dist/modules/design_system/gallery/components/EntryCard.js.map +2 -2
  107. package/dist/modules/design_system/gallery/components/EntryHeader.js +68 -0
  108. package/dist/modules/design_system/gallery/components/EntryHeader.js.map +7 -0
  109. package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js +19 -0
  110. package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js.map +7 -0
  111. package/dist/modules/design_system/gallery/components/FoundationGuide.js +46 -0
  112. package/dist/modules/design_system/gallery/components/FoundationGuide.js.map +7 -0
  113. package/dist/modules/design_system/gallery/components/GalleryLink.js +21 -0
  114. package/dist/modules/design_system/gallery/components/GalleryLink.js.map +7 -0
  115. package/dist/modules/design_system/gallery/components/GalleryNavigation.js +82 -0
  116. package/dist/modules/design_system/gallery/components/GalleryNavigation.js.map +7 -0
  117. package/dist/modules/design_system/gallery/components/GalleryShell.js +147 -67
  118. package/dist/modules/design_system/gallery/components/GalleryShell.js.map +3 -3
  119. package/dist/modules/design_system/gallery/components/IconsBrowser.js +33 -0
  120. package/dist/modules/design_system/gallery/components/IconsBrowser.js.map +7 -0
  121. package/dist/modules/design_system/gallery/components/SourceLibrary.js +93 -0
  122. package/dist/modules/design_system/gallery/components/SourceLibrary.js.map +7 -0
  123. package/dist/modules/design_system/gallery/components/StyleAgents.js +139 -0
  124. package/dist/modules/design_system/gallery/components/StyleAgents.js.map +7 -0
  125. package/dist/modules/design_system/gallery/components/ThemeTokenReference.js +101 -0
  126. package/dist/modules/design_system/gallery/components/ThemeTokenReference.js.map +7 -0
  127. package/dist/modules/design_system/gallery/components/VariantPreview.js +2 -2
  128. package/dist/modules/design_system/gallery/components/VariantPreview.js.map +2 -2
  129. package/dist/modules/design_system/gallery/components/colorPreview.js +58 -0
  130. package/dist/modules/design_system/gallery/components/colorPreview.js.map +7 -0
  131. package/dist/modules/design_system/gallery/components/colorStudio.js +218 -0
  132. package/dist/modules/design_system/gallery/components/colorStudio.js.map +7 -0
  133. package/dist/modules/design_system/gallery/components/styleAgentBranding.js +46 -0
  134. package/dist/modules/design_system/gallery/components/styleAgentBranding.js.map +7 -0
  135. package/dist/modules/design_system/gallery/components/themeTokens.js +32 -0
  136. package/dist/modules/design_system/gallery/components/themeTokens.js.map +7 -0
  137. package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js +194 -0
  138. package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js.map +7 -0
  139. package/dist/modules/design_system/gallery/demos/ai-product.js +423 -0
  140. package/dist/modules/design_system/gallery/demos/ai-product.js.map +7 -0
  141. package/dist/modules/design_system/gallery/demos/buttons.js +289 -0
  142. package/dist/modules/design_system/gallery/demos/buttons.js.map +7 -0
  143. package/dist/modules/design_system/gallery/demos/cryptocurrency.js +1708 -0
  144. package/dist/modules/design_system/gallery/demos/cryptocurrency.js.map +7 -0
  145. package/dist/modules/design_system/gallery/demos/feeds-code.generated.js +92 -0
  146. package/dist/modules/design_system/gallery/demos/feeds-code.generated.js.map +7 -0
  147. package/dist/modules/design_system/gallery/demos/feeds.js +148 -0
  148. package/dist/modules/design_system/gallery/demos/feeds.js.map +7 -0
  149. package/dist/modules/design_system/gallery/demos/file-upload.js +72 -0
  150. package/dist/modules/design_system/gallery/demos/file-upload.js.map +7 -0
  151. package/dist/modules/design_system/gallery/demos/foundation-reference-data.js +4875 -0
  152. package/dist/modules/design_system/gallery/demos/foundation-reference-data.js.map +7 -0
  153. package/dist/modules/design_system/gallery/demos/foundation-references.js +188 -0
  154. package/dist/modules/design_system/gallery/demos/foundation-references.js.map +7 -0
  155. package/dist/modules/design_system/gallery/demos/key-components-code.generated.js +6 -0
  156. package/dist/modules/design_system/gallery/demos/key-components-code.generated.js.map +7 -0
  157. package/dist/modules/design_system/gallery/demos/key-components.js +127 -0
  158. package/dist/modules/design_system/gallery/demos/key-components.js.map +7 -0
  159. package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js +98 -0
  160. package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js.map +7 -0
  161. package/dist/modules/design_system/gallery/demos/marketing-controls.js +134 -0
  162. package/dist/modules/design_system/gallery/demos/marketing-controls.js.map +7 -0
  163. package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js +195 -0
  164. package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js.map +7 -0
  165. package/dist/modules/design_system/gallery/demos/marketing-widgets.js +586 -0
  166. package/dist/modules/design_system/gallery/demos/marketing-widgets.js.map +7 -0
  167. package/dist/modules/design_system/gallery/demos/menu-fixtures.js +40 -0
  168. package/dist/modules/design_system/gallery/demos/menu-fixtures.js.map +7 -0
  169. package/dist/modules/design_system/gallery/demos/menu-sources.js +295 -0
  170. package/dist/modules/design_system/gallery/demos/menu-sources.js.map +7 -0
  171. package/dist/modules/design_system/gallery/demos/menus.js +150 -0
  172. package/dist/modules/design_system/gallery/demos/menus.js.map +7 -0
  173. package/dist/modules/design_system/gallery/demos/rating-reviews.js +53 -0
  174. package/dist/modules/design_system/gallery/demos/rating-reviews.js.map +7 -0
  175. package/dist/modules/design_system/gallery/demos/registered-icons.js +104 -0
  176. package/dist/modules/design_system/gallery/demos/registered-icons.js.map +7 -0
  177. package/dist/modules/design_system/gallery/demos/selection-cards.js +99 -0
  178. package/dist/modules/design_system/gallery/demos/selection-cards.js.map +7 -0
  179. package/dist/modules/design_system/gallery/demos/shell-code.generated.js +189 -0
  180. package/dist/modules/design_system/gallery/demos/shell-code.generated.js.map +7 -0
  181. package/dist/modules/design_system/gallery/demos/shell.js +330 -0
  182. package/dist/modules/design_system/gallery/demos/shell.js.map +7 -0
  183. package/dist/modules/design_system/gallery/demos/source-artwork.js +120 -0
  184. package/dist/modules/design_system/gallery/demos/source-artwork.js.map +7 -0
  185. package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js +125 -0
  186. package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js.map +7 -0
  187. package/dist/modules/design_system/gallery/demos/source-filters.js +185 -0
  188. package/dist/modules/design_system/gallery/demos/source-filters.js.map +7 -0
  189. package/dist/modules/design_system/gallery/demos/source-icons.js +69 -0
  190. package/dist/modules/design_system/gallery/demos/source-icons.js.map +7 -0
  191. package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js +150 -0
  192. package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js.map +7 -0
  193. package/dist/modules/design_system/gallery/demos/table-cells.js +181 -0
  194. package/dist/modules/design_system/gallery/demos/table-cells.js.map +7 -0
  195. package/dist/modules/design_system/gallery/demos/text-inputs.js +113 -0
  196. package/dist/modules/design_system/gallery/demos/text-inputs.js.map +7 -0
  197. package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js +41 -0
  198. package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js.map +7 -0
  199. package/dist/modules/design_system/gallery/demos/time-picker.js +41 -0
  200. package/dist/modules/design_system/gallery/demos/time-picker.js.map +7 -0
  201. package/dist/modules/design_system/gallery/entries/banners.js +123 -60
  202. package/dist/modules/design_system/gallery/entries/banners.js.map +2 -2
  203. package/dist/modules/design_system/gallery/entries/buttons-snippets.js +433 -0
  204. package/dist/modules/design_system/gallery/entries/buttons-snippets.js.map +7 -0
  205. package/dist/modules/design_system/gallery/entries/buttons.js +127 -148
  206. package/dist/modules/design_system/gallery/entries/buttons.js.map +2 -2
  207. package/dist/modules/design_system/gallery/entries/charts.js +532 -186
  208. package/dist/modules/design_system/gallery/entries/charts.js.map +2 -2
  209. package/dist/modules/design_system/gallery/entries/dates.js +191 -3
  210. package/dist/modules/design_system/gallery/entries/dates.js.map +2 -2
  211. package/dist/modules/design_system/gallery/entries/detail.js +118 -77
  212. package/dist/modules/design_system/gallery/entries/detail.js.map +2 -2
  213. package/dist/modules/design_system/gallery/entries/display.js +1449 -240
  214. package/dist/modules/design_system/gallery/entries/display.js.map +2 -2
  215. package/dist/modules/design_system/gallery/entries/feedback.js +1058 -132
  216. package/dist/modules/design_system/gallery/entries/feedback.js.map +2 -2
  217. package/dist/modules/design_system/gallery/entries/filters.js +231 -103
  218. package/dist/modules/design_system/gallery/entries/filters.js.map +2 -2
  219. package/dist/modules/design_system/gallery/entries/foundations.js +368 -57
  220. package/dist/modules/design_system/gallery/entries/foundations.js.map +2 -2
  221. package/dist/modules/design_system/gallery/entries/icons.js +29 -91
  222. package/dist/modules/design_system/gallery/entries/icons.js.map +2 -2
  223. package/dist/modules/design_system/gallery/entries/inputs-snippets.js +154 -0
  224. package/dist/modules/design_system/gallery/entries/inputs-snippets.js.map +7 -0
  225. package/dist/modules/design_system/gallery/entries/inputs.js +2043 -306
  226. package/dist/modules/design_system/gallery/entries/inputs.js.map +2 -2
  227. package/dist/modules/design_system/gallery/entries/library.js +20 -0
  228. package/dist/modules/design_system/gallery/entries/library.js.map +7 -0
  229. package/dist/modules/design_system/gallery/entries/messages.js +121 -103
  230. package/dist/modules/design_system/gallery/entries/messages.js.map +2 -2
  231. package/dist/modules/design_system/gallery/entries/navigation.js +676 -103
  232. package/dist/modules/design_system/gallery/entries/navigation.js.map +2 -2
  233. package/dist/modules/design_system/gallery/entries/notifications.js +131 -78
  234. package/dist/modules/design_system/gallery/entries/notifications.js.map +2 -2
  235. package/dist/modules/design_system/gallery/entries/overlays.js +611 -203
  236. package/dist/modules/design_system/gallery/entries/overlays.js.map +2 -2
  237. package/dist/modules/design_system/gallery/entries/scaffolding.js +1175 -120
  238. package/dist/modules/design_system/gallery/entries/scaffolding.js.map +2 -2
  239. package/dist/modules/design_system/gallery/entries/schedule.js +79 -54
  240. package/dist/modules/design_system/gallery/entries/schedule.js.map +2 -2
  241. package/dist/modules/design_system/gallery/presentation.js +108 -0
  242. package/dist/modules/design_system/gallery/presentation.js.map +7 -0
  243. package/dist/modules/design_system/gallery/registry.js +8 -5
  244. package/dist/modules/design_system/gallery/registry.js.map +2 -2
  245. package/dist/modules/design_system/gallery/source-library.generated.js +5 -0
  246. package/dist/modules/design_system/gallery/source-library.generated.js.map +7 -0
  247. package/dist/modules/design_system/i18n/de.json +7167 -0
  248. package/dist/modules/design_system/i18n/en.json +7167 -0
  249. package/dist/modules/design_system/i18n/es.json +7167 -0
  250. package/dist/modules/design_system/i18n/ko.json +7167 -0
  251. package/dist/modules/design_system/i18n/pl.json +7167 -0
  252. package/dist/modules/push_notifications/lib/queue.js +1 -31
  253. package/dist/modules/push_notifications/lib/queue.js.map +2 -2
  254. package/jest.config.cjs +1 -0
  255. package/jest.mocks/image.js +1 -0
  256. package/package.json +8 -8
  257. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +50 -0
  258. package/src/modules/customers/backend/customers/companies/[id]/page.tsx +2 -1
  259. package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +2 -1
  260. package/src/modules/customers/backend/customers/people/[id]/page.tsx +2 -2
  261. package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +2 -1
  262. package/src/modules/customers/lib/detailHelpers.ts +4 -0
  263. package/src/modules/customers/lib/todoCompatibility.ts +10 -0
  264. package/src/modules/design_system/backend/design-system/page.meta.ts +3 -2
  265. package/src/modules/design_system/gallery/assets/README.md +30 -0
  266. package/src/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
  267. package/src/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
  268. package/src/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
  269. package/src/modules/design_system/gallery/assets/avatar-photo.png +0 -0
  270. package/src/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
  271. package/src/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
  272. package/src/modules/design_system/gallery/assets/crypto-ada.png +0 -0
  273. package/src/modules/design_system/gallery/assets/crypto-avax.png +0 -0
  274. package/src/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
  275. package/src/modules/design_system/gallery/assets/crypto-brand.png +0 -0
  276. package/src/modules/design_system/gallery/assets/crypto-btc.png +0 -0
  277. package/src/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
  278. package/src/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
  279. package/src/modules/design_system/gallery/assets/crypto-dot.png +0 -0
  280. package/src/modules/design_system/gallery/assets/crypto-eth.png +0 -0
  281. package/src/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
  282. package/src/modules/design_system/gallery/assets/crypto-history.svg +3 -0
  283. package/src/modules/design_system/gallery/assets/crypto-link.svg +3 -0
  284. package/src/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
  285. package/src/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
  286. package/src/modules/design_system/gallery/assets/crypto-more.svg +3 -0
  287. package/src/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
  288. package/src/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
  289. package/src/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
  290. package/src/modules/design_system/gallery/assets/crypto-sol.png +0 -0
  291. package/src/modules/design_system/gallery/assets/crypto-star.svg +3 -0
  292. package/src/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
  293. package/src/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
  294. package/src/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
  295. package/src/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
  296. package/src/modules/design_system/gallery/assets/crypto-trx.png +0 -0
  297. package/src/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
  298. package/src/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
  299. package/src/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
  300. package/src/modules/design_system/gallery/assets/crypto-wei.png +0 -0
  301. package/src/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
  302. package/src/modules/design_system/gallery/assets/cryptocurrency-artwork.ts +63 -0
  303. package/src/modules/design_system/gallery/assets/github-logo.png +0 -0
  304. package/src/modules/design_system/gallery/assets/images.d.ts +9 -0
  305. package/src/modules/design_system/gallery/assets/input-european-union.svg +18 -0
  306. package/src/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
  307. package/src/modules/design_system/gallery/assets/marketing-artwork.ts +79 -0
  308. package/src/modules/design_system/gallery/assets/menu-apex.svg +18 -0
  309. package/src/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
  310. package/src/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
  311. package/src/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
  312. package/src/modules/design_system/gallery/assets/select-google.png +0 -0
  313. package/src/modules/design_system/gallery/assets/select-poland.png +0 -0
  314. package/src/modules/design_system/gallery/assets/selection-artwork.ts +1 -0
  315. package/src/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
  316. package/src/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
  317. package/src/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
  318. package/src/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
  319. package/src/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
  320. package/src/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
  321. package/src/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
  322. package/src/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
  323. package/src/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
  324. package/src/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
  325. package/src/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
  326. package/src/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
  327. package/src/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
  328. package/src/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
  329. package/src/modules/design_system/gallery/assets/style-studio-product.png +0 -0
  330. package/src/modules/design_system/gallery/assets/upload-images.ts +5 -0
  331. package/src/modules/design_system/gallery/components/BrandStylePreview.tsx +94 -0
  332. package/src/modules/design_system/gallery/components/CodeSnippet.tsx +34 -34
  333. package/src/modules/design_system/gallery/components/ColorPlayground.tsx +324 -0
  334. package/src/modules/design_system/gallery/components/ColorStudioCompositions.tsx +96 -0
  335. package/src/modules/design_system/gallery/components/ColorStudioSpecimen.tsx +164 -0
  336. package/src/modules/design_system/gallery/components/CompactEntrySpecimen.tsx +65 -0
  337. package/src/modules/design_system/gallery/components/ComponentIndex.tsx +47 -0
  338. package/src/modules/design_system/gallery/components/DesignSystemHome.tsx +66 -0
  339. package/src/modules/design_system/gallery/components/EntryCard.tsx +52 -37
  340. package/src/modules/design_system/gallery/components/EntryHeader.tsx +80 -0
  341. package/src/modules/design_system/gallery/components/FamilyEntryPreview.tsx +22 -0
  342. package/src/modules/design_system/gallery/components/FoundationGuide.tsx +43 -0
  343. package/src/modules/design_system/gallery/components/GalleryLink.tsx +19 -0
  344. package/src/modules/design_system/gallery/components/GalleryNavigation.tsx +86 -0
  345. package/src/modules/design_system/gallery/components/GalleryShell.tsx +149 -63
  346. package/src/modules/design_system/gallery/components/IconsBrowser.tsx +40 -0
  347. package/src/modules/design_system/gallery/components/SourceLibrary.tsx +90 -0
  348. package/src/modules/design_system/gallery/components/StyleAgents.tsx +115 -0
  349. package/src/modules/design_system/gallery/components/ThemeTokenReference.tsx +76 -0
  350. package/src/modules/design_system/gallery/components/VariantPreview.tsx +2 -2
  351. package/src/modules/design_system/gallery/components/colorPreview.ts +63 -0
  352. package/src/modules/design_system/gallery/components/colorStudio.ts +260 -0
  353. package/src/modules/design_system/gallery/components/styleAgentBranding.ts +42 -0
  354. package/src/modules/design_system/gallery/components/themeTokens.ts +26 -0
  355. package/src/modules/design_system/gallery/demos/ai-product-code.generated.ts +3 -0
  356. package/src/modules/design_system/gallery/demos/ai-product.tsx +188 -0
  357. package/src/modules/design_system/gallery/demos/buttons.tsx +331 -0
  358. package/src/modules/design_system/gallery/demos/cryptocurrency.tsx +1943 -0
  359. package/src/modules/design_system/gallery/demos/feeds-code.generated.ts +4 -0
  360. package/src/modules/design_system/gallery/demos/feeds.tsx +82 -0
  361. package/src/modules/design_system/gallery/demos/file-upload.tsx +61 -0
  362. package/src/modules/design_system/gallery/demos/foundation-reference-data.ts +4872 -0
  363. package/src/modules/design_system/gallery/demos/foundation-references.tsx +140 -0
  364. package/src/modules/design_system/gallery/demos/key-components-code.generated.ts +3 -0
  365. package/src/modules/design_system/gallery/demos/key-components.tsx +106 -0
  366. package/src/modules/design_system/gallery/demos/marketing-controls-code.generated.ts +3 -0
  367. package/src/modules/design_system/gallery/demos/marketing-controls.tsx +92 -0
  368. package/src/modules/design_system/gallery/demos/marketing-widgets-code.generated.ts +3 -0
  369. package/src/modules/design_system/gallery/demos/marketing-widgets.tsx +189 -0
  370. package/src/modules/design_system/gallery/demos/menu-fixtures.tsx +48 -0
  371. package/src/modules/design_system/gallery/demos/menu-sources.ts +5 -0
  372. package/src/modules/design_system/gallery/demos/menus.tsx +122 -0
  373. package/src/modules/design_system/gallery/demos/rating-reviews.tsx +44 -0
  374. package/src/modules/design_system/gallery/demos/registered-icons.tsx +117 -0
  375. package/src/modules/design_system/gallery/demos/selection-cards.tsx +97 -0
  376. package/src/modules/design_system/gallery/demos/shell-code.generated.ts +3 -0
  377. package/src/modules/design_system/gallery/demos/shell.tsx +183 -0
  378. package/src/modules/design_system/gallery/demos/source-artwork.tsx +88 -0
  379. package/src/modules/design_system/gallery/demos/source-filters-code.generated.ts +3 -0
  380. package/src/modules/design_system/gallery/demos/source-filters.tsx +119 -0
  381. package/src/modules/design_system/gallery/demos/source-icons.tsx +62 -0
  382. package/src/modules/design_system/gallery/demos/table-cells-code.generated.ts +3 -0
  383. package/src/modules/design_system/gallery/demos/table-cells.tsx +144 -0
  384. package/src/modules/design_system/gallery/demos/text-inputs.tsx +90 -0
  385. package/src/modules/design_system/gallery/demos/time-picker-code.generated.ts +5 -0
  386. package/src/modules/design_system/gallery/demos/time-picker.tsx +31 -0
  387. package/src/modules/design_system/gallery/entries/banners.tsx +143 -94
  388. package/src/modules/design_system/gallery/entries/buttons-snippets.ts +432 -0
  389. package/src/modules/design_system/gallery/entries/buttons.tsx +125 -196
  390. package/src/modules/design_system/gallery/entries/charts.tsx +545 -233
  391. package/src/modules/design_system/gallery/entries/dates.tsx +171 -3
  392. package/src/modules/design_system/gallery/entries/detail.tsx +142 -115
  393. package/src/modules/design_system/gallery/entries/display.tsx +1691 -319
  394. package/src/modules/design_system/gallery/entries/feedback.tsx +1082 -169
  395. package/src/modules/design_system/gallery/entries/filters.tsx +238 -143
  396. package/src/modules/design_system/gallery/entries/foundations.tsx +404 -61
  397. package/src/modules/design_system/gallery/entries/icons.tsx +31 -117
  398. package/src/modules/design_system/gallery/entries/inputs-snippets.ts +156 -0
  399. package/src/modules/design_system/gallery/entries/inputs.tsx +2146 -503
  400. package/src/modules/design_system/gallery/entries/library.tsx +16 -0
  401. package/src/modules/design_system/gallery/entries/messages.tsx +114 -106
  402. package/src/modules/design_system/gallery/entries/navigation.tsx +782 -192
  403. package/src/modules/design_system/gallery/entries/notifications.tsx +145 -120
  404. package/src/modules/design_system/gallery/entries/overlays.tsx +696 -280
  405. package/src/modules/design_system/gallery/entries/scaffolding.tsx +1192 -158
  406. package/src/modules/design_system/gallery/entries/schedule.tsx +72 -58
  407. package/src/modules/design_system/gallery/presentation.ts +106 -0
  408. package/src/modules/design_system/gallery/registry.ts +8 -6
  409. package/src/modules/design_system/gallery/source-library.generated.ts +2 -0
  410. package/src/modules/design_system/i18n/de.json +7112 -3
  411. package/src/modules/design_system/i18n/en.json +7112 -3
  412. package/src/modules/design_system/i18n/es.json +7112 -3
  413. package/src/modules/design_system/i18n/ko.json +7112 -3
  414. package/src/modules/design_system/i18n/pl.json +7112 -3
  415. package/src/modules/push_notifications/AGENTS.md +9 -5
  416. package/src/modules/push_notifications/lib/queue.ts +15 -44
@@ -1,11 +1,10 @@
1
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
1
2
  import * as React from 'react'
3
+ import { SourceFilterParts, SourceFilterPanel, SourceFilterToolbar } from '../demos/source-filters'
4
+ import { sourceFilterExampleCode } from '../demos/source-filters-code.generated'
2
5
  import { Download } from 'lucide-react'
3
6
  import { Button } from '@open-mercato/ui/primitives/button'
4
- import {
5
- FilterBar,
6
- type FilterDef,
7
- type FilterValues,
8
- } from '@open-mercato/ui/backend/FilterBar'
7
+ import { FilterBar, type FilterDef, type FilterValues } from '@open-mercato/ui/backend/FilterBar'
9
8
  import { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'
10
9
  import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'
11
10
  import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'
@@ -14,11 +13,7 @@ import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'
14
13
  import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'
15
14
  import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'
16
15
  import type { FilterFieldDef } from '@open-mercato/shared/lib/query/advanced-filter'
17
- import type {
18
- AdvancedFilterTree,
19
- FilterGroup,
20
- FilterRule,
21
- } from '@open-mercato/shared/lib/query/advanced-filter-tree'
16
+ import type { AdvancedFilterTree, FilterGroup, FilterRule } from '@open-mercato/shared/lib/query/advanced-filter-tree'
22
17
  import type { GalleryEntry } from '../types'
23
18
 
24
19
  // Component titles and variant names are proper nouns from the codebase and
@@ -35,101 +30,231 @@ import type { GalleryEntry } from '../types'
35
30
  // Inline demo data — no API calls. Field defs and trees mirror what CRM list
36
31
  // pages pass to the advanced filter stack.
37
32
  // ---------------------------------------------------------------------------
38
-
39
- const demoFilterDefs: FilterDef[] = [
40
- { id: 'city', label: 'City', type: 'text', placeholder: 'e.g. Berlin' },
33
+ function FilterBarEntryTrailingItemsPreview() {
34
+ const t = useT()
35
+ return (
36
+ <DemoFilterBar
37
+ trailingItems={
38
+ <Button variant="outline" size="sm">
39
+ <Download />
40
+ {t('design_system.gallery.samples.content.export')}
41
+ </Button>
42
+ }
43
+ />
44
+ )
45
+ }
46
+ function ListEmptyStateEntryWithCreateActionPreview() {
47
+ const t = useT()
48
+ return (
49
+ <div className="w-full max-w-xl">
50
+ <ListEmptyState
51
+ entityName={t('design_system.gallery.samples.content.companies')}
52
+ onCreate={() => {}}
53
+ createLabel={t('design_system.gallery.samples.content.addCompany')}
54
+ />
55
+ </div>
56
+ )
57
+ }
58
+ function ListEmptyStateEntryCustomCopyPreview() {
59
+ const t = useT()
60
+ return (
61
+ <div className="w-full max-w-xl">
62
+ <ListEmptyState
63
+ title={t('design_system.gallery.samples.content.noImportsYet')}
64
+ description={t('design_system.gallery.samples.content.connectASourceOrUploadACsvFileToBringRecordsIn')}
65
+ />
66
+ </div>
67
+ )
68
+ }
69
+ function FilteredEmptyResultsEntryFiltersOnlyPreview() {
70
+ const t = useT()
71
+ return (
72
+ <div className="w-full max-w-xl">
73
+ <FilteredEmptyResults
74
+ entityNamePlural={t('design_system.gallery.samples.content.companies')}
75
+ canRemoveLast
76
+ onClearAll={() => {}}
77
+ onRemoveLast={() => {}}
78
+ />
79
+ </div>
80
+ )
81
+ }
82
+ function FilteredEmptyResultsEntryWithSearchPreview() {
83
+ const t = useT()
84
+ return (
85
+ <div className="w-full max-w-xl">
86
+ <FilteredEmptyResults
87
+ entityNamePlural={t('design_system.gallery.samples.content.companies')}
88
+ canRemoveLast
89
+ onClearAll={() => {}}
90
+ onRemoveLast={() => {}}
91
+ onClearSearch={() => {}}
92
+ />
93
+ </div>
94
+ )
95
+ }
96
+ function SearchEmptyResultsEntryWithEntityPreview() {
97
+ const t = useT()
98
+ return (
99
+ <div className="flex w-full max-w-xl justify-center">
100
+ <SearchEmptyResults
101
+ query="northwind"
102
+ entityNamePlural={t('design_system.gallery.samples.content.companies')}
103
+ onClearSearch={() => {}}
104
+ />
105
+ </div>
106
+ )
107
+ }
108
+ function QuickFiltersEntryPresetsPreview() {
109
+ const t = useT()
110
+ return (
111
+ <div className="w-full max-w-xl">
112
+ <QuickFilters presets={demoPresets(t)} userId="user-1" onApply={() => {}} />
113
+ </div>
114
+ )
115
+ }
116
+ function QuickFiltersEntryUserScopedPreview() {
117
+ const t = useT()
118
+ return (
119
+ <div className="flex w-full max-w-xl flex-col gap-6">
120
+ <QuickFilters presets={userScopedPresets(t)} userId="user-1" onApply={() => {}} />
121
+ <QuickFilters presets={userScopedPresets(t)} userId="" onApply={() => {}} />
122
+ </div>
123
+ )
124
+ }
125
+ const demoFilterDefs = (t: ReturnType<typeof useT>): FilterDef[] => [
126
+ {
127
+ id: 'city',
128
+ label: t('design_system.gallery.samples.content.city'),
129
+ type: 'text',
130
+ placeholder: t('design_system.gallery.samples.content.eGBerlin'),
131
+ },
41
132
  {
42
133
  id: 'status',
43
- label: 'Status',
134
+ label: t('design_system.gallery.samples.content.status'),
44
135
  type: 'select',
45
136
  options: [
46
- { value: 'active', label: 'Active' },
47
- { value: 'prospect', label: 'Prospect' },
48
- { value: 'churned', label: 'Churned' },
137
+ {
138
+ value: 'active',
139
+ label: t('design_system.gallery.samples.content.active'),
140
+ },
141
+ {
142
+ value: 'prospect',
143
+ label: t('design_system.gallery.samples.content.prospect'),
144
+ },
145
+ {
146
+ value: 'churned',
147
+ label: t('design_system.gallery.samples.content.churned'),
148
+ },
49
149
  ],
50
150
  },
51
- { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },
151
+ {
152
+ id: 'hasOpenDeals',
153
+ label: t('design_system.gallery.samples.content.hasOpenDeals'),
154
+ type: 'checkbox',
155
+ },
52
156
  ]
53
-
54
- const demoFields: FilterFieldDef[] = [
55
- { key: 'name', label: 'Name', type: 'text' },
56
- { key: 'email', label: 'Email', type: 'text' },
157
+ const demoFields = (t: ReturnType<typeof useT>): FilterFieldDef[] => [
158
+ {
159
+ key: 'name',
160
+ label: t('design_system.gallery.samples.content.name'),
161
+ type: 'text',
162
+ },
163
+ {
164
+ key: 'email',
165
+ label: t('design_system.gallery.samples.content.email'),
166
+ type: 'text',
167
+ },
57
168
  {
58
169
  key: 'status',
59
- label: 'Status',
170
+ label: t('design_system.gallery.samples.content.status'),
60
171
  type: 'select',
61
172
  options: [
62
- { value: 'active', label: 'Active', tone: 'success' },
63
- { value: 'prospect', label: 'Prospect', tone: 'info' },
64
- { value: 'churned', label: 'Churned', tone: 'error' },
173
+ {
174
+ value: 'active',
175
+ label: t('design_system.gallery.samples.content.active'),
176
+ tone: 'success',
177
+ },
178
+ {
179
+ value: 'prospect',
180
+ label: t('design_system.gallery.samples.content.prospect'),
181
+ tone: 'info',
182
+ },
183
+ {
184
+ value: 'churned',
185
+ label: t('design_system.gallery.samples.content.churned'),
186
+ tone: 'error',
187
+ },
65
188
  ],
66
189
  },
67
- { key: 'employees', label: 'Employees', type: 'number' },
190
+ {
191
+ key: 'employees',
192
+ label: t('design_system.gallery.samples.content.employees'),
193
+ type: 'number',
194
+ },
68
195
  ]
69
-
70
196
  function rule(id: string, field: string, operator: FilterRule['operator'], value: unknown): FilterRule {
71
- return { id, type: 'rule', field, operator, value }
197
+ return {
198
+ id,
199
+ type: 'rule',
200
+ field,
201
+ operator,
202
+ value,
203
+ }
72
204
  }
73
-
74
205
  function tree(children: FilterGroup['children']): AdvancedFilterTree {
75
- return { root: { id: 'root', type: 'group', combinator: 'and', children } }
206
+ return {
207
+ root: {
208
+ id: 'root',
209
+ type: 'group',
210
+ combinator: 'and',
211
+ children,
212
+ },
213
+ }
76
214
  }
77
-
78
215
  const ruleChipsTree = tree([
79
216
  rule('r1', 'name', 'contains', 'north'),
80
217
  rule('r2', 'status', 'is', 'active'),
81
218
  rule('r3', 'employees', 'between', [10, 50]),
82
219
  ])
83
-
84
220
  const groupChipTree = tree([
85
221
  {
86
222
  id: 'g1',
87
223
  type: 'group',
88
224
  combinator: 'or',
89
- children: [
90
- rule('g1r1', 'status', 'is', 'prospect'),
91
- rule('g1r2', 'status', 'is', 'churned'),
92
- ],
225
+ children: [rule('g1r1', 'status', 'is', 'prospect'), rule('g1r2', 'status', 'is', 'churned')],
93
226
  },
94
227
  ])
95
-
96
228
  const valuelessChipTree = tree([rule('r4', 'email', 'is_empty', null)])
97
-
98
229
  const builderSingleRuleTree = tree([rule('b1', 'status', 'is', 'active')])
99
-
100
230
  const builderNestedTree = tree([
101
231
  rule('b2', 'name', 'contains', 'north'),
102
232
  {
103
233
  id: 'bg1',
104
234
  type: 'group',
105
235
  combinator: 'or',
106
- children: [
107
- rule('bg1r1', 'status', 'is', 'prospect'),
108
- rule('bg1r2', 'employees', 'greater_than', 100),
109
- ],
236
+ children: [rule('bg1r1', 'status', 'is', 'prospect'), rule('bg1r2', 'employees', 'greater_than', 100)],
110
237
  },
111
238
  ])
112
-
113
- const demoPresets: FilterPreset[] = [
239
+ const demoPresets = (t: ReturnType<typeof useT>): FilterPreset[] => [
114
240
  {
115
241
  id: 'active-accounts',
116
- labelKey: 'Active accounts',
242
+ labelKey: t('design_system.gallery.samples.content.activeAccounts'),
117
243
  iconName: 'filter',
118
244
  build: () => tree([rule('p1', 'status', 'is', 'active')]),
119
245
  },
120
246
  {
121
247
  id: 'added-this-week',
122
- labelKey: 'Added this week',
248
+ labelKey: t('design_system.gallery.samples.content.addedThisWeek'),
123
249
  iconName: 'clock',
124
250
  build: () => tree([rule('p2', 'name', 'is_not_empty', null)]),
125
251
  },
126
252
  ]
127
-
128
- const userScopedPresets: FilterPreset[] = [
129
- ...demoPresets,
253
+ const userScopedPresets = (t: ReturnType<typeof useT>): FilterPreset[] => [
254
+ ...demoPresets(t),
130
255
  {
131
256
  id: 'my-accounts',
132
- labelKey: 'My accounts',
257
+ labelKey: t('design_system.gallery.samples.content.myAccounts'),
133
258
  requiresUser: true,
134
259
  build: ({ userId }) => tree([rule('p3', 'name', 'contains', userId)]),
135
260
  },
@@ -141,21 +266,18 @@ const userScopedPresets: FilterPreset[] = [
141
266
  // these wrappers.
142
267
  // ---------------------------------------------------------------------------
143
268
 
144
- function DemoFilterBar({
145
- layout,
146
- trailingItems,
147
- }: {
148
- layout?: 'stacked' | 'inline'
149
- trailingItems?: React.ReactNode
150
- }) {
269
+ function DemoFilterBar({ layout, trailingItems }: { layout?: 'stacked' | 'inline'; trailingItems?: React.ReactNode }) {
270
+ const t = useT()
151
271
  const [search, setSearch] = React.useState('')
152
- const [values, setValues] = React.useState<FilterValues>({ status: 'active' })
272
+ const [values, setValues] = React.useState<FilterValues>({
273
+ status: 'active',
274
+ })
153
275
  return (
154
276
  <div className="w-full max-w-2xl">
155
277
  <FilterBar
156
278
  searchValue={search}
157
279
  onSearchChange={setSearch}
158
- filters={demoFilterDefs}
280
+ filters={demoFilterDefs(t)}
159
281
  values={values}
160
282
  onApply={setValues}
161
283
  onClear={() => setValues({})}
@@ -165,18 +287,21 @@ function DemoFilterBar({
165
287
  </div>
166
288
  )
167
289
  }
168
-
169
290
  function DemoActiveFilterChips({ initialTree }: { initialTree: AdvancedFilterTree }) {
291
+ const t = useT()
170
292
  const [value, setValue] = React.useState(initialTree)
171
293
  const removeNode = (id: string) =>
172
294
  setValue((prev) => ({
173
- root: { ...prev.root, children: prev.root.children.filter((child) => child.id !== id) },
295
+ root: {
296
+ ...prev.root,
297
+ children: prev.root.children.filter((child) => child.id !== id),
298
+ },
174
299
  }))
175
300
  return (
176
301
  <div className="w-full max-w-2xl">
177
302
  <ActiveFilterChips
178
303
  tree={value}
179
- fields={demoFields}
304
+ fields={demoFields(t)}
180
305
  popoverOpen={false}
181
306
  onRemoveNode={removeNode}
182
307
  onOpen={() => {}}
@@ -184,13 +309,13 @@ function DemoActiveFilterChips({ initialTree }: { initialTree: AdvancedFilterTre
184
309
  </div>
185
310
  )
186
311
  }
187
-
188
312
  function DemoAdvancedFilterBuilder({ initialTree }: { initialTree: AdvancedFilterTree }) {
313
+ const t = useT()
189
314
  const [value, setValue] = React.useState(initialTree)
190
315
  return (
191
316
  <div className="w-full max-w-2xl rounded-lg border bg-popover p-3">
192
317
  <AdvancedFilterBuilder
193
- fields={demoFields}
318
+ fields={demoFields(t)}
194
319
  value={value}
195
320
  onChange={setValue}
196
321
  onApply={() => {}}
@@ -199,8 +324,8 @@ function DemoAdvancedFilterBuilder({ initialTree }: { initialTree: AdvancedFilte
199
324
  </div>
200
325
  )
201
326
  }
202
-
203
327
  function DemoFilterEmptyState({ withQuickFilters }: { withQuickFilters?: boolean }) {
328
+ const t = useT()
204
329
  const addConditionRef = React.useRef<HTMLButtonElement | null>(null)
205
330
  return (
206
331
  <div className="w-full max-w-xl rounded-lg border bg-popover">
@@ -208,15 +333,12 @@ function DemoFilterEmptyState({ withQuickFilters }: { withQuickFilters?: boolean
208
333
  onAddCondition={() => {}}
209
334
  addConditionRef={addConditionRef}
210
335
  quickFilters={
211
- withQuickFilters ? (
212
- <QuickFilters presets={demoPresets} userId="user-1" onApply={() => {}} />
213
- ) : undefined
336
+ withQuickFilters ? <QuickFilters presets={demoPresets(t)} userId="user-1" onApply={() => {}} /> : undefined
214
337
  }
215
338
  />
216
339
  </div>
217
340
  )
218
341
  }
219
-
220
342
  const filterBarEntry: GalleryEntry = {
221
343
  id: 'filter-bar',
222
344
  title: 'FilterBar',
@@ -261,16 +383,7 @@ const filters: FilterDef[] = [
261
383
  {
262
384
  id: 'trailing-items',
263
385
  title: 'With trailing items',
264
- render: () => (
265
- <DemoFilterBar
266
- trailingItems={
267
- <Button variant="outline" size="sm">
268
- <Download />
269
- Export
270
- </Button>
271
- }
272
- />
273
- ),
386
+ render: () => <FilterBarEntryTrailingItemsPreview />,
274
387
  code: `import { Download } from 'lucide-react'
275
388
  import { FilterBar } from '@open-mercato/ui/backend/FilterBar'
276
389
  import { Button } from '@open-mercato/ui/primitives/button'
@@ -286,7 +399,6 @@ import { Button } from '@open-mercato/ui/primitives/button'
286
399
  },
287
400
  ],
288
401
  }
289
-
290
402
  const quickFiltersEntry: GalleryEntry = {
291
403
  id: 'quick-filters',
292
404
  title: 'QuickFilters',
@@ -295,11 +407,7 @@ const quickFiltersEntry: GalleryEntry = {
295
407
  {
296
408
  id: 'presets',
297
409
  title: 'Presets (used inside AdvancedFilterPanel)',
298
- render: () => (
299
- <div className="w-full max-w-xl">
300
- <QuickFilters presets={demoPresets} userId="user-1" onApply={() => {}} />
301
- </div>
302
- ),
410
+ render: () => <QuickFiltersEntryPresetsPreview />,
303
411
  code: `import { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'
304
412
 
305
413
  const presets: FilterPreset[] = [
@@ -312,12 +420,7 @@ const presets: FilterPreset[] = [
312
420
  {
313
421
  id: 'user-scoped',
314
422
  title: 'User-scoped preset (hidden without userId)',
315
- render: () => (
316
- <div className="flex w-full max-w-xl flex-col gap-6">
317
- <QuickFilters presets={userScopedPresets} userId="user-1" onApply={() => {}} />
318
- <QuickFilters presets={userScopedPresets} userId="" onApply={() => {}} />
319
- </div>
320
- ),
423
+ render: () => <QuickFiltersEntryUserScopedPreview />,
321
424
  code: `import { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'
322
425
 
323
426
  // Presets with requiresUser: true are hidden when userId is empty.
@@ -325,7 +428,6 @@ const presets: FilterPreset[] = [
325
428
  },
326
429
  ],
327
430
  }
328
-
329
431
  const activeFilterChipsEntry: GalleryEntry = {
330
432
  id: 'active-filter-chips',
331
433
  title: 'ActiveFilterChips',
@@ -365,7 +467,6 @@ const activeFilterChipsEntry: GalleryEntry = {
365
467
  },
366
468
  ],
367
469
  }
368
-
369
470
  const advancedFilterBuilderEntry: GalleryEntry = {
370
471
  id: 'advanced-filter-builder',
371
472
  title: 'AdvancedFilterBuilder',
@@ -396,7 +497,6 @@ const advancedFilterBuilderEntry: GalleryEntry = {
396
497
  },
397
498
  ],
398
499
  }
399
-
400
500
  const filterEmptyStateEntry: GalleryEntry = {
401
501
  id: 'filter-empty-state',
402
502
  title: 'FilterEmptyState',
@@ -425,7 +525,6 @@ import { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'
425
525
  },
426
526
  ],
427
527
  }
428
-
429
528
  const listEmptyStateEntry: GalleryEntry = {
430
529
  id: 'list-empty-state',
431
530
  title: 'ListEmptyState',
@@ -434,11 +533,7 @@ const listEmptyStateEntry: GalleryEntry = {
434
533
  {
435
534
  id: 'with-create-action',
436
535
  title: 'With create action',
437
- render: () => (
438
- <div className="w-full max-w-xl">
439
- <ListEmptyState entityName="companies" onCreate={() => {}} createLabel="Add company" />
440
- </div>
441
- ),
536
+ render: () => <ListEmptyStateEntryWithCreateActionPreview />,
442
537
  code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'
443
538
 
444
539
  // Pass to DataTable's emptyState for the zero-records case.
@@ -447,14 +542,7 @@ const listEmptyStateEntry: GalleryEntry = {
447
542
  {
448
543
  id: 'custom-copy',
449
544
  title: 'Custom title and description',
450
- render: () => (
451
- <div className="w-full max-w-xl">
452
- <ListEmptyState
453
- title="No imports yet"
454
- description="Connect a source or upload a CSV file to bring records in."
455
- />
456
- </div>
457
- ),
545
+ render: () => <ListEmptyStateEntryCustomCopyPreview />,
458
546
  code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'
459
547
 
460
548
  <ListEmptyState
@@ -464,7 +552,6 @@ const listEmptyStateEntry: GalleryEntry = {
464
552
  },
465
553
  ],
466
554
  }
467
-
468
555
  const filteredEmptyResultsEntry: GalleryEntry = {
469
556
  id: 'filtered-empty-results',
470
557
  title: 'FilteredEmptyResults',
@@ -473,16 +560,7 @@ const filteredEmptyResultsEntry: GalleryEntry = {
473
560
  {
474
561
  id: 'filters-only',
475
562
  title: 'Filters active',
476
- render: () => (
477
- <div className="w-full max-w-xl">
478
- <FilteredEmptyResults
479
- entityNamePlural="companies"
480
- canRemoveLast
481
- onClearAll={() => {}}
482
- onRemoveLast={() => {}}
483
- />
484
- </div>
485
- ),
563
+ render: () => <FilteredEmptyResultsEntryFiltersOnlyPreview />,
486
564
  code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'
487
565
 
488
566
  // DataTable renders this automatically when filters match nothing.
@@ -496,17 +574,7 @@ const filteredEmptyResultsEntry: GalleryEntry = {
496
574
  {
497
575
  id: 'with-search',
498
576
  title: 'Search and filters active',
499
- render: () => (
500
- <div className="w-full max-w-xl">
501
- <FilteredEmptyResults
502
- entityNamePlural="companies"
503
- canRemoveLast
504
- onClearAll={() => {}}
505
- onRemoveLast={() => {}}
506
- onClearSearch={() => {}}
507
- />
508
- </div>
509
- ),
577
+ render: () => <FilteredEmptyResultsEntryWithSearchPreview />,
510
578
  code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'
511
579
 
512
580
  // Passing onClearSearch switches to combined copy and clears both at once.
@@ -520,7 +588,6 @@ const filteredEmptyResultsEntry: GalleryEntry = {
520
588
  },
521
589
  ],
522
590
  }
523
-
524
591
  const searchEmptyResultsEntry: GalleryEntry = {
525
592
  id: 'search-empty-results',
526
593
  title: 'SearchEmptyResults',
@@ -542,23 +609,51 @@ const searchEmptyResultsEntry: GalleryEntry = {
542
609
  {
543
610
  id: 'with-entity',
544
611
  title: 'With entity label',
545
- render: () => (
546
- <div className="flex w-full max-w-xl justify-center">
547
- <SearchEmptyResults
548
- query="northwind"
549
- entityNamePlural="companies"
550
- onClearSearch={() => {}}
551
- />
552
- </div>
553
- ),
612
+ render: () => <SearchEmptyResultsEntryWithEntityPreview />,
554
613
  code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'
555
614
 
556
615
  <SearchEmptyResults query={search} entityNamePlural="companies" onClearSearch={() => setSearch('')} />`,
557
616
  },
558
617
  ],
559
618
  }
560
-
561
619
  export const entries: GalleryEntry[] = [
620
+ {
621
+ id: 'filter-toolbar',
622
+ title: 'Filter Compositions',
623
+ importPath: '@open-mercato/ui/primitives/filter-toolbar',
624
+ figmaNodeId: '4370:6018',
625
+ descriptionKey: 'design_system.entries.filterToolbar.description',
626
+ variants: [
627
+ {
628
+ id: 'table',
629
+ title: 'Horizontal / table',
630
+ render: () => <SourceFilterToolbar type="table" />,
631
+ code: sourceFilterExampleCode('<SourceFilterToolbar type="table" />'),
632
+ },
633
+ {
634
+ id: 'calendar',
635
+ title: 'Horizontal / calendar',
636
+ render: () => <SourceFilterToolbar type="calendar" />,
637
+ code: sourceFilterExampleCode('<SourceFilterToolbar type="calendar" />'),
638
+ },
639
+ {
640
+ id: 'vertical-parts',
641
+ title: 'Vertical / items, header and footer',
642
+ render: () => <SourceFilterParts />,
643
+ code: sourceFilterExampleCode('<SourceFilterParts />'),
644
+ },
645
+ {
646
+ id: 'vertical-panel',
647
+ title: 'Vertical / apply draft filters',
648
+ render: () => (
649
+ <div className="w-[640px] max-w-full rounded-lg border border-border">
650
+ <SourceFilterPanel />
651
+ </div>
652
+ ),
653
+ code: sourceFilterExampleCode('<SourceFilterPanel />'),
654
+ },
655
+ ],
656
+ },
562
657
  filterBarEntry,
563
658
  quickFiltersEntry,
564
659
  activeFilterChipsEntry,