@open-mercato/core 0.7.1-develop.7202.1.a52dc6707c → 0.8.0

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 -9
  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,4 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
2
3
  import { Badge } from "@open-mercato/ui/primitives/badge";
3
4
  import { Button } from "@open-mercato/ui/primitives/button";
4
5
  import {
@@ -9,79 +10,160 @@ import {
9
10
  LoadingMessage,
10
11
  NotesSection
11
12
  } from "@open-mercato/ui/backend/detail";
13
+ function LoadingMessageEntryDefaultPreview() {
14
+ const t = useT();
15
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(LoadingMessage, { label: t("design_system.gallery.samples.content.loadingCustomer") }) });
16
+ }
17
+ function ErrorMessageEntryBasicPreview() {
18
+ const t = useT();
19
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(ErrorMessage, { label: t("design_system.gallery.samples.content.failedToLoadCustomer") }) });
20
+ }
21
+ function ErrorMessageEntryWithDescriptionActionPreview() {
22
+ const t = useT();
23
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(
24
+ ErrorMessage,
25
+ {
26
+ label: t("design_system.gallery.samples.content.failedToLoadAttachments"),
27
+ description: t("design_system.gallery.samples.content.theStorageServiceDidNotRespondInTime"),
28
+ action: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", children: t("design_system.gallery.samples.content.retry") })
29
+ }
30
+ ) });
31
+ }
32
+ function NotesSectionEntryMockAdapterPreview() {
33
+ const t = useT();
34
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
35
+ NotesSection,
36
+ {
37
+ entityId: "person-1",
38
+ viewerUserId: "user-1",
39
+ viewerName: "Anna Nowak",
40
+ emptyLabel: t("design_system.gallery.samples.content.noNotesYet"),
41
+ addActionLabel: t("design_system.gallery.samples.content.addNote"),
42
+ emptyState: {
43
+ title: t("design_system.gallery.samples.content.noNotesYet"),
44
+ actionLabel: t("design_system.gallery.samples.content.addNote"),
45
+ description: t("design_system.gallery.samples.content.notesAddedHereAreVisibleToTheWholeTeam")
46
+ },
47
+ translator: t,
48
+ dataAdapter: notesAdapter(t)
49
+ }
50
+ ) });
51
+ }
52
+ function AddressesSectionEntryMockAdapterPreview() {
53
+ const t = useT();
54
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
55
+ AddressesSection,
56
+ {
57
+ entityId: "person-1",
58
+ emptyLabel: t("design_system.gallery.samples.content.noAddressesYet"),
59
+ addActionLabel: t("design_system.gallery.samples.content.addAddress"),
60
+ emptyState: {
61
+ title: t("design_system.gallery.samples.content.noAddressesYet"),
62
+ actionLabel: t("design_system.gallery.samples.content.addAddress")
63
+ },
64
+ translator: t,
65
+ dataAdapter: addressesAdapter(t)
66
+ }
67
+ ) });
68
+ }
69
+ function AttachmentsSectionEntryUnsavedRecordPreview() {
70
+ const t = useT();
71
+ return /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
72
+ AttachmentsSection,
73
+ {
74
+ entityId: "customers:person",
75
+ recordId: null,
76
+ title: t("design_system.gallery.samples.content.attachments"),
77
+ description: t("design_system.gallery.samples.content.filesLinkedToThisRecord")
78
+ }
79
+ ) });
80
+ }
81
+ function DetailFieldsSectionEntryFieldGridPreview() {
82
+ const t = useT();
83
+ return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(DetailFieldsSection, { fields: fieldGrid(t) }) });
84
+ }
85
+ function DetailFieldsSectionEntryCustomFieldPreview() {
86
+ const t = useT();
87
+ return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(DetailFieldsSection, { fields: fieldGridWithCustom(t) }) });
88
+ }
12
89
  const saveNoop = async () => {
13
90
  };
