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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/build.mjs +11 -0
  3. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +23 -0
  4. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  5. package/dist/modules/customers/backend/customers/companies/[id]/page.js +2 -1
  6. package/dist/modules/customers/backend/customers/companies/[id]/page.js.map +2 -2
  7. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +2 -1
  8. package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
  9. package/dist/modules/customers/backend/customers/people/[id]/page.js +2 -2
  10. package/dist/modules/customers/backend/customers/people/[id]/page.js.map +2 -2
  11. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +2 -1
  12. package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
  13. package/dist/modules/customers/lib/detailHelpers.js +4 -0
  14. package/dist/modules/customers/lib/detailHelpers.js.map +2 -2
  15. package/dist/modules/customers/lib/todoCompatibility.js +5 -0
  16. package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
  17. package/dist/modules/design_system/backend/design-system/page.meta.js +3 -2
  18. package/dist/modules/design_system/backend/design-system/page.meta.js.map +2 -2
  19. package/dist/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
  20. package/dist/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
  21. package/dist/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
  22. package/dist/modules/design_system/gallery/assets/avatar-photo.png +0 -0
  23. package/dist/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
  24. package/dist/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
  25. package/dist/modules/design_system/gallery/assets/crypto-ada.png +0 -0
  26. package/dist/modules/design_system/gallery/assets/crypto-avax.png +0 -0
  27. package/dist/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
  28. package/dist/modules/design_system/gallery/assets/crypto-brand.png +0 -0
  29. package/dist/modules/design_system/gallery/assets/crypto-btc.png +0 -0
  30. package/dist/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
  31. package/dist/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
  32. package/dist/modules/design_system/gallery/assets/crypto-dot.png +0 -0
  33. package/dist/modules/design_system/gallery/assets/crypto-eth.png +0 -0
  34. package/dist/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
  35. package/dist/modules/design_system/gallery/assets/crypto-history.svg +3 -0
  36. package/dist/modules/design_system/gallery/assets/crypto-link.svg +3 -0
  37. package/dist/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
  38. package/dist/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
  39. package/dist/modules/design_system/gallery/assets/crypto-more.svg +3 -0
  40. package/dist/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
  41. package/dist/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
  42. package/dist/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
  43. package/dist/modules/design_system/gallery/assets/crypto-sol.png +0 -0
  44. package/dist/modules/design_system/gallery/assets/crypto-star.svg +3 -0
  45. package/dist/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
  46. package/dist/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
  47. package/dist/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
  48. package/dist/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
  49. package/dist/modules/design_system/gallery/assets/crypto-trx.png +0 -0
  50. package/dist/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
  51. package/dist/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
  52. package/dist/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
  53. package/dist/modules/design_system/gallery/assets/crypto-wei.png +0 -0
  54. package/dist/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
  55. package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js +67 -0
  56. package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js.map +7 -0
  57. package/dist/modules/design_system/gallery/assets/github-logo.png +0 -0
  58. package/dist/modules/design_system/gallery/assets/images.d.js +1 -0
  59. package/dist/modules/design_system/gallery/assets/images.d.js.map +7 -0
  60. package/dist/modules/design_system/gallery/assets/input-european-union.svg +18 -0
  61. package/dist/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
  62. package/dist/modules/design_system/gallery/assets/marketing-artwork.js +83 -0
  63. package/dist/modules/design_system/gallery/assets/marketing-artwork.js.map +7 -0
  64. package/dist/modules/design_system/gallery/assets/menu-apex.svg +18 -0
  65. package/dist/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
  66. package/dist/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
  67. package/dist/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
  68. package/dist/modules/design_system/gallery/assets/select-google.png +0 -0
  69. package/dist/modules/design_system/gallery/assets/select-poland.png +0 -0
  70. package/dist/modules/design_system/gallery/assets/selection-artwork.js +5 -0
  71. package/dist/modules/design_system/gallery/assets/selection-artwork.js.map +7 -0
  72. package/dist/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
  73. package/dist/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
  74. package/dist/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
  75. package/dist/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
  76. package/dist/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
  77. package/dist/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
  78. package/dist/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
  79. package/dist/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
  80. package/dist/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
  81. package/dist/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
  82. package/dist/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
  83. package/dist/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
  84. package/dist/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
  85. package/dist/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
  86. package/dist/modules/design_system/gallery/assets/style-studio-product.png +0 -0
  87. package/dist/modules/design_system/gallery/assets/upload-images.js +8 -0
  88. package/dist/modules/design_system/gallery/assets/upload-images.js.map +7 -0
  89. package/dist/modules/design_system/gallery/components/BrandStylePreview.js +74 -0
  90. package/dist/modules/design_system/gallery/components/BrandStylePreview.js.map +7 -0
  91. package/dist/modules/design_system/gallery/components/CodeSnippet.js +31 -31
  92. package/dist/modules/design_system/gallery/components/CodeSnippet.js.map +2 -2
  93. package/dist/modules/design_system/gallery/components/ColorPlayground.js +408 -0
  94. package/dist/modules/design_system/gallery/components/ColorPlayground.js.map +7 -0
  95. package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js +166 -0
  96. package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js.map +7 -0
  97. package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js +182 -0
  98. package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js.map +7 -0
  99. package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js +80 -0
  100. package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js.map +7 -0
  101. package/dist/modules/design_system/gallery/components/ComponentIndex.js +42 -0
  102. package/dist/modules/design_system/gallery/components/ComponentIndex.js.map +7 -0
  103. package/dist/modules/design_system/gallery/components/DesignSystemHome.js +69 -0
  104. package/dist/modules/design_system/gallery/components/DesignSystemHome.js.map +7 -0
  105. package/dist/modules/design_system/gallery/components/EntryCard.js +47 -41
  106. package/dist/modules/design_system/gallery/components/EntryCard.js.map +2 -2
  107. package/dist/modules/design_system/gallery/components/EntryHeader.js +68 -0
  108. package/dist/modules/design_system/gallery/components/EntryHeader.js.map +7 -0
  109. package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js +19 -0
  110. package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js.map +7 -0
  111. package/dist/modules/design_system/gallery/components/FoundationGuide.js +46 -0
  112. package/dist/modules/design_system/gallery/components/FoundationGuide.js.map +7 -0
  113. package/dist/modules/design_system/gallery/components/GalleryLink.js +21 -0
  114. package/dist/modules/design_system/gallery/components/GalleryLink.js.map +7 -0
  115. package/dist/modules/design_system/gallery/components/GalleryNavigation.js +82 -0
  116. package/dist/modules/design_system/gallery/components/GalleryNavigation.js.map +7 -0
  117. package/dist/modules/design_system/gallery/components/GalleryShell.js +147 -67
  118. package/dist/modules/design_system/gallery/components/GalleryShell.js.map +3 -3
  119. package/dist/modules/design_system/gallery/components/IconsBrowser.js +33 -0
  120. package/dist/modules/design_system/gallery/components/IconsBrowser.js.map +7 -0
  121. package/dist/modules/design_system/gallery/components/SourceLibrary.js +93 -0
  122. package/dist/modules/design_system/gallery/components/SourceLibrary.js.map +7 -0
  123. package/dist/modules/design_system/gallery/components/StyleAgents.js +139 -0
  124. package/dist/modules/design_system/gallery/components/StyleAgents.js.map +7 -0
  125. package/dist/modules/design_system/gallery/components/ThemeTokenReference.js +101 -0
  126. package/dist/modules/design_system/gallery/components/ThemeTokenReference.js.map +7 -0
  127. package/dist/modules/design_system/gallery/components/VariantPreview.js +2 -2
  128. package/dist/modules/design_system/gallery/components/VariantPreview.js.map +2 -2
  129. package/dist/modules/design_system/gallery/components/colorPreview.js +58 -0
  130. package/dist/modules/design_system/gallery/components/colorPreview.js.map +7 -0
  131. package/dist/modules/design_system/gallery/components/colorStudio.js +218 -0
  132. package/dist/modules/design_system/gallery/components/colorStudio.js.map +7 -0
  133. package/dist/modules/design_system/gallery/components/styleAgentBranding.js +46 -0
  134. package/dist/modules/design_system/gallery/components/styleAgentBranding.js.map +7 -0
  135. package/dist/modules/design_system/gallery/components/themeTokens.js +32 -0
  136. package/dist/modules/design_system/gallery/components/themeTokens.js.map +7 -0
  137. package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js +194 -0
  138. package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js.map +7 -0
  139. package/dist/modules/design_system/gallery/demos/ai-product.js +423 -0
  140. package/dist/modules/design_system/gallery/demos/ai-product.js.map +7 -0
  141. package/dist/modules/design_system/gallery/demos/buttons.js +289 -0
  142. package/dist/modules/design_system/gallery/demos/buttons.js.map +7 -0
  143. package/dist/modules/design_system/gallery/demos/cryptocurrency.js +1708 -0
  144. package/dist/modules/design_system/gallery/demos/cryptocurrency.js.map +7 -0
  145. package/dist/modules/design_system/gallery/demos/feeds-code.generated.js +92 -0
  146. package/dist/modules/design_system/gallery/demos/feeds-code.generated.js.map +7 -0
  147. package/dist/modules/design_system/gallery/demos/feeds.js +148 -0
  148. package/dist/modules/design_system/gallery/demos/feeds.js.map +7 -0
  149. package/dist/modules/design_system/gallery/demos/file-upload.js +72 -0
  150. package/dist/modules/design_system/gallery/demos/file-upload.js.map +7 -0
  151. package/dist/modules/design_system/gallery/demos/foundation-reference-data.js +4875 -0
  152. package/dist/modules/design_system/gallery/demos/foundation-reference-data.js.map +7 -0
  153. package/dist/modules/design_system/gallery/demos/foundation-references.js +188 -0
  154. package/dist/modules/design_system/gallery/demos/foundation-references.js.map +7 -0
  155. package/dist/modules/design_system/gallery/demos/key-components-code.generated.js +6 -0
  156. package/dist/modules/design_system/gallery/demos/key-components-code.generated.js.map +7 -0
  157. package/dist/modules/design_system/gallery/demos/key-components.js +127 -0
  158. package/dist/modules/design_system/gallery/demos/key-components.js.map +7 -0
  159. package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js +98 -0
  160. package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js.map +7 -0
  161. package/dist/modules/design_system/gallery/demos/marketing-controls.js +134 -0
  162. package/dist/modules/design_system/gallery/demos/marketing-controls.js.map +7 -0
  163. package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js +195 -0
  164. package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js.map +7 -0
  165. package/dist/modules/design_system/gallery/demos/marketing-widgets.js +586 -0
  166. package/dist/modules/design_system/gallery/demos/marketing-widgets.js.map +7 -0
  167. package/dist/modules/design_system/gallery/demos/menu-fixtures.js +40 -0
  168. package/dist/modules/design_system/gallery/demos/menu-fixtures.js.map +7 -0
  169. package/dist/modules/design_system/gallery/demos/menu-sources.js +295 -0
  170. package/dist/modules/design_system/gallery/demos/menu-sources.js.map +7 -0
  171. package/dist/modules/design_system/gallery/demos/menus.js +150 -0
  172. package/dist/modules/design_system/gallery/demos/menus.js.map +7 -0
  173. package/dist/modules/design_system/gallery/demos/rating-reviews.js +53 -0
  174. package/dist/modules/design_system/gallery/demos/rating-reviews.js.map +7 -0
  175. package/dist/modules/design_system/gallery/demos/registered-icons.js +104 -0
  176. package/dist/modules/design_system/gallery/demos/registered-icons.js.map +7 -0
  177. package/dist/modules/design_system/gallery/demos/selection-cards.js +99 -0
  178. package/dist/modules/design_system/gallery/demos/selection-cards.js.map +7 -0
  179. package/dist/modules/design_system/gallery/demos/shell-code.generated.js +189 -0
  180. package/dist/modules/design_system/gallery/demos/shell-code.generated.js.map +7 -0
  181. package/dist/modules/design_system/gallery/demos/shell.js +330 -0
  182. package/dist/modules/design_system/gallery/demos/shell.js.map +7 -0
  183. package/dist/modules/design_system/gallery/demos/source-artwork.js +120 -0
  184. package/dist/modules/design_system/gallery/demos/source-artwork.js.map +7 -0
  185. package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js +125 -0
  186. package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js.map +7 -0
  187. package/dist/modules/design_system/gallery/demos/source-filters.js +185 -0
  188. package/dist/modules/design_system/gallery/demos/source-filters.js.map +7 -0
  189. package/dist/modules/design_system/gallery/demos/source-icons.js +69 -0
  190. package/dist/modules/design_system/gallery/demos/source-icons.js.map +7 -0
  191. package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js +150 -0
  192. package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js.map +7 -0
  193. package/dist/modules/design_system/gallery/demos/table-cells.js +181 -0
  194. package/dist/modules/design_system/gallery/demos/table-cells.js.map +7 -0
  195. package/dist/modules/design_system/gallery/demos/text-inputs.js +113 -0
  196. package/dist/modules/design_system/gallery/demos/text-inputs.js.map +7 -0
  197. package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js +41 -0
  198. package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js.map +7 -0
  199. package/dist/modules/design_system/gallery/demos/time-picker.js +41 -0
  200. package/dist/modules/design_system/gallery/demos/time-picker.js.map +7 -0
  201. package/dist/modules/design_system/gallery/entries/banners.js +123 -60
  202. package/dist/modules/design_system/gallery/entries/banners.js.map +2 -2
  203. package/dist/modules/design_system/gallery/entries/buttons-snippets.js +433 -0
  204. package/dist/modules/design_system/gallery/entries/buttons-snippets.js.map +7 -0
  205. package/dist/modules/design_system/gallery/entries/buttons.js +127 -148
  206. package/dist/modules/design_system/gallery/entries/buttons.js.map +2 -2
  207. package/dist/modules/design_system/gallery/entries/charts.js +532 -186
  208. package/dist/modules/design_system/gallery/entries/charts.js.map +2 -2
  209. package/dist/modules/design_system/gallery/entries/dates.js +191 -3
  210. package/dist/modules/design_system/gallery/entries/dates.js.map +2 -2
  211. package/dist/modules/design_system/gallery/entries/detail.js +118 -77
  212. package/dist/modules/design_system/gallery/entries/detail.js.map +2 -2
  213. package/dist/modules/design_system/gallery/entries/display.js +1449 -240
  214. package/dist/modules/design_system/gallery/entries/display.js.map +2 -2
  215. package/dist/modules/design_system/gallery/entries/feedback.js +1058 -132
  216. package/dist/modules/design_system/gallery/entries/feedback.js.map +2 -2
  217. package/dist/modules/design_system/gallery/entries/filters.js +231 -103
  218. package/dist/modules/design_system/gallery/entries/filters.js.map +2 -2
  219. package/dist/modules/design_system/gallery/entries/foundations.js +368 -57
  220. package/dist/modules/design_system/gallery/entries/foundations.js.map +2 -2
  221. package/dist/modules/design_system/gallery/entries/icons.js +29 -91
  222. package/dist/modules/design_system/gallery/entries/icons.js.map +2 -2
  223. package/dist/modules/design_system/gallery/entries/inputs-snippets.js +154 -0
  224. package/dist/modules/design_system/gallery/entries/inputs-snippets.js.map +7 -0
  225. package/dist/modules/design_system/gallery/entries/inputs.js +2043 -306
  226. package/dist/modules/design_system/gallery/entries/inputs.js.map +2 -2
  227. package/dist/modules/design_system/gallery/entries/library.js +20 -0
  228. package/dist/modules/design_system/gallery/entries/library.js.map +7 -0
  229. package/dist/modules/design_system/gallery/entries/messages.js +121 -103
  230. package/dist/modules/design_system/gallery/entries/messages.js.map +2 -2
  231. package/dist/modules/design_system/gallery/entries/navigation.js +676 -103
  232. package/dist/modules/design_system/gallery/entries/navigation.js.map +2 -2
  233. package/dist/modules/design_system/gallery/entries/notifications.js +131 -78
  234. package/dist/modules/design_system/gallery/entries/notifications.js.map +2 -2
  235. package/dist/modules/design_system/gallery/entries/overlays.js +611 -203
  236. package/dist/modules/design_system/gallery/entries/overlays.js.map +2 -2
  237. package/dist/modules/design_system/gallery/entries/scaffolding.js +1175 -120
  238. package/dist/modules/design_system/gallery/entries/scaffolding.js.map +2 -2
  239. package/dist/modules/design_system/gallery/entries/schedule.js +79 -54
  240. package/dist/modules/design_system/gallery/entries/schedule.js.map +2 -2
  241. package/dist/modules/design_system/gallery/presentation.js +108 -0
  242. package/dist/modules/design_system/gallery/presentation.js.map +7 -0
  243. package/dist/modules/design_system/gallery/registry.js +8 -5
  244. package/dist/modules/design_system/gallery/registry.js.map +2 -2
  245. package/dist/modules/design_system/gallery/source-library.generated.js +5 -0
  246. package/dist/modules/design_system/gallery/source-library.generated.js.map +7 -0
  247. package/dist/modules/design_system/i18n/de.json +7167 -0
  248. package/dist/modules/design_system/i18n/en.json +7167 -0
  249. package/dist/modules/design_system/i18n/es.json +7167 -0
  250. package/dist/modules/design_system/i18n/ko.json +7167 -0
  251. package/dist/modules/design_system/i18n/pl.json +7167 -0
  252. package/dist/modules/push_notifications/lib/queue.js +1 -31
  253. package/dist/modules/push_notifications/lib/queue.js.map +2 -2
  254. package/jest.config.cjs +1 -0
  255. package/jest.mocks/image.js +1 -0
  256. package/package.json +8 -8
  257. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +50 -0
  258. package/src/modules/customers/backend/customers/companies/[id]/page.tsx +2 -1
  259. package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +2 -1
  260. package/src/modules/customers/backend/customers/people/[id]/page.tsx +2 -2
  261. package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +2 -1
  262. package/src/modules/customers/lib/detailHelpers.ts +4 -0
  263. package/src/modules/customers/lib/todoCompatibility.ts +10 -0
  264. package/src/modules/design_system/backend/design-system/page.meta.ts +3 -2
  265. package/src/modules/design_system/gallery/assets/README.md +30 -0
  266. package/src/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
  267. package/src/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
  268. package/src/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
  269. package/src/modules/design_system/gallery/assets/avatar-photo.png +0 -0
  270. package/src/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
  271. package/src/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
  272. package/src/modules/design_system/gallery/assets/crypto-ada.png +0 -0
  273. package/src/modules/design_system/gallery/assets/crypto-avax.png +0 -0
  274. package/src/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
  275. package/src/modules/design_system/gallery/assets/crypto-brand.png +0 -0
  276. package/src/modules/design_system/gallery/assets/crypto-btc.png +0 -0
  277. package/src/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
  278. package/src/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
  279. package/src/modules/design_system/gallery/assets/crypto-dot.png +0 -0
  280. package/src/modules/design_system/gallery/assets/crypto-eth.png +0 -0
  281. package/src/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
  282. package/src/modules/design_system/gallery/assets/crypto-history.svg +3 -0
  283. package/src/modules/design_system/gallery/assets/crypto-link.svg +3 -0
  284. package/src/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
  285. package/src/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
  286. package/src/modules/design_system/gallery/assets/crypto-more.svg +3 -0
  287. package/src/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
  288. package/src/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
  289. package/src/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
  290. package/src/modules/design_system/gallery/assets/crypto-sol.png +0 -0
  291. package/src/modules/design_system/gallery/assets/crypto-star.svg +3 -0
  292. package/src/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
  293. package/src/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
  294. package/src/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
  295. package/src/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
  296. package/src/modules/design_system/gallery/assets/crypto-trx.png +0 -0
  297. package/src/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
  298. package/src/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
  299. package/src/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
  300. package/src/modules/design_system/gallery/assets/crypto-wei.png +0 -0
  301. package/src/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
  302. package/src/modules/design_system/gallery/assets/cryptocurrency-artwork.ts +63 -0
  303. package/src/modules/design_system/gallery/assets/github-logo.png +0 -0
  304. package/src/modules/design_system/gallery/assets/images.d.ts +9 -0
  305. package/src/modules/design_system/gallery/assets/input-european-union.svg +18 -0
  306. package/src/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
  307. package/src/modules/design_system/gallery/assets/marketing-artwork.ts +79 -0
  308. package/src/modules/design_system/gallery/assets/menu-apex.svg +18 -0
  309. package/src/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
  310. package/src/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
  311. package/src/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
  312. package/src/modules/design_system/gallery/assets/select-google.png +0 -0
  313. package/src/modules/design_system/gallery/assets/select-poland.png +0 -0
  314. package/src/modules/design_system/gallery/assets/selection-artwork.ts +1 -0
  315. package/src/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
  316. package/src/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
  317. package/src/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
  318. package/src/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
  319. package/src/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
  320. package/src/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
  321. package/src/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
  322. package/src/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
  323. package/src/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
  324. package/src/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
  325. package/src/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
  326. package/src/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
  327. package/src/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
  328. package/src/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
  329. package/src/modules/design_system/gallery/assets/style-studio-product.png +0 -0
  330. package/src/modules/design_system/gallery/assets/upload-images.ts +5 -0
  331. package/src/modules/design_system/gallery/components/BrandStylePreview.tsx +94 -0
  332. package/src/modules/design_system/gallery/components/CodeSnippet.tsx +34 -34
  333. package/src/modules/design_system/gallery/components/ColorPlayground.tsx +324 -0
  334. package/src/modules/design_system/gallery/components/ColorStudioCompositions.tsx +96 -0
  335. package/src/modules/design_system/gallery/components/ColorStudioSpecimen.tsx +164 -0
  336. package/src/modules/design_system/gallery/components/CompactEntrySpecimen.tsx +65 -0
  337. package/src/modules/design_system/gallery/components/ComponentIndex.tsx +47 -0
  338. package/src/modules/design_system/gallery/components/DesignSystemHome.tsx +66 -0
  339. package/src/modules/design_system/gallery/components/EntryCard.tsx +52 -37
  340. package/src/modules/design_system/gallery/components/EntryHeader.tsx +80 -0
  341. package/src/modules/design_system/gallery/components/FamilyEntryPreview.tsx +22 -0
  342. package/src/modules/design_system/gallery/components/FoundationGuide.tsx +43 -0
  343. package/src/modules/design_system/gallery/components/GalleryLink.tsx +19 -0
  344. package/src/modules/design_system/gallery/components/GalleryNavigation.tsx +86 -0
  345. package/src/modules/design_system/gallery/components/GalleryShell.tsx +149 -63
  346. package/src/modules/design_system/gallery/components/IconsBrowser.tsx +40 -0
  347. package/src/modules/design_system/gallery/components/SourceLibrary.tsx +90 -0
  348. package/src/modules/design_system/gallery/components/StyleAgents.tsx +115 -0
  349. package/src/modules/design_system/gallery/components/ThemeTokenReference.tsx +76 -0
  350. package/src/modules/design_system/gallery/components/VariantPreview.tsx +2 -2
  351. package/src/modules/design_system/gallery/components/colorPreview.ts +63 -0
  352. package/src/modules/design_system/gallery/components/colorStudio.ts +260 -0
  353. package/src/modules/design_system/gallery/components/styleAgentBranding.ts +42 -0
  354. package/src/modules/design_system/gallery/components/themeTokens.ts +26 -0
  355. package/src/modules/design_system/gallery/demos/ai-product-code.generated.ts +3 -0
  356. package/src/modules/design_system/gallery/demos/ai-product.tsx +188 -0
  357. package/src/modules/design_system/gallery/demos/buttons.tsx +331 -0
  358. package/src/modules/design_system/gallery/demos/cryptocurrency.tsx +1943 -0
  359. package/src/modules/design_system/gallery/demos/feeds-code.generated.ts +4 -0
  360. package/src/modules/design_system/gallery/demos/feeds.tsx +82 -0
  361. package/src/modules/design_system/gallery/demos/file-upload.tsx +61 -0
  362. package/src/modules/design_system/gallery/demos/foundation-reference-data.ts +4872 -0
  363. package/src/modules/design_system/gallery/demos/foundation-references.tsx +140 -0
  364. package/src/modules/design_system/gallery/demos/key-components-code.generated.ts +3 -0
  365. package/src/modules/design_system/gallery/demos/key-components.tsx +106 -0
  366. package/src/modules/design_system/gallery/demos/marketing-controls-code.generated.ts +3 -0
  367. package/src/modules/design_system/gallery/demos/marketing-controls.tsx +92 -0
  368. package/src/modules/design_system/gallery/demos/marketing-widgets-code.generated.ts +3 -0
  369. package/src/modules/design_system/gallery/demos/marketing-widgets.tsx +189 -0
  370. package/src/modules/design_system/gallery/demos/menu-fixtures.tsx +48 -0
  371. package/src/modules/design_system/gallery/demos/menu-sources.ts +5 -0
  372. package/src/modules/design_system/gallery/demos/menus.tsx +122 -0
  373. package/src/modules/design_system/gallery/demos/rating-reviews.tsx +44 -0
  374. package/src/modules/design_system/gallery/demos/registered-icons.tsx +117 -0
  375. package/src/modules/design_system/gallery/demos/selection-cards.tsx +97 -0
  376. package/src/modules/design_system/gallery/demos/shell-code.generated.ts +3 -0
  377. package/src/modules/design_system/gallery/demos/shell.tsx +183 -0
  378. package/src/modules/design_system/gallery/demos/source-artwork.tsx +88 -0
  379. package/src/modules/design_system/gallery/demos/source-filters-code.generated.ts +3 -0
  380. package/src/modules/design_system/gallery/demos/source-filters.tsx +119 -0
  381. package/src/modules/design_system/gallery/demos/source-icons.tsx +62 -0
  382. package/src/modules/design_system/gallery/demos/table-cells-code.generated.ts +3 -0
  383. package/src/modules/design_system/gallery/demos/table-cells.tsx +144 -0
  384. package/src/modules/design_system/gallery/demos/text-inputs.tsx +90 -0
  385. package/src/modules/design_system/gallery/demos/time-picker-code.generated.ts +5 -0
  386. package/src/modules/design_system/gallery/demos/time-picker.tsx +31 -0
  387. package/src/modules/design_system/gallery/entries/banners.tsx +143 -94
  388. package/src/modules/design_system/gallery/entries/buttons-snippets.ts +432 -0
  389. package/src/modules/design_system/gallery/entries/buttons.tsx +125 -196
  390. package/src/modules/design_system/gallery/entries/charts.tsx +545 -233
  391. package/src/modules/design_system/gallery/entries/dates.tsx +171 -3
  392. package/src/modules/design_system/gallery/entries/detail.tsx +142 -115
  393. package/src/modules/design_system/gallery/entries/display.tsx +1691 -319
  394. package/src/modules/design_system/gallery/entries/feedback.tsx +1082 -169
  395. package/src/modules/design_system/gallery/entries/filters.tsx +238 -143
  396. package/src/modules/design_system/gallery/entries/foundations.tsx +404 -61
  397. package/src/modules/design_system/gallery/entries/icons.tsx +31 -117
  398. package/src/modules/design_system/gallery/entries/inputs-snippets.ts +156 -0
  399. package/src/modules/design_system/gallery/entries/inputs.tsx +2146 -503
  400. package/src/modules/design_system/gallery/entries/library.tsx +16 -0
  401. package/src/modules/design_system/gallery/entries/messages.tsx +114 -106
  402. package/src/modules/design_system/gallery/entries/navigation.tsx +782 -192
  403. package/src/modules/design_system/gallery/entries/notifications.tsx +145 -120
  404. package/src/modules/design_system/gallery/entries/overlays.tsx +696 -280
  405. package/src/modules/design_system/gallery/entries/scaffolding.tsx +1192 -158
  406. package/src/modules/design_system/gallery/entries/schedule.tsx +72 -58
  407. package/src/modules/design_system/gallery/presentation.ts +106 -0
  408. package/src/modules/design_system/gallery/registry.ts +8 -6
  409. package/src/modules/design_system/gallery/source-library.generated.ts +2 -0
  410. package/src/modules/design_system/i18n/de.json +7112 -3
  411. package/src/modules/design_system/i18n/en.json +7112 -3
  412. package/src/modules/design_system/i18n/es.json +7112 -3
  413. package/src/modules/design_system/i18n/ko.json +7112 -3
  414. package/src/modules/design_system/i18n/pl.json +7112 -3
  415. package/src/modules/push_notifications/AGENTS.md +9 -5
  416. package/src/modules/push_notifications/lib/queue.ts +15 -44
@@ -1,5 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
4
+ import { Label } from "@open-mercato/ui/primitives/label";
3
5
  import { CreditCard, LayoutGrid, Settings, ShoppingCart, Truck } from "lucide-react";
4
6
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "@open-mercato/ui/primitives/tabs";
5
7
  import {
@@ -22,12 +24,18 @@ import {
22
24
  AccordionItem,
23
25
  AccordionTrigger
24
26
  } from "@open-mercato/ui/primitives/accordion";
25
- function PaginationBasicDemo() {
27
+ import { SidebarFeatureExample, SidebarIdentityExample, SidebarItemsExample, TopbarExample, NavigationBrandsExample } from "../demos/shell.js";
28
+ import { shellExampleCode } from "../demos/shell-code.generated.js";
29
+ import { AiPromptExample, AiIconButtonExamples, AiNavigationExamples, AiSearchExamples, AiAuthExamples, AiSettingsExamples, AiNewChatExample, AiSidebarExample, AiMobileNavigationExample } from "../demos/ai-product.js";
30
+ import { aiProductExampleCode } from "../demos/ai-product-code.generated.js";
31
+ function PaginationBasicDemo({ appearance, disabled = false }) {
26
32
  const [page, setPage] = React.useState(2);
27
33
  const [pageSize, setPageSize] = React.useState(25);
28
34
  return /* @__PURE__ */ jsx(
29
35
  Pagination,
30
36
  {
37
+ appearance,
38
+ disabled,
31
39
  page,
32
40
  pageSize,
33
41
  total: 400,
@@ -50,6 +58,77 @@ function PaginationCompactDemo() {
50
58
  }
51
59
  );
52
60
  }
61
+ function TabsQuantityDemo({ variant, orientation }) {
62
+ const t = useT();
63
+ const counts = orientation === "vertical" ? [2, 3, 4, 5, 6, 7, 8] : [2, 3, 4, 5, 6];
64
+ return /* @__PURE__ */ jsx("div", { className: orientation === "vertical" ? "grid w-full gap-6 xl:grid-cols-2" : "flex w-full flex-col gap-6", children: counts.map((count) => /* @__PURE__ */ jsxs(Tabs, { defaultValue: "1", variant, orientation, className: "min-w-0", children: [
65
+ /* @__PURE__ */ jsxs(TabsList, { "aria-label": t("design_system.gallery.examples.navigation2.sections", { count }), className: orientation === "vertical" ? "w-64 shrink-0" : "flex w-full overflow-x-auto", children: [
66
+ orientation === "vertical" && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "px-2 py-1 text-xs font-medium uppercase text-muted-foreground", children: t("design_system.gallery.examples.navigation2.selectMenu") }),
67
+ Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx(TabsTrigger, { value: String(index + 1), leading: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-5" }), count: index === 1 ? 12 : void 0, children: t("design_system.gallery.examples.navigation2.section", { number: index + 1 }) }, index))
68
+ ] }),
69
+ Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsx(TabsContent, { value: String(index + 1), className: "text-sm text-muted-foreground", children: t("design_system.gallery.examples.navigation2.panel", { number: index + 1 }) }, index))
70
+ ] }, count)) });
71
+ }
72
+ function TabsKeyboardDemo() {
73
+ const t = useT();
74
+ return /* @__PURE__ */ jsxs(Tabs, { defaultValue: "overview", variant: "underline", className: "w-full", children: [
75
+ /* @__PURE__ */ jsxs(TabsList, { "aria-label": t("design_system.gallery.examples.navigation2.keyboard"), children: [
76
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "overview", leading: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-5" }), children: t("design_system.gallery.examples.navigation2.overview") }),
77
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "locked", disabled: true, count: 4, children: t("design_system.gallery.examples.navigation2.locked") }),
78
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "settings", leading: /* @__PURE__ */ jsx(Settings, { className: "size-5" }), children: t("design_system.gallery.examples.navigation2.settings") })
79
+ ] }),
80
+ /* @__PURE__ */ jsx(TabsContent, { value: "overview", children: t("design_system.gallery.examples.navigation2.keyboardHint") }),
81
+ /* @__PURE__ */ jsx(TabsContent, { value: "settings", children: t("design_system.gallery.examples.navigation2.settingsPanel") })
82
+ ] });
83
+ }
84
+ function BreadcrumbQuantityDemo() {
85
+ const t = useT();
86
+ const targetId = React.useId();
87
+ return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-4", children: [
88
+ ["arrow", "slash", "dot"].map((divider) => /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: [3, 4, 5].map((count) => /* @__PURE__ */ jsx(Breadcrumb, { divider, "aria-label": t("design_system.gallery.examples.navigation2.path", { count }), children: /* @__PURE__ */ jsx(BreadcrumbList, { className: "flex-wrap", children: Array.from({ length: count }, (_, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
89
+ index > 0 && /* @__PURE__ */ jsx(BreadcrumbSeparator, { className: "size-5 justify-center", children: divider === "dot" ? "\u2022" : void 0 }),
90
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: index === count - 1 ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: t("design_system.gallery.examples.navigation2.section", { number: index + 1 }) }) : /* @__PURE__ */ jsxs(BreadcrumbLink, { href: `#${targetId}`, children: [
91
+ /* @__PURE__ */ jsx(LayoutGrid, { className: "size-5", "aria-hidden": "true" }),
92
+ t("design_system.gallery.examples.navigation2.section", { number: index + 1 })
93
+ ] }) })
94
+ ] }, index)) }) }, count)) }, divider)),
95
+ /* @__PURE__ */ jsx("p", { id: targetId, tabIndex: -1, className: "text-sm text-muted-foreground", children: t("design_system.gallery.examples.navigation2.localDestination") })
96
+ ] });
97
+ }
98
+ function AccordionStartDemo() {
99
+ const t = useT();
100
+ return /* @__PURE__ */ jsxs(Accordion, { type: "single", collapsible: true, defaultValue: "details", className: "w-full max-w-md space-y-2", children: [
101
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "overview", children: [
102
+ /* @__PURE__ */ jsx(AccordionTrigger, { iconPosition: "start", children: t("design_system.gallery.examples.navigation2.overview") }),
103
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.examples.navigation2.accordionBody") })
104
+ ] }),
105
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "details", children: [
106
+ /* @__PURE__ */ jsx(AccordionTrigger, { iconPosition: "start", children: t("design_system.gallery.examples.navigation2.settings") }),
107
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.examples.navigation2.accordionBody") })
108
+ ] }),
109
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "locked", disabled: true, children: [
110
+ /* @__PURE__ */ jsx(AccordionTrigger, { iconPosition: "start", children: t("design_system.gallery.examples.navigation2.locked") }),
111
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.examples.navigation2.accordionBody") })
112
+ ] })
113
+ ] });
114
+ }
115
+ function SegmentedSourceDemo({ content }) {
116
+ const t = useT();
117
+ const labelId = React.useId();
118
+ const [value, setValue] = React.useState("overview");
119
+ const options = [
120
+ { value: "overview", label: t("design_system.gallery.examples.navigation2.overview"), icon: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-5", "aria-hidden": "true" }) },
121
+ { value: "settings", label: t("design_system.gallery.examples.navigation2.settings"), icon: /* @__PURE__ */ jsx(Settings, { className: "size-5", "aria-hidden": "true" }) },
122
+ { value: "orders", label: t("design_system.gallery.examples.navigation2.orders"), icon: /* @__PURE__ */ jsx(ShoppingCart, { className: "size-5", "aria-hidden": "true" }) }
123
+ ];
124
+ return /* @__PURE__ */ jsx("div", { className: "flex w-full max-w-sm flex-col gap-6", children: [false, true].map((disabled) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
125
+ /* @__PURE__ */ jsx(Label, { id: `${labelId}-${disabled}`, className: "leading-5", children: disabled ? t("design_system.gallery.examples.navigation2.locked") : t("design_system.gallery.examples.navigation2.selectMenu") }),
126
+ /* @__PURE__ */ jsx(SegmentedControl, { value, onValueChange: setValue, disabled, "aria-labelledby": `${labelId}-${disabled}`, className: "h-9 w-full gap-1 rounded-lg border-0 p-1", children: options.map((option) => /* @__PURE__ */ jsxs(SegmentedControlItem, { value: option.value, "aria-label": content === "icon" ? option.label : void 0, className: "h-7 min-w-0 flex-1 gap-1.5 rounded-md p-1", children: [
127
+ content !== "text" && option.icon,
128
+ content !== "icon" && option.label
129
+ ] }, option.value)) })
130
+ ] }, String(disabled))) });
131
+ }
53
132
  const tabsEntry = {
54
133
  id: "tabs",
55
134
  title: "Tabs",
@@ -69,16 +148,7 @@ const tabsEntry = {
69
148
  title: "underline",
70
149
  // Underline is the DS canon for page-level tab strips — flat rail
71
150
  // with an accent underline, per-tab `leading` icon and `count` badge.
72
- render: () => /* @__PURE__ */ jsxs(Tabs, { defaultValue: "orders", variant: "underline", className: "w-full", children: [
73
- /* @__PURE__ */ jsxs(TabsList, { "aria-label": "Customer sections", children: [
74
- /* @__PURE__ */ jsx(TabsTrigger, { value: "overview", leading: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }), children: "Overview" }),
75
- /* @__PURE__ */ jsx(TabsTrigger, { value: "orders", leading: /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4" }), count: 12, children: "Orders" }),
76
- /* @__PURE__ */ jsx(TabsTrigger, { value: "settings", leading: /* @__PURE__ */ jsx(Settings, { className: "size-4" }), children: "Settings" })
77
- ] }),
78
- /* @__PURE__ */ jsx(TabsContent, { value: "overview", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Customer overview panel." }) }),
79
- /* @__PURE__ */ jsx(TabsContent, { value: "orders", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "12 orders in the last 30 days." }) }),
80
- /* @__PURE__ */ jsx(TabsContent, { value: "settings", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Notification and access settings." }) })
81
- ] }),
151
+ render: () => /* @__PURE__ */ jsx(TabsNavigationUnderlineSample, {}),
82
152
  code: `import { LayoutGrid, Settings, ShoppingCart } from 'lucide-react'
83
153
  import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primitives/tabs'
84
154
 
@@ -96,16 +166,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primi
96
166
  {
97
167
  id: "pill",
98
168
  title: "pill (default)",
99
- render: () => /* @__PURE__ */ jsxs(Tabs, { defaultValue: "preview", children: [
100
- /* @__PURE__ */ jsxs(TabsList, { "aria-label": "Editor view", children: [
101
- /* @__PURE__ */ jsx(TabsTrigger, { value: "preview", children: "Preview" }),
102
- /* @__PURE__ */ jsx(TabsTrigger, { value: "code", children: "Code" }),
103
- /* @__PURE__ */ jsx(TabsTrigger, { value: "logs", children: "Logs" })
104
- ] }),
105
- /* @__PURE__ */ jsx(TabsContent, { value: "preview", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Rendered preview." }) }),
106
- /* @__PURE__ */ jsx(TabsContent, { value: "code", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Source code panel." }) }),
107
- /* @__PURE__ */ jsx(TabsContent, { value: "logs", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Runtime logs panel." }) })
108
- ] }),
169
+ render: () => /* @__PURE__ */ jsx(TabsNavigationPillSample, {}),
109
170
  code: `import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primitives/tabs'
110
171
 
111
172
  <Tabs defaultValue="preview">
@@ -122,16 +183,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primi
122
183
  {
123
184
  id: "pill-vertical",
124
185
  title: "pill, vertical",
125
- render: () => /* @__PURE__ */ jsxs(Tabs, { defaultValue: "profile", orientation: "vertical", className: "w-full", children: [
126
- /* @__PURE__ */ jsxs(TabsList, { "aria-label": "Account settings", children: [
127
- /* @__PURE__ */ jsx(TabsTrigger, { value: "profile", children: "Profile" }),
128
- /* @__PURE__ */ jsx(TabsTrigger, { value: "billing", children: "Billing" }),
129
- /* @__PURE__ */ jsx(TabsTrigger, { value: "security", children: "Security" })
130
- ] }),
131
- /* @__PURE__ */ jsx(TabsContent, { value: "profile", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Profile settings panel." }) }),
132
- /* @__PURE__ */ jsx(TabsContent, { value: "billing", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Billing settings panel." }) }),
133
- /* @__PURE__ */ jsx(TabsContent, { value: "security", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Security settings panel." }) })
134
- ] }),
186
+ render: () => /* @__PURE__ */ jsx(TabsNavigationPillVerticalSample, {}),
135
187
  code: `import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primitives/tabs'
136
188
 
137
189
  <Tabs defaultValue="profile" orientation="vertical">
@@ -144,11 +196,123 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@open-mercato/ui/primi
144
196
  <TabsContent value="billing">\u2026</TabsContent>
145
197
  <TabsContent value="security">\u2026</TabsContent>
146
198
  </Tabs>`
199
+ },
200
+ {
201
+ id: "underline-quantities",
202
+ title: "underline \xB7 all source counts",
203
+ render: () => /* @__PURE__ */ jsx(TabsQuantityDemo, { variant: "underline", orientation: "horizontal" }),
204
+ code: `import * as React from 'react'
205
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
206
+ import { LayoutGrid, Settings } from 'lucide-react'
207
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '@open-mercato/ui/primitives/tabs'
208
+
209
+ function TabsQuantityDemo({ variant, orientation }: { variant: 'underline' | 'card' | 'list'; orientation: 'horizontal' | 'vertical' }) {
210
+ const t = useT()
211
+ const counts = orientation === 'vertical' ? [2, 3, 4, 5, 6, 7, 8] : [2, 3, 4, 5, 6]
212
+ return <div className={orientation === 'vertical' ? 'grid w-full gap-6 xl:grid-cols-2' : 'flex w-full flex-col gap-6'}>
213
+ {counts.map(count => <Tabs key={count} defaultValue="1" variant={variant} orientation={orientation} className="min-w-0">
214
+ <TabsList aria-label={t('design_system.gallery.examples.navigation2.sections', { count })} className={orientation === 'vertical' ? 'w-64 shrink-0' : 'flex w-full overflow-x-auto'}>
215
+ {orientation === 'vertical' && <span aria-hidden="true" className="px-2 py-1 text-xs font-medium uppercase text-muted-foreground">{t('design_system.gallery.examples.navigation2.selectMenu')}</span>}
216
+ {Array.from({ length: count }, (_, index) => <TabsTrigger key={index} value={String(index + 1)} leading={<LayoutGrid className="size-5" />} count={index === 1 ? 12 : undefined}>
217
+ {t('design_system.gallery.examples.navigation2.section', { number: index + 1 })}
218
+ </TabsTrigger>)}
219
+ </TabsList>
220
+ {Array.from({ length: count }, (_, index) => <TabsContent key={index} value={String(index + 1)} className="text-sm text-muted-foreground">
221
+ {t('design_system.gallery.examples.navigation2.panel', { number: index + 1 })}
222
+ </TabsContent>)}
223
+ </Tabs>)}
224
+ </div>
225
+ }
226
+
227
+ <TabsQuantityDemo variant="underline" orientation="horizontal" />`
228
+ },
229
+ {
230
+ id: "card-quantities",
231
+ title: "card \xB7 all source counts",
232
+ render: () => /* @__PURE__ */ jsx(TabsQuantityDemo, { variant: "card", orientation: "vertical" }),
233
+ code: `import * as React from 'react'
234
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
235
+ import { LayoutGrid, Settings } from 'lucide-react'
236
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '@open-mercato/ui/primitives/tabs'
237
+
238
+ function TabsQuantityDemo({ variant, orientation }: { variant: 'underline' | 'card' | 'list'; orientation: 'horizontal' | 'vertical' }) {
239
+ const t = useT()
240
+ const counts = orientation === 'vertical' ? [2, 3, 4, 5, 6, 7, 8] : [2, 3, 4, 5, 6]
241
+ return <div className={orientation === 'vertical' ? 'grid w-full gap-6 xl:grid-cols-2' : 'flex w-full flex-col gap-6'}>
242
+ {counts.map(count => <Tabs key={count} defaultValue="1" variant={variant} orientation={orientation} className="min-w-0">
243
+ <TabsList aria-label={t('design_system.gallery.examples.navigation2.sections', { count })} className={orientation === 'vertical' ? 'w-64 shrink-0' : 'flex w-full overflow-x-auto'}>
244
+ {orientation === 'vertical' && <span aria-hidden="true" className="px-2 py-1 text-xs font-medium uppercase text-muted-foreground">{t('design_system.gallery.examples.navigation2.selectMenu')}</span>}
245
+ {Array.from({ length: count }, (_, index) => <TabsTrigger key={index} value={String(index + 1)} leading={<LayoutGrid className="size-5" />} count={index === 1 ? 12 : undefined}>
246
+ {t('design_system.gallery.examples.navigation2.section', { number: index + 1 })}
247
+ </TabsTrigger>)}
248
+ </TabsList>
249
+ {Array.from({ length: count }, (_, index) => <TabsContent key={index} value={String(index + 1)} className="text-sm text-muted-foreground">
250
+ {t('design_system.gallery.examples.navigation2.panel', { number: index + 1 })}
251
+ </TabsContent>)}
252
+ </Tabs>)}
253
+ </div>
254
+ }
255
+
256
+ <TabsQuantityDemo variant="card" orientation="vertical" />`
257
+ },
258
+ {
259
+ id: "list-quantities",
260
+ title: "list \xB7 all source counts",
261
+ render: () => /* @__PURE__ */ jsx(TabsQuantityDemo, { variant: "list", orientation: "vertical" }),
262
+ code: `import * as React from 'react'
263
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
264
+ import { LayoutGrid, Settings } from 'lucide-react'
265
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '@open-mercato/ui/primitives/tabs'
266
+
267
+ function TabsQuantityDemo({ variant, orientation }: { variant: 'underline' | 'card' | 'list'; orientation: 'horizontal' | 'vertical' }) {
268
+ const t = useT()
269
+ const counts = orientation === 'vertical' ? [2, 3, 4, 5, 6, 7, 8] : [2, 3, 4, 5, 6]
270
+ return <div className={orientation === 'vertical' ? 'grid w-full gap-6 xl:grid-cols-2' : 'flex w-full flex-col gap-6'}>
271
+ {counts.map(count => <Tabs key={count} defaultValue="1" variant={variant} orientation={orientation} className="min-w-0">
272
+ <TabsList aria-label={t('design_system.gallery.examples.navigation2.sections', { count })} className={orientation === 'vertical' ? 'w-64 shrink-0' : 'flex w-full overflow-x-auto'}>
273
+ {orientation === 'vertical' && <span aria-hidden="true" className="px-2 py-1 text-xs font-medium uppercase text-muted-foreground">{t('design_system.gallery.examples.navigation2.selectMenu')}</span>}
274
+ {Array.from({ length: count }, (_, index) => <TabsTrigger key={index} value={String(index + 1)} leading={<LayoutGrid className="size-5" />} count={index === 1 ? 12 : undefined}>
275
+ {t('design_system.gallery.examples.navigation2.section', { number: index + 1 })}
276
+ </TabsTrigger>)}
277
+ </TabsList>
278
+ {Array.from({ length: count }, (_, index) => <TabsContent key={index} value={String(index + 1)} className="text-sm text-muted-foreground">
279
+ {t('design_system.gallery.examples.navigation2.panel', { number: index + 1 })}
280
+ </TabsContent>)}
281
+ </Tabs>)}
282
+ </div>
283
+ }
284
+
285
+ <TabsQuantityDemo variant="list" orientation="vertical" />`
286
+ },
287
+ {
288
+ id: "keyboard-states",
289
+ title: "Keyboard and disabled tabs",
290
+ render: () => /* @__PURE__ */ jsx(TabsKeyboardDemo, {}),
291
+ code: `import * as React from 'react'
292
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
293
+ import { LayoutGrid, Settings } from 'lucide-react'
294
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from '@open-mercato/ui/primitives/tabs'
295
+
296
+ function TabsKeyboardDemo() {
297
+ const t = useT()
298
+ return <Tabs defaultValue="overview" variant="underline" className="w-full">
299
+ <TabsList aria-label={t('design_system.gallery.examples.navigation2.keyboard')}>
300
+ <TabsTrigger value="overview" leading={<LayoutGrid className="size-5" />}>{t('design_system.gallery.examples.navigation2.overview')}</TabsTrigger>
301
+ <TabsTrigger value="locked" disabled count={4}>{t('design_system.gallery.examples.navigation2.locked')}</TabsTrigger>
302
+ <TabsTrigger value="settings" leading={<Settings className="size-5" />}>{t('design_system.gallery.examples.navigation2.settings')}</TabsTrigger>
303
+ </TabsList>
304
+ <TabsContent value="overview">{t('design_system.gallery.examples.navigation2.keyboardHint')}</TabsContent>
305
+ <TabsContent value="settings">{t('design_system.gallery.examples.navigation2.settingsPanel')}</TabsContent>
306
+ </Tabs>
307
+ }
308
+
309
+ <TabsKeyboardDemo />`
147
310
  }
148
311
  ]
149
312
  };
150
313
  const breadcrumbEntry = {
151
314
  id: "breadcrumb",
315
+ figmaNodeId: "447:8832",
152
316
  title: "Breadcrumb",
153
317
  importPath: "@open-mercato/ui/primitives/breadcrumb",
154
318
  docsAnchor: "#breadcrumb",
@@ -156,13 +320,7 @@ const breadcrumbEntry = {
156
320
  {
157
321
  id: "slash",
158
322
  title: "slash (default)",
159
- render: () => /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
160
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "Dashboard" }) }),
161
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
162
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "Products" }) }),
163
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
164
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: "Winter catalog" }) })
165
- ] }) }),
323
+ render: () => /* @__PURE__ */ jsx(BreadcrumbNavigationSlashSample, {}),
166
324
  code: `import {
167
325
  Breadcrumb,
168
326
  BreadcrumbItem,
@@ -191,13 +349,7 @@ const breadcrumbEntry = {
191
349
  {
192
350
  id: "arrow",
193
351
  title: "arrow divider",
194
- render: () => /* @__PURE__ */ jsx(Breadcrumb, { divider: "arrow", children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
195
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "Orders" }) }),
196
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
197
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "#20418" }) }),
198
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
199
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: "Shipment" }) })
200
- ] }) }),
352
+ render: () => /* @__PURE__ */ jsx(BreadcrumbNavigationArrowSample, {}),
201
353
  code: `import {
202
354
  Breadcrumb,
203
355
  BreadcrumbItem,
@@ -226,15 +378,7 @@ const breadcrumbEntry = {
226
378
  {
227
379
  id: "ellipsis",
228
380
  title: "collapsed (ellipsis)",
229
- render: () => /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
230
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "Dashboard" }) }),
231
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
232
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbEllipsis, {}) }),
233
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
234
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "Attributes" }) }),
235
- /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
236
- /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: "Color" }) })
237
- ] }) }),
381
+ render: () => /* @__PURE__ */ jsx(BreadcrumbNavigationEllipsisSample, {}),
238
382
  code: `import {
239
383
  Breadcrumb,
240
384
  BreadcrumbEllipsis,
@@ -264,6 +408,39 @@ const breadcrumbEntry = {
264
408
  </BreadcrumbItem>
265
409
  </BreadcrumbList>
266
410
  </Breadcrumb>`
411
+ },
412
+ {
413
+ id: "dividers-quantities",
414
+ title: "Arrow / Slash / Dot \xB73,4,5items",
415
+ render: () => /* @__PURE__ */ jsx(BreadcrumbQuantityDemo, {}),
416
+ code: `import * as React from 'react'
417
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
418
+ import { LayoutGrid } from 'lucide-react'
419
+ import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbSeparator, BreadcrumbLink, BreadcrumbPage } from '@open-mercato/ui/primitives/breadcrumb'
420
+
421
+ function BreadcrumbQuantityDemo() {
422
+ const t = useT()
423
+ const targetId = React.useId()
424
+ return <div className="flex w-full flex-col gap-4">
425
+ {(['arrow', 'slash', 'dot'] as const).map(divider => <div key={divider} className="flex flex-col gap-4">
426
+ {[3, 4, 5].map(count => <Breadcrumb key={count} divider={divider} aria-label={t('design_system.gallery.examples.navigation2.path', { count })}>
427
+ <BreadcrumbList className="flex-wrap">
428
+ {Array.from({ length: count }, (_, index) => <React.Fragment key={index}>
429
+ {index > 0 && <BreadcrumbSeparator className="size-5 justify-center">{divider === 'dot' ? '\u2022' : undefined}</BreadcrumbSeparator>}
430
+ <BreadcrumbItem>
431
+ {index === count - 1
432
+ ? <BreadcrumbPage>{t('design_system.gallery.examples.navigation2.section', { number: index + 1 })}</BreadcrumbPage>
433
+ : <BreadcrumbLink href={\`#\${targetId}\`}><LayoutGrid className="size-5" aria-hidden="true" />{t('design_system.gallery.examples.navigation2.section', { number: index + 1 })}</BreadcrumbLink>}
434
+ </BreadcrumbItem>
435
+ </React.Fragment>)}
436
+ </BreadcrumbList>
437
+ </Breadcrumb>)}
438
+ </div>)}
439
+ <p id={targetId} tabIndex={-1} className="text-sm text-muted-foreground">{t('design_system.gallery.examples.navigation2.localDestination')}</p>
440
+ </div>
441
+ }
442
+
443
+ <BreadcrumbQuantityDemo />`
267
444
  }
268
445
  ]
269
446
  };
@@ -272,6 +449,7 @@ const paginationEntry = {
272
449
  title: "Pagination",
273
450
  importPath: "@open-mercato/ui/primitives/pagination",
274
451
  docsAnchor: "#pagination",
452
+ figmaNodeId: "513:3892",
275
453
  variants: [
276
454
  {
277
455
  id: "basic",
@@ -307,12 +485,90 @@ const [page, setPage] = React.useState(1)
307
485
  onPageChange={setPage}
308
486
  showFirstLast={false}
309
487
  showPageSize={false}
488
+ />`
489
+ },
490
+ {
491
+ id: "source-basic",
492
+ title: "Basic cells",
493
+ render: () => /* @__PURE__ */ jsx(PaginationBasicDemo, { appearance: "basic" }),
494
+ code: `import * as React from 'react'
495
+ import { Pagination } from '@open-mercato/ui/primitives/pagination'
496
+
497
+ const [page, setPage] = React.useState(2)
498
+ const [pageSize, setPageSize] = React.useState(25)
499
+
500
+ <Pagination
501
+ appearance="basic"
502
+ page={page}
503
+ pageSize={pageSize}
504
+ total={400}
505
+ onPageChange={setPage}
506
+ onPageSizeChange={setPageSize}
507
+ />`
508
+ },
509
+ {
510
+ id: "circle",
511
+ title: "Full radius",
512
+ render: () => /* @__PURE__ */ jsx(PaginationBasicDemo, { appearance: "circle" }),
513
+ code: `import * as React from 'react'
514
+ import { Pagination } from '@open-mercato/ui/primitives/pagination'
515
+
516
+ const [page, setPage] = React.useState(2)
517
+ const [pageSize, setPageSize] = React.useState(25)
518
+
519
+ <Pagination
520
+ appearance="circle"
521
+ page={page}
522
+ pageSize={pageSize}
523
+ total={400}
524
+ onPageChange={setPage}
525
+ onPageSizeChange={setPageSize}
526
+ />`
527
+ },
528
+ {
529
+ id: "group",
530
+ title: "Connected group",
531
+ render: () => /* @__PURE__ */ jsx(PaginationBasicDemo, { appearance: "group" }),
532
+ code: `import * as React from 'react'
533
+ import { Pagination } from '@open-mercato/ui/primitives/pagination'
534
+
535
+ const [page, setPage] = React.useState(2)
536
+ const [pageSize, setPageSize] = React.useState(25)
537
+
538
+ <Pagination
539
+ appearance="group"
540
+ page={page}
541
+ pageSize={pageSize}
542
+ total={400}
543
+ onPageChange={setPage}
544
+ onPageSizeChange={setPageSize}
545
+ />`
546
+ },
547
+ {
548
+ id: "disabled",
549
+ title: "Disabled states",
550
+ render: () => /* @__PURE__ */ jsx(PaginationBasicDemo, { appearance: "circle", disabled: true }),
551
+ code: `import * as React from 'react'
552
+ import { Pagination } from '@open-mercato/ui/primitives/pagination'
553
+
554
+ const [page, setPage] = React.useState(2)
555
+ const [pageSize, setPageSize] = React.useState(25)
556
+
557
+ <Pagination
558
+ appearance="circle"
559
+ page={page}
560
+ pageSize={pageSize}
561
+ total={400}
562
+ onPageChange={setPage}
563
+ onPageSizeChange={setPageSize}
564
+ disabled
310
565
  />`
311
566
  }
312
567
  ]
313
568
  };
314
569
  const segmentedControlEntry = {
315
570
  id: "segmented-control",
571
+ figmaNodeId: "2604:114",
316
572
  title: "SegmentedControl",
317
573
  importPath: "@open-mercato/ui/primitives/segmented-control",
318
574
  docsAnchor: "#segmentedcontrol",
@@ -320,11 +576,7 @@ const segmentedControlEntry = {
320
576
  {
321
577
  id: "default",
322
578
  title: "default",
323
- render: () => /* @__PURE__ */ jsxs(SegmentedControl, { defaultValue: "all", "aria-label": "View filter", children: [
324
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "all", children: "All" }),
325
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "active", children: "Active" }),
326
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "archived", children: "Archived" })
327
- ] }),
579
+ render: () => /* @__PURE__ */ jsx(SegmentedControlNavigationDefaultSample, {}),
328
580
  code: `import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
329
581
 
330
582
  <SegmentedControl defaultValue="all" aria-label="View filter">
@@ -336,12 +588,7 @@ const segmentedControlEntry = {
336
588
  {
337
589
  id: "small",
338
590
  title: "Small",
339
- render: () => /* @__PURE__ */ jsxs(SegmentedControl, { size: "sm", defaultValue: "30d", "aria-label": "Chart period", children: [
340
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "7d", children: "7d" }),
341
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "30d", children: "30d" }),
342
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "90d", children: "90d" }),
343
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "1y", children: "1y" })
344
- ] }),
591
+ render: () => /* @__PURE__ */ jsx(SegmentedControlNavigationSmallSample, {}),
345
592
  code: `import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
346
593
 
347
594
  <SegmentedControl size="sm" defaultValue="30d" aria-label="Chart period">
@@ -354,21 +601,121 @@ const segmentedControlEntry = {
354
601
  {
355
602
  id: "disabled",
356
603
  title: "Disabled",
357
- render: () => /* @__PURE__ */ jsxs(SegmentedControl, { defaultValue: "list", disabled: true, "aria-label": "Layout", children: [
358
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "list", children: "List" }),
359
- /* @__PURE__ */ jsx(SegmentedControlItem, { value: "grid", children: "Grid" })
360
- ] }),
604
+ render: () => /* @__PURE__ */ jsx(SegmentedControlNavigationDisabledSample, {}),
361
605
  code: `import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
362
606
 
363
607
  <SegmentedControl defaultValue="list" disabled aria-label="Layout">
364
608
  <SegmentedControlItem value="list">List</SegmentedControlItem>
365
609
  <SegmentedControlItem value="grid">Grid</SegmentedControlItem>
366
610
  </SegmentedControl>`
611
+ },
612
+ {
613
+ id: "source-text",
614
+ title: "Label shell \xB7 text",
615
+ render: () => /* @__PURE__ */ jsx(SegmentedSourceDemo, { content: "text" }),
616
+ code: `import * as React from 'react'
617
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
618
+ import { LayoutGrid, Settings, ShoppingCart } from 'lucide-react'
619
+ import { Label } from '@open-mercato/ui/primitives/label'
620
+ import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
621
+
622
+ function SegmentedSourceDemo({ content }: { content: 'text' | 'leading' | 'icon' }) {
623
+ const t = useT()
624
+ const labelId = React.useId()
625
+ const [value, setValue] = React.useState('overview')
626
+ const options = [
627
+ { value: 'overview', label: t('design_system.gallery.examples.navigation2.overview'), icon: <LayoutGrid className="size-5" aria-hidden="true" /> },
628
+ { value: 'settings', label: t('design_system.gallery.examples.navigation2.settings'), icon: <Settings className="size-5" aria-hidden="true" /> },
629
+ { value: 'orders', label: t('design_system.gallery.examples.navigation2.orders'), icon: <ShoppingCart className="size-5" aria-hidden="true" /> },
630
+ ]
631
+ return <div className="flex w-full max-w-sm flex-col gap-6">
632
+ {[false, true].map(disabled => <div key={String(disabled)} className="flex flex-col gap-1.5">
633
+ <Label id={\`\${labelId}-\${disabled}\`} className="leading-5">{disabled ? t('design_system.gallery.examples.navigation2.locked') : t('design_system.gallery.examples.navigation2.selectMenu')}</Label>
634
+ <SegmentedControl value={value} onValueChange={setValue} disabled={disabled} aria-labelledby={\`\${labelId}-\${disabled}\`} className="h-9 w-full gap-1 rounded-lg border-0 p-1">
635
+ {options.map(option => <SegmentedControlItem key={option.value} value={option.value} aria-label={content === 'icon' ? option.label : undefined} className="h-7 min-w-0 flex-1 gap-1.5 rounded-md p-1">
636
+ {content !== 'text' && option.icon}
637
+ {content !== 'icon' && option.label}
638
+ </SegmentedControlItem>)}
639
+ </SegmentedControl>
640
+ </div>)}
641
+ </div>
642
+ }
643
+
644
+ <SegmentedSourceDemo content="text" />`
645
+ },
646
+ {
647
+ id: "source-leading",
648
+ title: "Label shell \xB7 leading",
649
+ render: () => /* @__PURE__ */ jsx(SegmentedSourceDemo, { content: "leading" }),
650
+ code: `import * as React from 'react'
651
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
652
+ import { LayoutGrid, Settings, ShoppingCart } from 'lucide-react'
653
+ import { Label } from '@open-mercato/ui/primitives/label'
654
+ import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
655
+
656
+ function SegmentedSourceDemo({ content }: { content: 'text' | 'leading' | 'icon' }) {
657
+ const t = useT()
658
+ const labelId = React.useId()
659
+ const [value, setValue] = React.useState('overview')
660
+ const options = [
661
+ { value: 'overview', label: t('design_system.gallery.examples.navigation2.overview'), icon: <LayoutGrid className="size-5" aria-hidden="true" /> },
662
+ { value: 'settings', label: t('design_system.gallery.examples.navigation2.settings'), icon: <Settings className="size-5" aria-hidden="true" /> },
663
+ { value: 'orders', label: t('design_system.gallery.examples.navigation2.orders'), icon: <ShoppingCart className="size-5" aria-hidden="true" /> },
664
+ ]
665
+ return <div className="flex w-full max-w-sm flex-col gap-6">
666
+ {[false, true].map(disabled => <div key={String(disabled)} className="flex flex-col gap-1.5">
667
+ <Label id={\`\${labelId}-\${disabled}\`} className="leading-5">{disabled ? t('design_system.gallery.examples.navigation2.locked') : t('design_system.gallery.examples.navigation2.selectMenu')}</Label>
668
+ <SegmentedControl value={value} onValueChange={setValue} disabled={disabled} aria-labelledby={\`\${labelId}-\${disabled}\`} className="h-9 w-full gap-1 rounded-lg border-0 p-1">
669
+ {options.map(option => <SegmentedControlItem key={option.value} value={option.value} aria-label={content === 'icon' ? option.label : undefined} className="h-7 min-w-0 flex-1 gap-1.5 rounded-md p-1">
670
+ {content !== 'text' && option.icon}
671
+ {content !== 'icon' && option.label}
672
+ </SegmentedControlItem>)}
673
+ </SegmentedControl>
674
+ </div>)}
675
+ </div>
676
+ }
677
+
678
+ <SegmentedSourceDemo content="leading" />`
679
+ },
680
+ {
681
+ id: "source-icon",
682
+ title: "Label shell \xB7 icon",
683
+ render: () => /* @__PURE__ */ jsx(SegmentedSourceDemo, { content: "icon" }),
684
+ code: `import * as React from 'react'
685
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
686
+ import { LayoutGrid, Settings, ShoppingCart } from 'lucide-react'
687
+ import { Label } from '@open-mercato/ui/primitives/label'
688
+ import { SegmentedControl, SegmentedControlItem } from '@open-mercato/ui/primitives/segmented-control'
689
+
690
+ function SegmentedSourceDemo({ content }: { content: 'text' | 'leading' | 'icon' }) {
691
+ const t = useT()
692
+ const labelId = React.useId()
693
+ const [value, setValue] = React.useState('overview')
694
+ const options = [
695
+ { value: 'overview', label: t('design_system.gallery.examples.navigation2.overview'), icon: <LayoutGrid className="size-5" aria-hidden="true" /> },
696
+ { value: 'settings', label: t('design_system.gallery.examples.navigation2.settings'), icon: <Settings className="size-5" aria-hidden="true" /> },
697
+ { value: 'orders', label: t('design_system.gallery.examples.navigation2.orders'), icon: <ShoppingCart className="size-5" aria-hidden="true" /> },
698
+ ]
699
+ return <div className="flex w-full max-w-sm flex-col gap-6">
700
+ {[false, true].map(disabled => <div key={String(disabled)} className="flex flex-col gap-1.5">
701
+ <Label id={\`\${labelId}-\${disabled}\`} className="leading-5">{disabled ? t('design_system.gallery.examples.navigation2.locked') : t('design_system.gallery.examples.navigation2.selectMenu')}</Label>
702
+ <SegmentedControl value={value} onValueChange={setValue} disabled={disabled} aria-labelledby={\`\${labelId}-\${disabled}\`} className="h-9 w-full gap-1 rounded-lg border-0 p-1">
703
+ {options.map(option => <SegmentedControlItem key={option.value} value={option.value} aria-label={content === 'icon' ? option.label : undefined} className="h-7 min-w-0 flex-1 gap-1.5 rounded-md p-1">
704
+ {content !== 'text' && option.icon}
705
+ {content !== 'icon' && option.label}
706
+ </SegmentedControlItem>)}
707
+ </SegmentedControl>
708
+ </div>)}
709
+ </div>
710
+ }
711
+
712
+ <SegmentedSourceDemo content="icon" />`
367
713
  }
368
714
  ]
369
715
  };
370
716
  const accordionEntry = {
371
717
  id: "accordion",
718
+ figmaNodeId: "210:4022",
372
719
  title: "Accordion",
373
720
  importPath: "@open-mercato/ui/primitives/accordion",
374
721
  docsAnchor: "#accordion",
@@ -376,20 +723,7 @@ const accordionEntry = {
376
723
  {
377
724
  id: "card",
378
725
  title: "card (default)",
379
- render: () => /* @__PURE__ */ jsxs(Accordion, { type: "single", collapsible: true, defaultValue: "shipping", className: "w-full space-y-2", children: [
380
- /* @__PURE__ */ jsxs(AccordionItem, { value: "shipping", children: [
381
- /* @__PURE__ */ jsx(AccordionTrigger, { children: "Shipping and delivery" }),
382
- /* @__PURE__ */ jsx(AccordionContent, { children: "Orders placed before 2 PM ship the same business day from the nearest warehouse." })
383
- ] }),
384
- /* @__PURE__ */ jsxs(AccordionItem, { value: "returns", children: [
385
- /* @__PURE__ */ jsx(AccordionTrigger, { children: "Returns" }),
386
- /* @__PURE__ */ jsx(AccordionContent, { children: "Items can be returned within 30 days of delivery in their original packaging." })
387
- ] }),
388
- /* @__PURE__ */ jsxs(AccordionItem, { value: "payments", children: [
389
- /* @__PURE__ */ jsx(AccordionTrigger, { children: "Payment methods" }),
390
- /* @__PURE__ */ jsx(AccordionContent, { children: "We accept cards, bank transfer, and deferred payment for verified B2B accounts." })
391
- ] })
392
- ] }),
726
+ render: () => /* @__PURE__ */ jsx(AccordionNavigationCardSample, {}),
393
727
  code: `import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@open-mercato/ui/primitives/accordion'
394
728
 
395
729
  <Accordion type="single" collapsible defaultValue="shipping" className="w-full space-y-2">
@@ -410,16 +744,7 @@ const accordionEntry = {
410
744
  {
411
745
  id: "left-icon",
412
746
  title: "With leftIcon",
413
- render: () => /* @__PURE__ */ jsxs(Accordion, { type: "single", collapsible: true, className: "w-full space-y-2", children: [
414
- /* @__PURE__ */ jsxs(AccordionItem, { value: "shipping", children: [
415
- /* @__PURE__ */ jsx(AccordionTrigger, { leftIcon: /* @__PURE__ */ jsx(Truck, {}), children: "How fast is shipping?" }),
416
- /* @__PURE__ */ jsx(AccordionContent, { children: "Same-day dispatch on weekdays; delivery typically takes 1\u20133 business days." })
417
- ] }),
418
- /* @__PURE__ */ jsxs(AccordionItem, { value: "billing", children: [
419
- /* @__PURE__ */ jsx(AccordionTrigger, { leftIcon: /* @__PURE__ */ jsx(CreditCard, {}), children: "When am I charged?" }),
420
- /* @__PURE__ */ jsx(AccordionContent, { children: "Your card is charged when the order ships, never at checkout." })
421
- ] })
422
- ] }),
747
+ render: () => /* @__PURE__ */ jsx(AccordionNavigationLeftIconSample, {}),
423
748
  code: `import { CreditCard, Truck } from 'lucide-react'
424
749
  import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@open-mercato/ui/primitives/accordion'
425
750
 
@@ -437,16 +762,7 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@o
437
762
  {
438
763
  id: "chevron",
439
764
  title: "Chevron indicator",
440
- render: () => /* @__PURE__ */ jsxs(Accordion, { type: "multiple", className: "w-full space-y-2", children: [
441
- /* @__PURE__ */ jsxs(AccordionItem, { value: "general", children: [
442
- /* @__PURE__ */ jsx(AccordionTrigger, { triggerIcon: "chevron", children: "General" }),
443
- /* @__PURE__ */ jsx(AccordionContent, { children: "Store name, contact details, and default locale for the storefront." })
444
- ] }),
445
- /* @__PURE__ */ jsxs(AccordionItem, { value: "advanced", children: [
446
- /* @__PURE__ */ jsx(AccordionTrigger, { triggerIcon: "chevron", children: "Advanced" }),
447
- /* @__PURE__ */ jsx(AccordionContent, { children: "Webhooks, API keys, and other developer-facing configuration." })
448
- ] })
449
- ] }),
765
+ render: () => /* @__PURE__ */ jsx(AccordionNavigationChevronSample, {}),
450
766
  code: `import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@open-mercato/ui/primitives/accordion'
451
767
 
452
768
  <Accordion type="multiple" className="w-full space-y-2">
@@ -459,16 +775,273 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@o
459
775
  <AccordionContent>Webhooks, API keys, and developer configuration.</AccordionContent>
460
776
  </AccordionItem>
461
777
  </Accordion>`
778
+ },
779
+ {
780
+ id: "indicator-start",
781
+ title: "Indicator at start \xB7 closed/open/disabled",
782
+ render: () => /* @__PURE__ */ jsx(AccordionStartDemo, {}),
783
+ code: `import * as React from 'react'
784
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
785
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@open-mercato/ui/primitives/accordion'
786
+
787
+ function AccordionStartDemo() {
788
+ const t = useT()
789
+ return <Accordion type="single" collapsible defaultValue="details" className="w-full max-w-md space-y-2">
790
+ <AccordionItem value="overview">
791
+ <AccordionTrigger iconPosition="start">{t('design_system.gallery.examples.navigation2.overview')}</AccordionTrigger>
792
+ <AccordionContent>{t('design_system.gallery.examples.navigation2.accordionBody')}</AccordionContent>
793
+ </AccordionItem>
794
+ <AccordionItem value="details">
795
+ <AccordionTrigger iconPosition="start">{t('design_system.gallery.examples.navigation2.settings')}</AccordionTrigger>
796
+ <AccordionContent>{t('design_system.gallery.examples.navigation2.accordionBody')}</AccordionContent>
797
+ </AccordionItem>
798
+ <AccordionItem value="locked" disabled>
799
+ <AccordionTrigger iconPosition="start">{t('design_system.gallery.examples.navigation2.locked')}</AccordionTrigger>
800
+ <AccordionContent>{t('design_system.gallery.examples.navigation2.accordionBody')}</AccordionContent>
801
+ </AccordionItem>
802
+ </Accordion>
803
+ }
804
+
805
+ <AccordionStartDemo />`
462
806
  }
463
807
  ]
464
808
  };
809
+ const sidebarEntry = {
810
+ id: "sidebar",
811
+ title: "Sidebar and Topbar",
812
+ figmaNodeId: "3802:11759",
813
+ importPath: "@open-mercato/ui/primitives/sidebar",
814
+ usage: { do: ["Presentational composition with local state; the application AppShell still owns tenant APIs and injection points.", "Hover, current navigation, workspace switching, filtering and feature-card actions use real controls.", "Feature-card primary and neutral surfaces use the existing accessible application palettes; they do not claim exact Figma color parity."] },
815
+ variants: [
816
+ { id: "items", title: "Sidebar items / expanded and collapsed", render: () => /* @__PURE__ */ jsx(SidebarItemsExample, {}), code: shellExampleCode("<SidebarItemsExample />") },
817
+ { id: "identity-cards", title: "Header and profile cards / expanded and collapsed", render: () => /* @__PURE__ */ jsx(SidebarIdentityExample, {}), code: shellExampleCode("<SidebarIdentityExample />") },
818
+ { id: "feature-meeting", title: "Feature card / meeting / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "meeting" }), code: shellExampleCode('<SidebarFeatureExample type="meeting" />') },
819
+ { id: "feature-progress", title: "Feature card / progress / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "progress" }), code: shellExampleCode('<SidebarFeatureExample type="progress" />') },
820
+ { id: "feature-link", title: "Feature card / link / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "link" }), code: shellExampleCode('<SidebarFeatureExample type="link" />') },
821
+ { id: "feature-gift", title: "Feature card / gift / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "gift" }), code: shellExampleCode('<SidebarFeatureExample type="gift" />') },
822
+ { id: "feature-storage", title: "Feature card / storage / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "storage" }), code: shellExampleCode('<SidebarFeatureExample type="storage" />') },
823
+ { id: "feature-support", title: "Feature card / support / 4 styles", render: () => /* @__PURE__ */ jsx(SidebarFeatureExample, { type: "support" }), code: shellExampleCode('<SidebarFeatureExample type="support" />') },
824
+ { id: "topbar-hr-default", title: "HR topbar / default", render: () => /* @__PURE__ */ jsx(TopbarExample, { product: "hr" }), code: shellExampleCode('<TopbarExample product="hr" />') },
825
+ { id: "topbar-hr-icons", title: "HR topbar / icons", render: () => /* @__PURE__ */ jsx(TopbarExample, { product: "hr", icons: true }), code: shellExampleCode('<TopbarExample product="hr" icons />') },
826
+ { id: "topbar-finance-default", title: "FINANCE topbar / default", render: () => /* @__PURE__ */ jsx(TopbarExample, { product: "finance" }), code: shellExampleCode('<TopbarExample product="finance" />') },
827
+ { id: "topbar-finance-icons", title: "FINANCE topbar / icons", render: () => /* @__PURE__ */ jsx(TopbarExample, { product: "finance", icons: true }), code: shellExampleCode('<TopbarExample product="finance" icons />') },
828
+ { id: "brand-artwork", title: "Synergy and Apex / 6 original assets", render: () => /* @__PURE__ */ jsx(NavigationBrandsExample, {}), code: shellExampleCode("<NavigationBrandsExample />") }
829
+ ]
830
+ };
831
+ const promptAreaEntry = {
832
+ id: "prompt-area",
833
+ title: "PromptArea",
834
+ figmaNodeId: "191226:4236",
835
+ importPath: "@open-mercato/ui/primitives/prompt-area",
836
+ usage: { do: ["Desktop and mobile compositions expose all 18 source variants through real hover and focus states.", "Enter saves a local draft; Shift+Enter inserts a line break. Attachments stay in this browser and can be removed.", "Model names reproduce source labels. These examples do not call a model or represent a subscription."] },
837
+ variants: [
838
+ { id: "desktop", title: "Desktop / empty / Default, Hover, Active", render: () => /* @__PURE__ */ jsx(AiPromptExample, {}), code: aiProductExampleCode("<AiPromptExample />") },
839
+ { id: "desktop-file", title: "Desktop / file", render: () => /* @__PURE__ */ jsx(AiPromptExample, { attachment: "file" }), code: aiProductExampleCode('<AiPromptExample attachment="file" />') },
840
+ { id: "desktop-image", title: "Desktop / original image", render: () => /* @__PURE__ */ jsx(AiPromptExample, { attachment: "image" }), code: aiProductExampleCode('<AiPromptExample attachment="image" />') },
841
+ { id: "mobile", title: "Mobile / empty / Default, Hover, Active", render: () => /* @__PURE__ */ jsx(AiPromptExample, { compact: true }), code: aiProductExampleCode("<AiPromptExample compact />") },
842
+ { id: "mobile-file", title: "Mobile / file", render: () => /* @__PURE__ */ jsx(AiPromptExample, { compact: true, attachment: "file" }), code: aiProductExampleCode('<AiPromptExample compact attachment="file" />') },
843
+ { id: "mobile-image", title: "Mobile / original image", render: () => /* @__PURE__ */ jsx(AiPromptExample, { compact: true, attachment: "image" }), code: aiProductExampleCode('<AiPromptExample compact attachment="image" />') }
844
+ ]
845
+ };
846
+ const aiProductPatternCode = (expression) => `import { ${expression.match(/<(\w+)/)?.[1] ?? "AiPromptExample"} } from '@open-mercato/core/modules/design_system/gallery/demos/ai-product'
847
+
848
+ ${expression}
849
+ `;
850
+ const aiControlsEntry = {
851
+ id: "ai-controls",
852
+ title: "AI Product / Controls",
853
+ figmaNodeId: "191042:2378",
854
+ importPath: "@open-mercato/core/modules/design_system/gallery/demos/ai-product",
855
+ usage: { do: ["Source-specific compositions reuse existing primitives with additive semantic radius and typography tokens.", "Hover, keyboard focus and selected states are real interactions. Authentication buttons only display local explanatory feedback.", "Original authentication glyphs are preserved as source assets. Application fonts, focus and semantic colors remain explicit adaptations."] },
856
+ variants: [
857
+ { id: "chat-buttons", title: "Chat custom buttons / 2 styles \xD7 3 states", render: () => /* @__PURE__ */ jsx(AiIconButtonExamples, { chat: true }), code: aiProductPatternCode("<AiIconButtonExamples chat />") },
858
+ { id: "icon-buttons", title: "Custom icon buttons / 4 sizes \xD7 2 tones \xD7 3 states", render: () => /* @__PURE__ */ jsx(AiIconButtonExamples, {}), code: aiProductPatternCode("<AiIconButtonExamples />") },
859
+ { id: "search", title: "Search / 2 sizes \xD7 3 states", render: () => /* @__PURE__ */ jsx(AiSearchExamples, {}), code: aiProductPatternCode("<AiSearchExamples />") },
860
+ { id: "new-chat", title: "New chat / Default, Hover", render: () => /* @__PURE__ */ jsx(AiNewChatExample, {}), code: aiProductPatternCode("<AiNewChatExample />") },
861
+ { id: "navigation-items", title: "Navigation items / 12 variants", render: () => /* @__PURE__ */ jsx(AiNavigationExamples, {}), code: aiProductPatternCode("<AiNavigationExamples />") },
862
+ { id: "auth-icons", title: "Authentication / 8 original icons", render: () => /* @__PURE__ */ jsx(AiAuthExamples, {}), code: aiProductPatternCode("<AiAuthExamples />") },
863
+ { id: "social-google", title: "Google button / local feedback", render: () => /* @__PURE__ */ jsx(AiAuthExamples, { kind: "social" }), code: aiProductPatternCode('<AiAuthExamples kind="social" />') },
864
+ { id: "text-input", title: "Text input / 5 source states", render: () => /* @__PURE__ */ jsx(AiAuthExamples, { kind: "text" }), code: aiProductPatternCode('<AiAuthExamples kind="text" />') },
865
+ { id: "digit-input", title: "Digit input / 5 source states", render: () => /* @__PURE__ */ jsx(AiAuthExamples, { kind: "digits" }), code: aiProductPatternCode('<AiAuthExamples kind="digits" />') },
866
+ { id: "settings", title: "Settings navigation, select, counter and model / 15 variants", render: () => /* @__PURE__ */ jsx(AiSettingsExamples, {}), code: aiProductPatternCode("<AiSettingsExamples />") }
867
+ ]
868
+ };
869
+ const aiSidebarEntry = {
870
+ id: "ai-sidebar",
871
+ title: "AI Product / Sidebar",
872
+ figmaNodeId: "191050:3105",
873
+ importPath: "@open-mercato/ui/primitives/sidebar",
874
+ usage: { do: ["All four source sidebar variants render using the presentational Sidebar without application API calls.", "Search filters the local history, navigation updates the selected item, and new chat creates a local draft counter.", "The collapsed logo expands the sidebar; this adds a keyboard-accessible restoration control to the source composition."] },
875
+ variants: [
876
+ { id: "search-01", title: "Search 01 / expanded / 272 \xD7 900", render: () => /* @__PURE__ */ jsx(AiSidebarExample, {}), code: aiProductExampleCode("<AiSidebarExample />") },
877
+ { id: "search-02", title: "Search 02 / expanded", render: () => /* @__PURE__ */ jsx(AiSidebarExample, { search: "02" }), code: aiProductExampleCode('<AiSidebarExample search="02" />') },
878
+ { id: "search-03", title: "Search 03 / expanded", render: () => /* @__PURE__ */ jsx(AiSidebarExample, { search: "03" }), code: aiProductExampleCode('<AiSidebarExample search="03" />') },
879
+ { id: "collapsed", title: "Search 01 / collapsed / 72 \xD7 900", render: () => /* @__PURE__ */ jsx(AiSidebarExample, { initialCollapsed: true }), code: aiProductExampleCode("<AiSidebarExample initialCollapsed />") }
880
+ ]
881
+ };
882
+ const aiMobileNavigationEntry = {
883
+ id: "ai-mobile-navigation",
884
+ title: "AI Product / Mobile Navigation",
885
+ figmaNodeId: "192681:59134",
886
+ importPath: "@open-mercato/core/modules/design_system/gallery/demos/ai-product",
887
+ usage: { do: ["All four 390 \xD7 64 source compositions have working local controls and keyboard-accessible popovers.", "Add project stores the entered name only in component state. Escape closes the popover, Enter or Ctrl/Cmd+Enter confirms."] },
888
+ variants: [
889
+ { id: "default", title: "Default", render: () => /* @__PURE__ */ jsx(AiMobileNavigationExample, {}), code: aiProductPatternCode("<AiMobileNavigationExample />") },
890
+ { id: "in-projects", title: "In Projects", render: () => /* @__PURE__ */ jsx(AiMobileNavigationExample, { kind: "in-projects" }), code: aiProductPatternCode('<AiMobileNavigationExample kind="in-projects" />') },
891
+ { id: "projects", title: "Projects", render: () => /* @__PURE__ */ jsx(AiMobileNavigationExample, { kind: "projects" }), code: aiProductPatternCode('<AiMobileNavigationExample kind="projects" />') },
892
+ { id: "project-details", title: "Project Details", render: () => /* @__PURE__ */ jsx(AiMobileNavigationExample, { kind: "project-details" }), code: aiProductPatternCode('<AiMobileNavigationExample kind="project-details" />') }
893
+ ]
894
+ };
465
895
  const entries = [
896
+ promptAreaEntry,
897
+ aiControlsEntry,
898
+ aiSidebarEntry,
899
+ aiMobileNavigationEntry,
900
+ sidebarEntry,
466
901
  tabsEntry,
467
902
  breadcrumbEntry,
468
903
  paginationEntry,
469
904
  segmentedControlEntry,
470
905
  accordionEntry
471
906
  ];
907
+ function TabsNavigationUnderlineSample() {
908
+ const t = useT();
909
+ return /* @__PURE__ */ jsxs(Tabs, { defaultValue: "orders", variant: "underline", className: "w-full", children: [
910
+ /* @__PURE__ */ jsxs(TabsList, { "aria-label": t("design_system.gallery.sampleCopy.customerSections"), children: [
911
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "overview", leading: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }), children: t("design_system.gallery.examples.navigation2.overview") }),
912
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "orders", leading: /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4" }), count: 12, children: t("design_system.gallery.examples.navigation2.orders") }),
913
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "settings", leading: /* @__PURE__ */ jsx(Settings, { className: "size-4" }), children: t("design_system.gallery.examples.navigation2.settings") })
914
+ ] }),
915
+ /* @__PURE__ */ jsx(TabsContent, { value: "overview", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.customerOverviewPanel") }) }),
916
+ /* @__PURE__ */ jsx(TabsContent, { value: "orders", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.12OrdersInTheLast30Days") }) }),
917
+ /* @__PURE__ */ jsx(TabsContent, { value: "settings", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.notificationAndAccessSettings") }) })
918
+ ] });
919
+ }
920
+ function TabsNavigationPillSample() {
921
+ const t = useT();
922
+ return /* @__PURE__ */ jsxs(Tabs, { defaultValue: "preview", children: [
923
+ /* @__PURE__ */ jsxs(TabsList, { "aria-label": t("design_system.gallery.sampleCopy.editorView"), children: [
924
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "preview", children: t("design_system.gallery.samples.table.preview") }),
925
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "code", children: t("design_system.gallery.samples.richEditor.labels.code") }),
926
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "logs", children: t("design_system.gallery.sampleCopy.logs") })
927
+ ] }),
928
+ /* @__PURE__ */ jsx(TabsContent, { value: "preview", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.renderedPreview") }) }),
929
+ /* @__PURE__ */ jsx(TabsContent, { value: "code", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.sourceCodePanel") }) }),
930
+ /* @__PURE__ */ jsx(TabsContent, { value: "logs", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.runtimeLogsPanel") }) })
931
+ ] });
932
+ }
933
+ function TabsNavigationPillVerticalSample() {
934
+ const t = useT();
935
+ return /* @__PURE__ */ jsxs(Tabs, { defaultValue: "profile", orientation: "vertical", className: "w-full", children: [
936
+ /* @__PURE__ */ jsxs(TabsList, { "aria-label": t("design_system.gallery.samples.crypto.accountSettings"), children: [
937
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "profile", children: t("design_system.gallery.samples.crypto.profile") }),
938
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "billing", children: t("design_system.gallery.samples.marketing.billing") }),
939
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "security", children: t("design_system.gallery.sampleCopy.security") })
940
+ ] }),
941
+ /* @__PURE__ */ jsx(TabsContent, { value: "profile", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.profileSettingsPanel") }) }),
942
+ /* @__PURE__ */ jsx(TabsContent, { value: "billing", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.billingSettingsPanel") }) }),
943
+ /* @__PURE__ */ jsx(TabsContent, { value: "security", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.sampleCopy.securitySettingsPanel") }) })
944
+ ] });
945
+ }
946
+ function BreadcrumbNavigationSlashSample() {
947
+ const t = useT();
948
+ return /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
949
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: t("design_system.gallery.examples.shell.dashboard") }) }),
950
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
951
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: t("design_system.gallery.sampleCopy.products") }) }),
952
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
953
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: t("design_system.gallery.sampleCopy.winterCatalog") }) })
954
+ ] }) });
955
+ }
956
+ function BreadcrumbNavigationArrowSample() {
957
+ const t = useT();
958
+ return /* @__PURE__ */ jsx(Breadcrumb, { divider: "arrow", children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
959
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: t("design_system.gallery.examples.navigation2.orders") }) }),
960
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
961
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: "#20418" }) }),
962
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
963
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: t("design_system.gallery.sampleCopy.shipment") }) })
964
+ ] }) });
965
+ }
966
+ function BreadcrumbNavigationEllipsisSample() {
967
+ const t = useT();
968
+ return /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
969
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: t("design_system.gallery.examples.shell.dashboard") }) }),
970
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
971
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbEllipsis, {}) }),
972
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
973
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { href: "#gallery-entry-breadcrumb", children: t("design_system.gallery.sampleCopy.attributes") }) }),
974
+ /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
975
+ /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: t("design_system.gallery.samples.richEditor.labels.textColor") }) })
976
+ ] }) });
977
+ }
978
+ function SegmentedControlNavigationDefaultSample() {
979
+ const t = useT();
980
+ return /* @__PURE__ */ jsxs(SegmentedControl, { defaultValue: "all", "aria-label": t("design_system.gallery.sampleCopy.viewFilter"), children: [
981
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "all", children: t("design_system.gallery.samples.feeds.all") }),
982
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "active", children: t("design_system.gallery.samples.finance.active") }),
983
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "archived", children: t("design_system.gallery.sampleCopy.archived") })
984
+ ] });
985
+ }
986
+ function SegmentedControlNavigationSmallSample() {
987
+ const t = useT();
988
+ return /* @__PURE__ */ jsxs(SegmentedControl, { size: "sm", defaultValue: t("design_system.gallery.sampleCopy.30d"), "aria-label": t("design_system.gallery.samples.crypto.chartRange"), children: [
989
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "7d", children: t("design_system.gallery.sampleCopy.7d") }),
990
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "30d", children: t("design_system.gallery.sampleCopy.30d") }),
991
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "90d", children: t("design_system.gallery.sampleCopy.90d") }),
992
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "1y", children: t("design_system.gallery.sampleCopy.1y") })
993
+ ] });
994
+ }
995
+ function SegmentedControlNavigationDisabledSample() {
996
+ const t = useT();
997
+ return /* @__PURE__ */ jsxs(SegmentedControl, { defaultValue: "list", disabled: true, "aria-label": t("design_system.gallery.sampleCopy.layout"), children: [
998
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "list", children: t("design_system.gallery.sampleCopy.list") }),
999
+ /* @__PURE__ */ jsx(SegmentedControlItem, { value: "grid", children: t("design_system.gallery.sampleCopy.grid") })
1000
+ ] });
1001
+ }
1002
+ function AccordionNavigationCardSample() {
1003
+ const t = useT();
1004
+ return /* @__PURE__ */ jsxs(Accordion, { type: "single", collapsible: true, defaultValue: "shipping", className: "w-full space-y-2", children: [
1005
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "shipping", children: [
1006
+ /* @__PURE__ */ jsx(AccordionTrigger, { children: t("design_system.gallery.sampleCopy.shippingAndDelivery") }),
1007
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.ordersPlacedBefore2PMShipTheSameBusinessDay") })
1008
+ ] }),
1009
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "returns", children: [
1010
+ /* @__PURE__ */ jsx(AccordionTrigger, { children: t("design_system.gallery.sampleCopy.returns") }),
1011
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.itemsCanBeReturnedWithin30DaysOfDeliveryIn") })
1012
+ ] }),
1013
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "payments", children: [
1014
+ /* @__PURE__ */ jsx(AccordionTrigger, { children: t("design_system.gallery.sampleCopy.paymentMethods") }),
1015
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.weAcceptCardsBankTransferAndDeferredPaymentForVerified") })
1016
+ ] })
1017
+ ] });
1018
+ }
1019
+ function AccordionNavigationLeftIconSample() {
1020
+ const t = useT();
1021
+ return /* @__PURE__ */ jsxs(Accordion, { type: "single", collapsible: true, className: "w-full space-y-2", children: [
1022
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "shipping", children: [
1023
+ /* @__PURE__ */ jsx(AccordionTrigger, { leftIcon: /* @__PURE__ */ jsx(Truck, {}), children: t("design_system.gallery.sampleCopy.howFastIsShipping") }),
1024
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.samedayDispatchOnWeekdaysDeliveryTypicallyTakes13BusinessDays") })
1025
+ ] }),
1026
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "billing", children: [
1027
+ /* @__PURE__ */ jsx(AccordionTrigger, { leftIcon: /* @__PURE__ */ jsx(CreditCard, {}), children: t("design_system.gallery.sampleCopy.whenAmICharged") }),
1028
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.yourCardIsChargedWhenTheOrderShipsNeverAt") })
1029
+ ] })
1030
+ ] });
1031
+ }
1032
+ function AccordionNavigationChevronSample() {
1033
+ const t = useT();
1034
+ return /* @__PURE__ */ jsxs(Accordion, { type: "multiple", className: "w-full space-y-2", children: [
1035
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "general", children: [
1036
+ /* @__PURE__ */ jsx(AccordionTrigger, { triggerIcon: "chevron", children: t("design_system.gallery.sampleCopy.general") }),
1037
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.storeNameContactDetailsAndDefaultLocaleForTheStorefront") })
1038
+ ] }),
1039
+ /* @__PURE__ */ jsxs(AccordionItem, { value: "advanced", children: [
1040
+ /* @__PURE__ */ jsx(AccordionTrigger, { triggerIcon: "chevron", children: t("design_system.gallery.samples.finance.advanced") }),
1041
+ /* @__PURE__ */ jsx(AccordionContent, { children: t("design_system.gallery.sampleCopy.webhooksAPIKeysAndOtherDeveloperfacingConfiguration") })
1042
+ ] })
1043
+ ] });
1044
+ }
472
1045
  export {
473
1046
  entries
474
1047
  };