@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/design_system/gallery/entries/filters.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react'\nimport { Download } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport {\n FilterBar,\n type FilterDef,\n type FilterValues,\n} from '@open-mercato/ui/backend/FilterBar'\nimport { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\nimport { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\nimport { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\nimport { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\nimport { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\nimport { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\nimport type { FilterFieldDef } from '@open-mercato/shared/lib/query/advanced-filter'\nimport type {\n AdvancedFilterTree,\n FilterGroup,\n FilterRule,\n} from '@open-mercato/shared/lib/query/advanced-filter-tree'\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// AdvancedFilterPanel itself is not showcased: it is a popover host that\n// orchestrates open/anchor state and saved-filter persistence. Its\n// presentational subcomponents (AdvancedFilterBuilder, QuickFilters,\n// FilterEmptyState) are shown standalone below with variant titles noting it.\n\n// ---------------------------------------------------------------------------\n// Inline demo data \u2014 no API calls. Field defs and trees mirror what CRM list\n// pages pass to the advanced filter stack.\n// ---------------------------------------------------------------------------\n\nconst demoFilterDefs: FilterDef[] = [\n { id: 'city', label: 'City', type: 'text', placeholder: 'e.g. Berlin' },\n {\n id: 'status',\n label: 'Status',\n type: 'select',\n options: [\n { value: 'active', label: 'Active' },\n { value: 'prospect', label: 'Prospect' },\n { value: 'churned', label: 'Churned' },\n ],\n },\n { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },\n]\n\nconst demoFields: FilterFieldDef[] = [\n { key: 'name', label: 'Name', type: 'text' },\n { key: 'email', label: 'Email', type: 'text' },\n {\n key: 'status',\n label: 'Status',\n type: 'select',\n options: [\n { value: 'active', label: 'Active', tone: 'success' },\n { value: 'prospect', label: 'Prospect', tone: 'info' },\n { value: 'churned', label: 'Churned', tone: 'error' },\n ],\n },\n { key: 'employees', label: 'Employees', type: 'number' },\n]\n\nfunction rule(id: string, field: string, operator: FilterRule['operator'], value: unknown): FilterRule {\n return { id, type: 'rule', field, operator, value }\n}\n\nfunction tree(children: FilterGroup['children']): AdvancedFilterTree {\n return { root: { id: 'root', type: 'group', combinator: 'and', children } }\n}\n\nconst ruleChipsTree = tree([\n rule('r1', 'name', 'contains', 'north'),\n rule('r2', 'status', 'is', 'active'),\n rule('r3', 'employees', 'between', [10, 50]),\n])\n\nconst groupChipTree = tree([\n {\n id: 'g1',\n type: 'group',\n combinator: 'or',\n children: [\n rule('g1r1', 'status', 'is', 'prospect'),\n rule('g1r2', 'status', 'is', 'churned'),\n ],\n },\n])\n\nconst valuelessChipTree = tree([rule('r4', 'email', 'is_empty', null)])\n\nconst builderSingleRuleTree = tree([rule('b1', 'status', 'is', 'active')])\n\nconst builderNestedTree = tree([\n rule('b2', 'name', 'contains', 'north'),\n {\n id: 'bg1',\n type: 'group',\n combinator: 'or',\n children: [\n rule('bg1r1', 'status', 'is', 'prospect'),\n rule('bg1r2', 'employees', 'greater_than', 100),\n ],\n },\n])\n\nconst demoPresets: FilterPreset[] = [\n {\n id: 'active-accounts',\n labelKey: 'Active accounts',\n iconName: 'filter',\n build: () => tree([rule('p1', 'status', 'is', 'active')]),\n },\n {\n id: 'added-this-week',\n labelKey: 'Added this week',\n iconName: 'clock',\n build: () => tree([rule('p2', 'name', 'is_not_empty', null)]),\n },\n]\n\nconst userScopedPresets: FilterPreset[] = [\n ...demoPresets,\n {\n id: 'my-accounts',\n labelKey: 'My accounts',\n requiresUser: true,\n build: ({ userId }) => tree([rule('p3', 'name', 'contains', userId)]),\n },\n]\n\n// ---------------------------------------------------------------------------\n// Demo wrappers \u2014 controlled components need local state to be interactive in\n// the gallery. The `code` snippets show the essential consumer usage, not\n// these wrappers.\n// ---------------------------------------------------------------------------\n\nfunction DemoFilterBar({\n layout,\n trailingItems,\n}: {\n layout?: 'stacked' | 'inline'\n trailingItems?: React.ReactNode\n}) {\n const [search, setSearch] = React.useState('')\n const [values, setValues] = React.useState<FilterValues>({ status: 'active' })\n return (\n <div className=\"w-full max-w-2xl\">\n <FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={demoFilterDefs}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n layout={layout}\n trailingItems={trailingItems}\n />\n </div>\n )\n}\n\nfunction DemoActiveFilterChips({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const [value, setValue] = React.useState(initialTree)\n const removeNode = (id: string) =>\n setValue((prev) => ({\n root: { ...prev.root, children: prev.root.children.filter((child) => child.id !== id) },\n }))\n return (\n <div className=\"w-full max-w-2xl\">\n <ActiveFilterChips\n tree={value}\n fields={demoFields}\n popoverOpen={false}\n onRemoveNode={removeNode}\n onOpen={() => {}}\n />\n </div>\n )\n}\n\nfunction DemoAdvancedFilterBuilder({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const [value, setValue] = React.useState(initialTree)\n return (\n <div className=\"w-full max-w-2xl rounded-lg border bg-popover p-3\">\n <AdvancedFilterBuilder\n fields={demoFields}\n value={value}\n onChange={setValue}\n onApply={() => {}}\n onClear={() => setValue(tree([]))}\n />\n </div>\n )\n}\n\nfunction DemoFilterEmptyState({ withQuickFilters }: { withQuickFilters?: boolean }) {\n const addConditionRef = React.useRef<HTMLButtonElement | null>(null)\n return (\n <div className=\"w-full max-w-xl rounded-lg border bg-popover\">\n <FilterEmptyState\n onAddCondition={() => {}}\n addConditionRef={addConditionRef}\n quickFilters={\n withQuickFilters ? (\n <QuickFilters presets={demoPresets} userId=\"user-1\" onApply={() => {}} />\n ) : undefined\n }\n />\n </div>\n )\n}\n\nconst filterBarEntry: GalleryEntry = {\n id: 'filter-bar',\n title: 'FilterBar',\n importPath: '@open-mercato/ui/backend/FilterBar',\n variants: [\n {\n id: 'stacked',\n title: 'Stacked (default)',\n render: () => <DemoFilterBar />,\n code: `import { FilterBar, type FilterDef, type FilterValues } from '@open-mercato/ui/backend/FilterBar'\n\nconst filters: FilterDef[] = [\n { id: 'city', label: 'City', type: 'text' },\n { id: 'status', label: 'Status', type: 'select', options: statusOptions },\n { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },\n]\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n/>`,\n },\n {\n id: 'inline',\n title: 'Inline layout',\n render: () => <DemoFilterBar layout=\"inline\" />,\n code: `import { FilterBar } from '@open-mercato/ui/backend/FilterBar'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n layout=\"inline\"\n/>`,\n },\n {\n id: 'trailing-items',\n title: 'With trailing items',\n render: () => (\n <DemoFilterBar\n trailingItems={\n <Button variant=\"outline\" size=\"sm\">\n <Download />\n Export\n </Button>\n }\n />\n ),\n code: `import { Download } from 'lucide-react'\nimport { FilterBar } from '@open-mercato/ui/backend/FilterBar'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n trailingItems={<Button variant=\"outline\" size=\"sm\"><Download />Export</Button>}\n/>`,\n },\n ],\n}\n\nconst quickFiltersEntry: GalleryEntry = {\n id: 'quick-filters',\n title: 'QuickFilters',\n importPath: '@open-mercato/ui/backend/filters/QuickFilters',\n variants: [\n {\n id: 'presets',\n title: 'Presets (used inside AdvancedFilterPanel)',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <QuickFilters presets={demoPresets} userId=\"user-1\" onApply={() => {}} />\n </div>\n ),\n code: `import { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\n\nconst presets: FilterPreset[] = [\n { id: 'active-accounts', labelKey: 'customers.filters.activeAccounts', iconName: 'filter', build: () => activeTree },\n { id: 'added-this-week', labelKey: 'customers.filters.addedThisWeek', iconName: 'clock', build: () => recentTree },\n]\n\n<QuickFilters presets={presets} userId={userId} onApply={(tree, preset) => applyTree(tree)} />`,\n },\n {\n id: 'user-scoped',\n title: 'User-scoped preset (hidden without userId)',\n render: () => (\n <div className=\"flex w-full max-w-xl flex-col gap-6\">\n <QuickFilters presets={userScopedPresets} userId=\"user-1\" onApply={() => {}} />\n <QuickFilters presets={userScopedPresets} userId=\"\" onApply={() => {}} />\n </div>\n ),\n code: `import { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n// Presets with requiresUser: true are hidden when userId is empty.\n<QuickFilters presets={presets} userId={userId} onApply={applyTree} />`,\n },\n ],\n}\n\nconst activeFilterChipsEntry: GalleryEntry = {\n id: 'active-filter-chips',\n title: 'ActiveFilterChips',\n importPath: '@open-mercato/ui/backend/filters/ActiveFilterChips',\n variants: [\n {\n id: 'rule-chips',\n title: 'Rule chips (text, toned select, range)',\n render: () => <DemoActiveFilterChips initialTree={ruleChipsTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n<ActiveFilterChips\n tree={tree}\n fields={fields}\n popoverOpen={panelOpen}\n onRemoveNode={(id) => dispatch({ type: 'removeNode', id })}\n onOpen={(focusNodeId) => setPanelOpen(true)}\n/>`,\n },\n {\n id: 'group-chip',\n title: 'Group chip (first rule +N)',\n render: () => <DemoActiveFilterChips initialTree={groupChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// An OR group renders as a single chip: \"Status: Prospect +1\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n {\n id: 'valueless-operator',\n title: 'Valueless operator chip',\n render: () => <DemoActiveFilterChips initialTree={valuelessChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// Valueless operators read as a phrase: \"Email is empty\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n ],\n}\n\nconst advancedFilterBuilderEntry: GalleryEntry = {\n id: 'advanced-filter-builder',\n title: 'AdvancedFilterBuilder',\n importPath: '@open-mercato/ui/backend/filters/AdvancedFilterBuilder',\n variants: [\n {\n id: 'single-rule',\n title: 'Single rule (presentational core of AdvancedFilterPanel)',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderSingleRuleTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n<AdvancedFilterBuilder\n fields={fields}\n value={tree}\n onChange={setTree}\n onApply={applyFilters}\n onClear={clearFilters}\n/>`,\n },\n {\n id: 'nested-group',\n title: 'Rule with nested OR group',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderNestedTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n// Groups nest up to 3 levels; the value is a plain AdvancedFilterTree.\n<AdvancedFilterBuilder fields={fields} value={tree} onChange={setTree} onApply={applyFilters} onClear={clearFilters} />`,\n },\n ],\n}\n\nconst filterEmptyStateEntry: GalleryEntry = {\n id: 'filter-empty-state',\n title: 'FilterEmptyState',\n importPath: '@open-mercato/ui/backend/filters/FilterEmptyState',\n variants: [\n {\n id: 'default',\n title: 'Default (panel empty state of AdvancedFilterPanel)',\n render: () => <DemoFilterEmptyState />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\n\n<FilterEmptyState onAddCondition={openFieldPicker} addConditionRef={addConditionRef} />`,\n },\n {\n id: 'with-quick-filters',\n title: 'With quick filters slot',\n render: () => <DemoFilterEmptyState withQuickFilters />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n<FilterEmptyState\n onAddCondition={openFieldPicker}\n addConditionRef={addConditionRef}\n quickFilters={<QuickFilters presets={presets} userId={userId} onApply={applyTree} />}\n/>`,\n },\n ],\n}\n\nconst listEmptyStateEntry: GalleryEntry = {\n id: 'list-empty-state',\n title: 'ListEmptyState',\n importPath: '@open-mercato/ui/backend/filters/ListEmptyState',\n variants: [\n {\n id: 'with-create-action',\n title: 'With create action',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState entityName=\"companies\" onCreate={() => {}} createLabel=\"Add company\" />\n </div>\n ),\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n// Pass to DataTable's emptyState for the zero-records case.\n<ListEmptyState entityName=\"companies\" createHref=\"/backend/customers/companies/create\" createLabel=\"Add company\" />`,\n },\n {\n id: 'custom-copy',\n title: 'Custom title and description',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState\n title=\"No imports yet\"\n description=\"Connect a source or upload a CSV file to bring records in.\"\n />\n </div>\n ),\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n<ListEmptyState\n title=\"No imports yet\"\n description=\"Connect a source or upload a CSV file to bring records in.\"\n/>`,\n },\n ],\n}\n\nconst filteredEmptyResultsEntry: GalleryEntry = {\n id: 'filtered-empty-results',\n title: 'FilteredEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/FilteredEmptyResults',\n variants: [\n {\n id: 'filters-only',\n title: 'Filters active',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n />\n </div>\n ),\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// DataTable renders this automatically when filters match nothing.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast={tree.root.children.length > 0}\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n/>`,\n },\n {\n id: 'with-search',\n title: 'Search and filters active',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n onClearSearch={() => {}}\n />\n </div>\n ),\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// Passing onClearSearch switches to combined copy and clears both at once.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n onClearSearch={clearSearch}\n/>`,\n },\n ],\n}\n\nconst searchEmptyResultsEntry: GalleryEntry = {\n id: 'search-empty-results',\n title: 'SearchEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/SearchEmptyResults',\n variants: [\n {\n id: 'default',\n title: 'Default',\n render: () => (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults query=\"northwind\" onClearSearch={() => {}} />\n </div>\n ),\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n// DataTable renders this automatically when a search matches nothing.\n<SearchEmptyResults query={search} onClearSearch={() => setSearch('')} />`,\n },\n {\n id: 'with-entity',\n title: 'With entity label',\n render: () => (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults\n query=\"northwind\"\n entityNamePlural=\"companies\"\n onClearSearch={() => {}}\n />\n </div>\n ),\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n<SearchEmptyResults query={search} entityNamePlural=\"companies\" onClearSearch={() => setSearch('')} />`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n filterBarEntry,\n quickFiltersEntry,\n activeFilterChipsEntry,\n advancedFilterBuilderEntry,\n filterEmptyStateEntry,\n listEmptyStateEntry,\n filteredEmptyResultsEntry,\n searchEmptyResultsEntry,\n]\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { useT } from '@open-mercato/shared/lib/i18n/context'\nimport * as React from 'react'\nimport { SourceFilterParts, SourceFilterPanel, SourceFilterToolbar } from '../demos/source-filters'\nimport { sourceFilterExampleCode } from '../demos/source-filters-code.generated'\nimport { Download } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { FilterBar, type FilterDef, type FilterValues } from '@open-mercato/ui/backend/FilterBar'\nimport { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\nimport { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\nimport { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\nimport { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\nimport { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\nimport { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\nimport type { FilterFieldDef } from '@open-mercato/shared/lib/query/advanced-filter'\nimport type { AdvancedFilterTree, FilterGroup, FilterRule } from '@open-mercato/shared/lib/query/advanced-filter-tree'\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// AdvancedFilterPanel itself is not showcased: it is a popover host that\n// orchestrates open/anchor state and saved-filter persistence. Its\n// presentational subcomponents (AdvancedFilterBuilder, QuickFilters,\n// FilterEmptyState) are shown standalone below with variant titles noting it.\n\n// ---------------------------------------------------------------------------\n// Inline demo data \u2014 no API calls. Field defs and trees mirror what CRM list\n// pages pass to the advanced filter stack.\n// ---------------------------------------------------------------------------\nfunction FilterBarEntryTrailingItemsPreview() {\n const t = useT()\n return (\n <DemoFilterBar\n trailingItems={\n <Button variant=\"outline\" size=\"sm\">\n <Download />\n {t('design_system.gallery.samples.content.export')}\n </Button>\n }\n />\n )\n}\nfunction ListEmptyStateEntryWithCreateActionPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState\n entityName={t('design_system.gallery.samples.content.companies')}\n onCreate={() => {}}\n createLabel={t('design_system.gallery.samples.content.addCompany')}\n />\n </div>\n )\n}\nfunction ListEmptyStateEntryCustomCopyPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState\n title={t('design_system.gallery.samples.content.noImportsYet')}\n description={t('design_system.gallery.samples.content.connectASourceOrUploadACsvFileToBringRecordsIn')}\n />\n </div>\n )\n}\nfunction FilteredEmptyResultsEntryFiltersOnlyPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural={t('design_system.gallery.samples.content.companies')}\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n />\n </div>\n )\n}\nfunction FilteredEmptyResultsEntryWithSearchPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural={t('design_system.gallery.samples.content.companies')}\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n onClearSearch={() => {}}\n />\n </div>\n )\n}\nfunction SearchEmptyResultsEntryWithEntityPreview() {\n const t = useT()\n return (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults\n query=\"northwind\"\n entityNamePlural={t('design_system.gallery.samples.content.companies')}\n onClearSearch={() => {}}\n />\n </div>\n )\n}\nfunction QuickFiltersEntryPresetsPreview() {\n const t = useT()\n return (\n <div className=\"w-full max-w-xl\">\n <QuickFilters presets={demoPresets(t)} userId=\"user-1\" onApply={() => {}} />\n </div>\n )\n}\nfunction QuickFiltersEntryUserScopedPreview() {\n const t = useT()\n return (\n <div className=\"flex w-full max-w-xl flex-col gap-6\">\n <QuickFilters presets={userScopedPresets(t)} userId=\"user-1\" onApply={() => {}} />\n <QuickFilters presets={userScopedPresets(t)} userId=\"\" onApply={() => {}} />\n </div>\n )\n}\nconst demoFilterDefs = (t: ReturnType<typeof useT>): FilterDef[] => [\n {\n id: 'city',\n label: t('design_system.gallery.samples.content.city'),\n type: 'text',\n placeholder: t('design_system.gallery.samples.content.eGBerlin'),\n },\n {\n id: 'status',\n label: t('design_system.gallery.samples.content.status'),\n type: 'select',\n options: [\n {\n value: 'active',\n label: t('design_system.gallery.samples.content.active'),\n },\n {\n value: 'prospect',\n label: t('design_system.gallery.samples.content.prospect'),\n },\n {\n value: 'churned',\n label: t('design_system.gallery.samples.content.churned'),\n },\n ],\n },\n {\n id: 'hasOpenDeals',\n label: t('design_system.gallery.samples.content.hasOpenDeals'),\n type: 'checkbox',\n },\n]\nconst demoFields = (t: ReturnType<typeof useT>): FilterFieldDef[] => [\n {\n key: 'name',\n label: t('design_system.gallery.samples.content.name'),\n type: 'text',\n },\n {\n key: 'email',\n label: t('design_system.gallery.samples.content.email'),\n type: 'text',\n },\n {\n key: 'status',\n label: t('design_system.gallery.samples.content.status'),\n type: 'select',\n options: [\n {\n value: 'active',\n label: t('design_system.gallery.samples.content.active'),\n tone: 'success',\n },\n {\n value: 'prospect',\n label: t('design_system.gallery.samples.content.prospect'),\n tone: 'info',\n },\n {\n value: 'churned',\n label: t('design_system.gallery.samples.content.churned'),\n tone: 'error',\n },\n ],\n },\n {\n key: 'employees',\n label: t('design_system.gallery.samples.content.employees'),\n type: 'number',\n },\n]\nfunction rule(id: string, field: string, operator: FilterRule['operator'], value: unknown): FilterRule {\n return {\n id,\n type: 'rule',\n field,\n operator,\n value,\n }\n}\nfunction tree(children: FilterGroup['children']): AdvancedFilterTree {\n return {\n root: {\n id: 'root',\n type: 'group',\n combinator: 'and',\n children,\n },\n }\n}\nconst ruleChipsTree = tree([\n rule('r1', 'name', 'contains', 'north'),\n rule('r2', 'status', 'is', 'active'),\n rule('r3', 'employees', 'between', [10, 50]),\n])\nconst groupChipTree = tree([\n {\n id: 'g1',\n type: 'group',\n combinator: 'or',\n children: [rule('g1r1', 'status', 'is', 'prospect'), rule('g1r2', 'status', 'is', 'churned')],\n },\n])\nconst valuelessChipTree = tree([rule('r4', 'email', 'is_empty', null)])\nconst builderSingleRuleTree = tree([rule('b1', 'status', 'is', 'active')])\nconst builderNestedTree = tree([\n rule('b2', 'name', 'contains', 'north'),\n {\n id: 'bg1',\n type: 'group',\n combinator: 'or',\n children: [rule('bg1r1', 'status', 'is', 'prospect'), rule('bg1r2', 'employees', 'greater_than', 100)],\n },\n])\nconst demoPresets = (t: ReturnType<typeof useT>): FilterPreset[] => [\n {\n id: 'active-accounts',\n labelKey: t('design_system.gallery.samples.content.activeAccounts'),\n iconName: 'filter',\n build: () => tree([rule('p1', 'status', 'is', 'active')]),\n },\n {\n id: 'added-this-week',\n labelKey: t('design_system.gallery.samples.content.addedThisWeek'),\n iconName: 'clock',\n build: () => tree([rule('p2', 'name', 'is_not_empty', null)]),\n },\n]\nconst userScopedPresets = (t: ReturnType<typeof useT>): FilterPreset[] => [\n ...demoPresets(t),\n {\n id: 'my-accounts',\n labelKey: t('design_system.gallery.samples.content.myAccounts'),\n requiresUser: true,\n build: ({ userId }) => tree([rule('p3', 'name', 'contains', userId)]),\n },\n]\n\n// ---------------------------------------------------------------------------\n// Demo wrappers \u2014 controlled components need local state to be interactive in\n// the gallery. The `code` snippets show the essential consumer usage, not\n// these wrappers.\n// ---------------------------------------------------------------------------\n\nfunction DemoFilterBar({ layout, trailingItems }: { layout?: 'stacked' | 'inline'; trailingItems?: React.ReactNode }) {\n const t = useT()\n const [search, setSearch] = React.useState('')\n const [values, setValues] = React.useState<FilterValues>({\n status: 'active',\n })\n return (\n <div className=\"w-full max-w-2xl\">\n <FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={demoFilterDefs(t)}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n layout={layout}\n trailingItems={trailingItems}\n />\n </div>\n )\n}\nfunction DemoActiveFilterChips({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const t = useT()\n const [value, setValue] = React.useState(initialTree)\n const removeNode = (id: string) =>\n setValue((prev) => ({\n root: {\n ...prev.root,\n children: prev.root.children.filter((child) => child.id !== id),\n },\n }))\n return (\n <div className=\"w-full max-w-2xl\">\n <ActiveFilterChips\n tree={value}\n fields={demoFields(t)}\n popoverOpen={false}\n onRemoveNode={removeNode}\n onOpen={() => {}}\n />\n </div>\n )\n}\nfunction DemoAdvancedFilterBuilder({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const t = useT()\n const [value, setValue] = React.useState(initialTree)\n return (\n <div className=\"w-full max-w-2xl rounded-lg border bg-popover p-3\">\n <AdvancedFilterBuilder\n fields={demoFields(t)}\n value={value}\n onChange={setValue}\n onApply={() => {}}\n onClear={() => setValue(tree([]))}\n />\n </div>\n )\n}\nfunction DemoFilterEmptyState({ withQuickFilters }: { withQuickFilters?: boolean }) {\n const t = useT()\n const addConditionRef = React.useRef<HTMLButtonElement | null>(null)\n return (\n <div className=\"w-full max-w-xl rounded-lg border bg-popover\">\n <FilterEmptyState\n onAddCondition={() => {}}\n addConditionRef={addConditionRef}\n quickFilters={\n withQuickFilters ? <QuickFilters presets={demoPresets(t)} userId=\"user-1\" onApply={() => {}} /> : undefined\n }\n />\n </div>\n )\n}\nconst filterBarEntry: GalleryEntry = {\n id: 'filter-bar',\n title: 'FilterBar',\n importPath: '@open-mercato/ui/backend/FilterBar',\n variants: [\n {\n id: 'stacked',\n title: 'Stacked (default)',\n render: () => <DemoFilterBar />,\n code: `import { FilterBar, type FilterDef, type FilterValues } from '@open-mercato/ui/backend/FilterBar'\n\nconst filters: FilterDef[] = [\n { id: 'city', label: 'City', type: 'text' },\n { id: 'status', label: 'Status', type: 'select', options: statusOptions },\n { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },\n]\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n/>`,\n },\n {\n id: 'inline',\n title: 'Inline layout',\n render: () => <DemoFilterBar layout=\"inline\" />,\n code: `import { FilterBar } from '@open-mercato/ui/backend/FilterBar'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n layout=\"inline\"\n/>`,\n },\n {\n id: 'trailing-items',\n title: 'With trailing items',\n render: () => <FilterBarEntryTrailingItemsPreview />,\n code: `import { Download } from 'lucide-react'\nimport { FilterBar } from '@open-mercato/ui/backend/FilterBar'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n trailingItems={<Button variant=\"outline\" size=\"sm\"><Download />Export</Button>}\n/>`,\n },\n ],\n}\nconst quickFiltersEntry: GalleryEntry = {\n id: 'quick-filters',\n title: 'QuickFilters',\n importPath: '@open-mercato/ui/backend/filters/QuickFilters',\n variants: [\n {\n id: 'presets',\n title: 'Presets (used inside AdvancedFilterPanel)',\n render: () => <QuickFiltersEntryPresetsPreview />,\n code: `import { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\n\nconst presets: FilterPreset[] = [\n { id: 'active-accounts', labelKey: 'customers.filters.activeAccounts', iconName: 'filter', build: () => activeTree },\n { id: 'added-this-week', labelKey: 'customers.filters.addedThisWeek', iconName: 'clock', build: () => recentTree },\n]\n\n<QuickFilters presets={presets} userId={userId} onApply={(tree, preset) => applyTree(tree)} />`,\n },\n {\n id: 'user-scoped',\n title: 'User-scoped preset (hidden without userId)',\n render: () => <QuickFiltersEntryUserScopedPreview />,\n code: `import { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n// Presets with requiresUser: true are hidden when userId is empty.\n<QuickFilters presets={presets} userId={userId} onApply={applyTree} />`,\n },\n ],\n}\nconst activeFilterChipsEntry: GalleryEntry = {\n id: 'active-filter-chips',\n title: 'ActiveFilterChips',\n importPath: '@open-mercato/ui/backend/filters/ActiveFilterChips',\n variants: [\n {\n id: 'rule-chips',\n title: 'Rule chips (text, toned select, range)',\n render: () => <DemoActiveFilterChips initialTree={ruleChipsTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n<ActiveFilterChips\n tree={tree}\n fields={fields}\n popoverOpen={panelOpen}\n onRemoveNode={(id) => dispatch({ type: 'removeNode', id })}\n onOpen={(focusNodeId) => setPanelOpen(true)}\n/>`,\n },\n {\n id: 'group-chip',\n title: 'Group chip (first rule +N)',\n render: () => <DemoActiveFilterChips initialTree={groupChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// An OR group renders as a single chip: \"Status: Prospect +1\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n {\n id: 'valueless-operator',\n title: 'Valueless operator chip',\n render: () => <DemoActiveFilterChips initialTree={valuelessChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// Valueless operators read as a phrase: \"Email is empty\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n ],\n}\nconst advancedFilterBuilderEntry: GalleryEntry = {\n id: 'advanced-filter-builder',\n title: 'AdvancedFilterBuilder',\n importPath: '@open-mercato/ui/backend/filters/AdvancedFilterBuilder',\n variants: [\n {\n id: 'single-rule',\n title: 'Single rule (presentational core of AdvancedFilterPanel)',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderSingleRuleTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n<AdvancedFilterBuilder\n fields={fields}\n value={tree}\n onChange={setTree}\n onApply={applyFilters}\n onClear={clearFilters}\n/>`,\n },\n {\n id: 'nested-group',\n title: 'Rule with nested OR group',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderNestedTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n// Groups nest up to 3 levels; the value is a plain AdvancedFilterTree.\n<AdvancedFilterBuilder fields={fields} value={tree} onChange={setTree} onApply={applyFilters} onClear={clearFilters} />`,\n },\n ],\n}\nconst filterEmptyStateEntry: GalleryEntry = {\n id: 'filter-empty-state',\n title: 'FilterEmptyState',\n importPath: '@open-mercato/ui/backend/filters/FilterEmptyState',\n variants: [\n {\n id: 'default',\n title: 'Default (panel empty state of AdvancedFilterPanel)',\n render: () => <DemoFilterEmptyState />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\n\n<FilterEmptyState onAddCondition={openFieldPicker} addConditionRef={addConditionRef} />`,\n },\n {\n id: 'with-quick-filters',\n title: 'With quick filters slot',\n render: () => <DemoFilterEmptyState withQuickFilters />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n<FilterEmptyState\n onAddCondition={openFieldPicker}\n addConditionRef={addConditionRef}\n quickFilters={<QuickFilters presets={presets} userId={userId} onApply={applyTree} />}\n/>`,\n },\n ],\n}\nconst listEmptyStateEntry: GalleryEntry = {\n id: 'list-empty-state',\n title: 'ListEmptyState',\n importPath: '@open-mercato/ui/backend/filters/ListEmptyState',\n variants: [\n {\n id: 'with-create-action',\n title: 'With create action',\n render: () => <ListEmptyStateEntryWithCreateActionPreview />,\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n// Pass to DataTable's emptyState for the zero-records case.\n<ListEmptyState entityName=\"companies\" createHref=\"/backend/customers/companies/create\" createLabel=\"Add company\" />`,\n },\n {\n id: 'custom-copy',\n title: 'Custom title and description',\n render: () => <ListEmptyStateEntryCustomCopyPreview />,\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n<ListEmptyState\n title=\"No imports yet\"\n description=\"Connect a source or upload a CSV file to bring records in.\"\n/>`,\n },\n ],\n}\nconst filteredEmptyResultsEntry: GalleryEntry = {\n id: 'filtered-empty-results',\n title: 'FilteredEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/FilteredEmptyResults',\n variants: [\n {\n id: 'filters-only',\n title: 'Filters active',\n render: () => <FilteredEmptyResultsEntryFiltersOnlyPreview />,\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// DataTable renders this automatically when filters match nothing.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast={tree.root.children.length > 0}\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n/>`,\n },\n {\n id: 'with-search',\n title: 'Search and filters active',\n render: () => <FilteredEmptyResultsEntryWithSearchPreview />,\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// Passing onClearSearch switches to combined copy and clears both at once.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n onClearSearch={clearSearch}\n/>`,\n },\n ],\n}\nconst searchEmptyResultsEntry: GalleryEntry = {\n id: 'search-empty-results',\n title: 'SearchEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/SearchEmptyResults',\n variants: [\n {\n id: 'default',\n title: 'Default',\n render: () => (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults query=\"northwind\" onClearSearch={() => {}} />\n </div>\n ),\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n// DataTable renders this automatically when a search matches nothing.\n<SearchEmptyResults query={search} onClearSearch={() => setSearch('')} />`,\n },\n {\n id: 'with-entity',\n title: 'With entity label',\n render: () => <SearchEmptyResultsEntryWithEntityPreview />,\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n<SearchEmptyResults query={search} entityNamePlural=\"companies\" onClearSearch={() => setSearch('')} />`,\n },\n ],\n}\nexport const entries: GalleryEntry[] = [\n {\n id: 'filter-toolbar',\n title: 'Filter Compositions',\n importPath: '@open-mercato/ui/primitives/filter-toolbar',\n figmaNodeId: '4370:6018',\n descriptionKey: 'design_system.entries.filterToolbar.description',\n variants: [\n {\n id: 'table',\n title: 'Horizontal / table',\n render: () => <SourceFilterToolbar type=\"table\" />,\n code: sourceFilterExampleCode('<SourceFilterToolbar type=\"table\" />'),\n },\n {\n id: 'calendar',\n title: 'Horizontal / calendar',\n render: () => <SourceFilterToolbar type=\"calendar\" />,\n code: sourceFilterExampleCode('<SourceFilterToolbar type=\"calendar\" />'),\n },\n {\n id: 'vertical-parts',\n title: 'Vertical / items, header and footer',\n render: () => <SourceFilterParts />,\n code: sourceFilterExampleCode('<SourceFilterParts />'),\n },\n {\n id: 'vertical-panel',\n title: 'Vertical / apply draft filters',\n render: () => (\n <div className=\"w-[640px] max-w-full rounded-lg border border-border\">\n <SourceFilterPanel />\n </div>\n ),\n code: sourceFilterExampleCode('<SourceFilterPanel />'),\n },\n ],\n },\n filterBarEntry,\n quickFiltersEntry,\n activeFilterChipsEntry,\n advancedFilterBuilderEntry,\n filterEmptyStateEntry,\n listEmptyStateEntry,\n filteredEmptyResultsEntry,\n searchEmptyResultsEntry,\n]\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|