14
- const fieldGrid = [
91
+ const fieldGrid = (t) => [
15
92
  {
16
93
  key: "first-name",
17
94
  kind: "text",
18
- label: "First name",
95
+ label: t("design_system.gallery.samples.content.firstName"),
19
96
  value: "Anna",
20
- emptyLabel: "Add first name",
97
+ emptyLabel: t("design_system.gallery.samples.content.addFirstName"),
21
98
  onSave: saveNoop
22
99
  },
23
100
  {
24
101
  key: "phone",
25
102
  kind: "text",
26
- label: "Phone",
103
+ label: t("design_system.gallery.samples.content.phone"),
27
104
  value: null,
28
- emptyLabel: "Add phone",
105
+ emptyLabel: t("design_system.gallery.samples.content.addPhone"),
29
106
  onSave: saveNoop
30
107
  },
31
108
  {
32
109
  key: "status",
33
110
  kind: "select",
34
- label: "Status",
111
+ label: t("design_system.gallery.samples.content.status"),
35
112
  value: "active",
36
- emptyLabel: "Set status",
113
+ emptyLabel: t("design_system.gallery.samples.content.setStatus"),
37
114
  options: [
38
- { value: "active", label: "Active" },
39
- { value: "inactive", label: "Inactive" }
115
+ {
116
+ value: "active",
117
+ label: t("design_system.gallery.samples.content.active")
118
+ },
119
+ {
120
+ value: "inactive",
121
+ label: t("design_system.gallery.samples.content.inactive")
122
+ }
40
123
  ],
41
124
  onSave: saveNoop
42
125
  },
43
126
  {
44
127
  key: "notes",
45
128
  kind: "multiline",
46
- label: "Notes",
47
- value: "Prefers email contact.",
48
- emptyLabel: "Add notes",
129
+ label: t("design_system.gallery.samples.content.notes"),
130
+ value: t("design_system.gallery.samples.content.prefersEmailContact"),
131
+ emptyLabel: t("design_system.gallery.samples.content.addNotes"),
49
132
  onSave: saveNoop,
50
133
  gridClassName: "sm:col-span-2 md:col-span-3"
51
134
  }
52
135
  ];
53
- const fieldGridWithCustom = [
136
+ const fieldGridWithCustom = (t) => [
54
137
  {
55
138
  key: "email",
56
139
  kind: "text",
57
- label: "Email",
140
+ label: t("design_system.gallery.samples.content.email"),
58
141
  value: "anna@example.com",
59
- emptyLabel: "Add email",
142
+ emptyLabel: t("design_system.gallery.samples.content.addEmail"),
60
143
  onSave: saveNoop
61
144
  },
62
145
  {
63
146
  key: "owner",
64
147
  kind: "custom",
65
- label: "Owner",
66
- emptyLabel: "Unassigned",
148
+ label: t("design_system.gallery.samples.content.owner"),
149
+ emptyLabel: t("design_system.gallery.samples.content.unassigned"),
67
150
  render: () => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
68
- /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: "Owner" }),
69
- /* @__PURE__ */ jsx(Badge, { variant: "muted", children: "Unassigned" })
151
+ /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: t("design_system.gallery.samples.content.owner") }),
152
+ /* @__PURE__ */ jsx(Badge, { variant: "muted", children: t("design_system.gallery.samples.content.unassigned") })
70
153
  ] })
71
154
  }
72
155
  ];
73
- const galleryTranslator = (key, fallback) => fallback ?? key.split(".").pop() ?? key;
74
- const notesAdapter = {
156
+ const notesAdapter = (t) => ({
75
157
  list: async () => [
76
158
  {
77
159
  id: "note-1",
78
- body: "Asked for a revised quote \u2014 follow up on Friday.",
160
+ body: t("design_system.gallery.samples.content.askedForARevisedQuoteFollowUpOnFriday"),
79
161
  createdAt: "2026-07-15T09:30:00.000Z",
80
162
  authorName: "Anna Nowak"
81
163
  },
82
164
  {
83
165
  id: "note-2",
84
- body: "Prefers email contact over phone.",
166
+ body: t("design_system.gallery.samples.content.prefersEmailContactOverPhone"),
85
167
  createdAt: "2026-07-10T14:05:00.000Z",
86
168
  authorName: "Jan Kowalski"
87
169
  }
@@ -92,12 +174,12 @@ const notesAdapter = {
92
174
  },
93
175
  delete: async () => {
94
176
  }
95
- };
96
- const addressesAdapter = {
177
+ });
178
+ const addressesAdapter = (t) => ({
97
179
  list: async () => [
98
180
  {
99
181
  id: "address-1",
100
- name: "Headquarters",
182
+ name: t("design_system.gallery.samples.content.headquarters"),
101
183
  addressLine1: "Prosta 51",
102
184
  city: "Warszawa",
103
185
  postalCode: "00-838",
@@ -106,7 +188,7 @@ const addressesAdapter = {
106
188
  },
107
189
  {
108
190
  id: "address-2",
109
- name: "Warehouse",
191
+ name: t("design_system.gallery.samples.content.warehouse"),
110
192
  addressLine1: "Magazynowa 7",
111
193
  city: "Pruszk\xF3w",
112
194
  postalCode: "05-800",
@@ -119,7 +201,7 @@ const addressesAdapter = {
119
201
  },
120
202
  delete: async () => {
121
203
  }
122
- };
204
+ });
123
205
  const detailFieldsSectionEntry = {
124
206
  id: "detail-fields-section",
125
207
  title: "DetailFieldsSection",
@@ -128,7 +210,7 @@ const detailFieldsSectionEntry = {
128
210
  {
129
211
  id: "field-grid",
130
212
  title: "Inline-editable field grid",
131
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(DetailFieldsSection, { fields: fieldGrid }) }),
213
+ render: () => /* @__PURE__ */ jsx(DetailFieldsSectionEntryFieldGridPreview, {}),
132
214
  code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'
133
215
 
134
216
  const fields: DetailFieldConfig[] = [
@@ -150,7 +232,7 @@ const fields: DetailFieldConfig[] = [
150
232
  {
151
233
  id: "custom-field",
152
234
  title: "With a custom field cell",
153
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(DetailFieldsSection, { fields: fieldGridWithCustom }) }),
235
+ render: () => /* @__PURE__ */ jsx(DetailFieldsSectionEntryCustomFieldPreview, {}),
154
236
  code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'
155
237
  import { Badge } from '@open-mercato/ui/primitives/badge'
156
238
 
@@ -179,7 +261,7 @@ const loadingMessageEntry = {
179
261
  {
180
262
  id: "default",
181
263
  title: "default",
182
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(LoadingMessage, { label: "Loading customer\u2026" }) }),
264
+ render: () => /* @__PURE__ */ jsx(LoadingMessageEntryDefaultPreview, {}),
183
265
  code: `import { LoadingMessage } from '@open-mercato/ui/backend/detail'
184
266
 
185
267
  if (isLoading) return <LoadingMessage label={t('customers.people.detail.loading')} />`
@@ -194,7 +276,7 @@ const errorMessageEntry = {
194
276
  {
195
277
  id: "basic",
196
278
  title: "Label only",
197
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(ErrorMessage, { label: "Failed to load customer." }) }),
279
+ render: () => /* @__PURE__ */ jsx(ErrorMessageEntryBasicPreview, {}),
198
280
  code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'
199
281
 
200
282
  if (error) return <ErrorMessage label={error} />`
@@ -202,14 +284,7 @@ if (error) return <ErrorMessage label={error} />`
202
284
  {
203
285
  id: "with-description-action",
204
286
  title: "With description and action",
205
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(
206
- ErrorMessage,
207
- {
208
- label: "Failed to load attachments.",
209
- description: "The storage service did not respond in time.",
210
- action: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", children: "Retry" })
211
- }
212
- ) }),
287
+ render: () => /* @__PURE__ */ jsx(ErrorMessageEntryWithDescriptionActionPreview, {}),
213
288
  code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'
214
289
  import { Button } from '@open-mercato/ui/primitives/button'
215
290
 
@@ -229,23 +304,7 @@ const notesSectionEntry = {
229
304
  {
230
305
  id: "mock-adapter",
231
306
  title: "Timeline (inline mock adapter \u2014 no API)",
232
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
233
- NotesSection,
234
- {
235
- entityId: "person-1",
236
- viewerUserId: "user-1",
237
- viewerName: "Anna Nowak",
238
- emptyLabel: "No notes yet",
239
- addActionLabel: "Add note",
240
- emptyState: {
241
- title: "No notes yet",
242
- actionLabel: "Add note",
243
- description: "Notes added here are visible to the whole team."
244
- },
245
- translator: galleryTranslator,
246
- dataAdapter: notesAdapter
247
- }
248
- ) }),
307
+ render: () => /* @__PURE__ */ jsx(NotesSectionEntryMockAdapterPreview, {}),
249
308
  code: `import { NotesSection, type NotesDataAdapter } from '@open-mercato/ui/backend/detail'
250
309
 
251
310
  // Implement the adapter against your module's API (apiCall) \u2014 never fork the section.
@@ -280,17 +339,7 @@ const addressesSectionEntry = {
280
339
  {
281
340
  id: "mock-adapter",
282
341
  title: "Address tiles (inline mock adapter \u2014 no API)",
283
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
284
- AddressesSection,
285
- {
286
- entityId: "person-1",
287
- emptyLabel: "No addresses yet",
288
- addActionLabel: "Add address",
289
- emptyState: { title: "No addresses yet", actionLabel: "Add address" },
290
- translator: galleryTranslator,
291
- dataAdapter: addressesAdapter
292
- }
293
- ) }),
342
+ render: () => /* @__PURE__ */ jsx(AddressesSectionEntryMockAdapterPreview, {}),
294
343
  code: `import { AddressesSection, type AddressDataAdapter } from '@open-mercato/ui/backend/detail'
295
344
 
296
345
  const addressesAdapter: AddressDataAdapter = {
@@ -322,15 +371,7 @@ const attachmentsSectionEntry = {
322
371
  {
323
372
  id: "unsaved-record",
324
373
  title: "Unsaved record (recordId null \u2014 API fetch disabled)",
325
- render: () => /* @__PURE__ */ jsx("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx(
326
- AttachmentsSection,
327
- {
328
- entityId: "customers:person",
329
- recordId: null,
330
- title: "Attachments",
331
- description: "Files linked to this record."
332
- }
333
- ) }),
374
+ render: () => /* @__PURE__ */ jsx(AttachmentsSectionEntryUnsavedRecordPreview, {}),
334
375
  code: `import { AttachmentsSection } from '@open-mercato/ui/backend/detail'
335
376
 
336
377
  // Fetches /api/attachments internally once recordId is set;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/modules/design_system/gallery/entries/detail.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport {\n AddressesSection,\n AttachmentsSection,\n DetailFieldsSection,\n ErrorMessage,\n LoadingMessage,\n NotesSection,\n type AddressDataAdapter,\n type DetailFieldConfig,\n type NotesSectionProps,\n} from '@open-mercato/ui/backend/detail'\nimport type { GalleryEntry } from '../types'\n\n// Component titles and variant names are proper nouns from the codebase and\n// are deliberately not translated. `code` MUST contain the entry's importPath\n// (enforced by the registry-integrity test) and is always reviewed alongside\n// its sibling `render`.\n\n// Data-backed sections (Notes/Addresses) take adapter objects \u2014 the demos pass\n// inline in-memory adapters, so previews never touch an API. AttachmentsSection\n// fetches through `apiCall` internally and cannot take an adapter; it is shown\n// in its `recordId={null}` state, where fetching is disabled by design.\n\nconst saveNoop = async () => {}\n\nconst fieldGrid: DetailFieldConfig[] = [\n {\n key: 'first-name',\n kind: 'text',\n label: 'First name',\n value: 'Anna',\n emptyLabel: 'Add first name',\n onSave: saveNoop,\n },\n {\n key: 'phone',\n kind: 'text',\n label: 'Phone',\n value: null,\n emptyLabel: 'Add phone',\n onSave: saveNoop,\n },\n {\n key: 'status',\n kind: 'select',\n label: 'Status',\n value: 'active',\n emptyLabel: 'Set status',\n options: [\n { value: 'active', label: 'Active' },\n { value: 'inactive', label: 'Inactive' },\n ],\n onSave: saveNoop,\n },\n {\n key: 'notes',\n kind: 'multiline',\n label: 'Notes',\n value: 'Prefers email contact.',\n emptyLabel: 'Add notes',\n onSave: saveNoop,\n gridClassName: 'sm:col-span-2 md:col-span-3',\n },\n]\n\nconst fieldGridWithCustom: DetailFieldConfig[] = [\n {\n key: 'email',\n kind: 'text',\n label: 'Email',\n value: 'anna@example.com',\n emptyLabel: 'Add email',\n onSave: saveNoop,\n },\n {\n key: 'owner',\n kind: 'custom',\n label: 'Owner',\n emptyLabel: 'Unassigned',\n render: () => (\n <div className=\"space-y-1\">\n <div className=\"text-xs text-muted-foreground\">Owner</div>\n <Badge variant=\"muted\">Unassigned</Badge>\n </div>\n ),\n },\n]\n\n// Sections resolve their labels through an app translator in real pages; the\n// gallery translator just surfaces each key's fallback (or last segment).\nconst galleryTranslator = (key: string, fallback?: string) =>\n fallback ?? key.split('.').pop() ?? key\n\nconst notesAdapter: NotesSectionProps['dataAdapter'] = {\n list: async () => [\n {\n id: 'note-1',\n body: 'Asked for a revised quote \u2014 follow up on Friday.',\n createdAt: '2026-07-15T09:30:00.000Z',\n authorName: 'Anna Nowak',\n },\n {\n id: 'note-2',\n body: 'Prefers email contact over phone.',\n createdAt: '2026-07-10T14:05:00.000Z',\n authorName: 'Jan Kowalski',\n },\n ],\n create: async () => {},\n update: async () => {},\n delete: async () => {},\n}\n\nconst addressesAdapter: AddressDataAdapter = {\n list: async () => [\n {\n id: 'address-1',\n name: 'Headquarters',\n addressLine1: 'Prosta 51',\n city: 'Warszawa',\n postalCode: '00-838',\n country: 'PL',\n isPrimary: true,\n },\n {\n id: 'address-2',\n name: 'Warehouse',\n addressLine1: 'Magazynowa 7',\n city: 'Pruszk\u00F3w',\n postalCode: '05-800',\n country: 'PL',\n },\n ],\n create: async () => {},\n update: async () => {},\n delete: async () => {},\n}\n\nconst detailFieldsSectionEntry: GalleryEntry = {\n id: 'detail-fields-section',\n title: 'DetailFieldsSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'field-grid',\n title: 'Inline-editable field grid',\n render: () => (\n <div className=\"w-full\">\n <DetailFieldsSection fields={fieldGrid} />\n </div>\n ),\n code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'\n\nconst fields: DetailFieldConfig[] = [\n { key: 'first-name', kind: 'text', label: 'First name', value: person.firstName, emptyLabel: 'Add first name', onSave: saveFirstName },\n { key: 'phone', kind: 'text', label: 'Phone', value: person.phone, emptyLabel: 'Add phone', onSave: savePhone },\n {\n key: 'status', kind: 'select', label: 'Status', value: person.status, emptyLabel: 'Set status',\n options: [{ value: 'active', label: 'Active' }, { value: 'inactive', label: 'Inactive' }],\n onSave: saveStatus,\n },\n {\n key: 'notes', kind: 'multiline', label: 'Notes', value: person.notes, emptyLabel: 'Add notes',\n onSave: saveNotes, gridClassName: 'sm:col-span-2 md:col-span-3',\n },\n]\n\n<DetailFieldsSection fields={fields} />`,\n },\n {\n id: 'custom-field',\n title: 'With a custom field cell',\n render: () => (\n <div className=\"w-full\">\n <DetailFieldsSection fields={fieldGridWithCustom} />\n </div>\n ),\n code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\n\nconst fields: DetailFieldConfig[] = [\n { key: 'email', kind: 'text', label: 'Email', value: person.email, emptyLabel: 'Add email', onSave: saveEmail },\n {\n key: 'owner', kind: 'custom', label: 'Owner', emptyLabel: 'Unassigned',\n render: () => (\n <div className=\"space-y-1\">\n <div className=\"text-xs text-muted-foreground\">Owner</div>\n <Badge variant=\"muted\">Unassigned</Badge>\n </div>\n ),\n },\n]\n\n<DetailFieldsSection fields={fields} />`,\n },\n ],\n}\n\nconst loadingMessageEntry: GalleryEntry = {\n id: 'loading-message',\n title: 'LoadingMessage',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'default',\n title: 'default',\n render: () => (\n <div className=\"w-full max-w-md\">\n <LoadingMessage label=\"Loading customer\u2026\" />\n </div>\n ),\n code: `import { LoadingMessage } from '@open-mercato/ui/backend/detail'\n\nif (isLoading) return <LoadingMessage label={t('customers.people.detail.loading')} />`,\n },\n ],\n}\n\nconst errorMessageEntry: GalleryEntry = {\n id: 'error-message',\n title: 'ErrorMessage',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'basic',\n title: 'Label only',\n render: () => (\n <div className=\"w-full max-w-md\">\n <ErrorMessage label=\"Failed to load customer.\" />\n </div>\n ),\n code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'\n\nif (error) return <ErrorMessage label={error} />`,\n },\n {\n id: 'with-description-action',\n title: 'With description and action',\n render: () => (\n <div className=\"w-full max-w-md\">\n <ErrorMessage\n label=\"Failed to load attachments.\"\n description=\"The storage service did not respond in time.\"\n action={\n <Button variant=\"outline\" size=\"sm\">\n Retry\n </Button>\n }\n />\n </div>\n ),\n code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<ErrorMessage\n label=\"Failed to load attachments.\"\n description=\"The storage service did not respond in time.\"\n action={<Button variant=\"outline\" size=\"sm\" onClick={retry}>Retry</Button>}\n/>`,\n },\n ],\n}\n\nconst notesSectionEntry: GalleryEntry = {\n id: 'notes-section',\n title: 'NotesSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'mock-adapter',\n title: 'Timeline (inline mock adapter \u2014 no API)',\n render: () => (\n <div className=\"w-full max-w-2xl\">\n <NotesSection\n entityId=\"person-1\"\n viewerUserId=\"user-1\"\n viewerName=\"Anna Nowak\"\n emptyLabel=\"No notes yet\"\n addActionLabel=\"Add note\"\n emptyState={{\n title: 'No notes yet',\n actionLabel: 'Add note',\n description: 'Notes added here are visible to the whole team.',\n }}\n translator={galleryTranslator}\n dataAdapter={notesAdapter}\n />\n </div>\n ),\n code: `import { NotesSection, type NotesDataAdapter } from '@open-mercato/ui/backend/detail'\n\n// Implement the adapter against your module's API (apiCall) \u2014 never fork the section.\nconst notesAdapter: NotesDataAdapter = {\n list: async ({ entityId }) => fetchNotes(entityId),\n create: async ({ entityId, body }) => createNote(entityId, body),\n update: async ({ id, patch }) => updateNote(id, patch),\n delete: async ({ id }) => deleteNote(id),\n}\n\n<NotesSection\n entityId={personId}\n viewerUserId={viewer.id}\n viewerName={viewer.name}\n emptyLabel={t('design_system.gallery.samples.notes.empty')}\n addActionLabel={t('design_system.gallery.samples.notes.add')}\n emptyState={{\n title: t('design_system.gallery.samples.notes.emptyTitle'),\n actionLabel: t('design_system.gallery.samples.notes.add'),\n }}\n translator={t}\n dataAdapter={notesAdapter}\n/>`,\n },\n ],\n}\n\nconst addressesSectionEntry: GalleryEntry = {\n id: 'addresses-section',\n title: 'AddressesSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'mock-adapter',\n title: 'Address tiles (inline mock adapter \u2014 no API)',\n render: () => (\n <div className=\"w-full max-w-2xl\">\n <AddressesSection\n entityId=\"person-1\"\n emptyLabel=\"No addresses yet\"\n addActionLabel=\"Add address\"\n emptyState={{ title: 'No addresses yet', actionLabel: 'Add address' }}\n translator={galleryTranslator}\n dataAdapter={addressesAdapter}\n />\n </div>\n ),\n code: `import { AddressesSection, type AddressDataAdapter } from '@open-mercato/ui/backend/detail'\n\nconst addressesAdapter: AddressDataAdapter = {\n list: async ({ entityId }) => fetchAddresses(entityId),\n create: async ({ entityId, payload }) => createAddress(entityId, payload),\n update: async ({ id, payload }) => updateAddress(id, payload),\n delete: async ({ id }) => deleteAddress(id),\n}\n\n<AddressesSection\n entityId={personId}\n emptyLabel={t('design_system.gallery.samples.addresses.empty')}\n addActionLabel={t('customers.people.detail.addresses.add')}\n emptyState={{\n title: t('design_system.gallery.samples.addresses.emptyTitle'),\n actionLabel: t('customers.people.detail.addresses.add'),\n }}\n translator={t}\n dataAdapter={addressesAdapter}\n/>`,\n },\n ],\n}\n\nconst attachmentsSectionEntry: GalleryEntry = {\n id: 'attachments-section',\n title: 'AttachmentsSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'unsaved-record',\n title: 'Unsaved record (recordId null \u2014 API fetch disabled)',\n render: () => (\n <div className=\"w-full max-w-2xl\">\n <AttachmentsSection\n entityId=\"customers:person\"\n recordId={null}\n title=\"Attachments\"\n description=\"Files linked to this record.\"\n />\n </div>\n ),\n code: `import { AttachmentsSection } from '@open-mercato/ui/backend/detail'\n\n// Fetches /api/attachments internally once recordId is set;\n// with recordId={null} it renders the save-first placeholder.\n<AttachmentsSection\n entityId=\"customers:person\"\n recordId={person?.id ?? null}\n title={t('design_system.gallery.samples.attachments.title')}\n description={t('design_system.gallery.samples.attachments.description')}\n/>`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n detailFieldsSectionEntry,\n loadingMessageEntry,\n errorMessageEntry,\n notesSectionEntry,\n addressesSectionEntry,\n attachmentsSectionEntry,\n]\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useT } from '@open-mercato/shared/lib/i18n/context'\nimport * as React from 'react'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport {\n AddressesSection,\n AttachmentsSection,\n DetailFieldsSection,\n ErrorMessage,\n LoadingMessage,\n NotesSection,\n type AddressDataAdapter,\n type DetailFieldConfig,\n type NotesSectionProps,\n} from '@open-mercato/ui/backend/detail'\nimport type { GalleryEntry } from '../types'\n\n// Component titles and variant names are proper nouns from the codebase and\n// are deliberately not translated. `code` MUST contain the entry's importPath\n// (enforced by the registry-integrity test) and is always reviewed alongside\n// its sibling `render`.\n\n// Data-backed sections (Notes/Addresses) take adapter objects \u2014 the demos pass\n// inline in-memory adapters, so previews never touch an API. AttachmentsSection\n// fetches through `apiCall` internally and cannot take an adapter; it is shown\n// in its `recordId={null}` state, where fetching is disabled by design.\nfunction LoadingMessageEntryDefaultPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <LoadingMessage label={t('design_system.gallery.samples.content.loadingCustomer')} />\n </div>\n )\n}\nfunction ErrorMessageEntryBasicPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <ErrorMessage label={t('design_system.gallery.samples.content.failedToLoadCustomer')} />\n </div>\n )\n}\nfunction ErrorMessageEntryWithDescriptionActionPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <ErrorMessage\n label={t('design_system.gallery.samples.content.failedToLoadAttachments')}\n description={t('design_system.gallery.samples.content.theStorageServiceDidNotRespondInTime')}\n action={\n <Button variant=\"outline\" size=\"sm\">\n {t('design_system.gallery.samples.content.retry')}\n </Button>\n }\n />\n </div>\n )\n}\nfunction NotesSectionEntryMockAdapterPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-2xl\">\n <NotesSection\n entityId=\"person-1\"\n viewerUserId=\"user-1\"\n viewerName=\"Anna Nowak\"\n emptyLabel={t('design_system.gallery.samples.content.noNotesYet')}\n addActionLabel={t('design_system.gallery.samples.content.addNote')}\n emptyState={{\n title: t('design_system.gallery.samples.content.noNotesYet'),\n actionLabel: t('design_system.gallery.samples.content.addNote'),\n description: t('design_system.gallery.samples.content.notesAddedHereAreVisibleToTheWholeTeam'),\n }}\n translator={t}\n dataAdapter={notesAdapter(t)}\n />\n </div>\n )\n}\nfunction AddressesSectionEntryMockAdapterPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-2xl\">\n <AddressesSection\n entityId=\"person-1\"\n emptyLabel={t('design_system.gallery.samples.content.noAddressesYet')}\n addActionLabel={t('design_system.gallery.samples.content.addAddress')}\n emptyState={{\n title: t('design_system.gallery.samples.content.noAddressesYet'),\n actionLabel: t('design_system.gallery.samples.content.addAddress'),\n }}\n translator={t}\n dataAdapter={addressesAdapter(t)}\n />\n </div>\n )\n}\nfunction AttachmentsSectionEntryUnsavedRecordPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-2xl\">\n <AttachmentsSection\n entityId=\"customers:person\"\n recordId={null}\n title={t('design_system.gallery.samples.content.attachments')}\n description={t('design_system.gallery.samples.content.filesLinkedToThisRecord')}\n />\n </div>\n )\n}\nfunction DetailFieldsSectionEntryFieldGridPreview() {\n const t = useT()\n return (\n <div className=\"w-full\">\n <DetailFieldsSection fields={fieldGrid(t)} />\n </div>\n )\n}\nfunction DetailFieldsSectionEntryCustomFieldPreview() {\n const t = useT()\n return (\n <div className=\"w-full\">\n <DetailFieldsSection fields={fieldGridWithCustom(t)} />\n </div>\n )\n}\nconst saveNoop = async () => {}\nconst fieldGrid = (t: ReturnType<typeof useT>): DetailFieldConfig[] => [\n {\n key: 'first-name',\n kind: 'text',\n label: t('design_system.gallery.samples.content.firstName'),\n value: 'Anna',\n emptyLabel: t('design_system.gallery.samples.content.addFirstName'),\n onSave: saveNoop,\n },\n {\n key: 'phone',\n kind: 'text',\n label: t('design_system.gallery.samples.content.phone'),\n value: null,\n emptyLabel: t('design_system.gallery.samples.content.addPhone'),\n onSave: saveNoop,\n },\n {\n key: 'status',\n kind: 'select',\n label: t('design_system.gallery.samples.content.status'),\n value: 'active',\n emptyLabel: t('design_system.gallery.samples.content.setStatus'),\n options: [\n {\n value: 'active',\n label: t('design_system.gallery.samples.content.active'),\n },\n {\n value: 'inactive',\n label: t('design_system.gallery.samples.content.inactive'),\n },\n ],\n onSave: saveNoop,\n },\n {\n key: 'notes',\n kind: 'multiline',\n label: t('design_system.gallery.samples.content.notes'),\n value: t('design_system.gallery.samples.content.prefersEmailContact'),\n emptyLabel: t('design_system.gallery.samples.content.addNotes'),\n onSave: saveNoop,\n gridClassName: 'sm:col-span-2 md:col-span-3',\n },\n]\nconst fieldGridWithCustom = (t: ReturnType<typeof useT>): DetailFieldConfig[] => [\n {\n key: 'email',\n kind: 'text',\n label: t('design_system.gallery.samples.content.email'),\n value: 'anna@example.com',\n emptyLabel: t('design_system.gallery.samples.content.addEmail'),\n onSave: saveNoop,\n },\n {\n key: 'owner',\n kind: 'custom',\n label: t('design_system.gallery.samples.content.owner'),\n emptyLabel: t('design_system.gallery.samples.content.unassigned'),\n render: () => (\n <div className=\"space-y-1\">\n <div className=\"text-xs text-muted-foreground\">{t('design_system.gallery.samples.content.owner')}</div>\n <Badge variant=\"muted\">{t('design_system.gallery.samples.content.unassigned')}</Badge>\n </div>\n ),\n },\n]\n\n\nconst notesAdapter = (t: ReturnType<typeof useT>): NotesSectionProps['dataAdapter'] => ({\n list: async () => [\n {\n id: 'note-1',\n body: t('design_system.gallery.samples.content.askedForARevisedQuoteFollowUpOnFriday'),\n createdAt: '2026-07-15T09:30:00.000Z',\n authorName: 'Anna Nowak',\n },\n {\n id: 'note-2',\n body: t('design_system.gallery.samples.content.prefersEmailContactOverPhone'),\n createdAt: '2026-07-10T14:05:00.000Z',\n authorName: 'Jan Kowalski',\n },\n ],\n create: async () => {},\n update: async () => {},\n delete: async () => {},\n})\nconst addressesAdapter = (t: ReturnType<typeof useT>): AddressDataAdapter => ({\n list: async () => [\n {\n id: 'address-1',\n name: t('design_system.gallery.samples.content.headquarters'),\n addressLine1: 'Prosta 51',\n city: 'Warszawa',\n postalCode: '00-838',\n country: 'PL',\n isPrimary: true,\n },\n {\n id: 'address-2',\n name: t('design_system.gallery.samples.content.warehouse'),\n addressLine1: 'Magazynowa 7',\n city: 'Pruszk\u00F3w',\n postalCode: '05-800',\n country: 'PL',\n },\n ],\n create: async () => {},\n update: async () => {},\n delete: async () => {},\n})\nconst detailFieldsSectionEntry: GalleryEntry = {\n id: 'detail-fields-section',\n title: 'DetailFieldsSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'field-grid',\n title: 'Inline-editable field grid',\n render: () => <DetailFieldsSectionEntryFieldGridPreview />,\n code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'\n\nconst fields: DetailFieldConfig[] = [\n { key: 'first-name', kind: 'text', label: 'First name', value: person.firstName, emptyLabel: 'Add first name', onSave: saveFirstName },\n { key: 'phone', kind: 'text', label: 'Phone', value: person.phone, emptyLabel: 'Add phone', onSave: savePhone },\n {\n key: 'status', kind: 'select', label: 'Status', value: person.status, emptyLabel: 'Set status',\n options: [{ value: 'active', label: 'Active' }, { value: 'inactive', label: 'Inactive' }],\n onSave: saveStatus,\n },\n {\n key: 'notes', kind: 'multiline', label: 'Notes', value: person.notes, emptyLabel: 'Add notes',\n onSave: saveNotes, gridClassName: 'sm:col-span-2 md:col-span-3',\n },\n]\n\n<DetailFieldsSection fields={fields} />`,\n },\n {\n id: 'custom-field',\n title: 'With a custom field cell',\n render: () => <DetailFieldsSectionEntryCustomFieldPreview />,\n code: `import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\n\nconst fields: DetailFieldConfig[] = [\n { key: 'email', kind: 'text', label: 'Email', value: person.email, emptyLabel: 'Add email', onSave: saveEmail },\n {\n key: 'owner', kind: 'custom', label: 'Owner', emptyLabel: 'Unassigned',\n render: () => (\n <div className=\"space-y-1\">\n <div className=\"text-xs text-muted-foreground\">Owner</div>\n <Badge variant=\"muted\">Unassigned</Badge>\n </div>\n ),\n },\n]\n\n<DetailFieldsSection fields={fields} />`,\n },\n ],\n}\nconst loadingMessageEntry: GalleryEntry = {\n id: 'loading-message',\n title: 'LoadingMessage',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'default',\n title: 'default',\n render: () => <LoadingMessageEntryDefaultPreview />,\n code: `import { LoadingMessage } from '@open-mercato/ui/backend/detail'\n\nif (isLoading) return <LoadingMessage label={t('customers.people.detail.loading')} />`,\n },\n ],\n}\nconst errorMessageEntry: GalleryEntry = {\n id: 'error-message',\n title: 'ErrorMessage',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'basic',\n title: 'Label only',\n render: () => <ErrorMessageEntryBasicPreview />,\n code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'\n\nif (error) return <ErrorMessage label={error} />`,\n },\n {\n id: 'with-description-action',\n title: 'With description and action',\n render: () => <ErrorMessageEntryWithDescriptionActionPreview />,\n code: `import { ErrorMessage } from '@open-mercato/ui/backend/detail'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<ErrorMessage\n label=\"Failed to load attachments.\"\n description=\"The storage service did not respond in time.\"\n action={<Button variant=\"outline\" size=\"sm\" onClick={retry}>Retry</Button>}\n/>`,\n },\n ],\n}\nconst notesSectionEntry: GalleryEntry = {\n id: 'notes-section',\n title: 'NotesSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'mock-adapter',\n title: 'Timeline (inline mock adapter \u2014 no API)',\n render: () => <NotesSectionEntryMockAdapterPreview />,\n code: `import { NotesSection, type NotesDataAdapter } from '@open-mercato/ui/backend/detail'\n\n// Implement the adapter against your module's API (apiCall) \u2014 never fork the section.\nconst notesAdapter: NotesDataAdapter = {\n list: async ({ entityId }) => fetchNotes(entityId),\n create: async ({ entityId, body }) => createNote(entityId, body),\n update: async ({ id, patch }) => updateNote(id, patch),\n delete: async ({ id }) => deleteNote(id),\n}\n\n<NotesSection\n entityId={personId}\n viewerUserId={viewer.id}\n viewerName={viewer.name}\n emptyLabel={t('design_system.gallery.samples.notes.empty')}\n addActionLabel={t('design_system.gallery.samples.notes.add')}\n emptyState={{\n title: t('design_system.gallery.samples.notes.emptyTitle'),\n actionLabel: t('design_system.gallery.samples.notes.add'),\n }}\n translator={t}\n dataAdapter={notesAdapter}\n/>`,\n },\n ],\n}\nconst addressesSectionEntry: GalleryEntry = {\n id: 'addresses-section',\n title: 'AddressesSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'mock-adapter',\n title: 'Address tiles (inline mock adapter \u2014 no API)',\n render: () => <AddressesSectionEntryMockAdapterPreview />,\n code: `import { AddressesSection, type AddressDataAdapter } from '@open-mercato/ui/backend/detail'\n\nconst addressesAdapter: AddressDataAdapter = {\n list: async ({ entityId }) => fetchAddresses(entityId),\n create: async ({ entityId, payload }) => createAddress(entityId, payload),\n update: async ({ id, payload }) => updateAddress(id, payload),\n delete: async ({ id }) => deleteAddress(id),\n}\n\n<AddressesSection\n entityId={personId}\n emptyLabel={t('design_system.gallery.samples.addresses.empty')}\n addActionLabel={t('customers.people.detail.addresses.add')}\n emptyState={{\n title: t('design_system.gallery.samples.addresses.emptyTitle'),\n actionLabel: t('customers.people.detail.addresses.add'),\n }}\n translator={t}\n dataAdapter={addressesAdapter}\n/>`,\n },\n ],\n}\nconst attachmentsSectionEntry: GalleryEntry = {\n id: 'attachments-section',\n title: 'AttachmentsSection',\n importPath: '@open-mercato/ui/backend/detail',\n variants: [\n {\n id: 'unsaved-record',\n title: 'Unsaved record (recordId null \u2014 API fetch disabled)',\n render: () => <AttachmentsSectionEntryUnsavedRecordPreview />,\n code: `import { AttachmentsSection } from '@open-mercato/ui/backend/detail'\n\n// Fetches /api/attachments internally once recordId is set;\n// with recordId={null} it renders the save-first placeholder.\n<AttachmentsSection\n entityId=\"customers:person\"\n recordId={person?.id ?? null}\n title={t('design_system.gallery.samples.attachments.title')}\n description={t('design_system.gallery.samples.attachments.description')}\n/>`,\n },\n ],\n}\nexport const entries: GalleryEntry[] = [\n detailFieldsSectionEntry,\n loadingMessageEntry,\n errorMessageEntry,\n notesSectionEntry,\n addressesSectionEntry,\n attachmentsSectionEntry,\n]\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }