@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,20 +1,39 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { MoreHorizontal, Pencil, Plus, Trash2 } from "lucide-react";
3
- import { Button } from "@open-mercato/ui/primitives/button";
4
- import { IconButton } from "@open-mercato/ui/primitives/icon-button";
5
2
  import { LinkButton } from "@open-mercato/ui/primitives/link-button";
6
- import { SocialButton } from "@open-mercato/ui/primitives/social-button";
7
- import { FancyButton } from "@open-mercato/ui/primitives/fancy-button";
8
- import { ButtonGroup } from "@open-mercato/ui/primitives/button-group";
3
+ import { SocialButtonsDemo, CompactButtonMatrix, CompactButtonDisabledPreview, ButtonGroupMatrix, ButtonStatePreview, PrimaryButtonPreview, DisabledIconButtonPreview, ButtonButtonsDefaultSample, ButtonButtonsDestructiveSample, ButtonButtonsDestructiveOutlineSample, ButtonButtonsDestructiveSoftSample, ButtonButtonsDestructiveGhostSample, ButtonButtonsOutlineSample, ButtonButtonsSecondarySample, ButtonButtonsGhostSample, ButtonButtonsMutedSample, ButtonButtonsLinkSample, ButtonButtonsSizesSample, IconButtonButtonsVariantsSample, IconButtonButtonsSizesSample, IconButtonButtonsFullRadiusSample, LinkButtonButtonsAsAnchorSample, FancyButtonButtonsIntentsSample, FancyButtonButtonsSizesSample, ButtonGroupButtonsHorizontalSample, ButtonGroupButtonsVerticalSample } from "../demos/buttons.js";
4
+ import {
5
+ compactButtonDefaultCode,
6
+ compactButtonActiveCode,
7
+ compactButtonDisabledCode,
8
+ iconButtonVariantsCode,
9
+ iconButtonSizesCode,
10
+ iconButtonFullRadiusCode,
11
+ iconButtonDisabledCode,
12
+ linkButtonVariantsCode,
13
+ linkButtonUnderlineCode,
14
+ linkButtonAsAnchorCode,
15
+ socialButtonFilledCode,
16
+ socialButtonStrokeCode,
17
+ socialButtonIconOnlyCode,
18
+ fancyButtonIntentsCode,
19
+ fancyButtonSizesCode,
20
+ buttonGroupSizeQuantityMatrixCode,
21
+ buttonGroupItemContentCode,
22
+ buttonGroupHorizontalCode,
23
+ buttonGroupVerticalCode
24
+ } from "./buttons-snippets.js";
9
25
  const buttonEntry = {
10
26
  id: "button",
11
27
  title: "Button",
12
28
  importPath: "@open-mercato/ui/primitives/button",
29
+ figmaNodeId: "129:1422",
13
30
  usage: {
14
31
  do: [
15
32
  "One default (primary) Button per view; remaining actions step down to outline, ghost or muted.",
16
33
  "Destructive actions use the destructive family; -outline/-soft/-ghost lower the emphasis without losing the semantics.",
17
- "Default height is h-9; sm (h-8) in dense toolbars, 2xs only inside table rows."
34
+ "Default height is h-9; sm (h-8) in dense toolbars, 2xs only inside table rows.",
35
+ "primary-filled represents the indigo CTA retained in overlay instance 472:831, using the darker status-info-solid role for readable white text in both themes. The current main Button set lists Neutral and Error only; this instance is not a new Code Connect axis.",
36
+ "For a pending action, compose Spinner with disabled and aria-busy; Button has no loading prop."
18
37
  ],
19
38
  dont: [
20
39
  'Never Button size="icon" for icon-only actions \u2014 use IconButton (correct sizing + aria-label contract).',
@@ -24,10 +43,22 @@ const buttonEntry = {
24
43
  },
25
44
  descriptionKey: "design_system.entries.button.description",
26
45
  variants: [
46
+ {
47
+ id: "primary-filled",
48
+ title: "Primary Filled (overlay CTA)",
49
+ render: () => /* @__PURE__ */ jsx(PrimaryButtonPreview, {}),
50
+ code: `import { useT } from '@open-mercato/shared/lib/i18n/context'
51
+ import { Button } from '@open-mercato/ui/primitives/button'
52
+
53
+ function PrimaryAction() {
54
+ const t = useT()
55
+ return <Button type="button" variant="primary-filled">{t('design_system.gallery.samples.primaryAction')}</Button>
56
+ }`
57
+ },
27
58
  {
28
59
  id: "default",
29
60
  title: "default",
30
- render: () => /* @__PURE__ */ jsx(Button, { children: "Save changes" }),
61
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsDefaultSample, {}),
31
62
  code: `import { Button } from '@open-mercato/ui/primitives/button'
32
63
 
33
64
  <Button>Save changes</Button>`
@@ -35,7 +66,7 @@ const buttonEntry = {
35
66
  {
36
67
  id: "destructive",
37
68
  title: "destructive",
38
- render: () => /* @__PURE__ */ jsx(Button, { variant: "destructive", children: "Delete" }),
69
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsDestructiveSample, {}),
39
70
  code: `import { Button } from '@open-mercato/ui/primitives/button'
40
71
 
41
72
  <Button variant="destructive">Delete</Button>`
@@ -43,7 +74,7 @@ const buttonEntry = {
43
74
  {
44
75
  id: "destructive-outline",
45
76
  title: "destructive-outline",
46
- render: () => /* @__PURE__ */ jsx(Button, { variant: "destructive-outline", children: "Delete" }),
77
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsDestructiveOutlineSample, {}),
47
78
  code: `import { Button } from '@open-mercato/ui/primitives/button'
48
79
 
49
80
  <Button variant="destructive-outline">Delete</Button>`
@@ -51,7 +82,7 @@ const buttonEntry = {
51
82
  {
52
83
  id: "destructive-soft",
53
84
  title: "destructive-soft",
54
- render: () => /* @__PURE__ */ jsx(Button, { variant: "destructive-soft", children: "Delete draft" }),
85
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsDestructiveSoftSample, {}),
55
86
  code: `import { Button } from '@open-mercato/ui/primitives/button'
56
87
 
57
88
  <Button variant="destructive-soft">Delete draft</Button>`
@@ -59,7 +90,7 @@ const buttonEntry = {
59
90
  {
60
91
  id: "destructive-ghost",
61
92
  title: "destructive-ghost",
62
- render: () => /* @__PURE__ */ jsx(Button, { variant: "destructive-ghost", children: "Remove" }),
93
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsDestructiveGhostSample, {}),
63
94
  code: `import { Button } from '@open-mercato/ui/primitives/button'
64
95
 
65
96
  <Button variant="destructive-ghost">Remove</Button>`
@@ -67,7 +98,7 @@ const buttonEntry = {
67
98
  {
68
99
  id: "outline",
69
100
  title: "outline",
70
- render: () => /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Cancel" }),
101
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsOutlineSample, {}),
71
102
  code: `import { Button } from '@open-mercato/ui/primitives/button'
72
103
 
73
104
  <Button variant="outline">Cancel</Button>`
@@ -75,7 +106,7 @@ const buttonEntry = {
75
106
  {
76
107
  id: "secondary",
77
108
  title: "secondary",
78
- render: () => /* @__PURE__ */ jsx(Button, { variant: "secondary", children: "Duplicate" }),
109
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsSecondarySample, {}),
79
110
  code: `import { Button } from '@open-mercato/ui/primitives/button'
80
111
 
81
112
  <Button variant="secondary">Duplicate</Button>`
@@ -83,7 +114,7 @@ const buttonEntry = {
83
114
  {
84
115
  id: "ghost",
85
116
  title: "ghost",
86
- render: () => /* @__PURE__ */ jsx(Button, { variant: "ghost", children: "Dismiss" }),
117
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsGhostSample, {}),
87
118
  code: `import { Button } from '@open-mercato/ui/primitives/button'
88
119
 
89
120
  <Button variant="ghost">Dismiss</Button>`
@@ -91,7 +122,7 @@ const buttonEntry = {
91
122
  {
92
123
  id: "muted",
93
124
  title: "muted",
94
- render: () => /* @__PURE__ */ jsx(Button, { variant: "muted", children: "Show more" }),
125
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsMutedSample, {}),
95
126
  code: `import { Button } from '@open-mercato/ui/primitives/button'
96
127
 
97
128
  <Button variant="muted">Show more</Button>`
@@ -99,7 +130,7 @@ const buttonEntry = {
99
130
  {
100
131
  id: "link",
101
132
  title: "link",
102
- render: () => /* @__PURE__ */ jsx(Button, { variant: "link", children: "View details" }),
133
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsLinkSample, {}),
103
134
  code: `import { Button } from '@open-mercato/ui/primitives/button'
104
135
 
105
136
  <Button variant="link">View details</Button>`
@@ -107,13 +138,7 @@ const buttonEntry = {
107
138
  {
108
139
  id: "sizes",
109
140
  title: "Sizes",
110
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
111
- /* @__PURE__ */ jsx(Button, { size: "lg", children: "Large" }),
112
- /* @__PURE__ */ jsx(Button, { size: "default", children: "Default" }),
113
- /* @__PURE__ */ jsx(Button, { size: "sm", children: "Small" }),
114
- /* @__PURE__ */ jsx(Button, { size: "2xs", children: "2X-Small" }),
115
- /* @__PURE__ */ jsx(Button, { size: "icon", "aria-label": "Add", children: /* @__PURE__ */ jsx(Plus, {}) })
116
- ] }),
141
+ render: () => /* @__PURE__ */ jsx(ButtonButtonsSizesSample, {}),
117
142
  code: `import { Plus } from 'lucide-react'
118
143
  import { Button } from '@open-mercato/ui/primitives/button'
119
144
 
@@ -122,9 +147,46 @@ import { Button } from '@open-mercato/ui/primitives/button'
122
147
  <Button size="sm">Small</Button>
123
148
  <Button size="2xs">2X-Small</Button>
124
149
  <Button size="icon" aria-label="Add"><Plus /></Button>`
150
+ },
151
+ {
152
+ id: "disabled",
153
+ title: "Disabled",
154
+ render: () => /* @__PURE__ */ jsx(ButtonStatePreview, {}),
155
+ code: `import { Button } from '@open-mercato/ui/primitives/button'
156
+
157
+ <Button type="button" disabled>{t('design_system.gallery.samples.primaryAction')}</Button>`
158
+ },
159
+ {
160
+ id: "loading",
161
+ title: "Loading (composed)",
162
+ render: () => /* @__PURE__ */ jsx(ButtonStatePreview, { loading: true }),
163
+ code: `import { Button } from '@open-mercato/ui/primitives/button'
164
+ import { Spinner } from '@open-mercato/ui/primitives/spinner'
165
+
166
+ <Button type="button" disabled aria-busy>
167
+ <Spinner size="sm" className="motion-reduce:animate-none" />
168
+ {t('design_system.gallery.samples.states.saving')}
169
+ </Button>`
125
170
  }
126
171
  ]
127
172
  };
173
+ const compactButtonEntry = {
174
+ id: "compact-button",
175
+ title: "CompactButton",
176
+ importPath: "@open-mercato/ui/primitives/compact-button",
177
+ figmaNodeId: "189:3646",
178
+ descriptionKey: "design_system.entries.compactButton.description",
179
+ usage: { do: [
180
+ "Compact icon actions at 20 or 24 px with 18 or 20 px icons. Four appearances support 6 px and full-radius shapes.",
181
+ "Each matrix exposes every size, appearance, and radius combination. Hover and press enabled buttons; active examples are controlled toggles and disabled examples use native disabled.",
182
+ "Supply an accessible name and enough space around dense actions. Modifiable inherits foreground; its hover surface uses the existing 15% opacity scale rather than the source 16%."
183
+ ] },
184
+ variants: [
185
+ { id: "default", title: "All sizes, appearances, and radii", render: () => /* @__PURE__ */ jsx(CompactButtonMatrix, {}), code: compactButtonDefaultCode },
186
+ { id: "active", title: "Active toggles", render: () => /* @__PURE__ */ jsx(CompactButtonMatrix, { initialPressed: true }), code: compactButtonActiveCode },
187
+ { id: "disabled", title: "Disabled", render: () => /* @__PURE__ */ jsx(CompactButtonDisabledPreview, {}), code: compactButtonDisabledCode }
188
+ ]
189
+ };
128
190
  const iconButtonEntry = {
129
191
  id: "icon-button",
130
192
  title: "IconButton",
@@ -141,47 +203,26 @@ const iconButtonEntry = {
141
203
  {
142
204
  id: "variants",
143
205
  title: "Variants",
144
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
145
- /* @__PURE__ */ jsx(IconButton, { variant: "primary", "aria-label": "Add", children: /* @__PURE__ */ jsx(Plus, {}) }),
146
- /* @__PURE__ */ jsx(IconButton, { variant: "outline", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) }),
147
- /* @__PURE__ */ jsx(IconButton, { variant: "ghost", "aria-label": "More", children: /* @__PURE__ */ jsx(MoreHorizontal, {}) }),
148
- /* @__PURE__ */ jsx(IconButton, { variant: "white", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) }),
149
- /* @__PURE__ */ jsx(IconButton, { variant: "destructive", "aria-label": "Delete", children: /* @__PURE__ */ jsx(Trash2, {}) })
150
- ] }),
151
- code: `import { Pencil } from 'lucide-react'
152
- import { IconButton } from '@open-mercato/ui/primitives/icon-button'
153
-
154
- <IconButton variant="primary" aria-label="Add"><Plus /></IconButton>
155
- <IconButton variant="outline" aria-label="Edit"><Pencil /></IconButton>
156
- <IconButton variant="ghost" aria-label="More"><MoreHorizontal /></IconButton>
157
- <IconButton variant="white" aria-label="Edit"><Pencil /></IconButton>
158
- <IconButton variant="destructive" aria-label="Delete"><Trash2 /></IconButton>`
206
+ render: () => /* @__PURE__ */ jsx(IconButtonButtonsVariantsSample, {}),
207
+ code: iconButtonVariantsCode
159
208
  },
160
209
  {
161
210
  id: "sizes",
162
211
  title: "Sizes",
163
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
164
- /* @__PURE__ */ jsx(IconButton, { size: "lg", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) }),
165
- /* @__PURE__ */ jsx(IconButton, { size: "default", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) }),
166
- /* @__PURE__ */ jsx(IconButton, { size: "sm", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) }),
167
- /* @__PURE__ */ jsx(IconButton, { size: "xs", "aria-label": "Edit", children: /* @__PURE__ */ jsx(Pencil, {}) })
168
- ] }),
169
- code: `import { Pencil } from 'lucide-react'
170
- import { IconButton } from '@open-mercato/ui/primitives/icon-button'
171
-
172
- <IconButton size="lg" aria-label="Edit"><Pencil /></IconButton>
173
- <IconButton size="default" aria-label="Edit"><Pencil /></IconButton>
174
- <IconButton size="sm" aria-label="Edit"><Pencil /></IconButton>
175
- <IconButton size="xs" aria-label="Edit"><Pencil /></IconButton>`
212
+ render: () => /* @__PURE__ */ jsx(IconButtonButtonsSizesSample, {}),
213
+ code: iconButtonSizesCode
176
214
  },
177
215
  {
178
216
  id: "full-radius",
179
217
  title: "fullRadius",
180
- render: () => /* @__PURE__ */ jsx(IconButton, { fullRadius: true, "aria-label": "Add", children: /* @__PURE__ */ jsx(Plus, {}) }),
181
- code: `import { Plus } from 'lucide-react'
182
- import { IconButton } from '@open-mercato/ui/primitives/icon-button'
183
-
184
- <IconButton fullRadius aria-label="Add"><Plus /></IconButton>`
218
+ render: () => /* @__PURE__ */ jsx(IconButtonButtonsFullRadiusSample, {}),
219
+ code: iconButtonFullRadiusCode
220
+ },
221
+ {
222
+ id: "disabled",
223
+ title: "Disabled",
224
+ render: () => /* @__PURE__ */ jsx(DisabledIconButtonPreview, {}),
225
+ code: iconButtonDisabledCode
185
226
  }
186
227
  ]
187
228
  };
@@ -200,12 +241,7 @@ const linkButtonEntry = {
200
241
  /* @__PURE__ */ jsx(LinkButton, { variant: "black", children: "black" }),
201
242
  /* @__PURE__ */ jsx(LinkButton, { variant: "error", children: "error" })
202
243
  ] }),
203
- code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'
204
-
205
- <LinkButton>primary</LinkButton>
206
- <LinkButton variant="gray">gray</LinkButton>
207
- <LinkButton variant="black">black</LinkButton>
208
- <LinkButton variant="error">error</LinkButton>`
244
+ code: linkButtonVariantsCode
209
245
  },
210
246
  {
211
247
  id: "underline",
@@ -215,21 +251,13 @@ const linkButtonEntry = {
215
251
  /* @__PURE__ */ jsx(LinkButton, { underline: "hover", children: "hover" }),
216
252
  /* @__PURE__ */ jsx(LinkButton, { underline: "none", children: "none" })
217
253
  ] }),
218
- code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'
219
-
220
- <LinkButton underline="always">always</LinkButton>
221
- <LinkButton underline="hover">hover</LinkButton>
222
- <LinkButton underline="none">none</LinkButton>`
254
+ code: linkButtonUnderlineCode
223
255
  },
