@open-mercato/core 0.7.1-develop.7202.1.a52dc6707c → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/demos/text-inputs.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { Calendar, Globe, Info, Send, Smile, User } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Input } from '@open-mercato/ui/primitives/input'\nimport { Textarea } from '@open-mercato/ui/primitives/textarea'\nimport { FormField } from '@open-mercato/ui/primitives/form-field'\nimport { EmailInput } from '@open-mercato/ui/primitives/email-input'\nimport { SearchInput } from '@open-mercato/ui/primitives/search-input'\nimport { PasswordInput } from '@open-mercato/ui/primitives/password-input'\nimport { WebsiteInput } from '@open-mercato/ui/primitives/website-input'\nimport { AmountInput, type AmountValue } from '@open-mercato/ui/primitives/amount-input'\nimport { CardInput } from '@open-mercato/ui/primitives/card-input'\nimport { ButtonInput } from '@open-mercato/ui/primitives/button-input'\nimport { CompactButton } from '@open-mercato/ui/primitives/compact-button'\nimport { Popover, PopoverContent, PopoverTrigger } from '@open-mercato/ui/primitives/popover'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@open-mercato/ui/primitives/select'\nimport { PhoneNumberField, type PhoneCountry } from '@open-mercato/ui/backend/inputs/PhoneNumberField'\nimport unitedStates from '../assets/menu-united-states.svg'\nimport europeanUnion from '../assets/input-european-union.svg'\nimport poland from '../assets/select-poland.png'\n\nconst inputKinds = ['basic', 'email', 'phone', 'card', 'website', 'amount', 'date', 'search', 'password', 'button', 'dropdown', 'emoji'] as const\ntype InputKind = typeof inputKinds[number]\ntype InputState = 'placeholder' | 'filled' | 'error' | 'disabled'\ntype InputSize = 32 | 36 | 40\n\nfunction assetSource(asset: string | { src: string }) { return typeof asset === 'string' ? asset : asset.src }\n\nexport function SourceTextInput({ kind, size = 36, state = 'filled' }: { kind: InputKind; size?: InputSize; state?: InputState }) {\n const t = useT()\n const id = React.useId()\n const isPlaceholder = state === 'placeholder'\n const disabled = state === 'disabled'\n const [text, setText] = React.useState(isPlaceholder ? '' : kind === 'basic' || kind === 'dropdown' ? 'Alex Morgan' : kind === 'email' ? 'alex@example.com' : kind === 'website' ? 'openmercato.com' : kind === 'password' ? 'LocalExample2026!' : kind === 'emoji' ? '\uD83D\uDE42' : kind === 'date' ? '2026-09-18' : t('design_system.gallery.samples.textInput.sample'))\n const [phone, setPhone] = React.useState<string | undefined>(isPlaceholder ? undefined : '+1 212 555 1234')\n const [amount, setAmount] = React.useState<AmountValue>({ amount: isPlaceholder ? '' : '1250.00', currency: 'EUR' })\n const [card, setCard] = React.useState(isPlaceholder ? '' : '4242424242424242')\n const [permission, setPermission] = React.useState('view')\n const [emojiOpen, setEmojiOpen] = React.useState(false)\n const [feedback, setFeedback] = React.useState('')\n const dateRef = React.useRef<HTMLInputElement>(null)\n const label = t(`design_system.gallery.samples.textInput.${kind}`)\n const error = state === 'error' ? t('design_system.gallery.samples.textInput.error') : undefined\n const hint = t('design_system.gallery.samples.textInput.hint')\n const common = { id, size, disabled, 'aria-label': label, 'aria-invalid': !!error, 'aria-describedby': `${id}-${error ? 'error' : 'desc'}`, placeholder: t('design_system.gallery.samples.textInput.placeholder') }\n const countries: PhoneCountry[] = [\n { iso2: 'US', dialCode: '+1', label: t('design_system.gallery.samples.textInput.us'), flag: '\uD83C\uDDFA\uD83C\uDDF8' },\n { iso2: 'PL', dialCode: '+48', label: t('design_system.gallery.samples.textInput.pl'), flag: '\uD83C\uDDF5\uD83C\uDDF1' },\n ]\n let control: React.ReactNode\n if (kind === 'phone') {\n control = <PhoneNumberField id={id} size={size} ariaLabel={label} ariaDescribedBy={`${id}-desc`} countryLabel={t('design_system.gallery.samples.textInput.country')} value={phone} onValueChange={setPhone} countries={countries} disabled={disabled} externalError={error} renderCountryIcon={country => <img src={assetSource(country.iso2 === 'PL' ? poland : unitedStates)} alt=\"\" className=\"size-5 object-contain\" />} />\n } else if (kind === 'email') {\n control = <EmailInput {...common} value={text} onChange={event => setText(event.target.value)} />\n } else if (kind === 'website') {\n control = <WebsiteInput {...common} value={text} onChange={event => setText(event.target.value)} />\n } else if (kind === 'amount') {\n control = <AmountInput {...common} value={amount} onChange={setAmount} currencies={[{ code: 'USD', symbol: '$', label: 'USD' }, { code: 'EUR', symbol: '\u20AC', label: 'EUR' }]} renderCurrencyIcon={currency => <img src={assetSource(currency.code === 'EUR' ? europeanUnion : unitedStates)} alt=\"\" className=\"size-5 object-contain\" />} />\n } else if (kind === 'card') {\n control = <CardInput {...common} value={card} onChange={setCard} />\n } else if (kind === 'search') {\n control = <SearchInput {...common} value={text} onChange={setText} />\n } else if (kind === 'password') {\n control = <PasswordInput {...common} value={text} onChange={event => setText(event.target.value)} />\n } else if (kind === 'button') {\n control = <ButtonInput {...common} value={text} onChange={event => setText(event.target.value)} leftIcon={<User />} trailingAction={<CompactButton size={24} appearance=\"ghost\" disabled={disabled} aria-label={t('design_system.gallery.samples.textInput.send')} onClick={() => setFeedback(t('design_system.gallery.samples.textInput.sent'))}><Send className=\"size-5\" /></CompactButton>} />\n } else if (kind === 'dropdown') {\n control = <Input {...common} value={text} onChange={event => setText(event.target.value)} leftIcon={<User />} trailing={<Select value={permission} onValueChange={setPermission} disabled={disabled}><SelectTrigger size={32} aria-label={t('design_system.gallery.samples.textInput.permission')} className=\"h-5 w-auto gap-1 border-0 rounded-none bg-transparent p-0 text-muted-foreground shadow-none\"><Globe className=\"size-5\" aria-hidden=\"true\" /><SelectValue /></SelectTrigger><SelectContent><SelectItem value=\"view\">{t('design_system.gallery.samples.textInput.view')}</SelectItem><SelectItem value=\"edit\">{t('design_system.gallery.samples.textInput.edit')}</SelectItem></SelectContent></Select>} />\n } else if (kind === 'emoji') {\n control = <Input {...common} value={text} onChange={event => setText(event.target.value)} leading={<Popover open={emojiOpen} onOpenChange={setEmojiOpen}><PopoverTrigger asChild><CompactButton size={20} appearance=\"ghost\" disabled={disabled} aria-label={t('design_system.gallery.samples.textInput.chooseEmoji')}><Smile className=\"size-5\" /></CompactButton></PopoverTrigger><PopoverContent className=\"flex w-fit gap-2 p-2\">{['\uD83D\uDE42', '\uD83C\uDF89', '\uD83D\uDE80', '\u2764\uFE0F'].map(emoji => <CompactButton key={emoji} size={24} appearance=\"ghost\" aria-label={emoji} onClick={() => { setText(current => `${current}${emoji}`); setEmojiOpen(false) }}>{emoji}</CompactButton>)}</PopoverContent></Popover>} />\n } else if (kind === 'date') {\n control = <Input {...common} ref={dateRef} type=\"date\" value={text} onChange={event => setText(event.target.value)} inputClassName=\"[&::-webkit-calendar-picker-indicator]:hidden\" leading={<CompactButton size={20} appearance=\"ghost\" disabled={disabled} aria-label={t('design_system.gallery.samples.textInput.chooseDate')} onClick={() => { dateRef.current?.focus(); dateRef.current?.showPicker?.() }}><Calendar className=\"size-5\" /></CompactButton>} />\n } else {\n control = <Input {...common} value={text} onChange={event => setText(event.target.value)} leftIcon={<User />} rightIcon={state === 'error' ? <Info /> : undefined} />\n }\n return <div className=\"min-w-0\" data-input-kind={kind} data-input-size={size}><FormField id={id} label={label} description={hint} error={kind === 'phone' ? undefined : error} disabled={disabled}>{control}</FormField>{feedback ? <output className=\"mt-2 block text-xs text-muted-foreground\" aria-live=\"polite\">{feedback}</output> : null}{kind === 'phone' && phone ? <output className=\"mt-2 block text-xs text-muted-foreground\" aria-live=\"polite\">{phone}</output> : null}</div>\n}\n\nexport function SourceTextInputMatrix({ size = 36, state = 'filled' }: { size?: InputSize; state?: InputState }) {\n return <div className=\"grid w-full grid-cols-1 gap-6 lg:grid-cols-2 xl:grid-cols-3\">{inputKinds.map(kind => <SourceTextInput key={`${kind}-${size}-${state}`} kind={kind} size={size} state={state} />)}</div>\n}\n\nexport function SourcePhoneExamples({ state = 'filled' }: { state?: InputState }) {\n return <div className=\"grid w-full grid-cols-1 gap-6 lg:grid-cols-3\">{([32, 36, 40] as const).map(size => <SourceTextInput key={`${size}-${state}`} kind=\"phone\" size={size} state={state} />)}</div>\n}\n\nexport function SourceTextareaExamples() {\n const t = useT()\n return <div className=\"grid w-full grid-cols-1 gap-6 lg:grid-cols-2\">{(['placeholder', 'filled', 'error', 'disabled'] as const).map(state => <FormField key={state} label={t('design_system.gallery.samples.textInput.note')} description={t('design_system.gallery.samples.textInput.hint')} disabled={state === 'disabled'} error={state === 'error' ? t('design_system.gallery.samples.textInput.error') : undefined}><Textarea appearance=\"source\" showCount maxLength={200} placeholder={t('design_system.gallery.samples.textInput.placeholder')} defaultValue={state === 'placeholder' ? '' : t('design_system.gallery.samples.textInput.noteValue')} /></FormField>)}</div>\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const source = `import * as React from 'react'
|
|
2
|
+
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
3
|
+
import { TimePickerDurationChip, TimePickerSlot, TimePickerStatusChip } from '@open-mercato/ui/primitives/time-picker'
|
|
4
|
+
|
|
5
|
+
const states = ['default', 'hover', 'selected', 'disabled'] as const
|
|
6
|
+
const statuses = ['available', 'busy', 'in-meeting', 'offline'] as const
|
|
7
|
+
|
|
8
|
+
export function TimePickerStatusExamples() {
|
|
9
|
+
const t = useT()
|
|
10
|
+
const [active, setActive] = React.useState<string[]>(statuses.map(status => \`selected-\${status}\`))
|
|
11
|
+
return <div className="grid w-full gap-4 sm:grid-cols-2">{states.map(state => <div key={state} className="space-y-2">
|
|
12
|
+
<p className="text-xs text-muted-foreground">{state}</p><div className="flex flex-wrap gap-2">{statuses.map(status => {
|
|
13
|
+
const key = \`\${state}-\${status}\`
|
|
14
|
+
return <TimePickerStatusChip key={key} variant={status} label={t(\`design_system.gallery.samples.time.\${status}\`)} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />
|
|
15
|
+
})}</div>
|
|
16
|
+
</div>)}</div>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function TimePickerDurationExamples() {
|
|
20
|
+
const t = useT()
|
|
21
|
+
const [active, setActive] = React.useState<string[]>(['selected'])
|
|
22
|
+
return <div className="flex flex-wrap gap-4">{states.map(state => <div key={state} className="space-y-2"><p className="text-xs text-muted-foreground">{state === 'selected' ? 'active' : state}</p><TimePickerDurationChip value={30} label={t('design_system.gallery.samples.time.duration')} state={state === 'selected' ? 'default' : state} selected={active.includes(state)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(state) ? value.filter(item => item !== state) : [...value, state])} /></div>)}</div>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function TimePickerSlotExamples() {
|
|
26
|
+
const [active, setActive] = React.useState<string[]>(['right-selected', 'center-selected'])
|
|
27
|
+
return <div className="grid w-full gap-5 sm:grid-cols-2">{(['right', 'center'] as const).map(position => <div key={position} className="w-full max-w-80 space-y-2"><p className="text-xs text-muted-foreground">{position}</p>{states.map(state => {
|
|
28
|
+
const key = \`\${position}-\${state}\`
|
|
29
|
+
return <TimePickerSlot key={key} value="09:30" rightText="09:30" checkPosition={position} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />
|
|
30
|
+
})}</div>)}</div>
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
const timePickerStatusCode = source + "\n<TimePickerStatusExamples />\n";
|
|
34
|
+
const timePickerDurationCode = source + "\n<TimePickerDurationExamples />\n";
|
|
35
|
+
const timePickerSlotCode = source + "\n<TimePickerSlotExamples />\n";
|
|
36
|
+
export {
|
|
37
|
+
timePickerDurationCode,
|
|
38
|
+
timePickerSlotCode,
|
|
39
|
+
timePickerStatusCode
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=time-picker-code.generated.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/demos/time-picker-code.generated.ts"],
|
|
4
|
+
"sourcesContent": ["// Generated by yarn storybook:generate from time-picker.tsx.\nconst source = \"import * as React from 'react'\\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\\nimport { TimePickerDurationChip, TimePickerSlot, TimePickerStatusChip } from '@open-mercato/ui/primitives/time-picker'\\n\\nconst states = ['default', 'hover', 'selected', 'disabled'] as const\\nconst statuses = ['available', 'busy', 'in-meeting', 'offline'] as const\\n\\nexport function TimePickerStatusExamples() {\\n const t = useT()\\n const [active, setActive] = React.useState<string[]>(statuses.map(status => `selected-${status}`))\\n return <div className=\\\"grid w-full gap-4 sm:grid-cols-2\\\">{states.map(state => <div key={state} className=\\\"space-y-2\\\">\\n <p className=\\\"text-xs text-muted-foreground\\\">{state}</p><div className=\\\"flex flex-wrap gap-2\\\">{statuses.map(status => {\\n const key = `${state}-${status}`\\n return <TimePickerStatusChip key={key} variant={status} label={t(`design_system.gallery.samples.time.${status}`)} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />\\n })}</div>\\n </div>)}</div>\\n}\\n\\nexport function TimePickerDurationExamples() {\\n const t = useT()\\n const [active, setActive] = React.useState<string[]>(['selected'])\\n return <div className=\\\"flex flex-wrap gap-4\\\">{states.map(state => <div key={state} className=\\\"space-y-2\\\"><p className=\\\"text-xs text-muted-foreground\\\">{state === 'selected' ? 'active' : state}</p><TimePickerDurationChip value={30} label={t('design_system.gallery.samples.time.duration')} state={state === 'selected' ? 'default' : state} selected={active.includes(state)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(state) ? value.filter(item => item !== state) : [...value, state])} /></div>)}</div>\\n}\\n\\nexport function TimePickerSlotExamples() {\\n const [active, setActive] = React.useState<string[]>(['right-selected', 'center-selected'])\\n return <div className=\\\"grid w-full gap-5 sm:grid-cols-2\\\">{(['right', 'center'] as const).map(position => <div key={position} className=\\\"w-full max-w-80 space-y-2\\\"><p className=\\\"text-xs text-muted-foreground\\\">{position}</p>{states.map(state => {\\n const key = `${position}-${state}`\\n return <TimePickerSlot key={key} value=\\\"09:30\\\" rightText=\\\"09:30\\\" checkPosition={position} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />\\n })}</div>)}</div>\\n}\\n\"\nexport const timePickerStatusCode = source + \"\\n<TimePickerStatusExamples />\\n\"\nexport const timePickerDurationCode = source + \"\\n<TimePickerDurationExamples />\\n\"\nexport const timePickerSlotCode = source + \"\\n<TimePickerSlotExamples />\\n\"\n"],
|
|
5
|
+
"mappings": "AACA,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACR,MAAM,uBAAuB,SAAS;AACtC,MAAM,yBAAyB,SAAS;AACxC,MAAM,qBAAqB,SAAS;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
4
|
+
import { TimePickerDurationChip, TimePickerSlot, TimePickerStatusChip } from "@open-mercato/ui/primitives/time-picker";
|
|
5
|
+
const states = ["default", "hover", "selected", "disabled"];
|
|
6
|
+
const statuses = ["available", "busy", "in-meeting", "offline"];
|
|
7
|
+
function TimePickerStatusExamples() {
|
|
8
|
+
const t = useT();
|
|
9
|
+
const [active, setActive] = React.useState(statuses.map((status) => `selected-${status}`));
|
|
10
|
+
return /* @__PURE__ */ jsx("div", { className: "grid w-full gap-4 sm:grid-cols-2", children: states.map((state) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
11
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: state }),
|
|
12
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: statuses.map((status) => {
|
|
13
|
+
const key = `${state}-${status}`;
|
|
14
|
+
return /* @__PURE__ */ jsx(TimePickerStatusChip, { variant: status, label: t(`design_system.gallery.samples.time.${status}`), state: state === "selected" ? "default" : state, selected: active.includes(key), disabled: state === "disabled", onSelect: () => setActive((value) => value.includes(key) ? value.filter((item) => item !== key) : [...value, key]) }, key);
|
|
15
|
+
}) })
|
|
16
|
+
] }, state)) });
|
|
17
|
+
}
|
|
18
|
+
function TimePickerDurationExamples() {
|
|
19
|
+
const t = useT();
|
|
20
|
+
const [active, setActive] = React.useState(["selected"]);
|
|
21
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-4", children: states.map((state) => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
22
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: state === "selected" ? "active" : state }),
|
|
23
|
+
/* @__PURE__ */ jsx(TimePickerDurationChip, { value: 30, label: t("design_system.gallery.samples.time.duration"), state: state === "selected" ? "default" : state, selected: active.includes(state), disabled: state === "disabled", onSelect: () => setActive((value) => value.includes(state) ? value.filter((item) => item !== state) : [...value, state]) })
|
|
24
|
+
] }, state)) });
|
|
25
|
+
}
|
|
26
|
+
function TimePickerSlotExamples() {
|
|
27
|
+
const [active, setActive] = React.useState(["right-selected", "center-selected"]);
|
|
28
|
+
return /* @__PURE__ */ jsx("div", { className: "grid w-full gap-5 sm:grid-cols-2", children: ["right", "center"].map((position) => /* @__PURE__ */ jsxs("div", { className: "w-full max-w-80 space-y-2", children: [
|
|
29
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: position }),
|
|
30
|
+
states.map((state) => {
|
|
31
|
+
const key = `${position}-${state}`;
|
|
32
|
+
return /* @__PURE__ */ jsx(TimePickerSlot, { value: "09:30", rightText: "09:30", checkPosition: position, state: state === "selected" ? "default" : state, selected: active.includes(key), disabled: state === "disabled", onSelect: () => setActive((value) => value.includes(key) ? value.filter((item) => item !== key) : [...value, key]) }, key);
|
|
33
|
+
})
|
|
34
|
+
] }, position)) });
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
TimePickerDurationExamples,
|
|
38
|
+
TimePickerSlotExamples,
|
|
39
|
+
TimePickerStatusExamples
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=time-picker.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/demos/time-picker.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { TimePickerDurationChip, TimePickerSlot, TimePickerStatusChip } from '@open-mercato/ui/primitives/time-picker'\n\nconst states = ['default', 'hover', 'selected', 'disabled'] as const\nconst statuses = ['available', 'busy', 'in-meeting', 'offline'] as const\n\nexport function TimePickerStatusExamples() {\n const t = useT()\n const [active, setActive] = React.useState<string[]>(statuses.map(status => `selected-${status}`))\n return <div className=\"grid w-full gap-4 sm:grid-cols-2\">{states.map(state => <div key={state} className=\"space-y-2\">\n <p className=\"text-xs text-muted-foreground\">{state}</p><div className=\"flex flex-wrap gap-2\">{statuses.map(status => {\n const key = `${state}-${status}`\n return <TimePickerStatusChip key={key} variant={status} label={t(`design_system.gallery.samples.time.${status}`)} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />\n })}</div>\n </div>)}</div>\n}\n\nexport function TimePickerDurationExamples() {\n const t = useT()\n const [active, setActive] = React.useState<string[]>(['selected'])\n return <div className=\"flex flex-wrap gap-4\">{states.map(state => <div key={state} className=\"space-y-2\"><p className=\"text-xs text-muted-foreground\">{state === 'selected' ? 'active' : state}</p><TimePickerDurationChip value={30} label={t('design_system.gallery.samples.time.duration')} state={state === 'selected' ? 'default' : state} selected={active.includes(state)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(state) ? value.filter(item => item !== state) : [...value, state])} /></div>)}</div>\n}\n\nexport function TimePickerSlotExamples() {\n const [active, setActive] = React.useState<string[]>(['right-selected', 'center-selected'])\n return <div className=\"grid w-full gap-5 sm:grid-cols-2\">{(['right', 'center'] as const).map(position => <div key={position} className=\"w-full max-w-80 space-y-2\"><p className=\"text-xs text-muted-foreground\">{position}</p>{states.map(state => {\n const key = `${position}-${state}`\n return <TimePickerSlot key={key} value=\"09:30\" rightText=\"09:30\" checkPosition={position} state={state === 'selected' ? 'default' : state} selected={active.includes(key)} disabled={state === 'disabled'} onSelect={() => setActive(value => value.includes(key) ? value.filter(item => item !== key) : [...value, key])} />\n })}</div>)}</div>\n}\n"],
|
|
5
|
+
"mappings": "AAUgF,SAC5E,KAD4E;AAVhF,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,wBAAwB,gBAAgB,4BAA4B;AAE7E,MAAM,SAAS,CAAC,WAAW,SAAS,YAAY,UAAU;AAC1D,MAAM,WAAW,CAAC,aAAa,QAAQ,cAAc,SAAS;AAEvD,SAAS,2BAA2B;AACzC,QAAM,IAAI,KAAK;AACf,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAmB,SAAS,IAAI,YAAU,YAAY,MAAM,EAAE,CAAC;AACjG,SAAO,oBAAC,SAAI,WAAU,oCAAoC,iBAAO,IAAI,WAAS,qBAAC,SAAgB,WAAU,aACvG;AAAA,wBAAC,OAAE,WAAU,iCAAiC,iBAAM;AAAA,IAAI,oBAAC,SAAI,WAAU,wBAAwB,mBAAS,IAAI,YAAU;AACpH,YAAM,MAAM,GAAG,KAAK,IAAI,MAAM;AAC9B,aAAO,oBAAC,wBAA+B,SAAS,QAAQ,OAAO,EAAE,sCAAsC,MAAM,EAAE,GAAG,OAAO,UAAU,aAAa,YAAY,OAAO,UAAU,OAAO,SAAS,GAAG,GAAG,UAAU,UAAU,YAAY,UAAU,MAAM,UAAU,WAAS,MAAM,SAAS,GAAG,IAAI,MAAM,OAAO,UAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,KAA9S,GAAiT;AAAA,IACrV,CAAC,GAAE;AAAA,OAJmF,KAKxF,CAAM,GAAE;AACV;AAEO,SAAS,6BAA6B;AAC3C,QAAM,IAAI,KAAK;AACf,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAmB,CAAC,UAAU,CAAC;AACjE,SAAO,oBAAC,SAAI,WAAU,wBAAwB,iBAAO,IAAI,WAAS,qBAAC,SAAgB,WAAU,aAAY;AAAA,wBAAC,OAAE,WAAU,iCAAiC,oBAAU,aAAa,WAAW,OAAM;AAAA,IAAI,oBAAC,0BAAuB,OAAO,IAAI,OAAO,EAAE,6CAA6C,GAAG,OAAO,UAAU,aAAa,YAAY,OAAO,UAAU,OAAO,SAAS,KAAK,GAAG,UAAU,UAAU,YAAY,UAAU,MAAM,UAAU,WAAS,MAAM,SAAS,KAAK,IAAI,MAAM,OAAO,UAAQ,SAAS,KAAK,IAAI,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG;AAAA,OAA5b,KAA8b,CAAM,GAAE;AACphB;AAEO,SAAS,yBAAyB;AACvC,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAmB,CAAC,kBAAkB,iBAAiB,CAAC;AAC1F,SAAO,oBAAC,SAAI,WAAU,oCAAqC,WAAC,SAAS,QAAQ,EAAY,IAAI,cAAY,qBAAC,SAAmB,WAAU,6BAA4B;AAAA,wBAAC,OAAE,WAAU,iCAAiC,oBAAS;AAAA,IAAK,OAAO,IAAI,WAAS;AACjP,YAAM,MAAM,GAAG,QAAQ,IAAI,KAAK;AAChC,aAAO,oBAAC,kBAAyB,OAAM,SAAQ,WAAU,SAAQ,eAAe,UAAU,OAAO,UAAU,aAAa,YAAY,OAAO,UAAU,OAAO,SAAS,GAAG,GAAG,UAAU,UAAU,YAAY,UAAU,MAAM,UAAU,WAAS,MAAM,SAAS,GAAG,IAAI,MAAM,OAAO,UAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,KAA5R,GAA+R;AAAA,IAC7T,CAAC;AAAA,OAHkH,QAGhH,CAAM,GAAE;AACb;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,9 +1,124 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
2
3
|
import { CircleCheck, Rocket, Sparkles } from "lucide-react";
|
|
3
4
|
import { Button } from "@open-mercato/ui/primitives/button";
|
|
4
5
|
import { flash } from "@open-mercato/ui/backend/FlashMessages";
|
|
5
6
|
import { NextStepCallout } from "@open-mercato/ui/backend/NextStepCallout";
|
|
6
7
|
import { ContextHelp } from "@open-mercato/ui/backend/ContextHelp";
|
|
8
|
+
function FlashMessagesEntryKindsPreview() {
|
|
9
|
+
const t = useT();
|
|
10
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11
|
+
/* @__PURE__ */ jsx(
|
|
12
|
+
Button,
|
|
13
|
+
{
|
|
14
|
+
variant: "outline",
|
|
15
|
+
onClick: () => flash(t("design_system.gallery.samples.content.changesSaved"), "success"),
|
|
16
|
+
children: t("design_system.gallery.samples.content.fireSuccess")
|
|
17
|
+
}
|
|
18
|
+
),
|
|
19
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash(t("design_system.gallery.samples.content.syncScheduled"), "info"), children: t("design_system.gallery.samples.content.fireInfo") }),
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
Button,
|
|
22
|
+
{
|
|
23
|
+
variant: "outline",
|
|
24
|
+
onClick: () => flash(t("design_system.gallery.samples.content.quotaAlmostReached"), "warning"),
|
|
25
|
+
children: t("design_system.gallery.samples.content.fireWarning")
|
|
26
|
+
}
|
|
27
|
+
),
|
|
28
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash(t("design_system.gallery.samples.content.saveFailed"), "error"), children: t("design_system.gallery.samples.content.fireError") })
|
|
29
|
+
] });
|
|
30
|
+
}
|
|
31
|
+
function NextStepCalloutEntryBasicPreview() {
|
|
32
|
+
const t = useT();
|
|
33
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(
|
|
34
|
+
NextStepCallout,
|
|
35
|
+
{
|
|
36
|
+
icon: /* @__PURE__ */ jsx(Rocket, { className: "size-6" }),
|
|
37
|
+
title: t("design_system.gallery.samples.content.publishYourCatalog"),
|
|
38
|
+
description: t(
|
|
39
|
+
"design_system.gallery.samples.content.productsAreImportedAndPricedPublishingMakesThemVisibleOnEverySalesChannel"
|
|
40
|
+
),
|
|
41
|
+
actionLabel: t("design_system.gallery.samples.content.publishCatalog"),
|
|
42
|
+
actionIcon: /* @__PURE__ */ jsx(Sparkles, { className: "mr-2 size-4" }),
|
|
43
|
+
onAction: () => {
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
}
|
|
48
|
+
function NextStepCalloutEntryWithStepsPreview() {
|
|
49
|
+
const t = useT();
|
|
50
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(
|
|
51
|
+
NextStepCallout,
|
|
52
|
+
{
|
|
53
|
+
title: t("design_system.gallery.samples.content.finishStoreSetup"),
|
|
54
|
+
description: t("design_system.gallery.samples.content.twoStepsAreDoneConnectAPaymentProviderToStartSelling"),
|
|
55
|
+
steps: [
|
|
56
|
+
{
|
|
57
|
+
id: "import",
|
|
58
|
+
label: t("design_system.gallery.samples.content.importProducts"),
|
|
59
|
+
state: "completed"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "pricing",
|
|
63
|
+
label: t("design_system.gallery.samples.content.setPricing"),
|
|
64
|
+
state: "completed"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "payments",
|
|
68
|
+
label: t("design_system.gallery.samples.content.connectPayments"),
|
|
69
|
+
state: "active"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "launch",
|
|
73
|
+
label: t("design_system.gallery.samples.content.launch"),
|
|
74
|
+
state: "pending"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
actionLabel: t("design_system.gallery.samples.content.connectPayments"),
|
|
78
|
+
onAction: () => {
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
) });
|
|
82
|
+
}
|
|
83
|
+
function NextStepCalloutEntryWithStatusPreview() {
|
|
84
|
+
const t = useT();
|
|
85
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(
|
|
86
|
+
NextStepCallout,
|
|
87
|
+
{
|
|
88
|
+
title: t("design_system.gallery.samples.content.indexYourProducts"),
|
|
89
|
+
description: t("design_system.gallery.samples.content.searchStaysDisabledUntilTheFirstIndexingRunCompletes"),
|
|
90
|
+
actionLabel: t("design_system.gallery.samples.content.reRunIndexing"),
|
|
91
|
+
onAction: () => {
|
|
92
|
+
},
|
|
93
|
+
busy: true,
|
|
94
|
+
status: {
|
|
95
|
+
tone: "info",
|
|
96
|
+
icon: /* @__PURE__ */ jsx(CircleCheck, { className: "size-4" }),
|
|
97
|
+
label: t("design_system.gallery.samples.content.indexingInProgress"),
|
|
98
|
+
progressValue: 64,
|
|
99
|
+
progressDescription: t("design_system.gallery.samples.content.1280Of2000ProductsIndexed")
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
) });
|
|
103
|
+
}
|
|
104
|
+
function ContextHelpEntryDefaultPreview() {
|
|
105
|
+
const t = useT();
|
|
106
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(ContextHelp, { title: t("design_system.gallery.samples.content.howDoExchangeRatesWork"), children: t(
|
|
107
|
+
"design_system.gallery.samples.content.ratesRefreshNightlyFromTheConfiguredProviderManualOverridesStayPinnedUntilYouClearThem"
|
|
108
|
+
) }) });
|
|
109
|
+
}
|
|
110
|
+
function ContextHelpEntryDefaultOpenPreview() {
|
|
111
|
+
const t = useT();
|
|
112
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(ContextHelp, { title: t("design_system.gallery.samples.content.whyIsThisFieldRequired"), defaultOpen: true, children: t(
|
|
113
|
+
"design_system.gallery.samples.content.theTaxOfficeIdentifierIsMandatoryForInvoicesIssuedToCompaniesRegisteredInTheEu"
|
|
114
|
+
) }) });
|
|
115
|
+
}
|
|
116
|
+
function ContextHelpEntryInfoIconPreview() {
|
|
117
|
+
const t = useT();
|
|
118
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsx(ContextHelp, { title: t("design_system.gallery.samples.content.aboutDraftOrders"), bulb: false, defaultOpen: true, children: t(
|
|
119
|
+
"design_system.gallery.samples.content.draftOrdersAreInvisibleToCustomersAndSkipStockReservationUntilTheyAreConfirmed"
|
|
120
|
+
) }) });
|
|
121
|
+
}
|
|
7
122
|
const flashMessagesEntry = {
|
|
8
123
|
id: "flash-messages",
|
|
9
124
|
title: "FlashMessages",
|
|
@@ -12,12 +127,7 @@ const flashMessagesEntry = {
|
|
|
12
127
|
{
|
|
13
128
|
id: "kinds",
|
|
14
129
|
title: "flash() kinds (toast via the AppShell singleton)",
|
|
15
|
-
render: () => /* @__PURE__ */
|
|
16
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash("Changes saved", "success"), children: "Fire success" }),
|
|
17
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash("Sync scheduled", "info"), children: "Fire info" }),
|
|
18
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash("Quota almost reached", "warning"), children: "Fire warning" }),
|
|
19
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => flash("Save failed", "error"), children: "Fire error" })
|
|
20
|
-
] }),
|
|
130
|
+
render: () => /* @__PURE__ */ jsx(FlashMessagesEntryKindsPreview, {}),
|
|
21
131
|
code: `import { flash } from '@open-mercato/ui/backend/FlashMessages'
|
|
22
132
|
|
|
23
133
|
// FlashMessages is mounted once by AppShell \u2014 never mount your own.
|
|
@@ -36,18 +146,7 @@ const nextStepCalloutEntry = {
|
|
|
36
146
|
{
|
|
37
147
|
id: "basic",
|
|
38
148
|
title: "Basic",
|
|
39
|
-
render: () => /* @__PURE__ */ jsx(
|
|
40
|
-
NextStepCallout,
|
|
41
|
-
{
|
|
42
|
-
icon: /* @__PURE__ */ jsx(Rocket, { className: "size-6" }),
|
|
43
|
-
title: "Publish your catalog",
|
|
44
|
-
description: "Products are imported and priced. Publishing makes them visible on every sales channel.",
|
|
45
|
-
actionLabel: "Publish catalog",
|
|
46
|
-
actionIcon: /* @__PURE__ */ jsx(Sparkles, { className: "mr-2 size-4" }),
|
|
47
|
-
onAction: () => {
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
) }),
|
|
149
|
+
render: () => /* @__PURE__ */ jsx(NextStepCalloutEntryBasicPreview, {}),
|
|
51
150
|
code: `import { Rocket, Sparkles } from 'lucide-react'
|
|
52
151
|
import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'
|
|
53
152
|
|
|
@@ -63,22 +162,7 @@ import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'
|
|
|
63
162
|
{
|
|
64
163
|
id: "with-steps",
|
|
65
164
|
title: "With steps",
|
|
66
|
-
render: () => /* @__PURE__ */ jsx(
|
|
67
|
-
NextStepCallout,
|
|
68
|
-
{
|
|
69
|
-
title: "Finish store setup",
|
|
70
|
-
description: "Two steps are done \u2014 connect a payment provider to start selling.",
|
|
71
|
-
steps: [
|
|
72
|
-
{ id: "import", label: "Import products", state: "completed" },
|
|
73
|
-
{ id: "pricing", label: "Set pricing", state: "completed" },
|
|
74
|
-
{ id: "payments", label: "Connect payments", state: "active" },
|
|
75
|
-
{ id: "launch", label: "Launch", state: "pending" }
|
|
76
|
-
],
|
|
77
|
-
actionLabel: "Connect payments",
|
|
78
|
-
onAction: () => {
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
) }),
|
|
165
|
+
render: () => /* @__PURE__ */ jsx(NextStepCalloutEntryWithStepsPreview, {}),
|
|
82
166
|
code: `import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'
|
|
83
167
|
|
|
84
168
|
<NextStepCallout
|
|
@@ -97,24 +181,7 @@ import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'
|
|
|
97
181
|
{
|
|
98
182
|
id: "with-status",
|
|
99
183
|
title: "With status progress",
|
|
100
|
-
render: () => /* @__PURE__ */ jsx(
|
|
101
|
-
NextStepCallout,
|
|
102
|
-
{
|
|
103
|
-
title: "Index your products",
|
|
104
|
-
description: "Search stays disabled until the first indexing run completes.",
|
|
105
|
-
actionLabel: "Re-run indexing",
|
|
106
|
-
onAction: () => {
|
|
107
|
-
},
|
|
108
|
-
busy: true,
|
|
109
|
-
status: {
|
|
110
|
-
tone: "info",
|
|
111
|
-
icon: /* @__PURE__ */ jsx(CircleCheck, { className: "size-4" }),
|
|
112
|
-
label: "Indexing in progress",
|
|
113
|
-
progressValue: 64,
|
|
114
|
-
progressDescription: "1,280 of 2,000 products indexed"
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
) }),
|
|
184
|
+
render: () => /* @__PURE__ */ jsx(NextStepCalloutEntryWithStatusPreview, {}),
|
|
118
185
|
code: `import { CircleCheck } from 'lucide-react'
|
|
119
186
|
import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'
|
|
120
187
|
|
|
@@ -143,7 +210,7 @@ const contextHelpEntry = {
|
|
|
143
210
|
{
|
|
144
211
|
id: "default",
|
|
145
212
|
title: "default (collapsed)",
|
|
146
|
-
render: () => /* @__PURE__ */ jsx(
|
|
213
|
+
render: () => /* @__PURE__ */ jsx(ContextHelpEntryDefaultPreview, {}),
|
|
147
214
|
code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'
|
|
148
215
|
|
|
149
216
|
<ContextHelp title="How do exchange rates work?">
|
|
@@ -154,7 +221,7 @@ const contextHelpEntry = {
|
|
|
154
221
|
{
|
|
155
222
|
id: "default-open",
|
|
156
223
|
title: "defaultOpen",
|
|
157
|
-
render: () => /* @__PURE__ */ jsx(
|
|
224
|
+
render: () => /* @__PURE__ */ jsx(ContextHelpEntryDefaultOpenPreview, {}),
|
|
158
225
|
code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'
|
|
159
226
|
|
|
160
227
|
<ContextHelp title="Why is this field required?" defaultOpen>
|
|
@@ -165,7 +232,7 @@ const contextHelpEntry = {
|
|
|
165
232
|
{
|
|
166
233
|
id: "info-icon",
|
|
167
234
|
title: "Info icon (bulb={false})",
|
|
168
|
-
render: () => /* @__PURE__ */ jsx(
|
|
235
|
+
render: () => /* @__PURE__ */ jsx(ContextHelpEntryInfoIconPreview, {}),
|
|
169
236
|
code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'
|
|
170
237
|
|
|
171
238
|
<ContextHelp title="About draft orders" bulb={false} defaultOpen>
|
|
@@ -175,11 +242,7 @@ const contextHelpEntry = {
|
|
|
175
242
|
}
|
|
176
243
|
]
|
|
177
244
|
};
|
|
178
|
-
const entries = [
|
|
179
|
-
flashMessagesEntry,
|
|
180
|
-
nextStepCalloutEntry,
|
|
181
|
-
contextHelpEntry
|
|
182
|
-
];
|
|
245
|
+
const entries = [flashMessagesEntry, nextStepCalloutEntry, contextHelpEntry];
|
|
183
246
|
export {
|
|
184
247
|
entries
|
|
185
248
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/design_system/gallery/entries/banners.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react'\nimport { CircleCheck, Rocket, Sparkles } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\nimport { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\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// `FlashMessages` itself is a singleton mounted by AppShell \u2014 the gallery only\n// demonstrates the imperative `flash()` API; the triggered toast renders\n// through the already-mounted singleton.\nconst flashMessagesEntry: GalleryEntry = {\n id: 'flash-messages',\n title: 'FlashMessages',\n importPath: '@open-mercato/ui/backend/FlashMessages',\n variants: [\n {\n id: 'kinds',\n title: 'flash() kinds (toast via the AppShell singleton)',\n render: () => (\n <>\n <Button variant=\"outline\" onClick={() => flash('Changes saved', 'success')}>\n Fire success\n </Button>\n <Button variant=\"outline\" onClick={() => flash('Sync scheduled', 'info')}>\n Fire info\n </Button>\n <Button variant=\"outline\" onClick={() => flash('Quota almost reached', 'warning')}>\n Fire warning\n </Button>\n <Button variant=\"outline\" onClick={() => flash('Save failed', 'error')}>\n Fire error\n </Button>\n </>\n ),\n code: `import { flash } from '@open-mercato/ui/backend/FlashMessages'\n\n// FlashMessages is mounted once by AppShell \u2014 never mount your own.\nflash('Changes saved', 'success')\nflash('Sync scheduled', 'info')\nflash('Quota almost reached', 'warning')\nflash('Save failed', 'error')`,\n },\n ],\n}\n\nconst nextStepCalloutEntry: GalleryEntry = {\n id: 'next-step-callout',\n title: 'NextStepCallout',\n importPath: '@open-mercato/ui/backend/NextStepCallout',\n variants: [\n {\n id: 'basic',\n title: 'Basic',\n render: () => (\n <div className=\"w-full\">\n <NextStepCallout\n icon={<Rocket className=\"size-6\" />}\n title=\"Publish your catalog\"\n description=\"Products are imported and priced. Publishing makes them visible on every sales channel.\"\n actionLabel=\"Publish catalog\"\n actionIcon={<Sparkles className=\"mr-2 size-4\" />}\n onAction={() => {}}\n />\n </div>\n ),\n code: `import { Rocket, Sparkles } from 'lucide-react'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n icon={<Rocket className=\"size-6\" />}\n title=\"Publish your catalog\"\n description=\"Products are imported and priced. Publishing makes them visible on every sales channel.\"\n actionLabel=\"Publish catalog\"\n actionIcon={<Sparkles className=\"mr-2 size-4\" />}\n onAction={handlePublish}\n/>`,\n },\n {\n id: 'with-steps',\n title: 'With steps',\n render: () => (\n <div className=\"w-full\">\n <NextStepCallout\n title=\"Finish store setup\"\n description=\"Two steps are done \u2014 connect a payment provider to start selling.\"\n steps={[\n { id: 'import', label: 'Import products', state: 'completed' },\n { id: 'pricing', label: 'Set pricing', state: 'completed' },\n { id: 'payments', label: 'Connect payments', state: 'active' },\n { id: 'launch', label: 'Launch', state: 'pending' },\n ]}\n actionLabel=\"Connect payments\"\n onAction={() => {}}\n />\n </div>\n ),\n code: `import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n title=\"Finish store setup\"\n description=\"Two steps are done \u2014 connect a payment provider to start selling.\"\n steps={[\n { id: 'import', label: 'Import products', state: 'completed' },\n { id: 'pricing', label: 'Set pricing', state: 'completed' },\n { id: 'payments', label: 'Connect payments', state: 'active' },\n { id: 'launch', label: 'Launch', state: 'pending' },\n ]}\n actionLabel=\"Connect payments\"\n onAction={handleConnect}\n/>`,\n },\n {\n id: 'with-status',\n title: 'With status progress',\n render: () => (\n <div className=\"w-full\">\n <NextStepCallout\n title=\"Index your products\"\n description=\"Search stays disabled until the first indexing run completes.\"\n actionLabel=\"Re-run indexing\"\n onAction={() => {}}\n busy\n status={{\n tone: 'info',\n icon: <CircleCheck className=\"size-4\" />,\n label: 'Indexing in progress',\n progressValue: 64,\n progressDescription: '1,280 of 2,000 products indexed',\n }}\n />\n </div>\n ),\n code: `import { CircleCheck } from 'lucide-react'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n title=\"Index your products\"\n description=\"Search stays disabled until the first indexing run completes.\"\n actionLabel=\"Re-run indexing\"\n onAction={handleReindex}\n busy\n status={{\n tone: 'info',\n icon: <CircleCheck className=\"size-4\" />,\n label: 'Indexing in progress',\n progressValue: 64,\n progressDescription: '1,280 of 2,000 products indexed',\n }}\n/>`,\n },\n ],\n}\n\nconst contextHelpEntry: GalleryEntry = {\n id: 'context-help',\n title: 'ContextHelp',\n importPath: '@open-mercato/ui/backend/ContextHelp',\n variants: [\n {\n id: 'default',\n title: 'default (collapsed)',\n render: () => (\n <div className=\"w-full max-w-md\">\n <ContextHelp title=\"How do exchange rates work?\">\n Rates refresh nightly from the configured provider. Manual overrides\n stay pinned until you clear them.\n </ContextHelp>\n </div>\n ),\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"How do exchange rates work?\">\n Rates refresh nightly from the configured provider. Manual overrides\n stay pinned until you clear them.\n</ContextHelp>`,\n },\n {\n id: 'default-open',\n title: 'defaultOpen',\n render: () => (\n <div className=\"w-full max-w-md\">\n <ContextHelp title=\"Why is this field required?\" defaultOpen>\n The tax office identifier is mandatory for invoices issued to\n companies registered in the EU.\n </ContextHelp>\n </div>\n ),\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"Why is this field required?\" defaultOpen>\n The tax office identifier is mandatory for invoices issued to\n companies registered in the EU.\n</ContextHelp>`,\n },\n {\n id: 'info-icon',\n title: 'Info icon (bulb={false})',\n render: () => (\n <div className=\"w-full max-w-md\">\n <ContextHelp title=\"About draft orders\" bulb={false} defaultOpen>\n Draft orders are invisible to customers and skip stock reservation\n until they are confirmed.\n </ContextHelp>\n </div>\n ),\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"About draft orders\" bulb={false} defaultOpen>\n Draft orders are invisible to customers and skip stock reservation\n until they are confirmed.\n</ContextHelp>`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n flashMessagesEntry,\n nextStepCalloutEntry,\n contextHelpEntry,\n]\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { useT } from '@open-mercato/shared/lib/i18n/context'\nimport * as React from 'react'\nimport { CircleCheck, Rocket, Sparkles } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\nimport { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\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// `FlashMessages` itself is a singleton mounted by AppShell \u2014 the gallery only\n// demonstrates the imperative `flash()` API; the triggered toast renders\n// through the already-mounted singleton.\nfunction FlashMessagesEntryKindsPreview() {\n const t = useT()\n return (\n <>\n <Button\n variant=\"outline\"\n onClick={() => flash(t('design_system.gallery.samples.content.changesSaved'), 'success')}\n >\n {t('design_system.gallery.samples.content.fireSuccess')}\n </Button>\n <Button variant=\"outline\" onClick={() => flash(t('design_system.gallery.samples.content.syncScheduled'), 'info')}>\n {t('design_system.gallery.samples.content.fireInfo')}\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => flash(t('design_system.gallery.samples.content.quotaAlmostReached'), 'warning')}\n >\n {t('design_system.gallery.samples.content.fireWarning')}\n </Button>\n <Button variant=\"outline\" onClick={() => flash(t('design_system.gallery.samples.content.saveFailed'), 'error')}>\n {t('design_system.gallery.samples.content.fireError')}\n </Button>\n </>\n )\n}\nfunction NextStepCalloutEntryBasicPreview() {\n const t = useT()\n return (\n <div className=\"w-full\">\n <NextStepCallout\n icon={<Rocket className=\"size-6\" />}\n title={t('design_system.gallery.samples.content.publishYourCatalog')}\n description={t(\n 'design_system.gallery.samples.content.productsAreImportedAndPricedPublishingMakesThemVisibleOnEverySalesChannel',\n )}\n actionLabel={t('design_system.gallery.samples.content.publishCatalog')}\n actionIcon={<Sparkles className=\"mr-2 size-4\" />}\n onAction={() => {}}\n />\n </div>\n )\n}\nfunction NextStepCalloutEntryWithStepsPreview() {\n const t = useT()\n return (\n <div className=\"w-full\">\n <NextStepCallout\n title={t('design_system.gallery.samples.content.finishStoreSetup')}\n description={t('design_system.gallery.samples.content.twoStepsAreDoneConnectAPaymentProviderToStartSelling')}\n steps={[\n {\n id: 'import',\n label: t('design_system.gallery.samples.content.importProducts'),\n state: 'completed',\n },\n {\n id: 'pricing',\n label: t('design_system.gallery.samples.content.setPricing'),\n state: 'completed',\n },\n {\n id: 'payments',\n label: t('design_system.gallery.samples.content.connectPayments'),\n state: 'active',\n },\n {\n id: 'launch',\n label: t('design_system.gallery.samples.content.launch'),\n state: 'pending',\n },\n ]}\n actionLabel={t('design_system.gallery.samples.content.connectPayments')}\n onAction={() => {}}\n />\n </div>\n )\n}\nfunction NextStepCalloutEntryWithStatusPreview() {\n const t = useT()\n return (\n <div className=\"w-full\">\n <NextStepCallout\n title={t('design_system.gallery.samples.content.indexYourProducts')}\n description={t('design_system.gallery.samples.content.searchStaysDisabledUntilTheFirstIndexingRunCompletes')}\n actionLabel={t('design_system.gallery.samples.content.reRunIndexing')}\n onAction={() => {}}\n busy\n status={{\n tone: 'info',\n icon: <CircleCheck className=\"size-4\" />,\n label: t('design_system.gallery.samples.content.indexingInProgress'),\n progressValue: 64,\n progressDescription: t('design_system.gallery.samples.content.1280Of2000ProductsIndexed'),\n }}\n />\n </div>\n )\n}\nfunction ContextHelpEntryDefaultPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <ContextHelp title={t('design_system.gallery.samples.content.howDoExchangeRatesWork')}>\n {t(\n 'design_system.gallery.samples.content.ratesRefreshNightlyFromTheConfiguredProviderManualOverridesStayPinnedUntilYouClearThem',\n )}\n </ContextHelp>\n </div>\n )\n}\nfunction ContextHelpEntryDefaultOpenPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <ContextHelp title={t('design_system.gallery.samples.content.whyIsThisFieldRequired')} defaultOpen>\n {t(\n 'design_system.gallery.samples.content.theTaxOfficeIdentifierIsMandatoryForInvoicesIssuedToCompaniesRegisteredInTheEu',\n )}\n </ContextHelp>\n </div>\n )\n}\nfunction ContextHelpEntryInfoIconPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-md\">\n <ContextHelp title={t('design_system.gallery.samples.content.aboutDraftOrders')} bulb={false} defaultOpen>\n {t(\n 'design_system.gallery.samples.content.draftOrdersAreInvisibleToCustomersAndSkipStockReservationUntilTheyAreConfirmed',\n )}\n </ContextHelp>\n </div>\n )\n}\nconst flashMessagesEntry: GalleryEntry = {\n id: 'flash-messages',\n title: 'FlashMessages',\n importPath: '@open-mercato/ui/backend/FlashMessages',\n variants: [\n {\n id: 'kinds',\n title: 'flash() kinds (toast via the AppShell singleton)',\n render: () => <FlashMessagesEntryKindsPreview />,\n code: `import { flash } from '@open-mercato/ui/backend/FlashMessages'\n\n// FlashMessages is mounted once by AppShell \u2014 never mount your own.\nflash('Changes saved', 'success')\nflash('Sync scheduled', 'info')\nflash('Quota almost reached', 'warning')\nflash('Save failed', 'error')`,\n },\n ],\n}\nconst nextStepCalloutEntry: GalleryEntry = {\n id: 'next-step-callout',\n title: 'NextStepCallout',\n importPath: '@open-mercato/ui/backend/NextStepCallout',\n variants: [\n {\n id: 'basic',\n title: 'Basic',\n render: () => <NextStepCalloutEntryBasicPreview />,\n code: `import { Rocket, Sparkles } from 'lucide-react'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n icon={<Rocket className=\"size-6\" />}\n title=\"Publish your catalog\"\n description=\"Products are imported and priced. Publishing makes them visible on every sales channel.\"\n actionLabel=\"Publish catalog\"\n actionIcon={<Sparkles className=\"mr-2 size-4\" />}\n onAction={handlePublish}\n/>`,\n },\n {\n id: 'with-steps',\n title: 'With steps',\n render: () => <NextStepCalloutEntryWithStepsPreview />,\n code: `import { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n title=\"Finish store setup\"\n description=\"Two steps are done \u2014 connect a payment provider to start selling.\"\n steps={[\n { id: 'import', label: 'Import products', state: 'completed' },\n { id: 'pricing', label: 'Set pricing', state: 'completed' },\n { id: 'payments', label: 'Connect payments', state: 'active' },\n { id: 'launch', label: 'Launch', state: 'pending' },\n ]}\n actionLabel=\"Connect payments\"\n onAction={handleConnect}\n/>`,\n },\n {\n id: 'with-status',\n title: 'With status progress',\n render: () => <NextStepCalloutEntryWithStatusPreview />,\n code: `import { CircleCheck } from 'lucide-react'\nimport { NextStepCallout } from '@open-mercato/ui/backend/NextStepCallout'\n\n<NextStepCallout\n title=\"Index your products\"\n description=\"Search stays disabled until the first indexing run completes.\"\n actionLabel=\"Re-run indexing\"\n onAction={handleReindex}\n busy\n status={{\n tone: 'info',\n icon: <CircleCheck className=\"size-4\" />,\n label: 'Indexing in progress',\n progressValue: 64,\n progressDescription: '1,280 of 2,000 products indexed',\n }}\n/>`,\n },\n ],\n}\nconst contextHelpEntry: GalleryEntry = {\n id: 'context-help',\n title: 'ContextHelp',\n importPath: '@open-mercato/ui/backend/ContextHelp',\n variants: [\n {\n id: 'default',\n title: 'default (collapsed)',\n render: () => <ContextHelpEntryDefaultPreview />,\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"How do exchange rates work?\">\n Rates refresh nightly from the configured provider. Manual overrides\n stay pinned until you clear them.\n</ContextHelp>`,\n },\n {\n id: 'default-open',\n title: 'defaultOpen',\n render: () => <ContextHelpEntryDefaultOpenPreview />,\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"Why is this field required?\" defaultOpen>\n The tax office identifier is mandatory for invoices issued to\n companies registered in the EU.\n</ContextHelp>`,\n },\n {\n id: 'info-icon',\n title: 'Info icon (bulb={false})',\n render: () => <ContextHelpEntryInfoIconPreview />,\n code: `import { ContextHelp } from '@open-mercato/ui/backend/ContextHelp'\n\n<ContextHelp title=\"About draft orders\" bulb={false} defaultOpen>\n Draft orders are invisible to customers and skip stock reservation\n until they are confirmed.\n</ContextHelp>`,\n },\n ],\n}\nexport const entries: GalleryEntry[] = [flashMessagesEntry, nextStepCalloutEntry, contextHelpEntry]\n"],
|
|
5
|
+
"mappings": "AAoBI,mBACE,KADF;AApBJ,SAAS,YAAY;AAErB,SAAS,aAAa,QAAQ,gBAAgB;AAC9C,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAW5B,SAAS,iCAAiC;AACxC,QAAM,IAAI,KAAK;AACf,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,SAAS,MAAM,MAAM,EAAE,oDAAoD,GAAG,SAAS;AAAA,QAEtF,YAAE,mDAAmD;AAAA;AAAA,IACxD;AAAA,IACA,oBAAC,UAAO,SAAQ,WAAU,SAAS,MAAM,MAAM,EAAE,qDAAqD,GAAG,MAAM,GAC5G,YAAE,gDAAgD,GACrD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,SAAS,MAAM,MAAM,EAAE,0DAA0D,GAAG,SAAS;AAAA,QAE5F,YAAE,mDAAmD;AAAA;AAAA,IACxD;AAAA,IACA,oBAAC,UAAO,SAAQ,WAAU,SAAS,MAAM,MAAM,EAAE,kDAAkD,GAAG,OAAO,GAC1G,YAAE,iDAAiD,GACtD;AAAA,KACF;AAEJ;AACA,SAAS,mCAAmC;AAC1C,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,UACb;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,oBAAC,UAAO,WAAU,UAAS;AAAA,MACjC,OAAO,EAAE,0DAA0D;AAAA,MACnE,aAAa;AAAA,QACX;AAAA,MACF;AAAA,MACA,aAAa,EAAE,sDAAsD;AAAA,MACrE,YAAY,oBAAC,YAAS,WAAU,eAAc;AAAA,MAC9C,UAAU,MAAM;AAAA,MAAC;AAAA;AAAA,EACnB,GACF;AAEJ;AACA,SAAS,uCAAuC;AAC9C,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,UACb;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,wDAAwD;AAAA,MACjE,aAAa,EAAE,4FAA4F;AAAA,MAC3G,OAAO;AAAA,QACL;AAAA,UACE,IAAI;AAAA,UACJ,OAAO,EAAE,sDAAsD;AAAA,UAC/D,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,OAAO,EAAE,kDAAkD;AAAA,UAC3D,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,OAAO,EAAE,uDAAuD;AAAA,UAChE,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,IAAI;AAAA,UACJ,OAAO,EAAE,8CAA8C;AAAA,UACvD,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,aAAa,EAAE,uDAAuD;AAAA,MACtE,UAAU,MAAM;AAAA,MAAC;AAAA;AAAA,EACnB,GACF;AAEJ;AACA,SAAS,wCAAwC;AAC/C,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,UACb;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,yDAAyD;AAAA,MAClE,aAAa,EAAE,4FAA4F;AAAA,MAC3G,aAAa,EAAE,qDAAqD;AAAA,MACpE,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,MAAI;AAAA,MACJ,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM,oBAAC,eAAY,WAAU,UAAS;AAAA,QACtC,OAAO,EAAE,0DAA0D;AAAA,QACnE,eAAe;AAAA,QACf,qBAAqB,EAAE,iEAAiE;AAAA,MAC1F;AAAA;AAAA,EACF,GACF;AAEJ;AACA,SAAS,iCAAiC;AACxC,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,mBACb,8BAAC,eAAY,OAAO,EAAE,8DAA8D,GACjF;AAAA,IACC;AAAA,EACF,GACF,GACF;AAEJ;AACA,SAAS,qCAAqC;AAC5C,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,mBACb,8BAAC,eAAY,OAAO,EAAE,8DAA8D,GAAG,aAAW,MAC/F;AAAA,IACC;AAAA,EACF,GACF,GACF;AAEJ;AACA,SAAS,kCAAkC;AACzC,QAAM,IAAI,KAAK;AACf,SACE,oBAAC,SAAI,WAAU,mBACb,8BAAC,eAAY,OAAO,EAAE,wDAAwD,GAAG,MAAM,OAAO,aAAW,MACtG;AAAA,IACC;AAAA,EACF,GACF,GACF;AAEJ;AACA,MAAM,qBAAmC;AAAA,EACvC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,IACR;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,kCAA+B;AAAA,MAC9C,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOR;AAAA,EACF;AACF;AACA,MAAM,uBAAqC;AAAA,EACzC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,IACR;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,oCAAiC;AAAA,MAChD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWR;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,wCAAqC;AAAA,MACpD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcR;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,yCAAsC;AAAA,MACrD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBR;AAAA,EACF;AACF;AACA,MAAM,mBAAiC;AAAA,EACrC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,IACR;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,kCAA+B;AAAA,MAC9C,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMR;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,sCAAmC;AAAA,MAClD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMR;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM,oBAAC,mCAAgC;AAAA,MAC/C,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMR;AAAA,EACF;AACF;AACO,MAAM,UAA0B,CAAC,oBAAoB,sBAAsB,gBAAgB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|