@open-mercato/core 0.7.1-develop.7203.1.9396450b78 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/build.mjs +11 -0
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +23 -0
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/[id]/page.js +2 -1
- package/dist/modules/customers/backend/customers/companies/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +2 -1
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/[id]/page.js +2 -2
- package/dist/modules/customers/backend/customers/people/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +2 -1
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/lib/detailHelpers.js +4 -0
- package/dist/modules/customers/lib/detailHelpers.js.map +2 -2
- package/dist/modules/customers/lib/todoCompatibility.js +5 -0
- package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
- package/dist/modules/design_system/backend/design-system/page.meta.js +3 -2
- package/dist/modules/design_system/backend/design-system/page.meta.js.map +2 -2
- package/dist/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
- package/dist/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
- package/dist/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
- package/dist/modules/design_system/gallery/assets/avatar-photo.png +0 -0
- package/dist/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
- package/dist/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-ada.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-avax.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-brand.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-btc.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-dot.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-eth.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-history.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-link.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-more.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-sol.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-star.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
- package/dist/modules/design_system/gallery/assets/crypto-trx.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-wei.png +0 -0
- package/dist/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
- package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js +67 -0
- package/dist/modules/design_system/gallery/assets/cryptocurrency-artwork.js.map +7 -0
- package/dist/modules/design_system/gallery/assets/github-logo.png +0 -0
- package/dist/modules/design_system/gallery/assets/images.d.js +1 -0
- package/dist/modules/design_system/gallery/assets/images.d.js.map +7 -0
- package/dist/modules/design_system/gallery/assets/input-european-union.svg +18 -0
- package/dist/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
- package/dist/modules/design_system/gallery/assets/marketing-artwork.js +83 -0
- package/dist/modules/design_system/gallery/assets/marketing-artwork.js.map +7 -0
- package/dist/modules/design_system/gallery/assets/menu-apex.svg +18 -0
- package/dist/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
- package/dist/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
- package/dist/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
- package/dist/modules/design_system/gallery/assets/select-google.png +0 -0
- package/dist/modules/design_system/gallery/assets/select-poland.png +0 -0
- package/dist/modules/design_system/gallery/assets/selection-artwork.js +5 -0
- package/dist/modules/design_system/gallery/assets/selection-artwork.js.map +7 -0
- package/dist/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
- package/dist/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
- package/dist/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
- package/dist/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
- package/dist/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
- package/dist/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
- package/dist/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
- package/dist/modules/design_system/gallery/assets/style-studio-product.png +0 -0
- package/dist/modules/design_system/gallery/assets/upload-images.js +8 -0
- package/dist/modules/design_system/gallery/assets/upload-images.js.map +7 -0
- package/dist/modules/design_system/gallery/components/BrandStylePreview.js +74 -0
- package/dist/modules/design_system/gallery/components/BrandStylePreview.js.map +7 -0
- package/dist/modules/design_system/gallery/components/CodeSnippet.js +31 -31
- package/dist/modules/design_system/gallery/components/CodeSnippet.js.map +2 -2
- package/dist/modules/design_system/gallery/components/ColorPlayground.js +408 -0
- package/dist/modules/design_system/gallery/components/ColorPlayground.js.map +7 -0
- package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js +166 -0
- package/dist/modules/design_system/gallery/components/ColorStudioCompositions.js.map +7 -0
- package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js +182 -0
- package/dist/modules/design_system/gallery/components/ColorStudioSpecimen.js.map +7 -0
- package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js +80 -0
- package/dist/modules/design_system/gallery/components/CompactEntrySpecimen.js.map +7 -0
- package/dist/modules/design_system/gallery/components/ComponentIndex.js +42 -0
- package/dist/modules/design_system/gallery/components/ComponentIndex.js.map +7 -0
- package/dist/modules/design_system/gallery/components/DesignSystemHome.js +69 -0
- package/dist/modules/design_system/gallery/components/DesignSystemHome.js.map +7 -0
- package/dist/modules/design_system/gallery/components/EntryCard.js +47 -41
- package/dist/modules/design_system/gallery/components/EntryCard.js.map +2 -2
- package/dist/modules/design_system/gallery/components/EntryHeader.js +68 -0
- package/dist/modules/design_system/gallery/components/EntryHeader.js.map +7 -0
- package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js +19 -0
- package/dist/modules/design_system/gallery/components/FamilyEntryPreview.js.map +7 -0
- package/dist/modules/design_system/gallery/components/FoundationGuide.js +46 -0
- package/dist/modules/design_system/gallery/components/FoundationGuide.js.map +7 -0
- package/dist/modules/design_system/gallery/components/GalleryLink.js +21 -0
- package/dist/modules/design_system/gallery/components/GalleryLink.js.map +7 -0
- package/dist/modules/design_system/gallery/components/GalleryNavigation.js +82 -0
- package/dist/modules/design_system/gallery/components/GalleryNavigation.js.map +7 -0
- package/dist/modules/design_system/gallery/components/GalleryShell.js +147 -67
- package/dist/modules/design_system/gallery/components/GalleryShell.js.map +3 -3
- package/dist/modules/design_system/gallery/components/IconsBrowser.js +33 -0
- package/dist/modules/design_system/gallery/components/IconsBrowser.js.map +7 -0
- package/dist/modules/design_system/gallery/components/SourceLibrary.js +93 -0
- package/dist/modules/design_system/gallery/components/SourceLibrary.js.map +7 -0
- package/dist/modules/design_system/gallery/components/StyleAgents.js +139 -0
- package/dist/modules/design_system/gallery/components/StyleAgents.js.map +7 -0
- package/dist/modules/design_system/gallery/components/ThemeTokenReference.js +101 -0
- package/dist/modules/design_system/gallery/components/ThemeTokenReference.js.map +7 -0
- package/dist/modules/design_system/gallery/components/VariantPreview.js +2 -2
- package/dist/modules/design_system/gallery/components/VariantPreview.js.map +2 -2
- package/dist/modules/design_system/gallery/components/colorPreview.js +58 -0
- package/dist/modules/design_system/gallery/components/colorPreview.js.map +7 -0
- package/dist/modules/design_system/gallery/components/colorStudio.js +218 -0
- package/dist/modules/design_system/gallery/components/colorStudio.js.map +7 -0
- package/dist/modules/design_system/gallery/components/styleAgentBranding.js +46 -0
- package/dist/modules/design_system/gallery/components/styleAgentBranding.js.map +7 -0
- package/dist/modules/design_system/gallery/components/themeTokens.js +32 -0
- package/dist/modules/design_system/gallery/components/themeTokens.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js +194 -0
- package/dist/modules/design_system/gallery/demos/ai-product-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/ai-product.js +423 -0
- package/dist/modules/design_system/gallery/demos/ai-product.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/buttons.js +289 -0
- package/dist/modules/design_system/gallery/demos/buttons.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/cryptocurrency.js +1708 -0
- package/dist/modules/design_system/gallery/demos/cryptocurrency.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/feeds-code.generated.js +92 -0
- package/dist/modules/design_system/gallery/demos/feeds-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/feeds.js +148 -0
- package/dist/modules/design_system/gallery/demos/feeds.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/file-upload.js +72 -0
- package/dist/modules/design_system/gallery/demos/file-upload.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/foundation-reference-data.js +4875 -0
- package/dist/modules/design_system/gallery/demos/foundation-reference-data.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/foundation-references.js +188 -0
- package/dist/modules/design_system/gallery/demos/foundation-references.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/key-components-code.generated.js +6 -0
- package/dist/modules/design_system/gallery/demos/key-components-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/key-components.js +127 -0
- package/dist/modules/design_system/gallery/demos/key-components.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js +98 -0
- package/dist/modules/design_system/gallery/demos/marketing-controls-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/marketing-controls.js +134 -0
- package/dist/modules/design_system/gallery/demos/marketing-controls.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js +195 -0
- package/dist/modules/design_system/gallery/demos/marketing-widgets-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/marketing-widgets.js +586 -0
- package/dist/modules/design_system/gallery/demos/marketing-widgets.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/menu-fixtures.js +40 -0
- package/dist/modules/design_system/gallery/demos/menu-fixtures.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/menu-sources.js +295 -0
- package/dist/modules/design_system/gallery/demos/menu-sources.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/menus.js +150 -0
- package/dist/modules/design_system/gallery/demos/menus.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/rating-reviews.js +53 -0
- package/dist/modules/design_system/gallery/demos/rating-reviews.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/registered-icons.js +104 -0
- package/dist/modules/design_system/gallery/demos/registered-icons.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/selection-cards.js +99 -0
- package/dist/modules/design_system/gallery/demos/selection-cards.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/shell-code.generated.js +189 -0
- package/dist/modules/design_system/gallery/demos/shell-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/shell.js +330 -0
- package/dist/modules/design_system/gallery/demos/shell.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/source-artwork.js +120 -0
- package/dist/modules/design_system/gallery/demos/source-artwork.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js +125 -0
- package/dist/modules/design_system/gallery/demos/source-filters-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/source-filters.js +185 -0
- package/dist/modules/design_system/gallery/demos/source-filters.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/source-icons.js +69 -0
- package/dist/modules/design_system/gallery/demos/source-icons.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js +150 -0
- package/dist/modules/design_system/gallery/demos/table-cells-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/table-cells.js +181 -0
- package/dist/modules/design_system/gallery/demos/table-cells.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/text-inputs.js +113 -0
- package/dist/modules/design_system/gallery/demos/text-inputs.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js +41 -0
- package/dist/modules/design_system/gallery/demos/time-picker-code.generated.js.map +7 -0
- package/dist/modules/design_system/gallery/demos/time-picker.js +41 -0
- package/dist/modules/design_system/gallery/demos/time-picker.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/banners.js +123 -60
- package/dist/modules/design_system/gallery/entries/banners.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/buttons-snippets.js +433 -0
- package/dist/modules/design_system/gallery/entries/buttons-snippets.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/buttons.js +127 -148
- package/dist/modules/design_system/gallery/entries/buttons.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/charts.js +532 -186
- package/dist/modules/design_system/gallery/entries/charts.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/dates.js +191 -3
- package/dist/modules/design_system/gallery/entries/dates.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/detail.js +118 -77
- package/dist/modules/design_system/gallery/entries/detail.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/display.js +1449 -240
- package/dist/modules/design_system/gallery/entries/display.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/feedback.js +1058 -132
- package/dist/modules/design_system/gallery/entries/feedback.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/filters.js +231 -103
- package/dist/modules/design_system/gallery/entries/filters.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/foundations.js +368 -57
- package/dist/modules/design_system/gallery/entries/foundations.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/icons.js +29 -91
- package/dist/modules/design_system/gallery/entries/icons.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/inputs-snippets.js +154 -0
- package/dist/modules/design_system/gallery/entries/inputs-snippets.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/inputs.js +2043 -306
- package/dist/modules/design_system/gallery/entries/inputs.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/library.js +20 -0
- package/dist/modules/design_system/gallery/entries/library.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/messages.js +121 -103
- package/dist/modules/design_system/gallery/entries/messages.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/navigation.js +676 -103
- package/dist/modules/design_system/gallery/entries/navigation.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/notifications.js +131 -78
- package/dist/modules/design_system/gallery/entries/notifications.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/overlays.js +611 -203
- package/dist/modules/design_system/gallery/entries/overlays.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/scaffolding.js +1175 -120
- package/dist/modules/design_system/gallery/entries/scaffolding.js.map +2 -2
- package/dist/modules/design_system/gallery/entries/schedule.js +79 -54
- package/dist/modules/design_system/gallery/entries/schedule.js.map +2 -2
- package/dist/modules/design_system/gallery/presentation.js +108 -0
- package/dist/modules/design_system/gallery/presentation.js.map +7 -0
- package/dist/modules/design_system/gallery/registry.js +8 -5
- package/dist/modules/design_system/gallery/registry.js.map +2 -2
- package/dist/modules/design_system/gallery/source-library.generated.js +5 -0
- package/dist/modules/design_system/gallery/source-library.generated.js.map +7 -0
- package/dist/modules/design_system/i18n/de.json +7167 -0
- package/dist/modules/design_system/i18n/en.json +7167 -0
- package/dist/modules/design_system/i18n/es.json +7167 -0
- package/dist/modules/design_system/i18n/ko.json +7167 -0
- package/dist/modules/design_system/i18n/pl.json +7167 -0
- package/dist/modules/push_notifications/lib/queue.js +1 -31
- package/dist/modules/push_notifications/lib/queue.js.map +2 -2
- package/jest.config.cjs +1 -0
- package/jest.mocks/image.js +1 -0
- package/package.json +8 -9
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +50 -0
- package/src/modules/customers/backend/customers/companies/[id]/page.tsx +2 -1
- package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +2 -1
- package/src/modules/customers/backend/customers/people/[id]/page.tsx +2 -2
- package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +2 -1
- package/src/modules/customers/lib/detailHelpers.ts +4 -0
- package/src/modules/customers/lib/todoCompatibility.ts +10 -0
- package/src/modules/design_system/backend/design-system/page.meta.ts +3 -2
- package/src/modules/design_system/gallery/assets/README.md +30 -0
- package/src/modules/design_system/gallery/assets/ai-prompt-image.png +0 -0
- package/src/modules/design_system/gallery/assets/avatar-illustration.png +0 -0
- package/src/modules/design_system/gallery/assets/avatar-memoji.png +0 -0
- package/src/modules/design_system/gallery/assets/avatar-photo.png +0 -0
- package/src/modules/design_system/gallery/assets/blog-photo-0.png +0 -0
- package/src/modules/design_system/gallery/assets/contact-support-portrait.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-ada.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-avax.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-bnb.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-brand.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-btc.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-clock.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-crown.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-dot.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-eth.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-hbar.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-history.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-link.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-menu.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-metamask.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-more.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-phantom.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-rewards.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-sad-face.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-sol.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-star.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-status-cancelled.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-status-pending.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-status-success.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-status-warning.svg +3 -0
- package/src/modules/design_system/gallery/assets/crypto-trx.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-usdc.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-usdt.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-walletconnect.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-wei.png +0 -0
- package/src/modules/design_system/gallery/assets/crypto-xrp.png +0 -0
- package/src/modules/design_system/gallery/assets/cryptocurrency-artwork.ts +63 -0
- package/src/modules/design_system/gallery/assets/github-logo.png +0 -0
- package/src/modules/design_system/gallery/assets/images.d.ts +9 -0
- package/src/modules/design_system/gallery/assets/input-european-union.svg +18 -0
- package/src/modules/design_system/gallery/assets/landing-teams-01.png +0 -0
- package/src/modules/design_system/gallery/assets/marketing-artwork.ts +79 -0
- package/src/modules/design_system/gallery/assets/menu-apex.svg +18 -0
- package/src/modules/design_system/gallery/assets/menu-mastercard.svg +7 -0
- package/src/modules/design_system/gallery/assets/menu-spotify.svg +4 -0
- package/src/modules/design_system/gallery/assets/menu-united-states.svg +16 -0
- package/src/modules/design_system/gallery/assets/select-google.png +0 -0
- package/src/modules/design_system/gallery/assets/select-poland.png +0 -0
- package/src/modules/design_system/gallery/assets/selection-artwork.ts +1 -0
- package/src/modules/design_system/gallery/assets/social-apple-filled.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-apple-stroke.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-dropbox-filled.svg +5 -0
- package/src/modules/design_system/gallery/assets/social-dropbox-stroke.svg +5 -0
- package/src/modules/design_system/gallery/assets/social-facebook-filled.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-facebook-stroke.svg +10 -0
- package/src/modules/design_system/gallery/assets/social-github-filled.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-github-stroke.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-google-filled.svg +7 -0
- package/src/modules/design_system/gallery/assets/social-google-stroke.svg +7 -0
- package/src/modules/design_system/gallery/assets/social-linkedin-filled.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-linkedin-stroke.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-x-filled.svg +4 -0
- package/src/modules/design_system/gallery/assets/social-x-stroke.svg +4 -0
- package/src/modules/design_system/gallery/assets/style-studio-product.png +0 -0
- package/src/modules/design_system/gallery/assets/upload-images.ts +5 -0
- package/src/modules/design_system/gallery/components/BrandStylePreview.tsx +94 -0
- package/src/modules/design_system/gallery/components/CodeSnippet.tsx +34 -34
- package/src/modules/design_system/gallery/components/ColorPlayground.tsx +324 -0
- package/src/modules/design_system/gallery/components/ColorStudioCompositions.tsx +96 -0
- package/src/modules/design_system/gallery/components/ColorStudioSpecimen.tsx +164 -0
- package/src/modules/design_system/gallery/components/CompactEntrySpecimen.tsx +65 -0
- package/src/modules/design_system/gallery/components/ComponentIndex.tsx +47 -0
- package/src/modules/design_system/gallery/components/DesignSystemHome.tsx +66 -0
- package/src/modules/design_system/gallery/components/EntryCard.tsx +52 -37
- package/src/modules/design_system/gallery/components/EntryHeader.tsx +80 -0
- package/src/modules/design_system/gallery/components/FamilyEntryPreview.tsx +22 -0
- package/src/modules/design_system/gallery/components/FoundationGuide.tsx +43 -0
- package/src/modules/design_system/gallery/components/GalleryLink.tsx +19 -0
- package/src/modules/design_system/gallery/components/GalleryNavigation.tsx +86 -0
- package/src/modules/design_system/gallery/components/GalleryShell.tsx +149 -63
- package/src/modules/design_system/gallery/components/IconsBrowser.tsx +40 -0
- package/src/modules/design_system/gallery/components/SourceLibrary.tsx +90 -0
- package/src/modules/design_system/gallery/components/StyleAgents.tsx +115 -0
- package/src/modules/design_system/gallery/components/ThemeTokenReference.tsx +76 -0
- package/src/modules/design_system/gallery/components/VariantPreview.tsx +2 -2
- package/src/modules/design_system/gallery/components/colorPreview.ts +63 -0
- package/src/modules/design_system/gallery/components/colorStudio.ts +260 -0
- package/src/modules/design_system/gallery/components/styleAgentBranding.ts +42 -0
- package/src/modules/design_system/gallery/components/themeTokens.ts +26 -0
- package/src/modules/design_system/gallery/demos/ai-product-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/ai-product.tsx +188 -0
- package/src/modules/design_system/gallery/demos/buttons.tsx +331 -0
- package/src/modules/design_system/gallery/demos/cryptocurrency.tsx +1943 -0
- package/src/modules/design_system/gallery/demos/feeds-code.generated.ts +4 -0
- package/src/modules/design_system/gallery/demos/feeds.tsx +82 -0
- package/src/modules/design_system/gallery/demos/file-upload.tsx +61 -0
- package/src/modules/design_system/gallery/demos/foundation-reference-data.ts +4872 -0
- package/src/modules/design_system/gallery/demos/foundation-references.tsx +140 -0
- package/src/modules/design_system/gallery/demos/key-components-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/key-components.tsx +106 -0
- package/src/modules/design_system/gallery/demos/marketing-controls-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/marketing-controls.tsx +92 -0
- package/src/modules/design_system/gallery/demos/marketing-widgets-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/marketing-widgets.tsx +189 -0
- package/src/modules/design_system/gallery/demos/menu-fixtures.tsx +48 -0
- package/src/modules/design_system/gallery/demos/menu-sources.ts +5 -0
- package/src/modules/design_system/gallery/demos/menus.tsx +122 -0
- package/src/modules/design_system/gallery/demos/rating-reviews.tsx +44 -0
- package/src/modules/design_system/gallery/demos/registered-icons.tsx +117 -0
- package/src/modules/design_system/gallery/demos/selection-cards.tsx +97 -0
- package/src/modules/design_system/gallery/demos/shell-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/shell.tsx +183 -0
- package/src/modules/design_system/gallery/demos/source-artwork.tsx +88 -0
- package/src/modules/design_system/gallery/demos/source-filters-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/source-filters.tsx +119 -0
- package/src/modules/design_system/gallery/demos/source-icons.tsx +62 -0
- package/src/modules/design_system/gallery/demos/table-cells-code.generated.ts +3 -0
- package/src/modules/design_system/gallery/demos/table-cells.tsx +144 -0
- package/src/modules/design_system/gallery/demos/text-inputs.tsx +90 -0
- package/src/modules/design_system/gallery/demos/time-picker-code.generated.ts +5 -0
- package/src/modules/design_system/gallery/demos/time-picker.tsx +31 -0
- package/src/modules/design_system/gallery/entries/banners.tsx +143 -94
- package/src/modules/design_system/gallery/entries/buttons-snippets.ts +432 -0
- package/src/modules/design_system/gallery/entries/buttons.tsx +125 -196
- package/src/modules/design_system/gallery/entries/charts.tsx +545 -233
- package/src/modules/design_system/gallery/entries/dates.tsx +171 -3
- package/src/modules/design_system/gallery/entries/detail.tsx +142 -115
- package/src/modules/design_system/gallery/entries/display.tsx +1691 -319
- package/src/modules/design_system/gallery/entries/feedback.tsx +1082 -169
- package/src/modules/design_system/gallery/entries/filters.tsx +238 -143
- package/src/modules/design_system/gallery/entries/foundations.tsx +404 -61
- package/src/modules/design_system/gallery/entries/icons.tsx +31 -117
- package/src/modules/design_system/gallery/entries/inputs-snippets.ts +156 -0
- package/src/modules/design_system/gallery/entries/inputs.tsx +2146 -503
- package/src/modules/design_system/gallery/entries/library.tsx +16 -0
- package/src/modules/design_system/gallery/entries/messages.tsx +114 -106
- package/src/modules/design_system/gallery/entries/navigation.tsx +782 -192
- package/src/modules/design_system/gallery/entries/notifications.tsx +145 -120
- package/src/modules/design_system/gallery/entries/overlays.tsx +696 -280
- package/src/modules/design_system/gallery/entries/scaffolding.tsx +1192 -158
- package/src/modules/design_system/gallery/entries/schedule.tsx +72 -58
- package/src/modules/design_system/gallery/presentation.ts +106 -0
- package/src/modules/design_system/gallery/registry.ts +8 -6
- package/src/modules/design_system/gallery/source-library.generated.ts +2 -0
- package/src/modules/design_system/i18n/de.json +7112 -3
- package/src/modules/design_system/i18n/en.json +7112 -3
- package/src/modules/design_system/i18n/es.json +7112 -3
- package/src/modules/design_system/i18n/ko.json +7112 -3
- package/src/modules/design_system/i18n/pl.json +7112 -3
- package/src/modules/push_notifications/AGENTS.md +9 -5
- package/src/modules/push_notifications/lib/queue.ts +15 -44
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/design_system/gallery/entries/feedback.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react'\nimport { Inbox, RefreshCw, Search, Settings, UserPlus } from 'lucide-react'\nimport { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { Skeleton } from '@open-mercato/ui/primitives/skeleton'\nimport { CircularProgress, Progress } from '@open-mercato/ui/primitives/progress'\nimport { Spinner } from '@open-mercato/ui/primitives/spinner'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\nimport { Notification } from '@open-mercato/ui/primitives/notification'\nimport {\n NotificationFeed,\n NotificationFeedFooter,\n NotificationFeedHeader,\n NotificationFeedIconBadge,\n NotificationFeedItem,\n NotificationFeedList,\n} from '@open-mercato/ui/primitives/notification-feed'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport type { GalleryEntry } from '../types'\n\n// Component titles and variant names are proper nouns from the codebase and\n// are deliberately not translated. `code` MUST contain the entry's importPath\n// (enforced by the registry-integrity test) and is always reviewed alongside\n// its sibling `render`.\n\nconst alertEntry: GalleryEntry = {\n id: 'alert',\n title: 'Alert',\n importPath: '@open-mercato/ui/primitives/alert',\n usage: {\n do: [\n 'Current API only: status (error/warning/success/information/feature) + style (filled/light/lighter/stroke) + size.',\n 'light/lighter for inline page notices; filled for high-emphasis moments.',\n ],\n dont: ['The legacy variant prop is deprecated \u2014 lint flags it.', 'Never build ad-hoc colored notice boxes; this is the primitive for them.'],\n },\n variants: [\n {\n id: 'statuses-light',\n title: 'Statuses (light)',\n render: () => (\n <div className=\"flex w-full max-w-md flex-col gap-2\">\n <Alert status=\"error\" style=\"light\">Payment failed \u2014 the card was declined.</Alert>\n <Alert status=\"warning\" style=\"light\">Inventory sync is running behind schedule.</Alert>\n <Alert status=\"success\" style=\"light\">Order #10231 was fulfilled.</Alert>\n <Alert status=\"information\" style=\"light\">Prices include VAT for EU customers.</Alert>\n <Alert status=\"feature\" style=\"light\">Bulk editing is now available in the catalog.</Alert>\n </div>\n ),\n code: `import { Alert } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"error\" style=\"light\">Payment failed \u2014 the card was declined.</Alert>\n<Alert status=\"warning\" style=\"light\">Inventory sync is running behind schedule.</Alert>\n<Alert status=\"success\" style=\"light\">Order #10231 was fulfilled.</Alert>\n<Alert status=\"information\" style=\"light\">Prices include VAT for EU customers.</Alert>\n<Alert status=\"feature\" style=\"light\">Bulk editing is now available in the catalog.</Alert>`,\n },\n {\n id: 'filled',\n title: 'filled',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Alert status=\"error\" style=\"filled\" size=\"default\">\n <AlertTitle>Import failed</AlertTitle>\n <AlertDescription>14 rows were rejected \u2014 download the error report to review them.</AlertDescription>\n </Alert>\n </div>\n ),\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"error\" style=\"filled\" size=\"default\">\n <AlertTitle>Import failed</AlertTitle>\n <AlertDescription>14 rows were rejected \u2014 download the error report to review them.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'stroke',\n title: 'stroke',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Alert status=\"success\" style=\"stroke\" size=\"default\">\n <AlertTitle>Backup complete</AlertTitle>\n <AlertDescription>The nightly snapshot finished without warnings.</AlertDescription>\n </Alert>\n </div>\n ),\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"success\" style=\"stroke\" size=\"default\">\n <AlertTitle>Backup complete</AlertTitle>\n <AlertDescription>The nightly snapshot finished without warnings.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <div className=\"flex w-full max-w-md flex-col gap-2\">\n <Alert status=\"information\" size=\"xs\">X-Small \u2014 inline form hint.</Alert>\n <Alert status=\"information\" size=\"sm\">Small \u2014 the default single-line alert.</Alert>\n <Alert status=\"information\" size=\"default\">\n <AlertTitle>Large</AlertTitle>\n <AlertDescription>Multi-line alert with a title and a description body.</AlertDescription>\n </Alert>\n </div>\n ),\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"information\" size=\"xs\">X-Small \u2014 inline form hint.</Alert>\n<Alert status=\"information\" size=\"sm\">Small \u2014 the default single-line alert.</Alert>\n<Alert status=\"information\" size=\"default\">\n <AlertTitle>Large</AlertTitle>\n <AlertDescription>Multi-line alert with a title and a description body.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'dismissible-with-action',\n title: 'Dismissible with action',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Alert\n status=\"warning\"\n style=\"lighter\"\n dismissible\n action={<LinkButton variant=\"black\" underline=\"always\">Review</LinkButton>}\n >\n 3 products are missing tax categories.\n </Alert>\n </div>\n ),\n code: `import { Alert } from '@open-mercato/ui/primitives/alert'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Alert\n status=\"warning\"\n style=\"lighter\"\n dismissible\n onDismiss={() => setVisible(false)}\n action={<LinkButton variant=\"black\" underline=\"always\">Review</LinkButton>}\n>\n 3 products are missing tax categories.\n</Alert>`,\n },\n ],\n}\n\nconst emptyStateEntry: GalleryEntry = {\n id: 'empty-state',\n title: 'EmptyState',\n importPath: '@open-mercato/ui/primitives/empty-state',\n variants: [\n {\n id: 'default',\n title: 'default',\n render: () => (\n <div className=\"w-full max-w-md\">\n <EmptyState\n title=\"No customers yet\"\n description=\"Create your first customer to start tracking opportunities.\"\n />\n </div>\n ),\n code: `import { EmptyState } from '@open-mercato/ui/primitives/empty-state'\n\n<EmptyState\n title=\"No customers yet\"\n description=\"Create your first customer to start tracking opportunities.\"\n/>`,\n },\n {\n id: 'with-actions',\n title: 'With icon and actions',\n render: () => (\n <div className=\"w-full max-w-md\">\n <EmptyState\n icon={<Inbox className=\"size-8\" />}\n title=\"No orders found\"\n description=\"Orders will appear here once your storefront starts selling.\"\n actions={<Button size=\"sm\">Create order</Button>}\n />\n </div>\n ),\n code: `import { Inbox } from 'lucide-react'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<EmptyState\n icon={<Inbox className=\"size-8\" />}\n title=\"No orders found\"\n description=\"Orders will appear here once your storefront starts selling.\"\n actions={<Button size=\"sm\">Create order</Button>}\n/>`,\n },\n {\n id: 'subtle',\n title: 'subtle',\n render: () => (\n <div className=\"w-full max-w-md\">\n <EmptyState\n variant=\"subtle\"\n size=\"sm\"\n icon={<Search className=\"size-5\" />}\n title=\"No results\"\n description=\"Try a different search term or clear the filters.\"\n />\n </div>\n ),\n code: `import { Search } from 'lucide-react'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\n\n<EmptyState\n variant=\"subtle\"\n size=\"sm\"\n icon={<Search className=\"size-5\" />}\n title=\"No results\"\n description=\"Try a different search term or clear the filters.\"\n/>`,\n },\n ],\n}\n\nconst skeletonEntry: GalleryEntry = {\n id: 'skeleton',\n title: 'Skeleton',\n importPath: '@open-mercato/ui/primitives/skeleton',\n variants: [\n {\n id: 'shapes',\n title: 'Shapes',\n render: () => (\n <div className=\"flex w-full max-w-md items-center gap-4\">\n <Skeleton shape=\"circle\" className=\"size-10\" />\n <Skeleton className=\"h-8 w-24\" />\n <Skeleton className=\"h-8 flex-1\" />\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<Skeleton shape=\"circle\" className=\"size-10\" />\n<Skeleton className=\"h-8 w-24\" />\n<Skeleton className=\"h-8 flex-1\" />`,\n },\n {\n id: 'text-lines',\n title: 'Text lines',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Skeleton shape=\"text\" lines={3} />\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<Skeleton shape=\"text\" lines={3} />`,\n },\n {\n id: 'card-placeholder',\n title: 'Card placeholder',\n render: () => (\n <div className=\"flex w-full max-w-md items-start gap-3 rounded-lg border border-border p-4\">\n <Skeleton shape=\"circle\" className=\"size-12\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton shape=\"text\" lines={2} />\n </div>\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<div className=\"flex items-start gap-3 rounded-lg border border-border p-4\">\n <Skeleton shape=\"circle\" className=\"size-12\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton shape=\"text\" lines={2} />\n </div>\n</div>`,\n },\n ],\n}\n\nconst progressEntry: GalleryEntry = {\n id: 'progress',\n title: 'Progress',\n importPath: '@open-mercato/ui/primitives/progress',\n variants: [\n {\n id: 'basic',\n title: 'Basic',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Progress value={50} />\n </div>\n ),\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress value={50} />`,\n },\n {\n id: 'labelled',\n title: 'Labelled',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Progress\n value={80}\n label=\"Data storage\"\n showValue\n description=\"Upgrade to unlock unlimited storage.\"\n />\n </div>\n ),\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress\n value={80}\n label=\"Data storage\"\n showValue\n description=\"Upgrade to unlock unlimited storage.\"\n/>`,\n },\n {\n id: 'tones',\n title: 'Tones',\n render: () => (\n <div className=\"flex w-full max-w-md flex-col gap-3\">\n <Progress value={42} tone=\"accent\" />\n <Progress value={42} tone=\"success\" />\n <Progress value={42} tone=\"warning\" />\n <Progress value={42} tone=\"destructive\" />\n <Progress value={42} tone=\"muted\" />\n </div>\n ),\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress value={42} tone=\"accent\" />\n<Progress value={42} tone=\"success\" />\n<Progress value={42} tone=\"warning\" />\n<Progress value={42} tone=\"destructive\" />\n<Progress value={42} tone=\"muted\" />`,\n },\n {\n id: 'circular',\n title: 'CircularProgress',\n render: () => (\n <>\n <CircularProgress value={75} size=\"lg\" showValue />\n <CircularProgress value={75} size=\"default\" showValue />\n <CircularProgress value={75} size=\"sm\" />\n <CircularProgress value={75} size=\"xs\" />\n <CircularProgress value={100} tone=\"success\" showValue />\n </>\n ),\n code: `import { CircularProgress } from '@open-mercato/ui/primitives/progress'\n\n<CircularProgress value={75} size=\"lg\" showValue />\n<CircularProgress value={75} size=\"default\" showValue />\n<CircularProgress value={75} size=\"sm\" />\n<CircularProgress value={75} size=\"xs\" />\n<CircularProgress value={100} tone=\"success\" showValue />`,\n },\n ],\n}\n\nconst spinnerEntry: GalleryEntry = {\n id: 'spinner',\n title: 'Spinner',\n importPath: '@open-mercato/ui/primitives/spinner',\n variants: [\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <>\n <Spinner size=\"sm\" />\n <Spinner size=\"md\" />\n <Spinner size=\"lg\" />\n </>\n ),\n code: `import { Spinner } from '@open-mercato/ui/primitives/spinner'\n\n<Spinner size=\"sm\" />\n<Spinner size=\"md\" />\n<Spinner size=\"lg\" />`,\n },\n {\n id: 'inline-with-label',\n title: 'Inline with label',\n render: () => (\n <span className=\"inline-flex items-center gap-2 text-sm text-muted-foreground\">\n <Spinner size=\"sm\" />\n Loading orders\u2026\n </span>\n ),\n code: `import { Spinner } from '@open-mercato/ui/primitives/spinner'\n\n<span className=\"inline-flex items-center gap-2 text-sm text-muted-foreground\">\n <Spinner size=\"sm\" />\n Loading orders\u2026\n</span>`,\n },\n ],\n}\n\nfunction InteractiveRatingDemo() {\n const [value, setValue] = React.useState(3)\n return <Rating value={value} onChange={setValue} aria-label=\"Your rating\" />\n}\n\nconst ratingEntry: GalleryEntry = {\n id: 'rating',\n title: 'Rating',\n importPath: '@open-mercato/ui/primitives/rating',\n variants: [\n {\n id: 'read-only',\n title: 'Read-only',\n render: () => <Rating value={4} max={5} />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={4} max={5} />`,\n },\n {\n id: 'half-precision',\n title: 'Half precision',\n render: () => <Rating value={3.5} max={5} allowHalf />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={3.5} max={5} allowHalf />`,\n },\n {\n id: 'interactive',\n title: 'Interactive',\n render: () => <InteractiveRatingDemo />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\nconst [value, setValue] = React.useState(3)\n\n<Rating value={value} onChange={setValue} aria-label=\"Your rating\" />`,\n },\n {\n id: 'icons-and-sizes',\n title: 'Icons and sizes',\n render: () => (\n <>\n <Rating value={3} max={5} icon=\"heart\" />\n <Rating value={3} max={5} icon=\"circle\" size=\"sm\" />\n <Rating value={3} max={5} size=\"lg\" />\n </>\n ),\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={3} max={5} icon=\"heart\" />\n<Rating value={3} max={5} icon=\"circle\" size=\"sm\" />\n<Rating value={3} max={5} size=\"lg\" />`,\n },\n ],\n}\n\nconst wizardSteps: StepIndicatorStep[] = [\n { id: 'account', label: 'Account', status: 'complete' },\n { id: 'profile', label: 'Profile', status: 'current' },\n { id: 'review', label: 'Review', status: 'pending' },\n]\n\nconst verticalSteps: StepIndicatorStep[] = [\n { id: 'details', label: 'Store details', description: 'Name, currency, region', status: 'complete' },\n { id: 'payments', label: 'Payments', description: 'Connect a payment provider', status: 'current' },\n { id: 'shipping', label: 'Shipping', description: 'Zones and carriers', status: 'pending' },\n]\n\nconst errorSteps: StepIndicatorStep[] = [\n { id: 'upload', label: 'Upload file', status: 'complete' },\n { id: 'validate', label: 'Validation', status: 'error' },\n { id: 'import', label: 'Import', status: 'pending' },\n]\n\nconst stepIndicatorEntry: GalleryEntry = {\n id: 'step-indicator',\n title: 'StepIndicator',\n importPath: '@open-mercato/ui/primitives/step-indicator',\n variants: [\n {\n id: 'horizontal',\n title: 'Horizontal',\n render: () => <StepIndicator steps={wizardSteps} />,\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'account', label: 'Account', status: 'complete' },\n { id: 'profile', label: 'Profile', status: 'current' },\n { id: 'review', label: 'Review', status: 'pending' },\n]\n\n<StepIndicator steps={steps} />`,\n },\n {\n id: 'vertical',\n title: 'Vertical with descriptions',\n render: () => (\n <div className=\"w-full max-w-xs\">\n <StepIndicator steps={verticalSteps} orientation=\"vertical\" />\n </div>\n ),\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'details', label: 'Store details', description: 'Name, currency, region', status: 'complete' },\n { id: 'payments', label: 'Payments', description: 'Connect a payment provider', status: 'current' },\n { id: 'shipping', label: 'Shipping', description: 'Zones and carriers', status: 'pending' },\n]\n\n<StepIndicator steps={steps} orientation=\"vertical\" />`,\n },\n {\n id: 'error-state',\n title: 'Error state',\n render: () => <StepIndicator steps={errorSteps} />,\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'upload', label: 'Upload file', status: 'complete' },\n { id: 'validate', label: 'Validation', status: 'error' },\n { id: 'import', label: 'Import', status: 'pending' },\n]\n\n<StepIndicator steps={steps} />`,\n },\n ],\n}\n\nconst notificationEntry: GalleryEntry = {\n id: 'notification',\n title: 'Notification',\n importPath: '@open-mercato/ui/primitives/notification',\n variants: [\n {\n id: 'information',\n title: 'Information',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Notification\n title=\"Scheduled maintenance\"\n description=\"The admin panel will be read-only on Sunday between 02:00 and 04:00 UTC.\"\n timestamp=\"2 min ago\"\n />\n </div>\n ),\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\n\n<Notification\n title=\"Scheduled maintenance\"\n description=\"The admin panel will be read-only on Sunday between 02:00 and 04:00 UTC.\"\n timestamp=\"2 min ago\"\n onDismiss={() => dismiss(id)}\n/>`,\n },\n {\n id: 'success-with-actions',\n title: 'Success with actions',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Notification\n status=\"success\"\n title=\"Export ready\"\n description=\"Your product export (1,204 rows) finished successfully.\"\n timestamp=\"just now\"\n actions={\n <>\n <LinkButton variant=\"black\" underline=\"always\">Download</LinkButton>\n <LinkButton variant=\"gray\" underline=\"always\">View log</LinkButton>\n </>\n }\n />\n </div>\n ),\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Notification\n status=\"success\"\n title=\"Export ready\"\n description=\"Your product export (1,204 rows) finished successfully.\"\n timestamp=\"just now\"\n actions={\n <>\n <LinkButton variant=\"black\" underline=\"always\">Download</LinkButton>\n <LinkButton variant=\"gray\" underline=\"always\">View log</LinkButton>\n </>\n }\n/>`,\n },\n {\n id: 'error',\n title: 'Error',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Notification\n status=\"error\"\n title=\"Webhook delivery failed\"\n description=\"The endpoint responded with 503 after 3 retries.\"\n timestamp=\"5 min ago\"\n actions={<LinkButton variant=\"error\" underline=\"always\">Retry now</LinkButton>}\n />\n </div>\n ),\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Notification\n status=\"error\"\n title=\"Webhook delivery failed\"\n description=\"The endpoint responded with 503 after 3 retries.\"\n timestamp=\"5 min ago\"\n actions={<LinkButton variant=\"error\" underline=\"always\">Retry now</LinkButton>}\n/>`,\n },\n ],\n}\n\nconst notificationFeedEntry: GalleryEntry = {\n id: 'notification-feed',\n title: 'NotificationFeed',\n importPath: '@open-mercato/ui/primitives/notification-feed',\n variants: [\n {\n id: 'default',\n title: 'default',\n render: () => (\n <div className=\"w-full max-w-sm\">\n <NotificationFeed>\n <NotificationFeedHeader title=\"Notifications\">\n <IconButton size=\"sm\" variant=\"ghost\" aria-label=\"Notification settings\">\n <Settings />\n </IconButton>\n </NotificationFeedHeader>\n <NotificationFeedList>\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title=\"New lead generated\"\n body=\"John Smith submitted the contact form.\"\n timestamp=\"10 minutes ago\"\n unread\n />\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"success\">\n <RefreshCw className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title=\"Catalog sync completed\"\n body=\"312 products updated from the PIM.\"\n timestamp=\"1 hour ago\"\n />\n </NotificationFeedList>\n <NotificationFeedFooter>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full\">Archive all</Button>\n </NotificationFeedFooter>\n </NotificationFeed>\n </div>\n ),\n code: `import { Settings, UserPlus } from 'lucide-react'\nimport {\n NotificationFeed,\n NotificationFeedFooter,\n NotificationFeedHeader,\n NotificationFeedIconBadge,\n NotificationFeedItem,\n NotificationFeedList,\n} from '@open-mercato/ui/primitives/notification-feed'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<NotificationFeed>\n <NotificationFeedHeader title=\"Notifications\">\n <IconButton size=\"sm\" variant=\"ghost\" aria-label=\"Notification settings\">\n <Settings />\n </IconButton>\n </NotificationFeedHeader>\n <NotificationFeedList>\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title=\"New lead generated\"\n body=\"John Smith submitted the contact form.\"\n timestamp=\"10 minutes ago\"\n unread\n />\n </NotificationFeedList>\n <NotificationFeedFooter>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full\">Archive all</Button>\n </NotificationFeedFooter>\n</NotificationFeed>`,\n },\n {\n id: 'icon-badge-tones',\n title: 'NotificationFeedIconBadge tones',\n render: () => (\n <>\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"success\">\n <RefreshCw className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"error\">\n <Inbox className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"info\">\n <Search className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"neutral\">\n <Settings className=\"size-5\" />\n </NotificationFeedIconBadge>\n </>\n ),\n code: `import { UserPlus } from 'lucide-react'\nimport { NotificationFeedIconBadge } from '@open-mercato/ui/primitives/notification-feed'\n\n<NotificationFeedIconBadge tone=\"indigo\"><UserPlus className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"success\"><RefreshCw className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"error\"><Inbox className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"info\"><Search className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"neutral\"><Settings className=\"size-5\" /></NotificationFeedIconBadge>`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n alertEntry,\n emptyStateEntry,\n skeletonEntry,\n progressEntry,\n spinnerEntry,\n ratingEntry,\n stepIndicatorEntry,\n notificationEntry,\n notificationFeedEntry,\n]\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { Banner } from '@open-mercato/ui/primitives/banner'\nimport * as React from 'react'\nimport { NotificationFeedExample } from '../demos/feeds'\nimport { notificationFeedExampleCode } from '../demos/feeds-code.generated'\nimport { Inbox, RefreshCw, Search, Settings, UserPlus } from 'lucide-react'\nimport { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { EmptyStateIllustration } from '@open-mercato/ui/primitives/empty-state-illustration'\nimport { Skeleton } from '@open-mercato/ui/primitives/skeleton'\nimport { CircularProgress, Progress } from '@open-mercato/ui/primitives/progress'\nimport { Spinner } from '@open-mercato/ui/primitives/spinner'\nimport { RatingCellDemo, RatingReviewDemo } from '../demos/rating-reviews'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { RatingBar, type RatingBarProps } from '@open-mercato/ui/primitives/rating-bar'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { StepIndicator, StepperDots, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\nimport { Notification } from '@open-mercato/ui/primitives/notification'\nimport {\n NotificationFeed,\n NotificationFeedFooter,\n NotificationFeedHeader,\n NotificationFeedIconBadge,\n NotificationFeedItem,\n NotificationFeedList,\n} from '@open-mercato/ui/primitives/notification-feed'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport type { GalleryEntry } from '../types'\n\n// Component titles and variant names are proper nouns from the codebase and\n// are deliberately not translated. `code` MUST contain the entry's importPath\n// (enforced by the registry-integrity test) and is always reviewed alongside\n// its sibling `render`.\n\n\nconst bannerStatuses = ['error', 'warning', 'success', 'information', 'feature'] as const\nfunction BannerExamples({ appearance, minimal = false }: { appearance: 'filled' | 'light' | 'lighter' | 'stroke'; minimal?: boolean }) {\n const t = useT()\n const [dismissed, setDismissed] = React.useState<string[]>([])\n const [details, setDetails] = React.useState(false)\n return <div className=\"w-full space-y-4\">\n {bannerStatuses.filter(status => !dismissed.includes(status)).map(status => <Banner key={status} status={status} style={appearance} title={t('design_system.gallery.samples.banner.title')} description={minimal ? undefined : t('design_system.gallery.samples.banner.description')} showIcon={!minimal} onDismiss={minimal ? undefined : () => setDismissed(value => [...value, status])} action={minimal ? undefined : <Button variant=\"link\" className=\"h-auto p-0 text-inherit underline\" onClick={() => setDetails(value => !value)}>{t('design_system.gallery.samples.banner.details')}</Button>} />)}\n {details ? <p className=\"text-sm text-muted-foreground\">{t('design_system.gallery.samples.banner.detailsBody')}</p> : null}\n {dismissed.length ? <Button variant=\"outline\" size=\"sm\" onClick={() => setDismissed([])}>{t('design_system.gallery.samples.banner.restore')}</Button> : null}\n </div>\n}\nfunction bannerExampleCode(appearance: 'filled' | 'light' | 'lighter' | 'stroke', minimal = false) {\n return `import * as React from 'react'\nimport { Banner } from '@open-mercato/ui/primitives/banner'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\nfunction Example() {\n const [dismissed, setDismissed] = React.useState<string[]>([])\n const [details, setDetails] = React.useState(false)\n return <div className=\"w-full space-y-4\">\n {(['error', 'warning', 'success', 'information', 'feature'] as const).filter(status => !dismissed.includes(status)).map(status => (\n <Banner key={status} status={status} style=\"${appearance}\" title=\"Workspace update\"${minimal ? ' showIcon={false}' : ' description=\"Your team can review the latest changes.\" onDismiss={() => setDismissed(value => [...value, status])} action={<Button variant=\"link\" className=\"h-auto p-0 text-inherit underline\" onClick={() => setDetails(value => !value)}>View details</Button>}'} />\n ))}\n {details ? <p className=\"text-sm text-muted-foreground\">This example changes local preview state.</p> : null}\n {dismissed.length ? <Button variant=\"outline\" size=\"sm\" onClick={() => setDismissed([])}>Restore banners</Button> : null}\n </div>\n}`\n}\nconst bannerEntry: GalleryEntry = {\n id: 'banner', title: 'Banner', importPath: '@open-mercato/ui/primitives/banner', figmaNodeId: '224:2249', docsAnchor: '#banner',\n variants: [\n { id: 'filled', title: '5 statuses / Filled', render: () => <BannerExamples appearance=\"filled\" />, code: bannerExampleCode('filled') },\n { id: 'light', title: '5 statuses / Light', render: () => <BannerExamples appearance=\"light\" />, code: bannerExampleCode('light') },\n { id: 'lighter', title: '5 statuses / Lighter', render: () => <BannerExamples appearance=\"lighter\" />, code: bannerExampleCode('lighter') },\n { id: 'stroke', title: '5 statuses / Stroke', render: () => <BannerExamples appearance=\"stroke\" />, code: bannerExampleCode('stroke') },\n { id: 'minimal', title: 'Title only', render: () => <BannerExamples appearance=\"lighter\" minimal />, code: bannerExampleCode('lighter', true) },\n ],\n}\n\nfunction AlertSourceExamples({ size }: { size: 'xs' | 'sm' | 'default' }) {\n const t = useT()\n const [hidden, setHidden] = React.useState<string[]>([])\n const [details, setDetails] = React.useState(false)\n return <div className=\"grid w-full gap-5 lg:grid-cols-2\">{(['filled', 'light', 'lighter', 'stroke'] as const).map(appearance => <div key={appearance} className=\"space-y-3\">\n <p className=\"text-xs text-muted-foreground\">{appearance}</p>\n {bannerStatuses.filter(status => !hidden.includes(`${appearance}-${status}`)).map(status => <Alert className=\"max-w-[390px]\" key={status} status={status} style={appearance} size={size} dismissible onDismiss={() => setHidden(value => [...value, `${appearance}-${status}`])} dismissAriaLabel={t('ui.banner.dismiss', 'Dismiss banner')} action={size === 'default' ? undefined : <Button variant=\"link\" className={size === 'xs' ? 'h-auto p-0 text-xs leading-4 text-inherit underline' : 'h-auto p-0 text-sm leading-5 text-inherit underline'} onClick={() => setDetails(value => !value)}>{t('design_system.gallery.samples.banner.details')}</Button>}\n footer={size === 'default' ? <><Button variant=\"link\" className=\"h-auto p-0 text-inherit underline\" onClick={() => setDetails(value => !value)}>{t('design_system.gallery.samples.banner.details')}</Button><span aria-hidden=\"true\" className=\"opacity-50\">\u2219</span><Button variant=\"link\" className=\"h-auto p-0 text-inherit\" onClick={() => setHidden(value => [...value, `${appearance}-${status}`])}>{t('ui.dialog.close.ariaLabel', 'Close')}</Button></> : undefined}>\n {size === 'default' ? <><AlertTitle>{t('design_system.gallery.samples.banner.title')}</AlertTitle><AlertDescription>{t('design_system.gallery.samples.overlay.description')}</AlertDescription></> : t('design_system.gallery.samples.banner.title')}\n </Alert>)}\n </div>)}\n {details ? <p role=\"status\" className=\"text-sm text-muted-foreground\">{t('design_system.gallery.samples.banner.detailsBody')}</p> : null}\n {hidden.length ? <Button variant=\"outline\" size=\"sm\" onClick={() => setHidden([])}>{t('design_system.gallery.samples.feeds.restore')}</Button> : null}</div>\n}\n\nfunction alertSourceCode(size: 'xs' | 'sm' | 'default') {\n return `import * as React from 'react'\nimport { Alert, AlertTitle, AlertDescription } from '@open-mercato/ui/primitives/alert'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\nfunction Example() {\n const [hidden, setHidden] = React.useState<string[]>([])\n const [details, setDetails] = React.useState(false)\n const statuses = ['error', 'warning', 'success', 'information', 'feature'] as const\n return <div className=\"grid w-full gap-5 lg:grid-cols-2\">\n {(['filled', 'light', 'lighter', 'stroke'] as const).map(appearance => <div key={appearance} className=\"space-y-3\">\n <p className=\"text-xs text-muted-foreground\">{appearance}</p>\n {statuses.filter(status => !hidden.includes(appearance + '-' + status)).map(status => <Alert className=\"max-w-[390px]\" key={status} status={status} style={appearance} size=\"${size}\" dismissible onDismiss={() => setHidden(value => [...value, appearance + '-' + status])}\n ${size === 'default' ? 'footer' : 'action'}={<Button variant=\"link\" className=\"h-auto p-0 ${size === 'xs' ? 'text-xs leading-4' : 'text-sm leading-5'} text-inherit underline\" onClick={() => setDetails(value => !value)}>View details</Button>}>\n ${size === 'default' ? '<AlertTitle>Workspace update</AlertTitle><AlertDescription>Choose how these changes apply to your workspace.</AlertDescription>' : 'Workspace update'}\n </Alert>)}\n </div>)}\n {details ? <p role=\"status\">This example changes local preview state.</p> : null}\n {hidden.length ? <Button size=\"sm\" variant=\"outline\" onClick={() => setHidden([])}>Restore examples</Button> : null}\n </div>\n}`\n}\n\nconst alertEntry: GalleryEntry = {\n id: 'alert',\n figmaNodeId: '169:2399',\n title: 'Alert',\n importPath: '@open-mercato/ui/primitives/alert',\n usage: {\n do: [\n 'Current API only: status (error/warning/success/information/feature) + style (filled/light/lighter/stroke) + size.',\n 'light/lighter for inline page notices; filled for high-emphasis moments.',\n ],\n dont: ['The legacy variant prop is deprecated \u2014 lint flags it.', 'Never build ad-hoc colored notice boxes; this is the primitive for them.'],\n },\n variants: [\n { id: 'source-xs', title: '20 status/style combinations / 32px', render: () => <AlertSourceExamples size=\"xs\" />, code: alertSourceCode('xs') },\n { id: 'source-sm', title: '20 status/style combinations / 36px', render: () => <AlertSourceExamples size=\"sm\" />, code: alertSourceCode('sm') },\n { id: 'source-large', title: '20 status/style combinations / large', render: () => <AlertSourceExamples size=\"default\" />, code: alertSourceCode('default') },\n {\n id: 'statuses-light',\n title: 'Statuses (light)',\n render: () => <AlertFeedbackStatusesLightSample />,\n code: `import { Alert } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"error\" style=\"light\">Payment failed \u2014 the card was declined.</Alert>\n<Alert status=\"warning\" style=\"light\">Inventory sync is running behind schedule.</Alert>\n<Alert status=\"success\" style=\"light\">Order #10231 was fulfilled.</Alert>\n<Alert status=\"information\" style=\"light\">Prices include VAT for EU customers.</Alert>\n<Alert status=\"feature\" style=\"light\">Bulk editing is now available in the catalog.</Alert>`,\n },\n {\n id: 'filled',\n title: 'filled',\n render: () => <AlertFeedbackFilledSample />,\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"error\" style=\"filled\" size=\"default\">\n <AlertTitle>Import failed</AlertTitle>\n <AlertDescription>14 rows were rejected \u2014 download the error report to review them.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'stroke',\n title: 'stroke',\n render: () => <AlertFeedbackStrokeSample />,\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"success\" style=\"stroke\" size=\"default\">\n <AlertTitle>Backup complete</AlertTitle>\n <AlertDescription>The nightly snapshot finished without warnings.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => <AlertFeedbackSizesSample />,\n code: `import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'\n\n<Alert status=\"information\" size=\"xs\">X-Small \u2014 inline form hint.</Alert>\n<Alert status=\"information\" size=\"sm\">Small \u2014 the default single-line alert.</Alert>\n<Alert status=\"information\" size=\"default\">\n <AlertTitle>Large</AlertTitle>\n <AlertDescription>Multi-line alert with a title and a description body.</AlertDescription>\n</Alert>`,\n },\n {\n id: 'dismissible-with-action',\n title: 'Dismissible with action',\n render: () => <AlertFeedbackDismissibleWithActionSample />,\n code: `import { Alert } from '@open-mercato/ui/primitives/alert'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Alert\n status=\"warning\"\n style=\"lighter\"\n dismissible\n onDismiss={() => setVisible(false)}\n action={<LinkButton variant=\"black\" underline=\"always\">Review</LinkButton>}\n>\n 3 products are missing tax categories.\n</Alert>`,\n },\n ],\n}\n\nconst emptyStateEntry: GalleryEntry = {\n id: 'empty-state',\n title: 'EmptyState',\n importPath: '@open-mercato/ui/primitives/empty-state',\n variants: [\n {\n id: 'source-illustration', title: 'Open Mercato',\n render: () => <IllustratedEmptyStateExample />,\n code: `import { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { EmptyStateIllustration } from '@open-mercato/ui/primitives/empty-state-illustration'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nfunction RecordsEmptyState() {\n const t = useT()\n return <EmptyState\n variant=\"subtle\"\n title={t('design_system.gallery.samples.emptyArtwork.records.title')}\n description={t('design_system.gallery.samples.emptyArtwork.records.description')}\n illustration={<EmptyStateIllustration kind=\"mercato-records\" />}\n />\n}`,\n },\n {\n id: 'default',\n title: 'default',\n render: () => <EmptyStateFeedbackDefaultSample />,\n code: `import { EmptyState } from '@open-mercato/ui/primitives/empty-state'\n\n<EmptyState\n title=\"No customers yet\"\n description=\"Create your first customer to start tracking opportunities.\"\n/>`,\n },\n {\n id: 'with-actions',\n title: 'With icon and actions',\n render: () => <EmptyStateFeedbackWithActionsSample />,\n code: `import { Inbox } from 'lucide-react'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<EmptyState\n icon={<Inbox className=\"size-8\" />}\n title=\"No orders found\"\n description=\"Orders will appear here once your storefront starts selling.\"\n actions={<Button size=\"sm\">Create order</Button>}\n/>`,\n },\n {\n id: 'subtle',\n title: 'subtle',\n render: () => <EmptyStateFeedbackSubtleSample />,\n code: `import { Search } from 'lucide-react'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\n\n<EmptyState\n variant=\"subtle\"\n size=\"sm\"\n icon={<Search className=\"size-5\" />}\n title=\"No results\"\n description=\"Try a different search term or clear the filters.\"\n/>`,\n },\n ],\n}\n\nfunction IllustratedEmptyStateExample() {\n const t = useT()\n return <EmptyState\n variant=\"subtle\"\n title={t('design_system.gallery.samples.emptyArtwork.records.title')}\n description={t('design_system.gallery.samples.emptyArtwork.records.description')}\n illustration={<EmptyStateIllustration kind=\"mercato-records\" />}\n />\n}\n\nconst emptyArtworkSubjects = ['records', 'search', 'files', 'messages'] as const\n\nfunction EmptyIllustrationsExample() {\n const t = useT()\n return <div className=\"grid w-full grid-cols-1 gap-6 lg:grid-cols-2\">\n {emptyArtworkSubjects.map(subject => <EmptyState\n key={subject}\n variant=\"subtle\"\n className=\"min-w-0 border border-border bg-background\"\n title={t(`design_system.gallery.samples.emptyArtwork.${subject}.title`)}\n description={t(`design_system.gallery.samples.emptyArtwork.${subject}.description`)}\n illustration={<EmptyStateIllustration kind={`mercato-${subject}`} />}\n />)}\n </div>\n}\n\nconst emptyStateIllustrationEntry: GalleryEntry = {\n id: 'empty-state-illustration',\n title: 'EmptyStateIllustration',\n importPath: '@open-mercato/ui/primitives/empty-state-illustration',\n variants: [\n {\n id: 'mercato',\n title: 'Open Mercato',\n render: () => <EmptyIllustrationsExample />,\n code: `import { EmptyStateIllustration } from '@open-mercato/ui/primitives/empty-state-illustration'\nimport { EmptyState } from '@open-mercato/ui/primitives/empty-state'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst subjects = ['records', 'search', 'files', 'messages'] as const\n\nfunction EmptyStateCollection() {\n const t = useT()\n return <div className=\"grid w-full grid-cols-1 gap-6 lg:grid-cols-2\">\n {subjects.map(subject => <EmptyState\n key={subject}\n variant=\"subtle\"\n className=\"min-w-0 border border-border bg-background\"\n title={t(\\`design_system.gallery.samples.emptyArtwork.\\${subject}.title\\`)}\n description={t(\\`design_system.gallery.samples.emptyArtwork.\\${subject}.description\\`)}\n illustration={<EmptyStateIllustration kind={\\`mercato-\\${subject}\\`} />}\n />)}\n </div>\n}`,\n },\n ],\n}\n\nconst skeletonEntry: GalleryEntry = {\n id: 'skeleton',\n title: 'Skeleton',\n importPath: '@open-mercato/ui/primitives/skeleton',\n variants: [\n {\n id: 'shapes',\n title: 'Shapes',\n render: () => (\n <div className=\"flex w-full max-w-md items-center gap-4\">\n <Skeleton shape=\"circle\" className=\"size-10\" />\n <Skeleton className=\"h-8 w-24\" />\n <Skeleton className=\"h-8 flex-1\" />\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<Skeleton shape=\"circle\" className=\"size-10\" />\n<Skeleton className=\"h-8 w-24\" />\n<Skeleton className=\"h-8 flex-1\" />`,\n },\n {\n id: 'text-lines',\n title: 'Text lines',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Skeleton shape=\"text\" lines={3} />\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<Skeleton shape=\"text\" lines={3} />`,\n },\n {\n id: 'card-placeholder',\n title: 'Card placeholder',\n render: () => (\n <div className=\"flex w-full max-w-md items-start gap-3 rounded-lg border border-border p-4\">\n <Skeleton shape=\"circle\" className=\"size-12\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton shape=\"text\" lines={2} />\n </div>\n </div>\n ),\n code: `import { Skeleton } from '@open-mercato/ui/primitives/skeleton'\n\n<div className=\"flex items-start gap-3 rounded-lg border border-border p-4\">\n <Skeleton shape=\"circle\" className=\"size-12\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton shape=\"text\" lines={2} />\n </div>\n</div>`,\n },\n ],\n}\n\nfunction CircularSourceDemo() {\n const t = useT()\n return (\n <div className=\"flex w-full flex-col gap-6\">\n {([48, 56, 64, 72, 80] as const).map((size) => (\n <div key={size} className=\"flex flex-wrap items-center gap-4\">\n <span className=\"w-12 text-xs text-muted-foreground\">{size}px</span>\n {[0, 25, 50, 75, 100].map((value) => (\n <CircularProgress key={value} value={value} size={size} showValue={size !== 48} ariaLabel={t('design_system.gallery.examples.navigation.progress')} />\n ))}\n </div>\n ))}\n <p className=\"text-sm text-muted-foreground\">{t('design_system.gallery.examples.navigation.circularHint')}</p>\n </div>\n )\n}\n\nfunction ProgressLabelDemo() {\n const t = useT()\n const label = t('design_system.gallery.examples.controls.storage')\n return <div className=\"flex w-full max-w-md flex-col gap-6\">\n <Progress value={80} size=\"md\" label={label} aria-label={label} showValue description={t('design_system.gallery.examples.controls.storageHint')} />\n <Progress value={80} size=\"md\" label={label} aria-label={label} showValue />\n <Progress value={80} size=\"md\" aria-label={label} showValue valuePlacement=\"right\" />\n </div>\n}\n\nfunction ProgressEndpointDemo() {\n const t = useT()\n return <div className=\"flex w-full max-w-md flex-col gap-4\">\n {[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100].map(value => <Progress key={value} value={value} size=\"md\" showValue valuePlacement=\"right\" aria-label={t('design_system.gallery.examples.controls.storage')} />)}\n </div>\n}\n\nconst progressEntry: GalleryEntry = {\n id: 'progress',\n title: 'Progress',\n figmaNodeId: '450:17821',\n importPath: '@open-mercato/ui/primitives/progress',\n variants: [\n {\n id: 'basic',\n title: 'Basic',\n render: () => (\n <div className=\"w-full max-w-md\">\n <Progress value={50} />\n </div>\n ),\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress value={50} />`,\n },\n {\n id: 'labelled',\n title: 'Labelled',\n render: () => <ProgressFeedbackLabelledSample />,\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress\n value={80}\n label=\"Data storage\"\n showValue\n description=\"Upgrade to unlock unlimited storage.\"\n/>`,\n },\n {\n id: 'tones',\n title: 'Tones',\n render: () => (\n <div className=\"flex w-full max-w-md flex-col gap-3\">\n <Progress value={42} tone=\"accent\" />\n <Progress value={42} tone=\"success\" />\n <Progress value={42} tone=\"warning\" />\n <Progress value={42} tone=\"destructive\" />\n <Progress value={42} tone=\"muted\" />\n </div>\n ),\n code: `import { Progress } from '@open-mercato/ui/primitives/progress'\n\n<Progress value={42} tone=\"accent\" />\n<Progress value={42} tone=\"success\" />\n<Progress value={42} tone=\"warning\" />\n<Progress value={42} tone=\"destructive\" />\n<Progress value={42} tone=\"muted\" />`,\n },\n {\n id: 'circular',\n title: 'CircularProgress',\n render: () => (\n <>\n <CircularProgress value={75} size=\"lg\" showValue />\n <CircularProgress value={75} size=\"default\" showValue />\n <CircularProgress value={75} size=\"sm\" />\n <CircularProgress value={75} size=\"xs\" />\n <CircularProgress value={100} tone=\"success\" showValue />\n </>\n ),\n code: `import { CircularProgress } from '@open-mercato/ui/primitives/progress'\n\n<CircularProgress value={75} size=\"lg\" showValue />\n<CircularProgress value={75} size=\"default\" showValue />\n<CircularProgress value={75} size=\"sm\" />\n<CircularProgress value={75} size=\"xs\" />\n<CircularProgress value={100} tone=\"success\" showValue />`,\n },\n {\n id: 'circular-source-sizes',\n title: 'Circular source sizes \u00B7 25 states',\n render: () => <CircularSourceDemo />,\n code: `import { CircularProgress } from '@open-mercato/ui/primitives/progress'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\n\n{([48, 56, 64, 72, 80] as const).map((size) => (\n <div key={size} className=\"flex flex-wrap items-center gap-4\">\n <span>{size}px</span>\n {[0, 25, 50, 75, 100].map((value) => (\n <CircularProgress key={value} value={value} size={size} showValue={size !== 48} ariaLabel={t('design_system.gallery.examples.navigation.progress')} />\n ))}\n </div>\n))}`,\n },\n {\n id: 'label-positions',\n title: 'Label positions \u00B7 top / description / right',\n render: () => <ProgressLabelDemo />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Progress } from '@open-mercato/ui/primitives/progress'\n\nfunction ProgressLabelDemo() {\n const t = useT()\n const label = t('design_system.gallery.examples.controls.storage')\n return <div className=\"flex w-full max-w-md flex-col gap-6\">\n <Progress value={80} size=\"md\" label={label} aria-label={label} showValue description={t('design_system.gallery.examples.controls.storageHint')} />\n <Progress value={80} size=\"md\" label={label} aria-label={label} showValue />\n <Progress value={80} size=\"md\" aria-label={label} showValue valuePlacement=\"right\" />\n </div>\n}\n\n\n<ProgressLabelDemo />`,\n },\n {\n id: 'endpoints',\n title: 'Linear values \u00B7 0 to 100',\n render: () => <ProgressEndpointDemo />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Progress } from '@open-mercato/ui/primitives/progress'\n\nfunction ProgressEndpointDemo() {\n const t = useT()\n return <div className=\"flex w-full max-w-md flex-col gap-4\">\n {[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100].map(value => <Progress key={value} value={value} size=\"md\" showValue valuePlacement=\"right\" aria-label={t('design_system.gallery.examples.controls.storage')} />)}\n </div>\n}\n\n<ProgressEndpointDemo />`,\n },\n ],\n}\n\nconst spinnerEntry: GalleryEntry = {\n id: 'spinner',\n title: 'Spinner',\n importPath: '@open-mercato/ui/primitives/spinner',\n variants: [\n {\n id: 'sizes',\n title: 'Sizes',\n render: () => (\n <>\n <Spinner size=\"sm\" />\n <Spinner size=\"md\" />\n <Spinner size=\"lg\" />\n </>\n ),\n code: `import { Spinner } from '@open-mercato/ui/primitives/spinner'\n\n<Spinner size=\"sm\" />\n<Spinner size=\"md\" />\n<Spinner size=\"lg\" />`,\n },\n {\n id: 'inline-with-label',\n title: 'Inline with label',\n render: () => <SpinnerFeedbackInlineWithLabelSample />,\n code: `import { Spinner } from '@open-mercato/ui/primitives/spinner'\n\n<span className=\"inline-flex items-center gap-2 text-sm text-muted-foreground\">\n <Spinner size=\"sm\" />\n Loading orders\u2026\n</span>`,\n },\n ],\n}\n\nfunction InteractiveRatingDemo({ allowHalf = false }: { allowHalf?: boolean }) {\n const t = useT()\n const [value, setValue] = React.useState(3)\n return <Rating value={value} onChange={setValue} allowHalf={allowHalf} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\nconst ratingEntry: GalleryEntry = {\n id: 'rating',\n title: 'Rating',\n importPath: '@open-mercato/ui/primitives/rating',\n figmaNodeId: '532:4340',\n variants: [\n {\n id: 'read-only',\n title: 'Read-only',\n render: () => <Rating value={4} max={5} />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={4} max={5} />`,\n },\n {\n id: 'half-precision',\n title: 'Half precision',\n render: () => <Rating value={3.5} max={5} allowHalf />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={3.5} max={5} allowHalf />`,\n },\n {\n id: 'interactive',\n title: 'Interactive',\n render: () => <InteractiveRatingDemo />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(3)\n\n<Rating value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'half-heart',\n title: 'Heart / half precision',\n render: () => <Rating value={3.5} icon=\"heart\" allowHalf />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={3.5} icon=\"heart\" allowHalf />`,\n },\n {\n id: 'interactive-half',\n title: 'Interactive / half precision',\n render: () => <InteractiveRatingDemo allowHalf />,\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(3)\n\n<Rating value={value} onChange={setValue} allowHalf aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'icons-and-sizes',\n title: 'Icons and sizes',\n render: () => (\n <>\n <Rating value={3} max={5} icon=\"heart\" />\n <Rating value={3} max={5} icon=\"circle\" size=\"sm\" />\n <Rating value={3} max={5} size=\"lg\" />\n </>\n ),\n code: `import { Rating } from '@open-mercato/ui/primitives/rating'\n\n<Rating value={3} max={5} icon=\"heart\" />\n<Rating value={3} max={5} icon=\"circle\" size=\"sm\" />\n<Rating value={3} max={5} size=\"lg\" />`,\n },\n {\n id: 'cell-star-default', title: 'Cell / star / default and live hover',\n render: () => <RatingCellDemo icon=\"star\" initialValue={0} />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellExample() {\n const t = useT()\n const [value, setValue] = React.useState(0)\n return <Rating appearance=\"cell\" icon=\"star\" value={value} onChange={setValue} max={1} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellExample />`,\n },\n {\n id: 'cell-star-selected', title: 'Cell / star / selected and live hover',\n render: () => <RatingCellDemo icon=\"star\" initialValue={1} />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellExample() {\n const t = useT()\n const [value, setValue] = React.useState(1)\n return <Rating appearance=\"cell\" icon=\"star\" value={value} onChange={setValue} max={1} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellExample />`,\n },\n {\n id: 'cell-heart-default', title: 'Cell / heart / default and live hover',\n render: () => <RatingCellDemo icon=\"heart\" initialValue={0} />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellExample() {\n const t = useT()\n const [value, setValue] = React.useState(0)\n return <Rating appearance=\"cell\" icon=\"heart\" value={value} onChange={setValue} max={1} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellExample />`,\n },\n {\n id: 'cell-heart-selected', title: 'Cell / heart / selected and live hover',\n render: () => <RatingCellDemo icon=\"heart\" initialValue={1} />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellExample() {\n const t = useT()\n const [value, setValue] = React.useState(1)\n return <Rating appearance=\"cell\" icon=\"heart\" value={value} onChange={setValue} max={1} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellExample />`,\n },\n {\n id: 'cells-interactive', title: 'Cells / keyboard selection',\n render: () => <RatingCellDemo icon=\"star\" initialValue={3} max={5} />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellsExample() {\n const t = useT()\n const [value, setValue] = React.useState(3)\n return <Rating appearance=\"cell\" value={value} onChange={setValue} max={5} aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellsExample />`,\n },\n {\n id: 'cells-disabled', title: 'Cells / disabled',\n render: () => <RatingCellDemo icon=\"star\" initialValue={3} max={5} disabled />,\n code: `import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\n\nfunction RatingCellsExample() {\n const t = useT()\n const [value, setValue] = React.useState(3)\n return <Rating appearance=\"cell\" value={value} onChange={setValue} max={5} disabled aria-label={t('design_system.gallery.samples.rating.label')} />\n}\n\n<RatingCellsExample />`,\n },\n {\n id: 'review-star-vertical', title: 'Review / star / vertical',\n render: () => <RatingReviewDemo icon=\"star\" alignment=\"vertical\" />,\n code: `import * as React from 'react'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { useLocale, useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { ScrollArea } from '@open-mercato/ui/primitives/scroll-area'\nimport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@open-mercato/ui/primitives/dialog'\n\nfunction RatingReviewExample({ icon, alignment }: { icon: 'star' | 'heart'; alignment: 'vertical' | 'horizontal' }) {\n const t = useT()\n const locale = useLocale()\n const [open, setOpen] = React.useState(false)\n const value = new Intl.NumberFormat(locale).format(4.5)\n const count = new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }).format(5200)\n const summary = t('design_system.gallery.samples.rating.summary', '{value} \u2219 {count} Ratings', { value, count })\n const reviews = t('design_system.gallery.samples.rating.reviews', '{count} reviews', { count: 18 })\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <div data-slot=\"rating-review\" data-alignment={alignment} className={cn('inline-flex max-w-full items-start gap-2', alignment === 'vertical' ? 'flex-col' : 'flex-wrap')}>\n <Rating value={4.5} allowHalf icon={icon} />\n <div className=\"flex flex-wrap items-start gap-1 text-sm leading-5\">\n <span>{summary}</span>\n <LinkButton asChild variant=\"gray\" underline=\"always\"><DialogTrigger>{reviews}</DialogTrigger></LinkButton>\n </div>\n </div>\n <DialogContent onKeyDownCapture={event => { if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) { event.preventDefault(); setOpen(false) } }}>\n <DialogHeader><DialogTitle>{reviews}</DialogTitle><DialogDescription>{summary}</DialogDescription></DialogHeader>\n <ScrollArea className=\"h-72\" scrollbarSize=\"md\">\n <ol className=\"flex flex-col gap-3 pr-6\">\n {Array.from({ length: 18 }, (_, index) => <li key={index} className=\"flex items-center justify-between gap-3 text-sm\"><span>{t('design_system.gallery.samples.rating.reviewNumber', 'Review {number}', { number: index + 1 })}</span><Rating value={index < 9 ? 5 : 4} icon={icon} /></li>)}\n </ol>\n </ScrollArea>\n <DialogFooter><Button asChild variant=\"outline\"><DialogClose>{t('common.close')}</DialogClose></Button></DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n<RatingReviewExample icon=\"star\" alignment=\"vertical\" />`,\n },\n {\n id: 'review-star-horizontal', title: 'Review / star / horizontal',\n render: () => <RatingReviewDemo icon=\"star\" alignment=\"horizontal\" />,\n code: `import * as React from 'react'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { useLocale, useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { ScrollArea } from '@open-mercato/ui/primitives/scroll-area'\nimport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@open-mercato/ui/primitives/dialog'\n\nfunction RatingReviewExample({ icon, alignment }: { icon: 'star' | 'heart'; alignment: 'vertical' | 'horizontal' }) {\n const t = useT()\n const locale = useLocale()\n const [open, setOpen] = React.useState(false)\n const value = new Intl.NumberFormat(locale).format(4.5)\n const count = new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }).format(5200)\n const summary = t('design_system.gallery.samples.rating.summary', '{value} \u2219 {count} Ratings', { value, count })\n const reviews = t('design_system.gallery.samples.rating.reviews', '{count} reviews', { count: 18 })\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <div data-slot=\"rating-review\" data-alignment={alignment} className={cn('inline-flex max-w-full items-start gap-2', alignment === 'vertical' ? 'flex-col' : 'flex-wrap')}>\n <Rating value={4.5} allowHalf icon={icon} />\n <div className=\"flex flex-wrap items-start gap-1 text-sm leading-5\">\n <span>{summary}</span>\n <LinkButton asChild variant=\"gray\" underline=\"always\"><DialogTrigger>{reviews}</DialogTrigger></LinkButton>\n </div>\n </div>\n <DialogContent onKeyDownCapture={event => { if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) { event.preventDefault(); setOpen(false) } }}>\n <DialogHeader><DialogTitle>{reviews}</DialogTitle><DialogDescription>{summary}</DialogDescription></DialogHeader>\n <ScrollArea className=\"h-72\" scrollbarSize=\"md\">\n <ol className=\"flex flex-col gap-3 pr-6\">\n {Array.from({ length: 18 }, (_, index) => <li key={index} className=\"flex items-center justify-between gap-3 text-sm\"><span>{t('design_system.gallery.samples.rating.reviewNumber', 'Review {number}', { number: index + 1 })}</span><Rating value={index < 9 ? 5 : 4} icon={icon} /></li>)}\n </ol>\n </ScrollArea>\n <DialogFooter><Button asChild variant=\"outline\"><DialogClose>{t('common.close')}</DialogClose></Button></DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n<RatingReviewExample icon=\"star\" alignment=\"horizontal\" />`,\n },\n {\n id: 'review-heart-vertical', title: 'Review / heart / vertical',\n render: () => <RatingReviewDemo icon=\"heart\" alignment=\"vertical\" />,\n code: `import * as React from 'react'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { useLocale, useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { ScrollArea } from '@open-mercato/ui/primitives/scroll-area'\nimport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@open-mercato/ui/primitives/dialog'\n\nfunction RatingReviewExample({ icon, alignment }: { icon: 'star' | 'heart'; alignment: 'vertical' | 'horizontal' }) {\n const t = useT()\n const locale = useLocale()\n const [open, setOpen] = React.useState(false)\n const value = new Intl.NumberFormat(locale).format(4.5)\n const count = new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }).format(5200)\n const summary = t('design_system.gallery.samples.rating.summary', '{value} \u2219 {count} Ratings', { value, count })\n const reviews = t('design_system.gallery.samples.rating.reviews', '{count} reviews', { count: 18 })\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <div data-slot=\"rating-review\" data-alignment={alignment} className={cn('inline-flex max-w-full items-start gap-2', alignment === 'vertical' ? 'flex-col' : 'flex-wrap')}>\n <Rating value={4.5} allowHalf icon={icon} />\n <div className=\"flex flex-wrap items-start gap-1 text-sm leading-5\">\n <span>{summary}</span>\n <LinkButton asChild variant=\"gray\" underline=\"always\"><DialogTrigger>{reviews}</DialogTrigger></LinkButton>\n </div>\n </div>\n <DialogContent onKeyDownCapture={event => { if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) { event.preventDefault(); setOpen(false) } }}>\n <DialogHeader><DialogTitle>{reviews}</DialogTitle><DialogDescription>{summary}</DialogDescription></DialogHeader>\n <ScrollArea className=\"h-72\" scrollbarSize=\"md\">\n <ol className=\"flex flex-col gap-3 pr-6\">\n {Array.from({ length: 18 }, (_, index) => <li key={index} className=\"flex items-center justify-between gap-3 text-sm\"><span>{t('design_system.gallery.samples.rating.reviewNumber', 'Review {number}', { number: index + 1 })}</span><Rating value={index < 9 ? 5 : 4} icon={icon} /></li>)}\n </ol>\n </ScrollArea>\n <DialogFooter><Button asChild variant=\"outline\"><DialogClose>{t('common.close')}</DialogClose></Button></DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n<RatingReviewExample icon=\"heart\" alignment=\"vertical\" />`,\n },\n {\n id: 'review-heart-horizontal', title: 'Review / heart / horizontal',\n render: () => <RatingReviewDemo icon=\"heart\" alignment=\"horizontal\" />,\n code: `import * as React from 'react'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { useLocale, useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Rating } from '@open-mercato/ui/primitives/rating'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { ScrollArea } from '@open-mercato/ui/primitives/scroll-area'\nimport { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@open-mercato/ui/primitives/dialog'\n\nfunction RatingReviewExample({ icon, alignment }: { icon: 'star' | 'heart'; alignment: 'vertical' | 'horizontal' }) {\n const t = useT()\n const locale = useLocale()\n const [open, setOpen] = React.useState(false)\n const value = new Intl.NumberFormat(locale).format(4.5)\n const count = new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }).format(5200)\n const summary = t('design_system.gallery.samples.rating.summary', '{value} \u2219 {count} Ratings', { value, count })\n const reviews = t('design_system.gallery.samples.rating.reviews', '{count} reviews', { count: 18 })\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <div data-slot=\"rating-review\" data-alignment={alignment} className={cn('inline-flex max-w-full items-start gap-2', alignment === 'vertical' ? 'flex-col' : 'flex-wrap')}>\n <Rating value={4.5} allowHalf icon={icon} />\n <div className=\"flex flex-wrap items-start gap-1 text-sm leading-5\">\n <span>{summary}</span>\n <LinkButton asChild variant=\"gray\" underline=\"always\"><DialogTrigger>{reviews}</DialogTrigger></LinkButton>\n </div>\n </div>\n <DialogContent onKeyDownCapture={event => { if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) { event.preventDefault(); setOpen(false) } }}>\n <DialogHeader><DialogTitle>{reviews}</DialogTitle><DialogDescription>{summary}</DialogDescription></DialogHeader>\n <ScrollArea className=\"h-72\" scrollbarSize=\"md\">\n <ol className=\"flex flex-col gap-3 pr-6\">\n {Array.from({ length: 18 }, (_, index) => <li key={index} className=\"flex items-center justify-between gap-3 text-sm\"><span>{t('design_system.gallery.samples.rating.reviewNumber', 'Review {number}', { number: index + 1 })}</span><Rating value={index < 9 ? 5 : 4} icon={icon} /></li>)}\n </ol>\n </ScrollArea>\n <DialogFooter><Button asChild variant=\"outline\"><DialogClose>{t('common.close')}</DialogClose></Button></DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n<RatingReviewExample icon=\"heart\" alignment=\"horizontal\" />`,\n },\n ],\n}\n\nfunction RatingBarDemo({ variant = 'emoji', initialValue = 0, disabled = false, feedback = false }: { variant?: RatingBarProps['variant']; initialValue?: number; disabled?: boolean; feedback?: boolean }) {\n const t = useT()\n const [value, setValue] = React.useState(initialValue)\n const bar = <RatingBar variant={variant} value={value} onChange={setValue} disabled={disabled} aria-label={t('design_system.gallery.samples.rating.label')} className={feedback ? 'w-full border-0 border-b' : undefined} />\n return feedback ? (\n <div className=\"w-80 max-w-full overflow-hidden rounded-xl border border-border bg-background focus-within:shadow-focus\">\n {bar}\n <Textarea aria-label={t('design_system.gallery.samples.rating.feedback')} placeholder={t('design_system.gallery.samples.rating.feedback')} disabled={disabled} className=\"min-h-24 resize-none rounded-none border-0 p-3 shadow-none focus-visible:shadow-none\" />\n </div>\n ) : bar\n}\n\nconst ratingBarEntry: GalleryEntry = {\n id: 'rating-bar',\n title: 'RatingBar',\n importPath: '@open-mercato/ui/primitives/rating-bar',\n figmaNodeId: '535:4658',\n usage: {\n do: ['Use the five-part feedback scale with a translated group label.', 'The feedback-area composition joins the scale to a Textarea and keeps both controls independently accessible.'],\n dont: ['Do not use this feedback scale for unrelated actions; use ButtonGroup for actions.'],\n },\n variants: [\n {\n id: 'emoji',\n title: 'emoji / unselected',\n render: () => <RatingBarDemo variant=\"emoji\" />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(0)\n\n<RatingBar variant=\"emoji\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'emoji-selected',\n title: 'emoji / selected',\n render: () => <RatingBarDemo variant=\"emoji\" initialValue={4} />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(4)\n\n<RatingBar variant=\"emoji\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'number',\n title: 'number / unselected',\n render: () => <RatingBarDemo variant=\"number\" />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(0)\n\n<RatingBar variant=\"number\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'number-selected',\n title: 'number / selected',\n render: () => <RatingBarDemo variant=\"number\" initialValue={4} />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(4)\n\n<RatingBar variant=\"number\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'star',\n title: 'star / unselected',\n render: () => <RatingBarDemo variant=\"star\" />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(0)\n\n<RatingBar variant=\"star\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'star-selected',\n title: 'star / selected',\n render: () => <RatingBarDemo variant=\"star\" initialValue={4} />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(4)\n\n<RatingBar variant=\"star\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'heart',\n title: 'heart / unselected',\n render: () => <RatingBarDemo variant=\"heart\" />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(0)\n\n<RatingBar variant=\"heart\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'heart-selected',\n title: 'heart / selected',\n render: () => <RatingBarDemo variant=\"heart\" initialValue={4} />,\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(4)\n\n<RatingBar variant=\"heart\" value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} />`,\n },\n {\n id: 'feedback-area',\n title: 'Feedback area / all types',\n render: () => (\n <div className=\"flex w-full flex-wrap gap-6\">\n <RatingBarDemo variant=\"emoji\" feedback />\n <RatingBarDemo variant=\"number\" feedback />\n <RatingBarDemo variant=\"star\" feedback />\n <RatingBarDemo variant=\"heart\" feedback />\n </div>\n ),\n code: `import { RatingBar, type RatingBarProps } from '@open-mercato/ui/primitives/rating-bar'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nfunction RatingFeedback({ variant }: { variant: RatingBarProps['variant'] }) {\n const t = useT()\n const [value, setValue] = React.useState(0)\n return (\n <div className=\"w-80 max-w-full overflow-hidden rounded-xl border border-border bg-background focus-within:shadow-focus\">\n <RatingBar variant={variant} value={value} onChange={setValue} aria-label={t('design_system.gallery.samples.rating.label')} className=\"w-full border-0 border-b\" />\n <Textarea aria-label={t('design_system.gallery.samples.rating.feedback')} placeholder={t('design_system.gallery.samples.rating.feedback')} className=\"min-h-24 resize-none rounded-none border-0 p-3 shadow-none focus-visible:shadow-none\" />\n </div>\n )\n}\n\n<div className=\"flex w-full flex-wrap gap-6\">\n <RatingFeedback variant=\"emoji\" />\n <RatingFeedback variant=\"number\" />\n <RatingFeedback variant=\"star\" />\n <RatingFeedback variant=\"heart\" />\n</div>`,\n },\n {\n id: 'disabled',\n title: 'Disabled / all types',\n render: () => (\n <div className=\"flex w-full flex-wrap gap-6\">\n <RatingBarDemo variant=\"emoji\" initialValue={4} disabled />\n <RatingBarDemo variant=\"number\" initialValue={4} disabled />\n <RatingBarDemo variant=\"star\" initialValue={4} disabled />\n <RatingBarDemo variant=\"heart\" initialValue={4} disabled />\n </div>\n ),\n code: `import { RatingBar } from '@open-mercato/ui/primitives/rating-bar'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\nconst [value, setValue] = React.useState(4)\n\n<div className=\"flex w-full flex-wrap gap-6\">\n <RatingBar variant=\"emoji\" value={value} onChange={setValue} disabled aria-label={t('design_system.gallery.samples.rating.label')} />\n <RatingBar variant=\"number\" value={value} onChange={setValue} disabled aria-label={t('design_system.gallery.samples.rating.label')} />\n <RatingBar variant=\"star\" value={value} onChange={setValue} disabled aria-label={t('design_system.gallery.samples.rating.label')} />\n <RatingBar variant=\"heart\" value={value} onChange={setValue} disabled aria-label={t('design_system.gallery.samples.rating.label')} />\n</div>`,\n },\n ],\n}\n\nconst wizardSteps: StepIndicatorStep[] = [\n { id: 'account', label: 'Account', status: 'complete' },\n { id: 'profile', label: 'Profile', status: 'current' },\n { id: 'review', label: 'Review', status: 'pending' },\n]\n\nconst verticalSteps: StepIndicatorStep[] = [\n { id: 'details', label: 'Store details', description: 'Name, currency, region', status: 'complete' },\n { id: 'payments', label: 'Payments', description: 'Connect a payment provider', status: 'current' },\n { id: 'shipping', label: 'Shipping', description: 'Zones and carriers', status: 'pending' },\n]\n\nconst errorSteps: StepIndicatorStep[] = [\n { id: 'upload', label: 'Upload file', status: 'complete' },\n { id: 'validate', label: 'Validation', status: 'error' },\n { id: 'import', label: 'Import', status: 'pending' },\n]\n\nfunction StepQuantityDemo({ orientation }: { orientation: 'horizontal' | 'vertical' }) {\n const t = useT()\n return (\n <div className={orientation === 'vertical' ? 'grid w-full gap-6 md:grid-cols-3' : 'flex w-full flex-col gap-6 overflow-x-auto'}>\n {[3, 4, 5].map((count) => (\n <StepIndicator key={count} showNumbers orientation={orientation} steps={Array.from({ length: count }, (_, index) => ({\n id: String(index),\n label: t('design_system.gallery.examples.navigation.step', { step: index + 1 }),\n status: index === 0 ? 'complete' : index === 1 ? 'current' : 'pending',\n }))} />\n ))}\n </div>\n )\n}\n\nfunction StepInteractiveDemo() {\n const t = useT()\n const [activeStep, setActiveStep] = React.useState(1)\n const steps: StepIndicatorStep[] = Array.from({ length: 5 }, (_, index) => ({\n id: String(index),\n label: t('design_system.gallery.examples.navigation.step', { step: index + 1 }),\n status: index < activeStep ? 'complete' : index === activeStep ? 'current' : 'pending',\n }))\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"overflow-x-auto p-1\"><StepIndicator steps={steps} showNumbers onStepClick={(id) => setActiveStep(Number(id))} /></div>\n <StepperDots count={5} activeStep={activeStep} aria-label={t('design_system.gallery.examples.navigation.progress')} />\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" disabled={activeStep === 0} onClick={() => setActiveStep((value) => value - 1)}>{t('design_system.gallery.examples.navigation.previous')}</Button>\n <Button variant=\"outline\" size=\"sm\" disabled={activeStep === 4} onClick={() => setActiveStep((value) => value + 1)}>{t('design_system.gallery.examples.navigation.next')}</Button>\n </div>\n </div>\n )\n}\n\nfunction StepperDotsDemo() {\n const t = useT()\n return (\n <div className=\"flex flex-wrap gap-8\">\n {(['sm', 'xs'] as const).map((size) => (\n <div key={size} className=\"flex flex-col gap-4\">\n <span className=\"text-xs text-muted-foreground\">{size}</span>\n {[0, 1, 2].map((activeStep) => <StepperDots key={activeStep} count={3} activeStep={activeStep} size={size} aria-label={t('design_system.gallery.examples.navigation.progress')} />)}\n </div>\n ))}\n </div>\n )\n}\n\nconst stepIndicatorEntry: GalleryEntry = {\n id: 'step-indicator',\n title: 'StepIndicator',\n figmaNodeId: '3507:28',\n importPath: '@open-mercato/ui/primitives/step-indicator',\n variants: [\n {\n id: 'horizontal',\n title: 'Horizontal',\n render: () => <StepIndicator steps={wizardSteps} />,\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'account', label: 'Account', status: 'complete' },\n { id: 'profile', label: 'Profile', status: 'current' },\n { id: 'review', label: 'Review', status: 'pending' },\n]\n\n<StepIndicator steps={steps} />`,\n },\n {\n id: 'vertical',\n title: 'Vertical with descriptions',\n render: () => (\n <div className=\"w-full max-w-xs\">\n <StepIndicator steps={verticalSteps} orientation=\"vertical\" />\n </div>\n ),\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'details', label: 'Store details', description: 'Name, currency, region', status: 'complete' },\n { id: 'payments', label: 'Payments', description: 'Connect a payment provider', status: 'current' },\n { id: 'shipping', label: 'Shipping', description: 'Zones and carriers', status: 'pending' },\n]\n\n<StepIndicator steps={steps} orientation=\"vertical\" />`,\n },\n {\n id: 'error-state',\n title: 'Error state',\n render: () => <StepIndicator steps={errorSteps} />,\n code: `import { StepIndicator, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\n\nconst steps: StepIndicatorStep[] = [\n { id: 'upload', label: 'Upload file', status: 'complete' },\n { id: 'validate', label: 'Validation', status: 'error' },\n { id: 'import', label: 'Import', status: 'pending' },\n]\n\n<StepIndicator steps={steps} />`,\n },\n {\n id: 'horizontal-quantities',\n title: 'horizontal \u00B7 3, 4, 5 steps',\n render: () => <StepQuantityDemo orientation=\"horizontal\" />,\n code: `import { StepIndicator } from '@open-mercato/ui/primitives/step-indicator'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\n\n{[3, 4, 5].map((count) => (\n <StepIndicator key={count} showNumbers orientation=\"horizontal\" steps={Array.from({ length: count }, (_, index) => ({\n id: String(index),\n label: t('design_system.gallery.examples.navigation.step', { step: index + 1 }),\n status: index === 0 ? 'complete' : index === 1 ? 'current' : 'pending',\n }))} />\n))}`,\n },\n {\n id: 'vertical-quantities',\n title: 'vertical \u00B7 3, 4, 5 steps',\n render: () => <StepQuantityDemo orientation=\"vertical\" />,\n code: `import { StepIndicator } from '@open-mercato/ui/primitives/step-indicator'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nconst t = useT()\n\n{[3, 4, 5].map((count) => (\n <StepIndicator key={count} showNumbers orientation=\"vertical\" steps={Array.from({ length: count }, (_, index) => ({\n id: String(index),\n label: t('design_system.gallery.examples.navigation.step', { step: index + 1 }),\n status: index === 0 ? 'complete' : index === 1 ? 'current' : 'pending',\n }))} />\n))}`,\n },\n {\n id: 'interactive',\n title: 'Interactive steps and dots',\n render: () => <StepInteractiveDemo />,\n code: `import * as React from 'react'\nimport { StepIndicator, StepperDots, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nfunction StepInteractiveDemo() {\n const t = useT()\n const [activeStep, setActiveStep] = React.useState(1)\n const steps: StepIndicatorStep[] = Array.from({ length: 5 }, (_, index) => ({\n id: String(index),\n label: t('design_system.gallery.examples.navigation.step', { step: index + 1 }),\n status: index < activeStep ? 'complete' : index === activeStep ? 'current' : 'pending',\n }))\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"overflow-x-auto p-1\"><StepIndicator steps={steps} showNumbers onStepClick={(id) => setActiveStep(Number(id))} /></div>\n <StepperDots count={5} activeStep={activeStep} aria-label={t('design_system.gallery.examples.navigation.progress')} />\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" disabled={activeStep === 0} onClick={() => setActiveStep((value) => value - 1)}>{t('design_system.gallery.examples.navigation.previous')}</Button>\n <Button variant=\"outline\" size=\"sm\" disabled={activeStep === 4} onClick={() => setActiveStep((value) => value + 1)}>{t('design_system.gallery.examples.navigation.next')}</Button>\n </div>\n </div>\n )\n}\n\n<StepInteractiveDemo />`,\n },\n {\n id: 'dots',\n title: 'StepperDots \u00B7 6 states',\n render: () => <StepperDotsDemo />,\n code: `import * as React from 'react'\nimport { StepIndicator, StepperDots, type StepIndicatorStep } from '@open-mercato/ui/primitives/step-indicator'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\n\nfunction StepperDotsDemo() {\n const t = useT()\n return (\n <div className=\"flex flex-wrap gap-8\">\n {(['sm', 'xs'] as const).map((size) => (\n <div key={size} className=\"flex flex-col gap-4\">\n <span className=\"text-xs text-muted-foreground\">{size}</span>\n {[0, 1, 2].map((activeStep) => <StepperDots key={activeStep} count={3} activeStep={activeStep} size={size} aria-label={t('design_system.gallery.examples.navigation.progress')} />)}\n </div>\n ))}\n </div>\n )\n}\n\n<StepperDotsDemo />`,\n },\n ],\n}\n\nconst notificationEntry: GalleryEntry = {\n id: 'notification',\n title: 'Notification',\n importPath: '@open-mercato/ui/primitives/notification',\n variants: [\n {\n id: 'information',\n title: 'Information',\n render: () => <NotificationFeedbackInformationSample />,\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\n\n<Notification\n title=\"Scheduled maintenance\"\n description=\"The admin panel will be read-only on Sunday between 02:00 and 04:00 UTC.\"\n timestamp=\"2 min ago\"\n onDismiss={() => dismiss(id)}\n/>`,\n },\n {\n id: 'success-with-actions',\n title: 'Success with actions',\n render: () => <NotificationFeedbackSuccessWithActionsSample />,\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Notification\n status=\"success\"\n title=\"Export ready\"\n description=\"Your product export (1,204 rows) finished successfully.\"\n timestamp=\"just now\"\n actions={\n <>\n <LinkButton variant=\"black\" underline=\"always\">Download</LinkButton>\n <LinkButton variant=\"gray\" underline=\"always\">View log</LinkButton>\n </>\n }\n/>`,\n },\n {\n id: 'error',\n title: 'Error',\n render: () => <NotificationFeedbackErrorSample />,\n code: `import { Notification } from '@open-mercato/ui/primitives/notification'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\n\n<Notification\n status=\"error\"\n title=\"Webhook delivery failed\"\n description=\"The endpoint responded with 503 after 3 retries.\"\n timestamp=\"5 min ago\"\n actions={<LinkButton variant=\"error\" underline=\"always\">Retry now</LinkButton>}\n/>`,\n },\n ],\n}\n\nconst notificationFeedEntry: GalleryEntry = {\n id: 'notification-feed',\n figmaNodeId: '4308:731',\n title: 'NotificationFeed',\n importPath: '@open-mercato/ui/primitives/notification-feed',\n variants: [\n { id: 'source-tabs-2', title: '4 row types / 2 tabs', render: () => <NotificationFeedExample tabs={2} />, code: notificationFeedExampleCode(2) },\n { id: 'source-tabs-3', title: '4 row types / 3 tabs', render: () => <NotificationFeedExample tabs={3} />, code: notificationFeedExampleCode(3) },\n { id: 'source-tabs-4', title: '4 row types / 4 tabs', render: () => <NotificationFeedExample tabs={4} />, code: notificationFeedExampleCode(4) },\n {\n id: 'default',\n title: 'default',\n render: () => <NotificationFeedFeedbackDefaultSample />,\n code: `import { Settings, UserPlus } from 'lucide-react'\nimport {\n NotificationFeed,\n NotificationFeedFooter,\n NotificationFeedHeader,\n NotificationFeedIconBadge,\n NotificationFeedItem,\n NotificationFeedList,\n} from '@open-mercato/ui/primitives/notification-feed'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\n\n<NotificationFeed>\n <NotificationFeedHeader title=\"Notifications\">\n <IconButton size=\"sm\" variant=\"ghost\" aria-label=\"Notification settings\">\n <Settings />\n </IconButton>\n </NotificationFeedHeader>\n <NotificationFeedList>\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title=\"New lead generated\"\n body=\"John Smith submitted the contact form.\"\n timestamp=\"10 minutes ago\"\n unread\n />\n </NotificationFeedList>\n <NotificationFeedFooter>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full\">Archive all</Button>\n </NotificationFeedFooter>\n</NotificationFeed>`,\n },\n {\n id: 'icon-badge-tones',\n title: 'NotificationFeedIconBadge tones',\n render: () => (\n <>\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"success\">\n <RefreshCw className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"error\">\n <Inbox className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"info\">\n <Search className=\"size-5\" />\n </NotificationFeedIconBadge>\n <NotificationFeedIconBadge tone=\"neutral\">\n <Settings className=\"size-5\" />\n </NotificationFeedIconBadge>\n </>\n ),\n code: `import { UserPlus } from 'lucide-react'\nimport { NotificationFeedIconBadge } from '@open-mercato/ui/primitives/notification-feed'\n\n<NotificationFeedIconBadge tone=\"indigo\"><UserPlus className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"success\"><RefreshCw className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"error\"><Inbox className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"info\"><Search className=\"size-5\" /></NotificationFeedIconBadge>\n<NotificationFeedIconBadge tone=\"neutral\"><Settings className=\"size-5\" /></NotificationFeedIconBadge>`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n bannerEntry,\n alertEntry,\n emptyStateEntry,\n emptyStateIllustrationEntry,\n skeletonEntry,\n progressEntry,\n spinnerEntry,\n ratingEntry,\n ratingBarEntry,\n stepIndicatorEntry,\n notificationEntry,\n notificationFeedEntry,\n]\n\nfunction AlertFeedbackStatusesLightSample() {\n const t = useT()\n return (<div className=\"flex w-full max-w-md flex-col gap-2\">\n <Alert status=\"error\" style=\"light\">{t('design_system.gallery.sampleCopy.paymentFailedTheCardWasDeclined')}</Alert>\n <Alert status=\"warning\" style=\"light\">{t('design_system.gallery.sampleCopy.inventorySyncIsRunningBehindSchedule')}</Alert>\n <Alert status=\"success\" style=\"light\">{t('design_system.gallery.sampleCopy.order10231WasFulfilled')}</Alert>\n <Alert status=\"information\" style=\"light\">{t('design_system.gallery.sampleCopy.pricesIncludeVATForEUCustomers')}</Alert>\n <Alert status=\"feature\" style=\"light\">{t('design_system.gallery.sampleCopy.bulkEditingIsNowAvailableInTheCatalog')}</Alert>\n </div>)\n}\n\nfunction AlertFeedbackFilledSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Alert status=\"error\" style=\"filled\" size=\"default\">\n <AlertTitle>{t('design_system.gallery.sampleCopy.importFailed')}</AlertTitle>\n <AlertDescription>{t('design_system.gallery.sampleCopy.14RowsWereRejectedDownloadTheErrorReportToReview')}</AlertDescription>\n </Alert>\n </div>)\n}\n\nfunction AlertFeedbackStrokeSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Alert status=\"success\" style=\"stroke\" size=\"default\">\n <AlertTitle>{t('design_system.gallery.sampleCopy.backupComplete')}</AlertTitle>\n <AlertDescription>{t('design_system.gallery.sampleCopy.theNightlySnapshotFinishedWithoutWarnings')}</AlertDescription>\n </Alert>\n </div>)\n}\n\nfunction AlertFeedbackSizesSample() {\n const t = useT()\n return (<div className=\"flex w-full max-w-md flex-col gap-2\">\n <Alert status=\"information\" size=\"xs\">{t('design_system.gallery.sampleCopy.xsmallInlineFormHint')}</Alert>\n <Alert status=\"information\" size=\"sm\">{t('design_system.gallery.sampleCopy.smallTheDefaultSinglelineAlert')}</Alert>\n <Alert status=\"information\" size=\"default\">\n <AlertTitle>{t('design_system.gallery.sampleCopy.large')}</AlertTitle>\n <AlertDescription>{t('design_system.gallery.sampleCopy.multilineAlertWithATitleAndADescriptionBody')}</AlertDescription>\n </Alert>\n </div>)\n}\n\nfunction AlertFeedbackDismissibleWithActionSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Alert\n status=\"warning\"\n style=\"lighter\"\n dismissible\n action={<LinkButton variant=\"black\" underline=\"always\">{t('design_system.gallery.sampleCopy.review')}</LinkButton>}\n >\n {t('design_system.gallery.sampleCopy.3ProductsAreMissingTaxCategories')}\n </Alert>\n </div>)\n}\n\nfunction EmptyStateFeedbackDefaultSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <EmptyState\n title={t('design_system.gallery.sampleCopy.noCustomersYet')}\n description={t('design_system.gallery.sampleCopy.createYourFirstCustomerToStartTrackingOpportunities')}\n />\n </div>)\n}\n\nfunction EmptyStateFeedbackWithActionsSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <EmptyState\n icon={<Inbox className=\"size-8\" />}\n title={t('design_system.gallery.sampleCopy.noOrdersFound')}\n description={t('design_system.gallery.sampleCopy.ordersWillAppearHereOnceYourStorefrontStartsSelling')}\n actions={<Button size=\"sm\">{t('design_system.gallery.sampleCopy.createOrder')}</Button>}\n />\n </div>)\n}\n\nfunction EmptyStateFeedbackSubtleSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <EmptyState\n variant=\"subtle\"\n size=\"sm\"\n icon={<Search className=\"size-5\" />}\n title={t('design_system.gallery.sampleCopy.noResults')}\n description={t('design_system.gallery.sampleCopy.tryADifferentSearchTermOrClearTheFilters')}\n />\n </div>)\n}\n\nfunction ProgressFeedbackLabelledSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Progress\n value={80}\n label={t('design_system.gallery.examples.controls.storage')}\n showValue\n description={t('design_system.gallery.examples.controls.storageHint')}\n />\n </div>)\n}\n\nfunction SpinnerFeedbackInlineWithLabelSample() {\n const t = useT()\n return (<span className=\"inline-flex items-center gap-2 text-sm text-muted-foreground\">\n <Spinner size=\"sm\" />\n {t('design_system.gallery.sampleCopy.loadingOrders')}\n </span>)\n}\n\nfunction NotificationFeedbackInformationSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Notification\n title={t('design_system.gallery.samples.crypto.notificationMaintenance')}\n description={t('design_system.gallery.sampleCopy.theAdminPanelWillBeReadonlyOnSundayBetween0200')}\n timestamp={t('design_system.gallery.sampleCopy.2MinAgo')}\n />\n </div>)\n}\n\nfunction NotificationFeedbackSuccessWithActionsSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Notification\n status=\"success\"\n title={t('design_system.gallery.sampleCopy.exportReady')}\n description={t('design_system.gallery.sampleCopy.yourProductExport1204RowsFinishedSuccessfully')}\n timestamp={t('design_system.gallery.sampleCopy.justNow')}\n actions={\n <>\n <LinkButton variant=\"black\" underline=\"always\">{t('design_system.gallery.sampleCopy.download')}</LinkButton>\n <LinkButton variant=\"gray\" underline=\"always\">{t('design_system.gallery.sampleCopy.viewLog')}</LinkButton>\n </>\n }\n />\n </div>)\n}\n\nfunction NotificationFeedbackErrorSample() {\n const t = useT()\n return (<div className=\"w-full max-w-md\">\n <Notification\n status=\"error\"\n title={t('design_system.gallery.sampleCopy.webhookDeliveryFailed')}\n description={t('design_system.gallery.sampleCopy.theEndpointRespondedWith503After3Retries')}\n timestamp={t('design_system.gallery.sampleCopy.5MinAgo')}\n actions={<LinkButton variant=\"error\" underline=\"always\">{t('design_system.gallery.sampleCopy.retryNow')}</LinkButton>}\n />\n </div>)\n}\n\nfunction NotificationFeedFeedbackDefaultSample() {\n const t = useT()\n return (<div className=\"w-full max-w-sm\">\n <NotificationFeed>\n <NotificationFeedHeader title={t('design_system.families.notifications')}>\n <IconButton size=\"sm\" variant=\"ghost\" aria-label={t('design_system.gallery.sampleCopy.notificationSettings')}>\n <Settings />\n </IconButton>\n </NotificationFeedHeader>\n <NotificationFeedList>\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"indigo\">\n <UserPlus className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title={t('design_system.gallery.sampleCopy.newLeadGenerated')}\n body={t('design_system.gallery.sampleCopy.johnSmithSubmittedTheContactForm')}\n timestamp={t('design_system.gallery.sampleCopy.10MinutesAgo')}\n unread\n />\n <NotificationFeedItem\n icon={\n <NotificationFeedIconBadge tone=\"success\">\n <RefreshCw className=\"size-5\" />\n </NotificationFeedIconBadge>\n }\n title={t('design_system.gallery.sampleCopy.catalogSyncCompleted')}\n body={t('design_system.gallery.sampleCopy.312ProductsUpdatedFromThePIM')}\n timestamp={t('design_system.gallery.sampleCopy.1HourAgo')}\n />\n </NotificationFeedList>\n <NotificationFeedFooter>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full\">{t('design_system.gallery.samples.feeds.archive')}</Button>\n </NotificationFeedFooter>\n </NotificationFeed>\n </div>)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|