@open-mercato/core 0.7.1-develop.7203.1.9396450b78 → 0.8.1-develop.7204.1.83330e271e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -8
- 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,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { GalleryLink as Link } from "./GalleryLink.js";
|
|
4
|
+
import { ArrowRight } from "lucide-react";
|
|
5
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
6
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
7
|
+
import { Skeleton } from "@open-mercato/ui/primitives/skeleton";
|
|
8
|
+
import { GALLERY_BASE_PATH } from "../registry.js";
|
|
9
|
+
import { FamilyEntryPreview } from "./FamilyEntryPreview.js";
|
|
10
|
+
const representativeEntries = {
|
|
11
|
+
inputs: "input",
|
|
12
|
+
dates: "date-picker",
|
|
13
|
+
filters: "quick-filters",
|
|
14
|
+
scaffolding: "section-header",
|
|
15
|
+
notifications: "notification-item",
|
|
16
|
+
schedule: "schedule-agenda",
|
|
17
|
+
messages: "message-object-preview"
|
|
18
|
+
};
|
|
19
|
+
function ComponentIndex({ families, loaded, failed, onRetry }) {
|
|
20
|
+
const t = useT();
|
|
21
|
+
return /* @__PURE__ */ jsx("div", { className: "columns-1 gap-6 @3xl:columns-2", children: families.map((family) => {
|
|
22
|
+
const entries = loaded[family.id];
|
|
23
|
+
const entry = entries?.find((candidate) => candidate.id === representativeEntries[family.id]) ?? entries?.[0];
|
|
24
|
+
return /* @__PURE__ */ jsxs("section", { "aria-labelledby": `gallery-family-${family.id}`, className: "relative mb-6 min-w-0 break-inside-avoid rounded-lg border border-border bg-card", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("h2", { id: `gallery-family-${family.id}`, className: "text-base font-semibold", children: /* @__PURE__ */ jsxs(Link, { href: `${GALLERY_BASE_PATH}?family=${family.id}`, className: "flex items-center justify-between gap-3 p-5 after:absolute after:inset-0 after:rounded-lg hover:bg-muted/30 focus-visible:outline-none focus-visible:after:shadow-focus", children: [
|
|
26
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-3", children: [
|
|
27
|
+
family.icon,
|
|
28
|
+
t(family.labelKey, family.id)
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsx(ArrowRight, { "aria-hidden": true, className: "size-4 shrink-0 text-muted-foreground" })
|
|
31
|
+
] }) }),
|
|
32
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-40 border-t border-border bg-muted/20 p-5", children: entry ? /* @__PURE__ */ jsx("div", { inert: true, "aria-hidden": "true", className: "flex min-h-28 min-w-0 flex-wrap items-center gap-3 [&>*]:max-w-full", children: /* @__PURE__ */ jsx(FamilyEntryPreview, { entry }) }) : failed[family.id] ? /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("design_system.gallery.loadFailed", "Could not load this family") }),
|
|
34
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", className: "relative z-10", onClick: () => onRetry(family), children: t("design_system.gallery.retry", "Retry") })
|
|
35
|
+
] }) : /* @__PURE__ */ jsx(Skeleton, { className: "h-28 w-full" }) })
|
|
36
|
+
] }, family.id);
|
|
37
|
+
}) });
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
ComponentIndex
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=ComponentIndex.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/ComponentIndex.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { GalleryLink as Link } from './GalleryLink'\nimport { ArrowRight } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Skeleton } from '@open-mercato/ui/primitives/skeleton'\nimport { GALLERY_BASE_PATH } from '../registry'\nimport type { GalleryEntry, GalleryFamily } from '../types'\nimport { FamilyEntryPreview } from './FamilyEntryPreview'\n\nconst representativeEntries: Record<string, string> = {\n inputs: 'input',\n dates: 'date-picker',\n filters: 'quick-filters',\n scaffolding: 'section-header',\n notifications: 'notification-item',\n schedule: 'schedule-agenda',\n messages: 'message-object-preview',\n}\n\nexport function ComponentIndex({ families, loaded, failed, onRetry }: {\n families: GalleryFamily[]\n loaded: Record<string, GalleryEntry[]>\n failed: Record<string, boolean>\n onRetry: (family: GalleryFamily) => void\n}) {\n const t = useT()\n return <div className=\"columns-1 gap-6 @3xl:columns-2\">\n {families.map(family => {\n const entries = loaded[family.id]\n const entry = entries?.find(candidate => candidate.id === representativeEntries[family.id]) ?? entries?.[0]\n return <section key={family.id} aria-labelledby={`gallery-family-${family.id}`} className=\"relative mb-6 min-w-0 break-inside-avoid rounded-lg border border-border bg-card\">\n <h2 id={`gallery-family-${family.id}`} className=\"text-base font-semibold\">\n <Link href={`${GALLERY_BASE_PATH}?family=${family.id}`} className=\"flex items-center justify-between gap-3 p-5 after:absolute after:inset-0 after:rounded-lg hover:bg-muted/30 focus-visible:outline-none focus-visible:after:shadow-focus\">\n <span className=\"flex items-center gap-3\">{family.icon}{t(family.labelKey, family.id)}</span>\n <ArrowRight aria-hidden className=\"size-4 shrink-0 text-muted-foreground\" />\n </Link>\n </h2>\n <div className=\"min-h-40 border-t border-border bg-muted/20 p-5\">\n {entry ? <div inert aria-hidden=\"true\" className=\"flex min-h-28 min-w-0 flex-wrap items-center gap-3 [&>*]:max-w-full\"><FamilyEntryPreview entry={entry} /></div> : failed[family.id] ? <div className=\"space-y-3\"><p className=\"text-sm text-muted-foreground\">{t('design_system.gallery.loadFailed', 'Could not load this family')}</p><Button type=\"button\" variant=\"outline\" size=\"sm\" className=\"relative z-10\" onClick={() => onRetry(family)}>{t('design_system.gallery.retry', 'Retry')}</Button></div> : <Skeleton className=\"h-28 w-full\" />}\n </div>\n </section>\n })}\n </div>\n}\n"],
|
|
5
|
+
"mappings": ";AAoCY,SACA,KADA;AAjCZ,SAAS,eAAe,YAAY;AACpC,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAElC,SAAS,0BAA0B;AAEnC,MAAM,wBAAgD;AAAA,EACpD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,SAAS,eAAe,EAAE,UAAU,QAAQ,QAAQ,QAAQ,GAKhE;AACD,QAAM,IAAI,KAAK;AACf,SAAO,oBAAC,SAAI,WAAU,kCACnB,mBAAS,IAAI,YAAU;AACtB,UAAM,UAAU,OAAO,OAAO,EAAE;AAChC,UAAM,QAAQ,SAAS,KAAK,eAAa,UAAU,OAAO,sBAAsB,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC;AAC1G,WAAO,qBAAC,aAAwB,mBAAiB,kBAAkB,OAAO,EAAE,IAAI,WAAU,oFACxF;AAAA,0BAAC,QAAG,IAAI,kBAAkB,OAAO,EAAE,IAAI,WAAU,2BAC/C,+BAAC,QAAK,MAAM,GAAG,iBAAiB,WAAW,OAAO,EAAE,IAAI,WAAU,2KAChE;AAAA,6BAAC,UAAK,WAAU,2BAA2B;AAAA,iBAAO;AAAA,UAAM,EAAE,OAAO,UAAU,OAAO,EAAE;AAAA,WAAE;AAAA,QACtF,oBAAC,cAAW,eAAW,MAAC,WAAU,yCAAwC;AAAA,SAC5E,GACF;AAAA,MACA,oBAAC,SAAI,WAAU,mDACZ,kBAAQ,oBAAC,SAAI,OAAK,MAAC,eAAY,QAAO,WAAU,uEAAsE,8BAAC,sBAAmB,OAAc,GAAE,IAAS,OAAO,OAAO,EAAE,IAAI,qBAAC,SAAI,WAAU,aAAY;AAAA,4BAAC,OAAE,WAAU,iCAAiC,YAAE,oCAAoC,4BAA4B,GAAE;AAAA,QAAI,oBAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,MAAK,MAAK,WAAU,iBAAgB,SAAS,MAAM,QAAQ,MAAM,GAAI,YAAE,+BAA+B,OAAO,GAAE;AAAA,SAAS,IAAS,oBAAC,YAAS,WAAU,eAAc,GACthB;AAAA,SATmB,OAAO,EAU5B;AAAA,EACF,CAAC,GACH;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { GalleryLink as Link } from "./GalleryLink.js";
|
|
4
|
+
import { ArrowRight, Code2, Keyboard, Layers, Palette } from "lucide-react";
|
|
5
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
6
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
7
|
+
import { GALLERY_BASE_PATH } from "../registry.js";
|
|
8
|
+
const paths = {
|
|
9
|
+
foundations: `${GALLERY_BASE_PATH}?family=foundations`,
|
|
10
|
+
components: `${GALLERY_BASE_PATH}?view=components`,
|
|
11
|
+
button: `${GALLERY_BASE_PATH}?family=buttons&entry=button`,
|
|
12
|
+
patterns: `${GALLERY_BASE_PATH}?family=scaffolding`
|
|
13
|
+
};
|
|
14
|
+
const principles = [
|
|
15
|
+
{ id: "semantics", icon: Palette, href: `${paths.foundations}&entry=color-roles` },
|
|
16
|
+
{ id: "states", icon: Layers, href: `${GALLERY_BASE_PATH}?family=feedback` },
|
|
17
|
+
{ id: "keyboard", icon: Keyboard, href: `${GALLERY_BASE_PATH}?family=overlays` },
|
|
18
|
+
{ id: "handoff", icon: Code2, href: paths.button }
|
|
19
|
+
];
|
|
20
|
+
function DesignSystemPrinciples() {
|
|
21
|
+
const t = useT();
|
|
22
|
+
return /* @__PURE__ */ jsxs("section", { className: "space-y-8", "aria-labelledby": "ds-principles-title", children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl space-y-3", children: [
|
|
24
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium uppercase tracking-widest text-muted-foreground", children: t("design_system.portal.principles.eyebrow") }),
|
|
25
|
+
/* @__PURE__ */ jsx("h2", { id: "ds-principles-title", className: "text-2xl font-semibold tracking-tight", children: t("design_system.portal.principles.title") }),
|
|
26
|
+
/* @__PURE__ */ jsx("p", { className: "text-base leading-relaxed text-muted-foreground", children: t("design_system.portal.principles.description") })
|
|
27
|
+
] }),
|
|
28
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-x-8 gap-y-6 sm:grid-cols-2", children: principles.map(({ id, icon: Icon, href }) => /* @__PURE__ */ jsxs("article", { className: "space-y-3 border-t border-border py-6", children: [
|
|
29
|
+
/* @__PURE__ */ jsx(Icon, { className: "size-5 text-muted-foreground", "aria-hidden": true }),
|
|
30
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-medium", children: t(`design_system.portal.principles.${id}.title`) }),
|
|
31
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-prose text-sm leading-relaxed text-muted-foreground", children: t(`design_system.portal.principles.${id}.description`) }),
|
|
32
|
+
/* @__PURE__ */ jsxs(Link, { href, className: "inline-flex items-center gap-2 rounded-sm text-sm underline underline-offset-4 focus-visible:outline-none focus-visible:shadow-focus", children: [
|
|
33
|
+
t("design_system.portal.seeExamples"),
|
|
34
|
+
/* @__PURE__ */ jsx(ArrowRight, { className: "size-4", "aria-hidden": true })
|
|
35
|
+
] })
|
|
36
|
+
] }, id)) })
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
function DesignSystemHome() {
|
|
40
|
+
const t = useT();
|
|
41
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-12 pb-8", "data-example": "design-system-home", children: [
|
|
42
|
+
/* @__PURE__ */ jsx("header", { id: "gallery-page-heading", className: "scroll-mt-36 border-b border-border pb-8 lg:scroll-mt-24", children: /* @__PURE__ */ jsxs("div", { className: "max-w-3xl space-y-6", children: [
|
|
43
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium uppercase tracking-widest text-muted-foreground", children: t("design_system.portal.eyebrow") }),
|
|
44
|
+
/* @__PURE__ */ jsx("h1", { className: "max-w-2xl text-3xl font-medium leading-tight tracking-tight sm:text-5xl", children: t("design_system.portal.title") }),
|
|
45
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-xl text-base leading-relaxed text-muted-foreground", children: t("design_system.portal.description") }),
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-3", children: [
|
|
47
|
+
/* @__PURE__ */ jsx(Button, { asChild: true, size: "lg", children: /* @__PURE__ */ jsxs(Link, { href: paths.components, children: [
|
|
48
|
+
t("design_system.portal.browse"),
|
|
49
|
+
/* @__PURE__ */ jsx(ArrowRight, { "aria-hidden": true })
|
|
50
|
+
] }) }),
|
|
51
|
+
/* @__PURE__ */ jsx(Button, { asChild: true, size: "lg", variant: "outline", children: /* @__PURE__ */ jsx(Link, { href: paths.foundations, children: t("design_system.portal.start") }) })
|
|
52
|
+
] })
|
|
53
|
+
] }) }),
|
|
54
|
+
/* @__PURE__ */ jsxs("section", { className: "space-y-4 rounded-xl border border-border bg-card p-6", children: [
|
|
55
|
+
/* @__PURE__ */ jsx(Palette, { className: "size-6 text-muted-foreground", "aria-hidden": true }),
|
|
56
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-medium", children: t("design_system.styleAgents.title") }),
|
|
57
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-2xl text-sm leading-relaxed text-muted-foreground", children: t("design_system.styleAgents.description") }),
|
|
58
|
+
/* @__PURE__ */ jsx(Button, { asChild: true, variant: "outline", children: /* @__PURE__ */ jsxs(Link, { href: `${GALLERY_BASE_PATH}?view=style-agents`, children: [
|
|
59
|
+
t("design_system.styleAgents.open"),
|
|
60
|
+
/* @__PURE__ */ jsx(ArrowRight, { "aria-hidden": true })
|
|
61
|
+
] }) })
|
|
62
|
+
] })
|
|
63
|
+
] });
|
|
64
|
+
}
|
|
65
|
+
export {
|
|
66
|
+
DesignSystemHome,
|
|
67
|
+
DesignSystemPrinciples
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=DesignSystemHome.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/DesignSystemHome.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { GalleryLink as Link } from './GalleryLink'\nimport { ArrowRight, Code2, Keyboard, Layers, Palette } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { GALLERY_BASE_PATH } from '../registry'\n\nconst paths = {\n foundations: `${GALLERY_BASE_PATH}?family=foundations`,\n components: `${GALLERY_BASE_PATH}?view=components`,\n button: `${GALLERY_BASE_PATH}?family=buttons&entry=button`,\n patterns: `${GALLERY_BASE_PATH}?family=scaffolding`,\n}\n\nconst principles = [\n { id: 'semantics', icon: Palette, href: `${paths.foundations}&entry=color-roles` },\n { id: 'states', icon: Layers, href: `${GALLERY_BASE_PATH}?family=feedback` },\n { id: 'keyboard', icon: Keyboard, href: `${GALLERY_BASE_PATH}?family=overlays` },\n { id: 'handoff', icon: Code2, href: paths.button },\n] as const\n\nexport function DesignSystemPrinciples() {\n const t = useT()\n return <section className=\"space-y-8\" aria-labelledby=\"ds-principles-title\">\n <div className=\"max-w-2xl space-y-3\">\n <p className=\"text-xs font-medium uppercase tracking-widest text-muted-foreground\">{t('design_system.portal.principles.eyebrow')}</p>\n <h2 id=\"ds-principles-title\" className=\"text-2xl font-semibold tracking-tight\">{t('design_system.portal.principles.title')}</h2>\n <p className=\"text-base leading-relaxed text-muted-foreground\">{t('design_system.portal.principles.description')}</p>\n </div>\n <div className=\"grid gap-x-8 gap-y-6 sm:grid-cols-2\">\n {principles.map(({ id, icon: Icon, href }) => <article key={id} className=\"space-y-3 border-t border-border py-6\">\n <Icon className=\"size-5 text-muted-foreground\" aria-hidden />\n <h3 className=\"text-lg font-medium\">{t(`design_system.portal.principles.${id}.title`)}</h3>\n <p className=\"max-w-prose text-sm leading-relaxed text-muted-foreground\">{t(`design_system.portal.principles.${id}.description`)}</p>\n <Link href={href} className=\"inline-flex items-center gap-2 rounded-sm text-sm underline underline-offset-4 focus-visible:outline-none focus-visible:shadow-focus\">{t('design_system.portal.seeExamples')}<ArrowRight className=\"size-4\" aria-hidden /></Link>\n </article>)}\n </div>\n </section>\n}\n\nexport function DesignSystemHome() {\n const t = useT()\n return <div className=\"space-y-12 pb-8\" data-example=\"design-system-home\">\n <header id=\"gallery-page-heading\" className=\"scroll-mt-36 border-b border-border pb-8 lg:scroll-mt-24\">\n <div className=\"max-w-3xl space-y-6\">\n <p className=\"text-xs font-medium uppercase tracking-widest text-muted-foreground\">{t('design_system.portal.eyebrow')}</p>\n <h1 className=\"max-w-2xl text-3xl font-medium leading-tight tracking-tight sm:text-5xl\">{t('design_system.portal.title')}</h1>\n <p className=\"max-w-xl text-base leading-relaxed text-muted-foreground\">{t('design_system.portal.description')}</p>\n <div className=\"flex flex-wrap gap-3\">\n <Button asChild size=\"lg\"><Link href={paths.components}>{t('design_system.portal.browse')}<ArrowRight aria-hidden /></Link></Button>\n <Button asChild size=\"lg\" variant=\"outline\"><Link href={paths.foundations}>{t('design_system.portal.start')}</Link></Button>\n </div>\n </div>\n </header>\n\n <section className=\"space-y-4 rounded-xl border border-border bg-card p-6\">\n <Palette className=\"size-6 text-muted-foreground\" aria-hidden />\n <h2 className=\"text-2xl font-medium\">{t('design_system.styleAgents.title')}</h2>\n <p className=\"max-w-2xl text-sm leading-relaxed text-muted-foreground\">{t('design_system.styleAgents.description')}</p>\n <Button asChild variant=\"outline\"><Link href={`${GALLERY_BASE_PATH}?view=style-agents`}>{t('design_system.styleAgents.open')}<ArrowRight aria-hidden /></Link></Button>\n </section>\n\n </div>\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,58 +1,64 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { GalleryLink as Link } from "./GalleryLink.js";
|
|
5
|
+
import { ArrowRight, Check, ExternalLink, X } from "lucide-react";
|
|
4
6
|
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
5
7
|
import { LinkButton } from "@open-mercato/ui/primitives/link-button";
|
|
6
|
-
import { DS_DOCS_URL
|
|
8
|
+
import { DS_DOCS_URL } from "../registry.js";
|
|
7
9
|
import { VariantPreview } from "./VariantPreview.js";
|
|
8
10
|
import { CodeSnippet } from "./CodeSnippet.js";
|
|
9
|
-
|
|
11
|
+
import { FamilyEntryPreview } from "./FamilyEntryPreview.js";
|
|
12
|
+
import { EntryHeader } from "./EntryHeader.js";
|
|
13
|
+
function EntryCard({ entry, href, summary = false, summaryPreview = false, onNavigate, hideTitle = false, fullWidth = false }) {
|
|
10
14
|
const t = useT();
|
|
15
|
+
const availableVariants = React.useMemo(() => entry.id === "file-upload" ? entry.variants.filter((variant) => variant.id !== "drag-and-drop") : entry.variants, [entry.id, entry.variants]);
|
|
11
16
|
return /* @__PURE__ */ jsxs(
|
|
12
17
|
"section",
|
|
13
18
|
{
|
|
14
19
|
id: `gallery-entry-${entry.id}`,
|
|
15
|
-
"aria-
|
|
16
|
-
|
|
20
|
+
"aria-label": hideTitle ? entry.title : void 0,
|
|
21
|
+
"aria-labelledby": hideTitle ? void 0 : `gallery-entry-${entry.id}-title`,
|
|
22
|
+
className: summary ? `relative min-w-0 rounded-lg border border-border bg-card p-4 sm:p-5 ${summaryPreview ? `flex flex-col gap-4 ${fullWidth ? "@3xl:col-span-2" : ""}` : "space-y-4"}` : "min-w-0 space-y-6",
|
|
17
23
|
children: [
|
|
18
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
19
|
-
/* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
20
|
-
/* @__PURE__ */ jsx("h3", { id: `gallery-entry-${entry.id}-title`, className: "text-base font-semibold leading-tight", children:
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
!hideTitle ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
25
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [
|
|
26
|
+
/* @__PURE__ */ jsx("h3", { id: `gallery-entry-${entry.id}-title`, className: "text-base font-semibold leading-tight", children: href ? /* @__PURE__ */ jsxs(Link, { href, onNavigate, className: "flex items-center justify-between gap-3 rounded-sm after:absolute after:inset-0 after:rounded-lg focus-visible:outline-none focus-visible:after:shadow-focus", children: [
|
|
27
|
+
entry.title,
|
|
28
|
+
summaryPreview ? /* @__PURE__ */ jsx(ArrowRight, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": true }) : null
|
|
29
|
+
] }) : entry.title }),
|
|
30
|
+
entry.descriptionKey && !summaryPreview ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t(entry.descriptionKey, entry.title) }) : null
|
|
23
31
|
] }),
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
] }) }) : null,
|
|
29
|
-
entry.docsAnchor ? /* @__PURE__ */ jsx(LinkButton, { asChild: true, size: "sm", variant: "gray", children: /* @__PURE__ */ jsxs("a", { href: `${DS_DOCS_URL}${entry.docsAnchor}`, target: "_blank", rel: "noreferrer", children: [
|
|
30
|
-
t("design_system.gallery.viewDocs", "View docs"),
|
|
31
|
-
/* @__PURE__ */ jsx(ExternalLink, {})
|
|
32
|
-
] }) }) : null
|
|
33
|
-
] })
|
|
34
|
-
] }),
|
|
35
|
-
entry.usage && (entry.usage.do?.length || entry.usage.dont?.length) ? /* @__PURE__ */ jsxs("div", { className: "grid gap-4 rounded-md border border-border bg-muted/30 p-4 sm:grid-cols-2", children: [
|
|
36
|
-
entry.usage.do?.length ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
37
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium uppercase tracking-wider text-muted-foreground", children: t("design_system.gallery.usageDo", "Do") }),
|
|
38
|
-
/* @__PURE__ */ jsx("ul", { className: "space-y-1.5", children: entry.usage.do.map((rule) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-sm text-foreground", children: [
|
|
39
|
-
/* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "mt-0.5 size-3.5 shrink-0 text-status-success-icon" }),
|
|
40
|
-
/* @__PURE__ */ jsx("span", { children: rule })
|
|
41
|
-
] }, rule)) })
|
|
42
|
-
] }) : null,
|
|
43
|
-
entry.usage.dont?.length ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
44
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium uppercase tracking-wider text-muted-foreground", children: t("design_system.gallery.usageDont", "Don't") }),
|
|
45
|
-
/* @__PURE__ */ jsx("ul", { className: "space-y-1.5", children: entry.usage.dont.map((rule) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-sm text-foreground", children: [
|
|
46
|
-
/* @__PURE__ */ jsx(X, { "aria-hidden": true, className: "mt-0.5 size-3.5 shrink-0 text-status-error-icon" }),
|
|
47
|
-
/* @__PURE__ */ jsx("span", { children: rule })
|
|
48
|
-
] }, rule)) })
|
|
49
|
-
] }) : null
|
|
32
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-wrap items-center gap-3", children: entry.docsAnchor && !summary ? /* @__PURE__ */ jsx(LinkButton, { asChild: true, size: "sm", variant: "gray", children: /* @__PURE__ */ jsxs("a", { href: `${DS_DOCS_URL}${entry.docsAnchor}`, target: "_blank", rel: "noreferrer", children: [
|
|
33
|
+
t("design_system.gallery.viewDocs", "View docs"),
|
|
34
|
+
/* @__PURE__ */ jsx(ExternalLink, {})
|
|
35
|
+
] }) }) : null })
|
|
50
36
|
] }) : null,
|
|
51
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/* @__PURE__ */ jsx(
|
|
55
|
-
|
|
37
|
+
summary && summaryPreview && entry.variants.length ? /* @__PURE__ */ jsx("div", { inert: true, "aria-hidden": "true", className: "flex flex-1", children: /* @__PURE__ */ jsx("div", { className: "flex min-h-32 min-w-0 flex-1 flex-wrap items-center gap-4 rounded-md bg-muted/20 p-4 [&>*]:max-w-full", children: /* @__PURE__ */ jsx(FamilyEntryPreview, { entry }) }) }) : null,
|
|
38
|
+
!summary ? /* @__PURE__ */ jsx(EntryHeader, { entry, variants: availableVariants }) : null,
|
|
39
|
+
!summary ? /* @__PURE__ */ jsx("div", { className: "space-y-8", children: availableVariants.map((variant) => /* @__PURE__ */ jsxs("div", { id: `gallery-variant-${entry.id}-${variant.id}`, className: "scroll-mt-36 lg:scroll-mt-24 space-y-3", children: [
|
|
40
|
+
availableVariants.length > 1 ? /* @__PURE__ */ jsx("h2", { className: "text-lg font-medium", children: t(`design_system.gallery.variantTitles.${variant.title}`, variant.title) }) : null,
|
|
41
|
+
/* @__PURE__ */ jsx(CodeSnippet, { code: variant.code, preview: /* @__PURE__ */ jsx(VariantPreview, { framed: !fullWidth, children: variant.render() }) })
|
|
42
|
+
] }, variant.id)) }) : null,
|
|
43
|
+
!summary && entry.usage && (entry.usage.do?.length || entry.usage.dont?.length) ? /* @__PURE__ */ jsxs("section", { className: "rounded-md border border-border", children: [
|
|
44
|
+
/* @__PURE__ */ jsx("h3", { className: "p-4 text-sm font-medium", children: t("design_system.portal.nav.principles") }),
|
|
45
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-4 border-t border-border p-4 sm:grid-cols-2", children: [
|
|
46
|
+
entry.usage.do?.length ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium uppercase tracking-wider text-muted-foreground", children: t("design_system.gallery.usageDo", "Do") }),
|
|
48
|
+
/* @__PURE__ */ jsx("ul", { className: "space-y-1.5", children: entry.usage.do.map((rule, index) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-sm text-foreground", children: [
|
|
49
|
+
/* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "mt-0.5 size-3.5 shrink-0 text-status-success-icon" }),
|
|
50
|
+
/* @__PURE__ */ jsx("span", { children: t(`design_system.gallery.usage.${entry.id}.do.${index}`, rule) })
|
|
51
|
+
] }, rule)) })
|
|
52
|
+
] }) : null,
|
|
53
|
+
entry.usage.dont?.length ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
54
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium uppercase tracking-wider text-muted-foreground", children: t("design_system.gallery.usageDont", "Don't") }),
|
|
55
|
+
/* @__PURE__ */ jsx("ul", { className: "space-y-1.5", children: entry.usage.dont.map((rule, index) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-sm text-foreground", children: [
|
|
56
|
+
/* @__PURE__ */ jsx(X, { "aria-hidden": true, className: "mt-0.5 size-3.5 shrink-0 text-status-error-icon" }),
|
|
57
|
+
/* @__PURE__ */ jsx("span", { children: t(`design_system.gallery.usage.${entry.id}.dont.${index}`, rule) })
|
|
58
|
+
] }, rule)) })
|
|
59
|
+
] }) : null
|
|
60
|
+
] })
|
|
61
|
+
] }) : null
|
|
56
62
|
]
|
|
57
63
|
}
|
|
58
64
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/design_system/gallery/components/EntryCard.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { Check, ExternalLink, X } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport type { GalleryEntry } from '../types'\nimport { DS_DOCS_URL
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { GalleryLink as Link } from './GalleryLink'\nimport { ArrowRight, Check, ExternalLink, X } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { LinkButton } from '@open-mercato/ui/primitives/link-button'\nimport type { GalleryEntry } from '../types'\nimport { DS_DOCS_URL } from '../registry'\nimport { VariantPreview } from './VariantPreview'\nimport { CodeSnippet } from './CodeSnippet'\nimport { FamilyEntryPreview } from './FamilyEntryPreview'\nimport { EntryHeader } from './EntryHeader'\n\ntype EntryCardProps = {\n entry: GalleryEntry\n href?: string\n summary?: boolean\n summaryPreview?: boolean\n onNavigate?: () => void\n hideTitle?: boolean\n fullWidth?: boolean\n}\n\nexport function EntryCard({ entry, href, summary = false, summaryPreview = false, onNavigate, hideTitle = false, fullWidth = false }: EntryCardProps) {\n const t = useT()\n const availableVariants = React.useMemo(() => entry.id === 'file-upload' ? entry.variants.filter(variant => variant.id !== 'drag-and-drop') : entry.variants, [entry.id, entry.variants])\n\n\n return (\n <section\n id={`gallery-entry-${entry.id}`}\n aria-label={hideTitle ? entry.title : undefined}\n aria-labelledby={hideTitle ? undefined : `gallery-entry-${entry.id}-title`}\n className={summary ? `relative min-w-0 rounded-lg border border-border bg-card p-4 sm:p-5 ${summaryPreview ? `flex flex-col gap-4 ${fullWidth ? '@3xl:col-span-2' : ''}` : 'space-y-4'}` : 'min-w-0 space-y-6'}\n >\n {!hideTitle ? <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0 flex-1 space-y-1\">\n <h3 id={`gallery-entry-${entry.id}-title`} className=\"text-base font-semibold leading-tight\">\n {href ? <Link href={href} onNavigate={onNavigate} className=\"flex items-center justify-between gap-3 rounded-sm after:absolute after:inset-0 after:rounded-lg focus-visible:outline-none focus-visible:after:shadow-focus\">{entry.title}{summaryPreview ? <ArrowRight className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden /> : null}</Link> : entry.title}\n </h3>\n {entry.descriptionKey && !summaryPreview ? (\n <p className=\"text-sm text-muted-foreground\">{t(entry.descriptionKey, entry.title)}</p>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-3\">\n {entry.docsAnchor && !summary ? (\n <LinkButton asChild size=\"sm\" variant=\"gray\">\n <a href={`${DS_DOCS_URL}${entry.docsAnchor}`} target=\"_blank\" rel=\"noreferrer\">\n {t('design_system.gallery.viewDocs', 'View docs')}\n <ExternalLink />\n </a>\n </LinkButton>\n ) : null}\n </div>\n </div> : null}\n {summary && summaryPreview && entry.variants.length ? <div inert aria-hidden=\"true\" className=\"flex flex-1\">\n <div className=\"flex min-h-32 min-w-0 flex-1 flex-wrap items-center gap-4 rounded-md bg-muted/20 p-4 [&>*]:max-w-full\">\n <FamilyEntryPreview entry={entry} />\n </div>\n </div> : null}\n {!summary ? <EntryHeader entry={entry} variants={availableVariants} /> : null}\n {!summary ? <div className=\"space-y-8\">\n {availableVariants.map((variant) => (\n <div key={variant.id} id={`gallery-variant-${entry.id}-${variant.id}`} className=\"scroll-mt-36 lg:scroll-mt-24 space-y-3\">\n {availableVariants.length > 1 ? <h2 className=\"text-lg font-medium\">{t(`design_system.gallery.variantTitles.${variant.title}`, variant.title)}</h2> : null}\n <CodeSnippet code={variant.code} preview={<VariantPreview framed={!fullWidth}>{variant.render()}</VariantPreview>} />\n </div>\n ))}\n </div> : null}\n {!summary && entry.usage && (entry.usage.do?.length || entry.usage.dont?.length) ? (\n <section className=\"rounded-md border border-border\">\n <h3 className=\"p-4 text-sm font-medium\">{t('design_system.portal.nav.principles')}</h3>\n <div className=\"grid gap-4 border-t border-border p-4 sm:grid-cols-2\">\n {entry.usage.do?.length ? (\n <div className=\"space-y-1.5\">\n <div className=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\">\n {t('design_system.gallery.usageDo', 'Do')}\n </div>\n <ul className=\"space-y-1.5\">\n {entry.usage.do.map((rule, index) => (\n <li key={rule} className=\"flex items-start gap-2 text-sm text-foreground\">\n <Check aria-hidden className=\"mt-0.5 size-3.5 shrink-0 text-status-success-icon\" />\n <span>{t(`design_system.gallery.usage.${entry.id}.do.${index}`, rule)}</span>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n {entry.usage.dont?.length ? (\n <div className=\"space-y-1.5\">\n <div className=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\">\n {t('design_system.gallery.usageDont', \"Don't\")}\n </div>\n <ul className=\"space-y-1.5\">\n {entry.usage.dont.map((rule, index) => (\n <li key={rule} className=\"flex items-start gap-2 text-sm text-foreground\">\n <X aria-hidden className=\"mt-0.5 size-3.5 shrink-0 text-status-error-icon\" />\n <span>{t(`design_system.gallery.usage.${entry.id}.dont.${index}`, rule)}</span>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </div>\n </section>\n ) : null}\n </section>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Copy, LayoutTemplate } from "lucide-react";
|
|
5
|
+
import { useSearchParams } from "next/navigation";
|
|
6
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
7
|
+
import { IconButton } from "@open-mercato/ui/primitives/icon-button";
|
|
8
|
+
import { flash } from "@open-mercato/ui/backend/FlashMessages";
|
|
9
|
+
import { GALLERY_BASE_PATH } from "../registry.js";
|
|
10
|
+
import { GalleryLink as Link } from "./GalleryLink.js";
|
|
11
|
+
import { copyTextToClipboard } from "./CodeSnippet.js";
|
|
12
|
+
const VARIANT_INDEX_THRESHOLD = 4;
|
|
13
|
+
function isPatternEntry(entry) {
|
|
14
|
+
return entry.importPath.includes("/design_system/gallery/");
|
|
15
|
+
}
|
|
16
|
+
function resolveImportStatement(entry) {
|
|
17
|
+
const escapedPath = entry.importPath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
18
|
+
const statement = new RegExp(`import[^;'"]*?from\\s+['"]${escapedPath}['"]`);
|
|
19
|
+
for (const variant of entry.variants) {
|
|
20
|
+
const match = variant.code.match(statement);
|
|
21
|
+
if (match) return match[0].replace(/\s+/g, " ");
|
|
22
|
+
}
|
|
23
|
+
return entry.importPath;
|
|
24
|
+
}
|
|
25
|
+
function EntryHeader({ entry, variants }) {
|
|
26
|
+
const t = useT();
|
|
27
|
+
const searchParams = useSearchParams();
|
|
28
|
+
const familyId = searchParams?.get("family") ?? null;
|
|
29
|
+
const importStatement = React.useMemo(() => resolveImportStatement(entry), [entry]);
|
|
30
|
+
const copyLabel = t("design_system.gallery.copyImport", "Copy import");
|
|
31
|
+
const onCopy = React.useCallback(async () => {
|
|
32
|
+
try {
|
|
33
|
+
await copyTextToClipboard(importStatement);
|
|
34
|
+
flash(t("design_system.gallery.importCopied", "Import copied to clipboard"), "success");
|
|
35
|
+
} catch {
|
|
36
|
+
flash(t("design_system.gallery.copyFailed", "Could not copy the snippet"), "error");
|
|
37
|
+
}
|
|
38
|
+
}, [importStatement, t]);
|
|
39
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", "data-testid": "gallery-entry-header", children: [
|
|
40
|
+
isPatternEntry(entry) ? /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2 rounded-md border border-status-info-border bg-status-info-bg p-3 text-sm text-status-info-text", children: [
|
|
41
|
+
/* @__PURE__ */ jsx(LayoutTemplate, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-status-info-icon" }),
|
|
42
|
+
/* @__PURE__ */ jsx("span", { children: t("design_system.gallery.patternNote", "This is a sample layout composed from library components, not an importable component. Use it as a pattern.") })
|
|
43
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2 rounded-md border border-border bg-muted/50 py-1 pl-3 pr-1", children: [
|
|
44
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs font-medium uppercase tracking-wider text-muted-foreground", children: t("design_system.gallery.importLabel", "Import") }),
|
|
45
|
+
/* @__PURE__ */ jsx("code", { className: "min-w-0 flex-1 overflow-x-auto whitespace-nowrap py-1 text-xs", children: importStatement }),
|
|
46
|
+
/* @__PURE__ */ jsx(IconButton, { type: "button", variant: "ghost", size: "sm", "aria-label": copyLabel, title: copyLabel, onClick: onCopy, children: /* @__PURE__ */ jsx(Copy, {}) })
|
|
47
|
+
] }),
|
|
48
|
+
variants.length >= VARIANT_INDEX_THRESHOLD ? /* @__PURE__ */ jsxs("nav", { "aria-label": t("design_system.gallery.variantsNav", "Variants"), className: "space-y-2", children: [
|
|
49
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs font-medium uppercase tracking-wider text-muted-foreground", children: [
|
|
50
|
+
t("design_system.gallery.variantsNav", "Variants"),
|
|
51
|
+
" (",
|
|
52
|
+
variants.length,
|
|
53
|
+
")"
|
|
54
|
+
] }),
|
|
55
|
+
/* @__PURE__ */ jsx("ul", { className: "flex flex-wrap gap-x-4 gap-y-1", children: variants.map((variant) => {
|
|
56
|
+
const label = t(`design_system.gallery.variantTitles.${variant.title}`, variant.title);
|
|
57
|
+
const className = "rounded-sm text-sm text-muted-foreground underline-offset-4 hover:text-foreground hover:underline focus-visible:outline-none focus-visible:shadow-focus";
|
|
58
|
+
return /* @__PURE__ */ jsx("li", { children: familyId ? /* @__PURE__ */ jsx(Link, { href: `${GALLERY_BASE_PATH}?family=${familyId}&entry=${entry.id}&variant=${variant.id}`, className, children: label }) : /* @__PURE__ */ jsx("a", { href: `#gallery-variant-${entry.id}-${variant.id}`, className, children: label }) }, variant.id);
|
|
59
|
+
}) })
|
|
60
|
+
] }) : null
|
|
61
|
+
] });
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
EntryHeader,
|
|
65
|
+
isPatternEntry,
|
|
66
|
+
resolveImportStatement
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=EntryHeader.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/EntryHeader.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { Copy, LayoutTemplate } from 'lucide-react'\nimport { useSearchParams } from 'next/navigation'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { IconButton } from '@open-mercato/ui/primitives/icon-button'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport type { GalleryEntry, GalleryVariant } from '../types'\nimport { GALLERY_BASE_PATH } from '../registry'\nimport { GalleryLink as Link } from './GalleryLink'\nimport { copyTextToClipboard } from './CodeSnippet'\n\nconst VARIANT_INDEX_THRESHOLD = 4\n\nexport function isPatternEntry(entry: GalleryEntry): boolean {\n return entry.importPath.includes('/design_system/gallery/')\n}\n\nexport function resolveImportStatement(entry: GalleryEntry): string {\n const escapedPath = entry.importPath.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const statement = new RegExp(`import[^;'\"]*?from\\\\s+['\"]${escapedPath}['\"]`)\n for (const variant of entry.variants) {\n const match = variant.code.match(statement)\n if (match) return match[0].replace(/\\s+/g, ' ')\n }\n return entry.importPath\n}\n\nexport function EntryHeader({ entry, variants }: { entry: GalleryEntry; variants: GalleryVariant[] }) {\n const t = useT()\n const searchParams = useSearchParams()\n const familyId = searchParams?.get('family') ?? null\n const importStatement = React.useMemo(() => resolveImportStatement(entry), [entry])\n const copyLabel = t('design_system.gallery.copyImport', 'Copy import')\n\n const onCopy = React.useCallback(async () => {\n try {\n await copyTextToClipboard(importStatement)\n flash(t('design_system.gallery.importCopied', 'Import copied to clipboard'), 'success')\n } catch {\n flash(t('design_system.gallery.copyFailed', 'Could not copy the snippet'), 'error')\n }\n }, [importStatement, t])\n\n return (\n <div className=\"space-y-4\" data-testid=\"gallery-entry-header\">\n {isPatternEntry(entry) ? (\n <p className=\"flex items-start gap-2 rounded-md border border-status-info-border bg-status-info-bg p-3 text-sm text-status-info-text\">\n <LayoutTemplate aria-hidden className=\"mt-0.5 size-4 shrink-0 text-status-info-icon\" />\n <span>{t('design_system.gallery.patternNote', 'This is a sample layout composed from library components, not an importable component. Use it as a pattern.')}</span>\n </p>\n ) : (\n <div className=\"flex min-w-0 items-center gap-2 rounded-md border border-border bg-muted/50 py-1 pl-3 pr-1\">\n <span className=\"shrink-0 text-xs font-medium uppercase tracking-wider text-muted-foreground\">{t('design_system.gallery.importLabel', 'Import')}</span>\n <code className=\"min-w-0 flex-1 overflow-x-auto whitespace-nowrap py-1 text-xs\">{importStatement}</code>\n <IconButton type=\"button\" variant=\"ghost\" size=\"sm\" aria-label={copyLabel} title={copyLabel} onClick={onCopy}><Copy /></IconButton>\n </div>\n )}\n {variants.length >= VARIANT_INDEX_THRESHOLD ? (\n <nav aria-label={t('design_system.gallery.variantsNav', 'Variants')} className=\"space-y-2\">\n <p className=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\">{t('design_system.gallery.variantsNav', 'Variants')} ({variants.length})</p>\n <ul className=\"flex flex-wrap gap-x-4 gap-y-1\">\n {variants.map((variant) => {\n const label = t(`design_system.gallery.variantTitles.${variant.title}`, variant.title)\n const className = 'rounded-sm text-sm text-muted-foreground underline-offset-4 hover:text-foreground hover:underline focus-visible:outline-none focus-visible:shadow-focus'\n return (\n <li key={variant.id}>\n {familyId\n ? <Link href={`${GALLERY_BASE_PATH}?family=${familyId}&entry=${entry.id}&variant=${variant.id}`} className={className}>{label}</Link>\n : <a href={`#gallery-variant-${entry.id}-${variant.id}`} className={className}>{label}</a>}\n </li>\n )\n })}\n </ul>\n </nav>\n ) : null}\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": ";AAgDQ,SACE,KADF;AA9CR,YAAY,WAAW;AACvB,SAAS,MAAM,sBAAsB;AACrC,SAAS,uBAAuB;AAChC,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AAEtB,SAAS,yBAAyB;AAClC,SAAS,eAAe,YAAY;AACpC,SAAS,2BAA2B;AAEpC,MAAM,0BAA0B;AAEzB,SAAS,eAAe,OAA8B;AAC3D,SAAO,MAAM,WAAW,SAAS,yBAAyB;AAC5D;AAEO,SAAS,uBAAuB,OAA6B;AAClE,QAAM,cAAc,MAAM,WAAW,QAAQ,uBAAuB,MAAM;AAC1E,QAAM,YAAY,IAAI,OAAO,6BAA6B,WAAW,MAAM;AAC3E,aAAW,WAAW,MAAM,UAAU;AACpC,UAAM,QAAQ,QAAQ,KAAK,MAAM,SAAS;AAC1C,QAAI,MAAO,QAAO,MAAM,CAAC,EAAE,QAAQ,QAAQ,GAAG;AAAA,EAChD;AACA,SAAO,MAAM;AACf;AAEO,SAAS,YAAY,EAAE,OAAO,SAAS,GAAwD;AACpG,QAAM,IAAI,KAAK;AACf,QAAM,eAAe,gBAAgB;AACrC,QAAM,WAAW,cAAc,IAAI,QAAQ,KAAK;AAChD,QAAM,kBAAkB,MAAM,QAAQ,MAAM,uBAAuB,KAAK,GAAG,CAAC,KAAK,CAAC;AAClF,QAAM,YAAY,EAAE,oCAAoC,aAAa;AAErE,QAAM,SAAS,MAAM,YAAY,YAAY;AAC3C,QAAI;AACF,YAAM,oBAAoB,eAAe;AACzC,YAAM,EAAE,sCAAsC,4BAA4B,GAAG,SAAS;AAAA,IACxF,QAAQ;AACN,YAAM,EAAE,oCAAoC,4BAA4B,GAAG,OAAO;AAAA,IACpF;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAEvB,SACE,qBAAC,SAAI,WAAU,aAAY,eAAY,wBACpC;AAAA,mBAAe,KAAK,IACnB,qBAAC,OAAE,WAAU,0HACX;AAAA,0BAAC,kBAAe,eAAW,MAAC,WAAU,gDAA+C;AAAA,MACrF,oBAAC,UAAM,YAAE,qCAAqC,6GAA6G,GAAE;AAAA,OAC/J,IAEA,qBAAC,SAAI,WAAU,8FACb;AAAA,0BAAC,UAAK,WAAU,+EAA+E,YAAE,qCAAqC,QAAQ,GAAE;AAAA,MAChJ,oBAAC,UAAK,WAAU,iEAAiE,2BAAgB;AAAA,MACjG,oBAAC,cAAW,MAAK,UAAS,SAAQ,SAAQ,MAAK,MAAK,cAAY,WAAW,OAAO,WAAW,SAAS,QAAQ,8BAAC,QAAK,GAAE;AAAA,OACxH;AAAA,IAED,SAAS,UAAU,0BAClB,qBAAC,SAAI,cAAY,EAAE,qCAAqC,UAAU,GAAG,WAAU,aAC7E;AAAA,2BAAC,OAAE,WAAU,sEAAsE;AAAA,UAAE,qCAAqC,UAAU;AAAA,QAAE;AAAA,QAAG,SAAS;AAAA,QAAO;AAAA,SAAC;AAAA,MAC1J,oBAAC,QAAG,WAAU,kCACX,mBAAS,IAAI,CAAC,YAAY;AACzB,cAAM,QAAQ,EAAE,uCAAuC,QAAQ,KAAK,IAAI,QAAQ,KAAK;AACrF,cAAM,YAAY;AAClB,eACE,oBAAC,QACE,qBACG,oBAAC,QAAK,MAAM,GAAG,iBAAiB,WAAW,QAAQ,UAAU,MAAM,EAAE,YAAY,QAAQ,EAAE,IAAI,WAAuB,iBAAM,IAC5H,oBAAC,OAAE,MAAM,oBAAoB,MAAM,EAAE,IAAI,QAAQ,EAAE,IAAI,WAAuB,iBAAM,KAHjF,QAAQ,EAIjB;AAAA,MAEJ,CAAC,GACH;AAAA,OACF,IACE;AAAA,KACN;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { SourceIcon } from "@open-mercato/ui/assets/source-icons";
|
|
5
|
+
import { representativeVariantIds } from "../presentation.js";
|
|
6
|
+
import { getCompactEntrySpecimen } from "./CompactEntrySpecimen.js";
|
|
7
|
+
function FamilyEntryPreview({ entry }) {
|
|
8
|
+
const compact = getCompactEntrySpecimen(entry.id);
|
|
9
|
+
if (compact !== void 0) return compact;
|
|
10
|
+
if (entry.id === "button") return /* @__PURE__ */ jsx(Fragment, { children: entry.variants.filter((variant) => ["default", "outline", "ghost"].includes(variant.id)).map((variant) => /* @__PURE__ */ jsx(React.Fragment, { children: variant.render() }, variant.id)) });
|
|
11
|
+
if (entry.id === "icon-registry") return /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-6", children: ["activity", "arrow-right", "bell", "calendar", "check", "house", "plus", "search"].map((name) => /* @__PURE__ */ jsx(SourceIcon, { name, "aria-hidden": "true", className: "size-6" }, name)) });
|
|
12
|
+
const overviewVariant = [representativeVariantIds[entry.id], "default"].map((id) => entry.variants.find((variant) => variant.id === id)).find(Boolean) ?? entry.variants[0];
|
|
13
|
+
if (entry.id === "table") return /* @__PURE__ */ jsx("div", { className: "w-full min-w-0 overflow-x-auto", children: overviewVariant?.render() });
|
|
14
|
+
return overviewVariant?.render() ?? null;
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
FamilyEntryPreview
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=FamilyEntryPreview.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/FamilyEntryPreview.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { SourceIcon } from '@open-mercato/ui/assets/source-icons'\nimport type { GalleryEntry } from '../types'\nimport { representativeVariantIds } from '../presentation'\nimport { getCompactEntrySpecimen } from './CompactEntrySpecimen'\n\nexport function FamilyEntryPreview({ entry }: { entry: GalleryEntry }) {\n const compact = getCompactEntrySpecimen(entry.id)\n if (compact !== undefined) return compact\n\n if (entry.id === 'button') return <>{entry.variants.filter(variant => ['default', 'outline', 'ghost'].includes(variant.id)).map(variant => <React.Fragment key={variant.id}>{variant.render()}</React.Fragment>)}</>\n\n if (entry.id === 'icon-registry') return <div className=\"grid grid-cols-4 gap-6\">{(['activity', 'arrow-right', 'bell', 'calendar', 'check', 'house', 'plus', 'search'] as const).map(name => <SourceIcon key={name} name={name} aria-hidden=\"true\" className=\"size-6\" />)}</div>\n\n const overviewVariant = [representativeVariantIds[entry.id], 'default']\n .map(id => entry.variants.find(variant => variant.id === id))\n .find(Boolean) ?? entry.variants[0]\n if (entry.id === 'table') return <div className=\"w-full min-w-0 overflow-x-auto\">{overviewVariant?.render()}</div>\n return overviewVariant?.render() ?? null\n}\n"],
|
|
5
|
+
"mappings": ";AAYoC,mBAAyG,WAAzG;AAVpC,YAAY,WAAW;AACvB,SAAS,kBAAkB;AAE3B,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAEjC,SAAS,mBAAmB,EAAE,MAAM,GAA4B;AACrE,QAAM,UAAU,wBAAwB,MAAM,EAAE;AAChD,MAAI,YAAY,OAAW,QAAO;AAElC,MAAI,MAAM,OAAO,SAAU,QAAO,gCAAG,gBAAM,SAAS,OAAO,aAAW,CAAC,WAAW,WAAW,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC,EAAE,IAAI,aAAW,oBAAC,MAAM,UAAN,EAAiC,kBAAQ,OAAO,KAA5B,QAAQ,EAAsB,CAAiB,GAAE;AAEjN,MAAI,MAAM,OAAO,gBAAiB,QAAO,oBAAC,SAAI,WAAU,0BAA2B,WAAC,YAAY,eAAe,QAAQ,YAAY,SAAS,SAAS,QAAQ,QAAQ,EAAY,IAAI,UAAQ,oBAAC,cAAsB,MAAY,eAAY,QAAO,WAAU,YAA/C,IAAwD,CAAE,GAAE;AAE1Q,QAAM,kBAAkB,CAAC,yBAAyB,MAAM,EAAE,GAAG,SAAS,EACnE,IAAI,QAAM,MAAM,SAAS,KAAK,aAAW,QAAQ,OAAO,EAAE,CAAC,EAC3D,KAAK,OAAO,KAAK,MAAM,SAAS,CAAC;AACpC,MAAI,MAAM,OAAO,QAAS,QAAO,oBAAC,SAAI,WAAU,kCAAkC,2BAAiB,OAAO,GAAE;AAC5G,SAAO,iBAAiB,OAAO,KAAK;AACtC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { GalleryLink as Link } from "./GalleryLink.js";
|
|
4
|
+
import { ArrowRight } from "lucide-react";
|
|
5
|
+
import { useT } from "@open-mercato/shared/lib/i18n/context";
|
|
6
|
+
import { Button } from "@open-mercato/ui/primitives/button";
|
|
7
|
+
import { CodeSnippet } from "./CodeSnippet.js";
|
|
8
|
+
import { ThemeTokenReference } from "./ThemeTokenReference.js";
|
|
9
|
+
import { GALLERY_BASE_PATH } from "../registry.js";
|
|
10
|
+
function FoundationGuide({ entries }) {
|
|
11
|
+
const t = useT();
|
|
12
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-12 pb-12", children: [
|
|
13
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-2xl text-base leading-relaxed text-muted-foreground", children: t("design_system.foundations.intro") }),
|
|
14
|
+
entries.some((entry) => entry.id === "brand-colors" || entry.id === "color-tokens") ? /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 rounded-lg border border-border bg-muted/30 p-4", children: [
|
|
15
|
+
/* @__PURE__ */ jsx("p", { className: "max-w-xl text-sm text-muted-foreground", children: t("design_system.styleAgents.referenceHint") }),
|
|
16
|
+
/* @__PURE__ */ jsx(Button, { asChild: true, variant: "outline", children: /* @__PURE__ */ jsxs(Link, { href: `${GALLERY_BASE_PATH}?view=style-agents`, children: [
|
|
17
|
+
t("design_system.styleAgents.open"),
|
|
18
|
+
/* @__PURE__ */ jsx(ArrowRight, { "aria-hidden": true })
|
|
19
|
+
] }) })
|
|
20
|
+
] }) : null,
|
|
21
|
+
entries.map((entry) => /* @__PURE__ */ jsxs("section", { id: `gallery-entry-${entry.id}`, "aria-labelledby": `gallery-entry-${entry.id}-title`, className: "min-w-0 scroll-mt-36 lg:scroll-mt-24 space-y-8 border-t border-border pt-8", children: [
|
|
22
|
+
/* @__PURE__ */ jsxs("header", { className: "max-w-2xl space-y-3", children: [
|
|
23
|
+
/* @__PURE__ */ jsx("h2", { id: `gallery-entry-${entry.id}-title`, className: "text-2xl font-medium tracking-tight", children: t(`design_system.foundations.${entry.id}.title`, entry.title) }),
|
|
24
|
+
/* @__PURE__ */ jsx("p", { className: "text-base leading-relaxed text-muted-foreground", children: t(`design_system.foundations.${entry.id}.description`) })
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ jsx(CodeSnippet, { code: entry.variants.map((variant) => variant.code).join("\n\n"), preview: /* @__PURE__ */ jsxs("div", { className: "space-y-8", children: [
|
|
27
|
+
entry.variants.map((variant) => /* @__PURE__ */ jsxs("div", { id: `gallery-variant-${entry.id}-${variant.id}`, className: "min-w-0 scroll-mt-36 space-y-4 lg:scroll-mt-24", children: [
|
|
28
|
+
entry.variants.length > 1 && entry.id !== "typography" ? /* @__PURE__ */ jsx("h3", { className: "text-sm font-medium text-muted-foreground", children: t(`design_system.foundations.variants.${variant.id}`, variant.title) }) : null,
|
|
29
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-x-auto py-2", children: variant.render() })
|
|
30
|
+
] }, variant.id)),
|
|
31
|
+
entry.id === "color-tokens" ? /* @__PURE__ */ jsx(ThemeTokenReference, {}) : null
|
|
32
|
+
] }) }),
|
|
33
|
+
entry.usage ? /* @__PURE__ */ jsxs("section", { className: "rounded-md border border-border", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("h3", { className: "p-4 text-sm font-medium", children: t("design_system.portal.nav.principles") }),
|
|
35
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-6 border-t border-border p-4 sm:grid-cols-2", children: ["do", "dont"].map((kind) => entry.usage?.[kind]?.length ? /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
36
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-medium", children: t(kind === "do" ? "design_system.gallery.usageDo" : "design_system.gallery.usageDont") }),
|
|
37
|
+
/* @__PURE__ */ jsx("ul", { className: "list-disc space-y-2 pl-4 text-sm leading-relaxed text-muted-foreground", children: entry.usage[kind]?.map((rule, index) => /* @__PURE__ */ jsx("li", { children: t(`design_system.gallery.usage.${entry.id}.${kind}.${index}`, rule) }, rule)) })
|
|
38
|
+
] }, kind) : null) })
|
|
39
|
+
] }) : null
|
|
40
|
+
] }, entry.id))
|
|
41
|
+
] });
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
FoundationGuide
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=FoundationGuide.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/FoundationGuide.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { GalleryLink as Link } from './GalleryLink'\nimport { ArrowRight } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport type { GalleryEntry } from '../types'\nimport { CodeSnippet } from './CodeSnippet'\nimport { ThemeTokenReference } from './ThemeTokenReference'\nimport { GALLERY_BASE_PATH } from '../registry'\n\nexport function FoundationGuide({ entries }: { entries: GalleryEntry[] }) {\n const t = useT()\n return <div className=\"space-y-12 pb-12\">\n <p className=\"max-w-2xl text-base leading-relaxed text-muted-foreground\">{t('design_system.foundations.intro')}</p>\n {entries.some(entry => entry.id === 'brand-colors' || entry.id === 'color-tokens') ? <div className=\"flex flex-wrap items-center justify-between gap-4 rounded-lg border border-border bg-muted/30 p-4\">\n <p className=\"max-w-xl text-sm text-muted-foreground\">{t('design_system.styleAgents.referenceHint')}</p>\n <Button asChild variant=\"outline\"><Link href={`${GALLERY_BASE_PATH}?view=style-agents`}>{t('design_system.styleAgents.open')}<ArrowRight aria-hidden /></Link></Button>\n </div> : null}\n {entries.map(entry => <section key={entry.id} id={`gallery-entry-${entry.id}`} aria-labelledby={`gallery-entry-${entry.id}-title`} className=\"min-w-0 scroll-mt-36 lg:scroll-mt-24 space-y-8 border-t border-border pt-8\">\n <header className=\"max-w-2xl space-y-3\">\n <h2 id={`gallery-entry-${entry.id}-title`} className=\"text-2xl font-medium tracking-tight\">{t(`design_system.foundations.${entry.id}.title`, entry.title)}</h2>\n <p className=\"text-base leading-relaxed text-muted-foreground\">{t(`design_system.foundations.${entry.id}.description`)}</p>\n </header>\n <CodeSnippet code={entry.variants.map(variant => variant.code).join('\\n\\n')} preview={<div className=\"space-y-8\">{entry.variants.map(variant => <div key={variant.id} id={`gallery-variant-${entry.id}-${variant.id}`} className=\"min-w-0 scroll-mt-36 space-y-4 lg:scroll-mt-24\">\n {entry.variants.length > 1 && entry.id !== 'typography' ? <h3 className=\"text-sm font-medium text-muted-foreground\">{t(`design_system.foundations.variants.${variant.id}`, variant.title)}</h3> : null}\n <div className=\"min-w-0 overflow-x-auto py-2\">{variant.render()}</div>\n </div>)}\n {entry.id === 'color-tokens' ? <ThemeTokenReference /> : null}\n </div>} />\n {entry.usage ? <section className=\"rounded-md border border-border\">\n <h3 className=\"p-4 text-sm font-medium\">{t('design_system.portal.nav.principles')}</h3>\n <div className=\"grid gap-6 border-t border-border p-4 sm:grid-cols-2\">\n {(['do', 'dont'] as const).map(kind => entry.usage?.[kind]?.length ? <div key={kind} className=\"space-y-3\">\n <h3 className=\"text-sm font-medium\">{t(kind === 'do' ? 'design_system.gallery.usageDo' : 'design_system.gallery.usageDont')}</h3>\n <ul className=\"list-disc space-y-2 pl-4 text-sm leading-relaxed text-muted-foreground\">{entry.usage[kind]?.map((rule, index) => <li key={rule}>{t(`design_system.gallery.usage.${entry.id}.${kind}.${index}`, rule)}</li>)}</ul>\n </div> : null)}\n </div>\n </section> : null}\n </section>)}\n </div>\n}\n"],
|
|
5
|
+
"mappings": ";AAeI,cAGoC,YAHpC;AAZJ,SAAS,eAAe,YAAY;AACpC,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,cAAc;AAEvB,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAE3B,SAAS,gBAAgB,EAAE,QAAQ,GAAgC;AACxE,QAAM,IAAI,KAAK;AACf,SAAO,qBAAC,SAAI,WAAU,oBACpB;AAAA,wBAAC,OAAE,WAAU,6DAA6D,YAAE,iCAAiC,GAAE;AAAA,IAC9G,QAAQ,KAAK,WAAS,MAAM,OAAO,kBAAkB,MAAM,OAAO,cAAc,IAAI,qBAAC,SAAI,WAAU,qGAClG;AAAA,0BAAC,OAAE,WAAU,0CAA0C,YAAE,yCAAyC,GAAE;AAAA,MACpG,oBAAC,UAAO,SAAO,MAAC,SAAQ,WAAU,+BAAC,QAAK,MAAM,GAAG,iBAAiB,sBAAuB;AAAA,UAAE,gCAAgC;AAAA,QAAE,oBAAC,cAAW,eAAW,MAAC;AAAA,SAAE,GAAO;AAAA,OAChK,IAAS;AAAA,IACR,QAAQ,IAAI,WAAS,qBAAC,aAAuB,IAAI,iBAAiB,MAAM,EAAE,IAAI,mBAAiB,iBAAiB,MAAM,EAAE,UAAU,WAAU,8EAC3I;AAAA,2BAAC,YAAO,WAAU,uBAChB;AAAA,4BAAC,QAAG,IAAI,iBAAiB,MAAM,EAAE,UAAU,WAAU,uCAAuC,YAAE,6BAA6B,MAAM,EAAE,UAAU,MAAM,KAAK,GAAE;AAAA,QAC1J,oBAAC,OAAE,WAAU,mDAAmD,YAAE,6BAA6B,MAAM,EAAE,cAAc,GAAE;AAAA,SACzH;AAAA,MACA,oBAAC,eAAY,MAAM,MAAM,SAAS,IAAI,aAAW,QAAQ,IAAI,EAAE,KAAK,MAAM,GAAG,SAAS,qBAAC,SAAI,WAAU,aAAa;AAAA,cAAM,SAAS,IAAI,aAAW,qBAAC,SAAqB,IAAI,mBAAmB,MAAM,EAAE,IAAI,QAAQ,EAAE,IAAI,WAAU,kDAC9N;AAAA,gBAAM,SAAS,SAAS,KAAK,MAAM,OAAO,eAAe,oBAAC,QAAG,WAAU,6CAA6C,YAAE,sCAAsC,QAAQ,EAAE,IAAI,QAAQ,KAAK,GAAE,IAAQ;AAAA,UAClM,oBAAC,SAAI,WAAU,gCAAgC,kBAAQ,OAAO,GAAE;AAAA,aAFwF,QAAQ,EAGlK,CAAM;AAAA,QACL,MAAM,OAAO,iBAAiB,oBAAC,uBAAoB,IAAK;AAAA,SACzD,GAAQ;AAAA,MACP,MAAM,QAAQ,qBAAC,aAAQ,WAAU,mCAChC;AAAA,4BAAC,QAAG,WAAU,2BAA2B,YAAE,qCAAqC,GAAE;AAAA,QAClF,oBAAC,SAAI,WAAU,wDACX,WAAC,MAAM,MAAM,EAAY,IAAI,UAAQ,MAAM,QAAQ,IAAI,GAAG,SAAS,qBAAC,SAAe,WAAU,aAC7F;AAAA,8BAAC,QAAG,WAAU,uBAAuB,YAAE,SAAS,OAAO,kCAAkC,iCAAiC,GAAE;AAAA,UAC5H,oBAAC,QAAG,WAAU,0EAA0E,gBAAM,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,UAAU,oBAAC,QAAe,YAAE,+BAA+B,MAAM,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAzE,IAA2E,CAAK,GAAE;AAAA,aAF9I,IAG/E,IAAS,IAAI,GACf;AAAA,SACF,IAAa;AAAA,SAnBqB,MAAM,EAoB1C,CAAU;AAAA,KACZ;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { GALLERY_BASE_PATH } from "../registry.js";
|
|
5
|
+
function navigateGallery(href) {
|
|
6
|
+
const target = new URL(href, window.location.href);
|
|
7
|
+
if (target.origin !== window.location.origin || target.pathname !== GALLERY_BASE_PATH || window.location.pathname !== GALLERY_BASE_PATH) return false;
|
|
8
|
+
if (target.href !== window.location.href) window.history.pushState(null, "", target.href);
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
function GalleryLink({ onNavigate, ...props }) {
|
|
12
|
+
return /* @__PURE__ */ jsx(Link, { ...props, prefetch: false, onNavigate: (event) => {
|
|
13
|
+
if (typeof props.href === "string" && navigateGallery(props.href)) event.preventDefault();
|
|
14
|
+
onNavigate?.(event);
|
|
15
|
+
} });
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
GalleryLink,
|
|
19
|
+
navigateGallery
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=GalleryLink.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/components/GalleryLink.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { GALLERY_BASE_PATH } from '../registry'\n\nexport function navigateGallery(href: string): boolean {\n const target = new URL(href, window.location.href)\n if (target.origin !== window.location.origin || target.pathname !== GALLERY_BASE_PATH || window.location.pathname !== GALLERY_BASE_PATH) return false\n if (target.href !== window.location.href) window.history.pushState(null, '', target.href)\n return true\n}\n\nexport function GalleryLink({ onNavigate, ...props }: React.ComponentProps<typeof Link>) {\n return <Link {...props} prefetch={false} onNavigate={event => {\n if (typeof props.href === 'string' && navigateGallery(props.href)) event.preventDefault()\n onNavigate?.(event)\n }} />\n}\n"],
|
|
5
|
+
"mappings": ";AAcS;AAXT,OAAO,UAAU;AACjB,SAAS,yBAAyB;AAE3B,SAAS,gBAAgB,MAAuB;AACrD,QAAM,SAAS,IAAI,IAAI,MAAM,OAAO,SAAS,IAAI;AACjD,MAAI,OAAO,WAAW,OAAO,SAAS,UAAU,OAAO,aAAa,qBAAqB,OAAO,SAAS,aAAa,kBAAmB,QAAO;AAChJ,MAAI,OAAO,SAAS,OAAO,SAAS,KAAM,QAAO,QAAQ,UAAU,MAAM,IAAI,OAAO,IAAI;AACxF,SAAO;AACT;AAEO,SAAS,YAAY,EAAE,YAAY,GAAG,MAAM,GAAsC;AACvF,SAAO,oBAAC,QAAM,GAAG,OAAO,UAAU,OAAO,YAAY,WAAS;AAC5D,QAAI,OAAO,MAAM,SAAS,YAAY,gBAAgB,MAAM,IAAI,EAAG,OAAM,eAAe;AACxF,iBAAa,KAAK;AAAA,EACpB,GAAG;AACL;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|