224
256
  {
225
257
  id: "as-anchor",
226
258
  title: "As anchor (asChild)",
227
- render: () => /* @__PURE__ */ jsx(LinkButton, { asChild: true, children: /* @__PURE__ */ jsx("a", { href: "#gallery-entry-link-button", children: "Open link" }) }),
228
- code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'
229
-
230
- <LinkButton asChild>
231
- <a href="/backend/docs">Open link</a>
232
- </LinkButton>`
259
+ render: () => /* @__PURE__ */ jsx(LinkButtonButtonsAsAnchorSample, {}),
260
+ code: linkButtonAsAnchorCode
233
261
  }
234
262
  ]
235
263
  };
@@ -237,32 +265,20 @@ const socialButtonEntry = {
237
265
  id: "social-button",
238
266
  title: "SocialButton",
239
267
  importPath: "@open-mercato/ui/primitives/social-button",
268
+ figmaNodeId: "180:4264",
240
269
  descriptionKey: "design_system.entries.socialButton.description",
270
+ usage: { do: [
271
+ "All seven source providers appear in Filled and Stroke, with text or icon-only content. Buttons are 40 px high; icon-only buttons are 40 px square.",
272
+ "Supply the logo as content and an accessible name for icon-only buttons. These local source assets do not invoke authentication.",
273
+ "Stroke uses semantic foreground and border tokens; monochrome logos follow foreground in both themes. Native hover and keyboard focus expose the interaction states."
274
+ ] },
241
275
  variants: [
242
- {
243
- id: "filled",
244
- title: "filled",
245
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
246
- /* @__PURE__ */ jsx(SocialButton, { brand: "github", children: "Continue with GitHub" }),
247
- /* @__PURE__ */ jsx(SocialButton, { brand: "google", children: "Continue with Google" })
248
- ] }),
249
- code: `import { SocialButton } from '@open-mercato/ui/primitives/social-button'
250
-
251
- <SocialButton brand="github">Continue with GitHub</SocialButton>
252
- <SocialButton brand="google">Continue with Google</SocialButton>`
253
- },
254
- {
255
- id: "stroke",
256
- title: "stroke",
257
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
258
- /* @__PURE__ */ jsx(SocialButton, { brand: "github", appearance: "stroke", children: "Continue with GitHub" }),
259
- /* @__PURE__ */ jsx(SocialButton, { brand: "linkedin", appearance: "stroke", children: "Continue with LinkedIn" })
260
- ] }),
261
- code: `import { SocialButton } from '@open-mercato/ui/primitives/social-button'
262
-
263
- <SocialButton brand="github" appearance="stroke">Continue with GitHub</SocialButton>
264
- <SocialButton brand="linkedin" appearance="stroke">Continue with LinkedIn</SocialButton>`
265
- }
276
+ { id: "filled", title: "Filled \u2014 all seven providers", render: () => /* @__PURE__ */ jsx(SocialButtonsDemo, { appearance: "filled" }), code: socialButtonFilledCode },
277
+ { id: "stroke", title: "Stroke \u2014 all seven providers", render: () => /* @__PURE__ */ jsx(SocialButtonsDemo, { appearance: "stroke" }), code: socialButtonStrokeCode },
278
+ { id: "icon-only", title: "Icon-only \u2014 both appearances", render: () => /* @__PURE__ */ jsxs("div", { className: "grid gap-4", children: [
279
+ /* @__PURE__ */ jsx(SocialButtonsDemo, { appearance: "filled", iconOnly: true }),
280
+ /* @__PURE__ */ jsx(SocialButtonsDemo, { appearance: "stroke", iconOnly: true })
281
+ ] }), code: socialButtonIconOnlyCode }
266
282
  ]
267
283
  };
268
284
  const fancyButtonEntry = {
@@ -274,32 +290,14 @@ const fancyButtonEntry = {
274
290
  {
275
291
  id: "intents",
276
292
  title: "Intents",
277
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
278
- /* @__PURE__ */ jsx(FancyButton, { intent: "neutral", children: "Neutral" }),
279
- /* @__PURE__ */ jsx(FancyButton, { intent: "basic", children: "Basic" }),
280
- /* @__PURE__ */ jsx(FancyButton, { intent: "primary", children: "Primary" }),
281
- /* @__PURE__ */ jsx(FancyButton, { intent: "destructive", children: "Destructive" })
282
- ] }),
283
- code: `import { FancyButton } from '@open-mercato/ui/primitives/fancy-button'
284
-
285
- <FancyButton intent="neutral">Neutral</FancyButton>
286
- <FancyButton intent="basic">Basic</FancyButton>
287
- <FancyButton intent="primary">Primary</FancyButton>
288
- <FancyButton intent="destructive">Destructive</FancyButton>`
293
+ render: () => /* @__PURE__ */ jsx(FancyButtonButtonsIntentsSample, {}),
294
+ code: fancyButtonIntentsCode
289
295
  },
290
296
  {
291
297
  id: "sizes",
292
298
  title: "Sizes",
293
- render: () => /* @__PURE__ */ jsxs(Fragment, { children: [
294
- /* @__PURE__ */ jsx(FancyButton, { size: "default", children: "Default" }),
295
- /* @__PURE__ */ jsx(FancyButton, { size: "sm", children: "Small" }),
296
- /* @__PURE__ */ jsx(FancyButton, { size: "xs", children: "X-Small" })
297
- ] }),
298
- code: `import { FancyButton } from '@open-mercato/ui/primitives/fancy-button'
299
-
300
- <FancyButton size="default">Default</FancyButton>
301
- <FancyButton size="sm">Small</FancyButton>
302
- <FancyButton size="xs">X-Small</FancyButton>`
299
+ render: () => /* @__PURE__ */ jsx(FancyButtonButtonsSizesSample, {}),
300
+ code: fancyButtonSizesCode
303
301
  }
304
302
  ]
305
303
  };
@@ -308,47 +306,28 @@ const buttonGroupEntry = {
308
306
  title: "ButtonGroup",
309
307
  importPath: "@open-mercato/ui/primitives/button-group",
310
308
  descriptionKey: "design_system.entries.buttonGroup.description",
309
+ figmaNodeId: "493:8644",
310
+ usage: { do: ["Numeric sizes coordinate child dimensions at 24, 32, or 36 px. Legacy size names keep their behavior.", "The 15 source groups cover quantities two through six at all three sizes. Item examples include text, leading, trailing, both, and icon-only content."] },
311
311
  variants: [
312
+ { id: "size-quantity-matrix", title: "All 15 size and quantity combinations", render: () => /* @__PURE__ */ jsx(ButtonGroupMatrix, {}), code: buttonGroupSizeQuantityMatrixCode },
313
+ { id: "item-content", title: "Text and icon item arrangements", render: () => /* @__PURE__ */ jsx(ButtonGroupMatrix, { content: true }), code: buttonGroupItemContentCode },
312
314
  {
313
315
  id: "horizontal",
314
316
  title: "Horizontal",
315
- render: () => /* @__PURE__ */ jsxs(ButtonGroup, { children: [
316
- /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Save" }),
317
- /* @__PURE__ */ jsx(Button, { variant: "outline", children: "Save & New" }),
318
- /* @__PURE__ */ jsx(IconButton, { "aria-label": "More", children: /* @__PURE__ */ jsx(MoreHorizontal, {}) })
319
- ] }),
320
- code: `import { MoreHorizontal } from 'lucide-react'
321
- import { ButtonGroup } from '@open-mercato/ui/primitives/button-group'
322
- import { Button } from '@open-mercato/ui/primitives/button'
323
- import { IconButton } from '@open-mercato/ui/primitives/icon-button'
324
-
325
- <ButtonGroup>
326
- <Button variant="outline">Save</Button>
327
- <Button variant="outline">Save & New</Button>
328
- <IconButton aria-label="More"><MoreHorizontal /></IconButton>
329
- </ButtonGroup>`
317
+ render: () => /* @__PURE__ */ jsx(ButtonGroupButtonsHorizontalSample, {}),
318
+ code: buttonGroupHorizontalCode
330
319
  },
331
320
  {
332
321
  id: "vertical",
333
322
  title: "Vertical",
334
- render: () => /* @__PURE__ */ jsxs(ButtonGroup, { orientation: "vertical", size: "sm", children: [
335
- /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", children: "Top" }),
336
- /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", children: "Middle" }),
337
- /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", children: "Bottom" })
338
- ] }),
339
- code: `import { ButtonGroup } from '@open-mercato/ui/primitives/button-group'
340
- import { Button } from '@open-mercato/ui/primitives/button'
341
-
342
- <ButtonGroup orientation="vertical" size="sm">
343
- <Button variant="outline" size="sm">Top</Button>
344
- <Button variant="outline" size="sm">Middle</Button>
345
- <Button variant="outline" size="sm">Bottom</Button>
346
- </ButtonGroup>`
323
+ render: () => /* @__PURE__ */ jsx(ButtonGroupButtonsVerticalSample, {}),
324
+ code: buttonGroupVerticalCode
347
325
  }
348
326
  ]
349
327
  };
350
328
  const entries = [
351
329
  buttonEntry,
330
+ compactButtonEntry,
352
331
  iconButtonEntry,
353
332
  linkButtonEntry,
354
333
  socialButtonEntry,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/modules/design_system/gallery/entries/buttons.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\nimport { MoreHorizontal, Pencil, Plus, Trash2 } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { SocialButton } from '@open-mercato/ui/primitives/social-button'\nimport { FancyButton } from '@open-mercato/ui/primitives/fancy-button'\nimport { ButtonGroup } from '@open-mercato/ui/primitives/button-group'\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\nconst buttonEntry: GalleryEntry = {\n id: 'button',\n title: 'Button',\n importPath: '@open-mercato/ui/primitives/button',\n usage: {\n do: [\n 'One default (primary) Button per view; remaining actions step down to outline, ghost or muted.',\n 'Destructive actions use the destructive family; -outline/-soft/-ghost lower the emphasis without losing the semantics.',\n 'Default height is h-9; sm (h-8) in dense toolbars, 2xs only inside table rows.',\n ],\n dont: [\n 'Never Button size=\"icon\" for icon-only actions \u2014 use IconButton (correct sizing + aria-label contract).',\n 'Never style a raw <button> or <Link> to look like a Button.',\n 'The link variant is for navigation-like actions, not for mutations.',\n ],\n },\n descriptionKey: 'design_system.entries.button.description',\n variants: [\n {\n id: 'default',\n title: 'default',\n render: () => <Button>Save changes</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button>Save changes</Button>`,\n },\n {\n id: 'destructive',\n title: 'destructive',\n render: () => <Button variant=\"destructive\">Delete</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive\">Delete</Button>`,\n },\n {\n id: 'destructive-outline',\n title: 'destructive-outline',\n render: () => <Button variant=\"destructive-outline\">Delete</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-outline\">Delete</Button>`,\n },\n {\n id: 'destructive-soft',\n title: 'destructive-soft',\n render: () => <Button variant=\"destructive-soft\">Delete draft</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-soft\">Delete draft</Button>`,\n },\n {\n id: 'destructive-ghost',\n title: 'destructive-ghost',\n render: () => <Button variant=\"destructive-ghost\">Remove</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-ghost\">Remove</Button>`,\n },\n {\n id: 'outline',\n title: 'outline',\n render: () => <Button variant=\"outline\">Cancel</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"outline\">Cancel</Button>`,\n },\n {\n id: 'secondary',\n title: 'secondary',\n render: () => <Button variant=\"secondary\">Duplicate</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"secondary\">Duplicate</Button>`,\n },\n {\n id: 'ghost',\n title: 'ghost',\n render: () => <Button variant=\"ghost\">Dismiss</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"ghost\">Dismiss</Button>`,\n },\n {\n id: 'muted',\n title: 'muted',\n render: () => <Button variant=\"muted\">Show more</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"muted\">Show more</Button>`,\n },\n {\n id: 'link',\n title: 'link',\n render: () => <Button variant=\"link\">View details</Button>,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"link\">View details</Button>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <>\n <Button size=\"lg\">Large</Button>\n <Button size=\"default\">Default</Button>\n <Button size=\"sm\">Small</Button>\n <Button size=\"2xs\">2X-Small</Button>\n <Button size=\"icon\" aria-label=\"Add\">\n <Plus />\n </Button>\n </>\n ),\n code: `import { Plus } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<Button size=\"lg\">Large</Button>\n<Button size=\"default\">Default</Button>\n<Button size=\"sm\">Small</Button>\n<Button size=\"2xs\">2X-Small</Button>\n<Button size=\"icon\" aria-label=\"Add\"><Plus /></Button>`,\n },\n ],\n}\n\nconst iconButtonEntry: GalleryEntry = {\n id: 'icon-button',\n title: 'IconButton',\n importPath: '@open-mercato/ui/primitives/icon-button',\n usage: {\n do: [\n 'Always pass aria-label \u2014 the icon is the only content.',\n 'size=\"default\" is h-8, one step smaller than Button; use size=\"lg\" (h-9) to align inside a Button row.',\n ],\n dont: ['Never fake it with Button size=\"icon\".'],\n },\n descriptionKey: 'design_system.entries.iconButton.description',\n variants: [\n {\n id: 'variants',\n title: 'Variants',\n render: () => (\n <>\n <IconButton variant=\"primary\" aria-label=\"Add\">\n <Plus />\n </IconButton>\n <IconButton variant=\"outline\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n <IconButton variant=\"ghost\" aria-label=\"More\">\n <MoreHorizontal />\n </IconButton>\n <IconButton variant=\"white\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n <IconButton variant=\"destructive\" aria-label=\"Delete\">\n <Trash2 />\n </IconButton>\n </>\n ),\n code: `import { Pencil } from 'lucide-react'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<IconButton variant=\"primary\" aria-label=\"Add\"><Plus /></IconButton>\n<IconButton variant=\"outline\" aria-label=\"Edit\"><Pencil /></IconButton>\n<IconButton variant=\"ghost\" aria-label=\"More\"><MoreHorizontal /></IconButton>\n<IconButton variant=\"white\" aria-label=\"Edit\"><Pencil /></IconButton>\n<IconButton variant=\"destructive\" aria-label=\"Delete\"><Trash2 /></IconButton>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <>\n <IconButton size=\"lg\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n <IconButton size=\"default\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n <IconButton size=\"sm\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n <IconButton size=\"xs\" aria-label=\"Edit\">\n <Pencil />\n </IconButton>\n </>\n ),\n code: `import { Pencil } from 'lucide-react'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<IconButton size=\"lg\" aria-label=\"Edit\"><Pencil /></IconButton>\n<IconButton size=\"default\" aria-label=\"Edit\"><Pencil /></IconButton>\n<IconButton size=\"sm\" aria-label=\"Edit\"><Pencil /></IconButton>\n<IconButton size=\"xs\" aria-label=\"Edit\"><Pencil /></IconButton>`,\n },\n {\n id: 'full-radius',\n title: 'fullRadius',\n render: () => (\n <IconButton fullRadius aria-label=\"Add\">\n <Plus />\n </IconButton>\n ),\n code: `import { Plus } from 'lucide-react'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<IconButton fullRadius aria-label=\"Add\"><Plus /></IconButton>`,\n },\n ],\n}\n\nconst linkButtonEntry: GalleryEntry = {\n id: 'link-button',\n title: 'LinkButton',\n importPath: '@open-mercato/ui/primitives/link-button',\n descriptionKey: 'design_system.entries.linkButton.description',\n variants: [\n {\n id: 'variants',\n title: 'Variants',\n render: () => (\n <>\n <LinkButton>primary</LinkButton>\n <LinkButton variant=\"gray\">gray</LinkButton>\n <LinkButton variant=\"black\">black</LinkButton>\n <LinkButton variant=\"error\">error</LinkButton>\n </>\n ),\n code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<LinkButton>primary</LinkButton>\n<LinkButton variant=\"gray\">gray</LinkButton>\n<LinkButton variant=\"black\">black</LinkButton>\n<LinkButton variant=\"error\">error</LinkButton>`,\n },\n {\n id: 'underline',\n title: 'Underline',\n render: () => (\n <>\n <LinkButton underline=\"always\">always</LinkButton>\n <LinkButton underline=\"hover\">hover</LinkButton>\n <LinkButton underline=\"none\">none</LinkButton>\n </>\n ),\n code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<LinkButton underline=\"always\">always</LinkButton>\n<LinkButton underline=\"hover\">hover</LinkButton>\n<LinkButton underline=\"none\">none</LinkButton>`,\n },\n {\n id: 'as-anchor',\n title: 'As anchor (asChild)',\n render: () => (\n <LinkButton asChild>\n <a href=\"#gallery-entry-link-button\">Open link</a>\n </LinkButton>\n ),\n code: `import { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<LinkButton asChild>\n <a href=\"/backend/docs\">Open link</a>\n</LinkButton>`,\n },\n ],\n}\n\nconst socialButtonEntry: GalleryEntry = {\n id: 'social-button',\n title: 'SocialButton',\n importPath: '@open-mercato/ui/primitives/social-button',\n descriptionKey: 'design_system.entries.socialButton.description',\n variants: [\n {\n id: 'filled',\n title: 'filled',\n render: () => (\n <>\n <SocialButton brand=\"github\">Continue with GitHub</SocialButton>\n <SocialButton brand=\"google\">Continue with Google</SocialButton>\n </>\n ),\n code: `import { SocialButton } from '@open-mercato/ui/primitives/social-button'\n\n<SocialButton brand=\"github\">Continue with GitHub</SocialButton>\n<SocialButton brand=\"google\">Continue with Google</SocialButton>`,\n },\n {\n id: 'stroke',\n title: 'stroke',\n render: () => (\n <>\n <SocialButton brand=\"github\" appearance=\"stroke\">Continue with GitHub</SocialButton>\n <SocialButton brand=\"linkedin\" appearance=\"stroke\">Continue with LinkedIn</SocialButton>\n </>\n ),\n code: `import { SocialButton } from '@open-mercato/ui/primitives/social-button'\n\n<SocialButton brand=\"github\" appearance=\"stroke\">Continue with GitHub</SocialButton>\n<SocialButton brand=\"linkedin\" appearance=\"stroke\">Continue with LinkedIn</SocialButton>`,\n },\n ],\n}\n\nconst fancyButtonEntry: GalleryEntry = {\n id: 'fancy-button',\n title: 'FancyButton',\n importPath: '@open-mercato/ui/primitives/fancy-button',\n descriptionKey: 'design_system.entries.fancyButton.description',\n variants: [\n {\n id: 'intents',\n title: 'Intents',\n render: () => (\n <>\n <FancyButton intent=\"neutral\">Neutral</FancyButton>\n <FancyButton intent=\"basic\">Basic</FancyButton>\n <FancyButton intent=\"primary\">Primary</FancyButton>\n <FancyButton intent=\"destructive\">Destructive</FancyButton>\n </>\n ),\n code: `import { FancyButton } from '@open-mercato/ui/primitives/fancy-button'\n\n<FancyButton intent=\"neutral\">Neutral</FancyButton>\n<FancyButton intent=\"basic\">Basic</FancyButton>\n<FancyButton intent=\"primary\">Primary</FancyButton>\n<FancyButton intent=\"destructive\">Destructive</FancyButton>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <>\n <FancyButton size=\"default\">Default</FancyButton>\n <FancyButton size=\"sm\">Small</FancyButton>\n <FancyButton size=\"xs\">X-Small</FancyButton>\n </>\n ),\n code: `import { FancyButton } from '@open-mercato/ui/primitives/fancy-button'\n\n<FancyButton size=\"default\">Default</FancyButton>\n<FancyButton size=\"sm\">Small</FancyButton>\n<FancyButton size=\"xs\">X-Small</FancyButton>`,\n },\n ],\n}\n\nconst buttonGroupEntry: GalleryEntry = {\n id: 'button-group',\n title: 'ButtonGroup',\n importPath: '@open-mercato/ui/primitives/button-group',\n descriptionKey: 'design_system.entries.buttonGroup.description',\n variants: [\n {\n id: 'horizontal',\n title: 'Horizontal',\n render: () => (\n <ButtonGroup>\n <Button variant=\"outline\">Save</Button>\n <Button variant=\"outline\">Save &amp; New</Button>\n <IconButton aria-label=\"More\">\n <MoreHorizontal />\n </IconButton>\n </ButtonGroup>\n ),\n code: `import { MoreHorizontal } from 'lucide-react'\nimport { ButtonGroup } from '@open-mercato/ui/primitives/button-group'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<ButtonGroup>\n <Button variant=\"outline\">Save</Button>\n <Button variant=\"outline\">Save & New</Button>\n <IconButton aria-label=\"More\"><MoreHorizontal /></IconButton>\n</ButtonGroup>`,\n },\n {\n id: 'vertical',\n title: 'Vertical',\n render: () => (\n <ButtonGroup orientation=\"vertical\" size=\"sm\">\n <Button variant=\"outline\" size=\"sm\">Top</Button>\n <Button variant=\"outline\" size=\"sm\">Middle</Button>\n <Button variant=\"outline\" size=\"sm\">Bottom</Button>\n </ButtonGroup>\n ),\n code: `import { ButtonGroup } from '@open-mercato/ui/primitives/button-group'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<ButtonGroup orientation=\"vertical\" size=\"sm\">\n <Button variant=\"outline\" size=\"sm\">Top</Button>\n <Button variant=\"outline\" size=\"sm\">Middle</Button>\n <Button variant=\"outline\" size=\"sm\">Bottom</Button>\n</ButtonGroup>`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n buttonEntry,\n iconButtonEntry,\n linkButtonEntry,\n socialButtonEntry,\n fancyButtonEntry,\n buttonGroupEntry,\n]\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport type { GalleryEntry } from '../types'\nimport { SocialButtonsDemo, CompactButtonMatrix, CompactButtonDisabledPreview, ButtonGroupMatrix, ButtonStatePreview, PrimaryButtonPreview, DisabledIconButtonPreview, ButtonButtonsDefaultSample, ButtonButtonsDestructiveSample, ButtonButtonsDestructiveOutlineSample, ButtonButtonsDestructiveSoftSample, ButtonButtonsDestructiveGhostSample, ButtonButtonsOutlineSample, ButtonButtonsSecondarySample, ButtonButtonsGhostSample, ButtonButtonsMutedSample, ButtonButtonsLinkSample, ButtonButtonsSizesSample, IconButtonButtonsVariantsSample, IconButtonButtonsSizesSample, IconButtonButtonsFullRadiusSample, LinkButtonButtonsAsAnchorSample, FancyButtonButtonsIntentsSample, FancyButtonButtonsSizesSample, ButtonGroupButtonsHorizontalSample, ButtonGroupButtonsVerticalSample } from '../demos/buttons'\nimport {\n compactButtonDefaultCode,\n compactButtonActiveCode,\n compactButtonDisabledCode,\n iconButtonVariantsCode,\n iconButtonSizesCode,\n iconButtonFullRadiusCode,\n iconButtonDisabledCode,\n linkButtonVariantsCode,\n linkButtonUnderlineCode,\n linkButtonAsAnchorCode,\n socialButtonFilledCode,\n socialButtonStrokeCode,\n socialButtonIconOnlyCode,\n fancyButtonIntentsCode,\n fancyButtonSizesCode,\n buttonGroupSizeQuantityMatrixCode,\n buttonGroupItemContentCode,\n buttonGroupHorizontalCode,\n buttonGroupVerticalCode,\n} from './buttons-snippets'\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\nconst buttonEntry: GalleryEntry = {\n id: 'button',\n title: 'Button',\n importPath: '@open-mercato/ui/primitives/button',\n figmaNodeId: '129:1422',\n usage: {\n do: [\n 'One default (primary) Button per view; remaining actions step down to outline, ghost or muted.',\n 'Destructive actions use the destructive family; -outline/-soft/-ghost lower the emphasis without losing the semantics.',\n 'Default height is h-9; sm (h-8) in dense toolbars, 2xs only inside table rows.',\n 'primary-filled represents the indigo CTA retained in overlay instance 472:831, using the darker status-info-solid role for readable white text in both themes. The current main Button set lists Neutral and Error only; this instance is not a new Code Connect axis.',\n 'For a pending action, compose Spinner with disabled and aria-busy; Button has no loading prop.',\n ],\n dont: [\n 'Never Button size=\"icon\" for icon-only actions \u2014 use IconButton (correct sizing + aria-label contract).',\n 'Never style a raw <button> or <Link> to look like a Button.',\n 'The link variant is for navigation-like actions, not for mutations.',\n ],\n },\n descriptionKey: 'design_system.entries.button.description',\n variants: [\n {\n id: 'primary-filled',\n title: 'Primary Filled (overlay CTA)',\n render: () => <PrimaryButtonPreview />,\n code: `import { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\nfunction PrimaryAction() {\n const t = useT()\n return <Button type=\"button\" variant=\"primary-filled\">{t('design_system.gallery.samples.primaryAction')}</Button>\n}`,\n },\n {\n id: 'default',\n title: 'default',\n render: () => <ButtonButtonsDefaultSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button>Save changes</Button>`,\n },\n {\n id: 'destructive',\n title: 'destructive',\n render: () => <ButtonButtonsDestructiveSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive\">Delete</Button>`,\n },\n {\n id: 'destructive-outline',\n title: 'destructive-outline',\n render: () => <ButtonButtonsDestructiveOutlineSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-outline\">Delete</Button>`,\n },\n {\n id: 'destructive-soft',\n title: 'destructive-soft',\n render: () => <ButtonButtonsDestructiveSoftSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-soft\">Delete draft</Button>`,\n },\n {\n id: 'destructive-ghost',\n title: 'destructive-ghost',\n render: () => <ButtonButtonsDestructiveGhostSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"destructive-ghost\">Remove</Button>`,\n },\n {\n id: 'outline',\n title: 'outline',\n render: () => <ButtonButtonsOutlineSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"outline\">Cancel</Button>`,\n },\n {\n id: 'secondary',\n title: 'secondary',\n render: () => <ButtonButtonsSecondarySample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"secondary\">Duplicate</Button>`,\n },\n {\n id: 'ghost',\n title: 'ghost',\n render: () => <ButtonButtonsGhostSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"ghost\">Dismiss</Button>`,\n },\n {\n id: 'muted',\n title: 'muted',\n render: () => <ButtonButtonsMutedSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"muted\">Show more</Button>`,\n },\n {\n id: 'link',\n title: 'link',\n render: () => <ButtonButtonsLinkSample />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button variant=\"link\">View details</Button>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => <ButtonButtonsSizesSample />,\n code: `import { Plus } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<Button size=\"lg\">Large</Button>\n<Button size=\"default\">Default</Button>\n<Button size=\"sm\">Small</Button>\n<Button size=\"2xs\">2X-Small</Button>\n<Button size=\"icon\" aria-label=\"Add\"><Plus /></Button>`,\n },\n {\n id: 'disabled',\n title: 'Disabled',\n render: () => <ButtonStatePreview />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\n\n<Button type=\"button\" disabled>{t('design_system.gallery.samples.primaryAction')}</Button>`,\n },\n {\n id: 'loading',\n title: 'Loading (composed)',\n render: () => <ButtonStatePreview loading />,\n code: `import { Button } from '@open-mercato/ui/primitives/button'\nimport { Spinner } from '@open-mercato/ui/primitives/spinner'\n\n<Button type=\"button\" disabled aria-busy>\n <Spinner size=\"sm\" className=\"motion-reduce:animate-none\" />\n {t('design_system.gallery.samples.states.saving')}\n</Button>`,\n },\n ],\n}\n\nconst compactButtonEntry: GalleryEntry = {\n id: 'compact-button',\n title: 'CompactButton',\n importPath: '@open-mercato/ui/primitives/compact-button',\n figmaNodeId: '189:3646',\n descriptionKey: 'design_system.entries.compactButton.description',\n usage: { do: [\n 'Compact icon actions at 20 or 24 px with 18 or 20 px icons. Four appearances support 6 px and full-radius shapes.',\n 'Each matrix exposes every size, appearance, and radius combination. Hover and press enabled buttons; active examples are controlled toggles and disabled examples use native disabled.',\n 'Supply an accessible name and enough space around dense actions. Modifiable inherits foreground; its hover surface uses the existing 15% opacity scale rather than the source 16%.',\n ] },\n variants: [\n { id: 'default', title: 'All sizes, appearances, and radii', render: () => <CompactButtonMatrix />, code: compactButtonDefaultCode },\n { id: 'active', title: 'Active toggles', render: () => <CompactButtonMatrix initialPressed />, code: compactButtonActiveCode },\n { id: 'disabled', title: 'Disabled', render: () => <CompactButtonDisabledPreview />, code: compactButtonDisabledCode },\n ],\n}\n\nconst iconButtonEntry: GalleryEntry = {\n id: 'icon-button',\n title: 'IconButton',\n importPath: '@open-mercato/ui/primitives/icon-button',\n usage: {\n do: [\n 'Always pass aria-label \u2014 the icon is the only content.',\n 'size=\"default\" is h-8, one step smaller than Button; use size=\"lg\" (h-9) to align inside a Button row.',\n ],\n dont: ['Never fake it with Button size=\"icon\".'],\n },\n descriptionKey: 'design_system.entries.iconButton.description',\n variants: [\n {\n id: 'variants',\n title: 'Variants',\n render: () => <IconButtonButtonsVariantsSample />,\n code: iconButtonVariantsCode,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => <IconButtonButtonsSizesSample />,\n code: iconButtonSizesCode,\n },\n {\n id: 'full-radius',\n title: 'fullRadius',\n render: () => <IconButtonButtonsFullRadiusSample />,\n code: iconButtonFullRadiusCode,\n },\n {\n id: 'disabled',\n title: 'Disabled',\n render: () => <DisabledIconButtonPreview />,\n code: iconButtonDisabledCode,\n },\n ],\n}\n\nconst linkButtonEntry: GalleryEntry = {\n id: 'link-button',\n title: 'LinkButton',\n importPath: '@open-mercato/ui/primitives/link-button',\n descriptionKey: 'design_system.entries.linkButton.description',\n variants: [\n {\n id: 'variants',\n title: 'Variants',\n render: () => (\n <>\n <LinkButton>primary</LinkButton>\n <LinkButton variant=\"gray\">gray</LinkButton>\n <LinkButton variant=\"black\">black</LinkButton>\n <LinkButton variant=\"error\">error</LinkButton>\n </>\n ),\n code: linkButtonVariantsCode,\n },\n {\n id: 'underline',\n title: 'Underline',\n render: () => (\n <>\n <LinkButton underline=\"always\">always</LinkButton>\n <LinkButton underline=\"hover\">hover</LinkButton>\n <LinkButton underline=\"none\">none</LinkButton>\n </>\n ),\n code: linkButtonUnderlineCode,\n },\n {\n id: 'as-anchor',\n title: 'As anchor (asChild)',\n render: () => <LinkButtonButtonsAsAnchorSample />,\n code: linkButtonAsAnchorCode,\n },\n ],\n}\n\nconst socialButtonEntry: GalleryEntry = {\n id: 'social-button',\n title: 'SocialButton',\n importPath: '@open-mercato/ui/primitives/social-button',\n figmaNodeId: '180:4264',\n descriptionKey: 'design_system.entries.socialButton.description',\n usage: { do: [\n 'All seven source providers appear in Filled and Stroke, with text or icon-only content. Buttons are 40 px high; icon-only buttons are 40 px square.',\n 'Supply the logo as content and an accessible name for icon-only buttons. These local source assets do not invoke authentication.',\n 'Stroke uses semantic foreground and border tokens; monochrome logos follow foreground in both themes. Native hover and keyboard focus expose the interaction states.',\n ] },\n variants: [\n { id: 'filled', title: 'Filled \u2014 all seven providers', render: () => <SocialButtonsDemo appearance=\"filled\" />, code: socialButtonFilledCode },\n { id: 'stroke', title: 'Stroke \u2014 all seven providers', render: () => <SocialButtonsDemo appearance=\"stroke\" />, code: socialButtonStrokeCode },\n { id: 'icon-only', title: 'Icon-only \u2014 both appearances', render: () => <div className=\"grid gap-4\"><SocialButtonsDemo appearance=\"filled\" iconOnly /><SocialButtonsDemo appearance=\"stroke\" iconOnly /></div>, code: socialButtonIconOnlyCode },\n ],\n}\n\nconst fancyButtonEntry: GalleryEntry = {\n id: 'fancy-button',\n title: 'FancyButton',\n importPath: '@open-mercato/ui/primitives/fancy-button',\n descriptionKey: 'design_system.entries.fancyButton.description',\n variants: [\n {\n id: 'intents',\n title: 'Intents',\n render: () => <FancyButtonButtonsIntentsSample />,\n code: fancyButtonIntentsCode,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => <FancyButtonButtonsSizesSample />,\n code: fancyButtonSizesCode,\n },\n ],\n}\n\nconst buttonGroupEntry: GalleryEntry = {\n id: 'button-group',\n title: 'ButtonGroup',\n importPath: '@open-mercato/ui/primitives/button-group',\n descriptionKey: 'design_system.entries.buttonGroup.description',\n figmaNodeId: '493:8644',\n usage: { do: ['Numeric sizes coordinate child dimensions at 24, 32, or 36 px. Legacy size names keep their behavior.', 'The 15 source groups cover quantities two through six at all three sizes. Item examples include text, leading, trailing, both, and icon-only content.'] },\n variants: [\n { id: 'size-quantity-matrix', title: 'All 15 size and quantity combinations', render: () => <ButtonGroupMatrix />, code: buttonGroupSizeQuantityMatrixCode },\n { id: 'item-content', title: 'Text and icon item arrangements', render: () => <ButtonGroupMatrix content />, code: buttonGroupItemContentCode },\n {\n id: 'horizontal',\n title: 'Horizontal',\n render: () => <ButtonGroupButtonsHorizontalSample />,\n code: buttonGroupHorizontalCode,\n },\n {\n id: 'vertical',\n title: 'Vertical',\n render: () => <ButtonGroupButtonsVerticalSample />,\n code: buttonGroupVerticalCode,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n buttonEntry,\n compactButtonEntry,\n iconButtonEntry,\n linkButtonEntry,\n socialButtonEntry,\n fancyButtonEntry,\n buttonGroupEntry,\n]\n\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }