@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,10 +1,7 @@
|
|
|
1
1
|
import { createModuleQueue } from "@open-mercato/queue";
|
|
2
|
-
import { createLogger } from "@open-mercato/shared/lib/logger";
|
|
3
|
-
const logger = createLogger("push_notifications");
|
|
4
2
|
const PUSH_DELIVERIES_QUEUE = "push-deliveries";
|
|
5
3
|
const PUSH_STUCK_RECLAIM_QUEUE = "push-stuck-reclaim";
|
|
6
4
|
const queues = /* @__PURE__ */ new Map();
|
|
7
|
-
const LOCAL_WORKER_PROMISE_KEY = "__openMercatoPushLocalWorkerPromise__";
|
|
8
5
|
function getPushQueue(queueName = PUSH_DELIVERIES_QUEUE) {
|
|
9
6
|
const existing = queues.get(queueName);
|
|
10
7
|
if (existing) return existing;
|
|
@@ -13,36 +10,9 @@ function getPushQueue(queueName = PUSH_DELIVERIES_QUEUE) {
|
|
|
13
10
|
queues.set(queueName, created);
|
|
14
11
|
return created;
|
|
15
12
|
}
|
|
16
|
-
async function ensureLocalPushQueueWorkerStarted() {
|
|
17
|
-
if (process.env.QUEUE_STRATEGY === "async") return;
|
|
18
|
-
const globalStore = globalThis;
|
|
19
|
-
if (globalStore[LOCAL_WORKER_PROMISE_KEY]) {
|
|
20
|
-
await globalStore[LOCAL_WORKER_PROMISE_KEY];
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
globalStore[LOCAL_WORKER_PROMISE_KEY] = (async () => {
|
|
24
|
-
const queue = getPushQueue();
|
|
25
|
-
await queue.process(async (job) => {
|
|
26
|
-
const [{ createRequestContainer }, { processPushDeliveryJob }] = await Promise.all([
|
|
27
|
-
import("@open-mercato/shared/lib/di/container"),
|
|
28
|
-
import("./push-delivery.js")
|
|
29
|
-
]);
|
|
30
|
-
const container = await createRequestContainer();
|
|
31
|
-
const em = container.resolve("em").fork();
|
|
32
|
-
await processPushDeliveryJob(em, job.payload, (name) => container.resolve(name));
|
|
33
|
-
});
|
|
34
|
-
})().catch((error) => {
|
|
35
|
-
delete globalStore[LOCAL_WORKER_PROMISE_KEY];
|
|
36
|
-
logger.error("Failed to start local delivery worker", { error });
|
|
37
|
-
throw error;
|
|
38
|
-
});
|
|
39
|
-
await globalStore[LOCAL_WORKER_PROMISE_KEY];
|
|
40
|
-
}
|
|
41
13
|
async function enqueuePushDelivery(job, delayMs) {
|
|
42
14
|
const queue = getPushQueue();
|
|
43
|
-
|
|
44
|
-
await ensureLocalPushQueueWorkerStarted();
|
|
45
|
-
return jobId;
|
|
15
|
+
return queue.enqueue(job, delayMs && delayMs > 0 ? { delayMs } : void 0);
|
|
46
16
|
}
|
|
47
17
|
export {
|
|
48
18
|
PUSH_DELIVERIES_QUEUE,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/push_notifications/lib/queue.ts"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { createModuleQueue, type Queue } from '@open-mercato/queue'\n\nexport interface PushDeliveryJob {\n deliveryId: string\n tenantId: string\n organizationId: string | null\n}\n\nexport const PUSH_DELIVERIES_QUEUE = 'push-deliveries'\n// Scheduler-driven tick that recovers rows stranded in `sending` by a crashed worker (see\n// lib/push-reaper.ts). The `@open-mercato/scheduler` interval entry registered in setup.ts enqueues\n// one tick per tenant onto this queue; the reclaim-stuck worker processes it.\nexport const PUSH_STUCK_RECLAIM_QUEUE = 'push-stuck-reclaim'\n\nconst queues = new Map<string, Queue<PushDeliveryJob>>()\n\nexport function getPushQueue(queueName: string = PUSH_DELIVERIES_QUEUE): Queue<PushDeliveryJob> {\n const existing = queues.get(queueName)\n if (existing) return existing\n\n const concurrency = Math.max(1, Number.parseInt(process.env.PUSH_QUEUE_CONCURRENCY ?? '8', 10) || 8)\n const created = createModuleQueue<PushDeliveryJob>(queueName, { concurrency })\n\n queues.set(queueName, created)\n return created\n}\n\n/**\n * Enqueue only. The send is owned by the auto-discovered `workers/send-push.worker.ts`\n * in BOTH queue strategies \u2014 a worker process in `async` mode, the local worker runner\n * (`yarn dev`, `drainIntegrationQueue`) in local mode.\n *\n * This deliberately never starts a consumer itself. Booting one from the request path\n * deadlocked the caller: the local strategy's `process()` does not return until its\n * first drain finishes, so awaiting it ran the send handler INSIDE the enqueueing\n * request \u2014 and a retryable send re-enqueues from within that handler, which awaited\n * the very bootstrap promise it was running under. The first push whose delivery failed\n * retryably therefore wedged `POST /api/notifications` forever, and because the promise\n * was cached on `globalThis` every later push in the process awaited it too. It also put\n * a second consumer on a queue directory the local strategy documents as single-consumer.\n */\nexport async function enqueuePushDelivery(job: PushDeliveryJob, delayMs?: number): Promise<string> {\n const queue = getPushQueue()\n return queue.enqueue(job, delayMs && delayMs > 0 ? { delayMs } : undefined)\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,yBAAqC;AAQvC,MAAM,wBAAwB;AAI9B,MAAM,2BAA2B;AAExC,MAAM,SAAS,oBAAI,IAAoC;AAEhD,SAAS,aAAa,YAAoB,uBAA+C;AAC9F,QAAM,WAAW,OAAO,IAAI,SAAS;AACrC,MAAI,SAAU,QAAO;AAErB,QAAM,cAAc,KAAK,IAAI,GAAG,OAAO,SAAS,QAAQ,IAAI,0BAA0B,KAAK,EAAE,KAAK,CAAC;AACnG,QAAM,UAAU,kBAAmC,WAAW,EAAE,YAAY,CAAC;AAE7E,SAAO,IAAI,WAAW,OAAO;AAC7B,SAAO;AACT;AAgBA,eAAsB,oBAAoB,KAAsB,SAAmC;AACjG,QAAM,QAAQ,aAAa;AAC3B,SAAO,MAAM,QAAQ,KAAK,WAAW,UAAU,IAAI,EAAE,QAAQ,IAAI,MAAS;AAC5E;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/jest.config.cjs
CHANGED
|
@@ -9,6 +9,7 @@ module.exports = {
|
|
|
9
9
|
rootDir: '.',
|
|
10
10
|
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
|
|
11
11
|
moduleNameMapper: {
|
|
12
|
+
'\\.(png|svg)$': '<rootDir>/jest.mocks/image.js',
|
|
12
13
|
'^#generated/entities\\.ids\\.generated$': '<rootDir>/jest.mocks/entities.ids.generated.js',
|
|
13
14
|
'^#generated/(.*)$': '<rootDir>/generated/$1',
|
|
14
15
|
'^@open-mercato/core/generated/entities\\.ids\\.generated$': '<rootDir>/jest.mocks/entities.ids.generated.js',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = '/__fixtures__/image.png'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -253,16 +253,16 @@
|
|
|
253
253
|
"zod": "^4.4.3"
|
|
254
254
|
},
|
|
255
255
|
"peerDependencies": {
|
|
256
|
-
"@open-mercato/ai-assistant": "0.
|
|
257
|
-
"@open-mercato/shared": "0.
|
|
258
|
-
"@open-mercato/ui": "0.
|
|
256
|
+
"@open-mercato/ai-assistant": "0.8.0",
|
|
257
|
+
"@open-mercato/shared": "0.8.0",
|
|
258
|
+
"@open-mercato/ui": "0.8.0",
|
|
259
259
|
"react": "^19.0.0",
|
|
260
260
|
"react-dom": "^19.0.0"
|
|
261
261
|
},
|
|
262
262
|
"devDependencies": {
|
|
263
|
-
"@open-mercato/ai-assistant": "0.
|
|
264
|
-
"@open-mercato/shared": "0.
|
|
265
|
-
"@open-mercato/ui": "0.
|
|
263
|
+
"@open-mercato/ai-assistant": "0.8.0",
|
|
264
|
+
"@open-mercato/shared": "0.8.0",
|
|
265
|
+
"@open-mercato/ui": "0.8.0",
|
|
266
266
|
"@testing-library/dom": "^10.4.1",
|
|
267
267
|
"@testing-library/jest-dom": "^7.0.1",
|
|
268
268
|
"@testing-library/react": "^16.3.3",
|
|
@@ -285,6 +285,5 @@
|
|
|
285
285
|
"type": "git",
|
|
286
286
|
"url": "https://github.com/open-mercato/open-mercato",
|
|
287
287
|
"directory": "packages/core"
|
|
288
|
-
}
|
|
289
|
-
"stableVersion": "0.7.0"
|
|
288
|
+
}
|
|
290
289
|
}
|
|
@@ -830,6 +830,26 @@ export default function EditCatalogProductPage({
|
|
|
830
830
|
};
|
|
831
831
|
}, []);
|
|
832
832
|
|
|
833
|
+
// The browser's default `history.scrollRestoration` ("auto") tries to restore the
|
|
834
|
+
// previous session's pixel scroll offset on a full reload. This page's form sections
|
|
835
|
+
// (variants, options, unit-of-measure, ...) mount progressively as data loads, so the
|
|
836
|
+
// restore fires before the page has grown to its final height, then that same pixel
|
|
837
|
+
// offset lines up with a different, further-down section once loading finishes —
|
|
838
|
+
// landing the reload mid-page instead of at the top (#6171). Opt this page out of
|
|
839
|
+
// native scroll restoration and start every load at the top unless a hash target
|
|
840
|
+
// (handled by the effect below) asks for a specific section.
|
|
841
|
+
React.useEffect(() => {
|
|
842
|
+
if (typeof window === "undefined" || !window.history) return
|
|
843
|
+
const previousScrollRestoration = window.history.scrollRestoration
|
|
844
|
+
window.history.scrollRestoration = "manual"
|
|
845
|
+
if (!window.location.hash) {
|
|
846
|
+
window.scrollTo(0, 0)
|
|
847
|
+
}
|
|
848
|
+
return () => {
|
|
849
|
+
window.history.scrollRestoration = previousScrollRestoration
|
|
850
|
+
}
|
|
851
|
+
}, [])
|
|
852
|
+
|
|
833
853
|
// Next.js client-side navigation does not scroll to hash targets.
|
|
834
854
|
// Runs without a dependency array intentionally: the target element is rendered
|
|
835
855
|
// asynchronously by CrudForm, so we need to retry until it exists in the DOM.
|
|
@@ -1361,6 +1381,36 @@ export default function EditCatalogProductPage({
|
|
|
1361
1381
|
}
|
|
1362
1382
|
}
|
|
1363
1383
|
await updateCrud("catalog/products", payload);
|
|
1384
|
+
// The update route only returns `{ ok: true }`, so re-fetch the record to pick
|
|
1385
|
+
// up the server-bumped updatedAt and refresh the optimistic-lock token — without
|
|
1386
|
+
// this, a second consecutive save reuses the stale pre-edit updatedAt and the
|
|
1387
|
+
// lock guard falsely reports a conflict (#5985).
|
|
1388
|
+
const refreshedProductRes = await apiCall<ProductResponse>(
|
|
1389
|
+
`/api/catalog/products?id=${encodeURIComponent(productId)}&page=1&pageSize=1&withDeleted=false`,
|
|
1390
|
+
);
|
|
1391
|
+
const refreshedRecord = Array.isArray(refreshedProductRes.result?.items)
|
|
1392
|
+
? refreshedProductRes.result?.items?.[0]
|
|
1393
|
+
: undefined;
|
|
1394
|
+
const refreshedUpdatedAt =
|
|
1395
|
+
typeof refreshedRecord?.updatedAt === "string"
|
|
1396
|
+
? refreshedRecord.updatedAt
|
|
1397
|
+
: typeof refreshedRecord?.updated_at === "string"
|
|
1398
|
+
? refreshedRecord.updated_at
|
|
1399
|
+
: null;
|
|
1400
|
+
// Merge the just-submitted `values` back into `initialValues` too, not only
|
|
1401
|
+
// `updatedAt` — CrudForm re-syncs its visible fields from `initialValues`
|
|
1402
|
+
// whenever that prop's identity changes, so leaving the other fields at
|
|
1403
|
+
// their stale pre-edit snapshot here made a successful save visually
|
|
1404
|
+
// revert the field the user just changed back to its old value (#6170).
|
|
1405
|
+
setInitialValues((prev) =>
|
|
1406
|
+
prev
|
|
1407
|
+
? {
|
|
1408
|
+
...prev,
|
|
1409
|
+
...values,
|
|
1410
|
+
updatedAt: refreshedUpdatedAt ?? prev.updatedAt,
|
|
1411
|
+
}
|
|
1412
|
+
: prev,
|
|
1413
|
+
);
|
|
1364
1414
|
const previousConversionIds = new Set(
|
|
1365
1415
|
initialConversionsRef.current
|
|
1366
1416
|
.map((entry) => toTrimmedOrNull(entry.id))
|
|
@@ -39,6 +39,7 @@ import { normalizeCustomFieldSubmitValue } from '../../../../components/detail/c
|
|
|
39
39
|
import { InlineDictionaryEditor, renderMultilineMarkdownDisplay } from '../../../../components/detail/InlineEditors'
|
|
40
40
|
import { formatTemplate } from '../../../../components/detail/utils'
|
|
41
41
|
import { coerceDisplayName } from '../../../../lib/displayName'
|
|
42
|
+
import { isDetailNotFoundStatus } from '@open-mercato/core/modules/customers/lib/detailHelpers'
|
|
42
43
|
import { createTranslatorWithFallback } from '@open-mercato/shared/lib/i18n/translate'
|
|
43
44
|
import {
|
|
44
45
|
CompanyPeopleSection,
|
|
@@ -306,7 +307,7 @@ export default function CustomerCompanyDetailPage({ params }: { params?: { id?:
|
|
|
306
307
|
setData(payload as CompanyOverview)
|
|
307
308
|
} catch (err) {
|
|
308
309
|
if (cancelled) return
|
|
309
|
-
if ((err as { status?: number }).status
|
|
310
|
+
if (isDetailNotFoundStatus((err as { status?: number }).status)) {
|
|
310
311
|
setIsNotFound(true)
|
|
311
312
|
} else {
|
|
312
313
|
const message = err instanceof Error ? err.message : t('customers.companies.detail.error.load', 'Failed to load company.')
|
|
@@ -30,6 +30,7 @@ import { CompanyPeopleSection, type CompanyPersonSummary } from '../../../../com
|
|
|
30
30
|
import type { TagSummary } from '../../../../components/detail/types'
|
|
31
31
|
import type { TagsSectionController } from '@open-mercato/ui/backend/detail'
|
|
32
32
|
import { coerceDisplayName } from '../../../../lib/displayName'
|
|
33
|
+
import { isDetailNotFoundStatus } from '@open-mercato/core/modules/customers/lib/detailHelpers'
|
|
33
34
|
import { CompanyDetailHeader } from '../../../../components/detail/CompanyDetailHeader'
|
|
34
35
|
import { CompanyDetailTabs, resolveLegacyTab, type CompanyTabId } from '../../../../components/detail/CompanyDetailTabs'
|
|
35
36
|
import { useDealsAccess } from '../../../../components/detail/useDealsAccess'
|
|
@@ -152,7 +153,7 @@ export default function CompanyDetailV2Page({ params }: { params?: { id?: string
|
|
|
152
153
|
)
|
|
153
154
|
setData(payload as CompanyOverview)
|
|
154
155
|
} catch (err) {
|
|
155
|
-
if ((err as { status?: number }).status
|
|
156
|
+
if (isDetailNotFoundStatus((err as { status?: number }).status)) {
|
|
156
157
|
setIsNotFound(true)
|
|
157
158
|
} else {
|
|
158
159
|
const message = err instanceof Error ? err.message : t('customers.companies.detail.error.load', 'Failed to load company.')
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
InlineDictionaryEditor,
|
|
41
41
|
} from '../../../../components/detail/InlineEditors'
|
|
42
42
|
import { DetailFieldsSection, type DetailFieldConfig } from '@open-mercato/ui/backend/detail'
|
|
43
|
-
import { isValidSocialUrl } from '@open-mercato/core/modules/customers/lib/detailHelpers'
|
|
43
|
+
import { isValidSocialUrl, isDetailNotFoundStatus } from '@open-mercato/core/modules/customers/lib/detailHelpers'
|
|
44
44
|
import type { ActivitySummary, DealSummary, TagSummary, TodoLinkSummary } from '../../../../components/detail/types'
|
|
45
45
|
import { CustomDataSection } from '../../../../components/detail/CustomDataSection'
|
|
46
46
|
import { createTranslatorWithFallback } from '@open-mercato/shared/lib/i18n/translate'
|
|
@@ -299,7 +299,7 @@ export default function CustomerPersonDetailPage({ params }: { params?: { id?: s
|
|
|
299
299
|
)
|
|
300
300
|
setData(payload as PersonOverview)
|
|
301
301
|
} catch (err) {
|
|
302
|
-
if ((err as { status?: number }).status
|
|
302
|
+
if (isDetailNotFoundStatus((err as { status?: number }).status)) {
|
|
303
303
|
setIsNotFound(true)
|
|
304
304
|
} else {
|
|
305
305
|
const message = err instanceof Error ? err.message : t('customers.people.detail.error.load')
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
type PersonOverview,
|
|
54
54
|
} from '../../../../components/formConfig'
|
|
55
55
|
import { coerceDisplayName, coerceDisplayNameOrNull } from '../../../../lib/displayName'
|
|
56
|
+
import { isDetailNotFoundStatus } from '@open-mercato/core/modules/customers/lib/detailHelpers'
|
|
56
57
|
import { createLogger } from '@open-mercato/shared/lib/logger'
|
|
57
58
|
|
|
58
59
|
const logger = createLogger('customers')
|
|
@@ -168,7 +169,7 @@ export default function PersonDetailV2Page({ params }: { params?: { id?: string
|
|
|
168
169
|
: payload
|
|
169
170
|
setData(next as PersonOverview)
|
|
170
171
|
} catch (err) {
|
|
171
|
-
if ((err as { status?: number }).status
|
|
172
|
+
if (isDetailNotFoundStatus((err as { status?: number }).status)) {
|
|
172
173
|
setIsNotFound(true)
|
|
173
174
|
} else {
|
|
174
175
|
const message = err instanceof Error ? err.message : t('customers.people.detail.error.load', 'Failed to load person.')
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EntityManager } from '@mikro-orm/postgresql'
|
|
2
2
|
import type { QueryEngine } from '@open-mercato/shared/lib/query/types'
|
|
3
3
|
import type { EntityId } from '@open-mercato/shared/modules/entities'
|
|
4
|
+
import { isValidEntityIdShape } from '@open-mercato/shared/lib/query/engine'
|
|
4
5
|
import { parseBooleanFromUnknown } from '@open-mercato/shared/lib/boolean'
|
|
5
6
|
import {
|
|
6
7
|
CustomerInteraction,
|
|
@@ -230,6 +231,15 @@ export async function resolveLegacyTodoDetails(
|
|
|
230
231
|
for (const [source, idSet] of idsBySource.entries()) {
|
|
231
232
|
const ids = Array.from(idSet)
|
|
232
233
|
if (!ids.length) continue
|
|
234
|
+
if (!isValidEntityIdShape(source)) {
|
|
235
|
+
// A legacy/malformed `todoSource` (e.g. a bare module name written before
|
|
236
|
+
// the value was required to be a `module:entity` id) does not resolve to
|
|
237
|
+
// any real table. Querying it anyway surfaces a raw DB error ("relation
|
|
238
|
+
// ... does not exist") as a dashboard-wide schema-mismatch banner instead
|
|
239
|
+
// of just leaving that row's details unresolved.
|
|
240
|
+
logger.warn('Skipping malformed legacy todo source', { component: 'todoCompatibility', source })
|
|
241
|
+
continue
|
|
242
|
+
}
|
|
233
243
|
try {
|
|
234
244
|
const result = await queryEngine.query<Record<string, unknown>>(source as EntityId, {
|
|
235
245
|
tenantId,
|
|
@@ -3,9 +3,10 @@ export const metadata = {
|
|
|
3
3
|
requireFeatures: ['design_system.view'],
|
|
4
4
|
pageTitle: 'Design system',
|
|
5
5
|
pageTitleKey: 'design_system.nav.title',
|
|
6
|
-
pageGroup: '
|
|
7
|
-
pageGroupKey: '
|
|
6
|
+
pageGroup: 'Developers',
|
|
7
|
+
pageGroupKey: 'backend.nav.developers',
|
|
8
8
|
pageOrder: 900,
|
|
9
|
+
pageContext: 'settings' as const,
|
|
9
10
|
icon: 'shapes',
|
|
10
11
|
breadcrumb: [{ label: 'Design system', labelKey: 'design_system.nav.title' }],
|
|
11
12
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
These local image fixtures were downloaded from the Open Mercato Figma design system (`qCq9z6q1if0mpoRstV5OEA`) for its component gallery on 2026-09-12.
|
|
2
|
+
|
|
3
|
+
| Fixture | Figma node | Content |
|
|
4
|
+
| --- | --- | --- |
|
|
5
|
+
| `avatar-photo.png` | `246:11135` | James Brown, photo |
|
|
6
|
+
| `avatar-memoji.png` | `246:11139` | James Brown, Memoji |
|
|
7
|
+
| `avatar-illustration.png` | `246:11141` | James Brown, illustration |
|
|
8
|
+
|
|
9
|
+
The gallery uses the production Avatar image API and its object-cover crop. These fixtures demonstrate content support; they do not claim exact parity with every Figma crop, persona, or size.
|
|
10
|
+
|
|
11
|
+
The `social-*-filled.svg` and `social-*-stroke.svg` fixtures are unmodified exports of the logo instances in Social Buttons set `180:4264`. The 14 exact logo-instance IDs are recorded in `docs/design-system/figma-audit/button-compositions.json`. The gallery uses masks for the monochrome Apple, GitHub, and X stroke logos so they follow the semantic foreground in both themes; other logos retain their original colors. These are local component examples, with no authentication requests.
|
|
12
|
+
|
|
13
|
+
Menu follow-up source assets (read-only SVG export, same Figma file):
|
|
14
|
+
|
|
15
|
+
- `menu-mastercard.svg`: `214:1327`, Select Provider, 32×24.
|
|
16
|
+
- `menu-apex.svg`: `254:5084`, Company Apex.
|
|
17
|
+
- `menu-spotify.svg`: `214:394`, Brand Spotify.
|
|
18
|
+
- `menu-united-states.svg`: `253:6415`, Country United States.
|
|
19
|
+
|
|
20
|
+
Menu demos also reuse the existing Poland/Google PNGs and Avatar illustration. No remote image requests are made by the previews.
|
|
21
|
+
|
|
22
|
+
- `input-european-union.svg`: exact read-only Figma SVG export of `253:6853`, used by the Amount Input source composition (`320:1532`).
|
|
23
|
+
|
|
24
|
+
## Finance widget artwork
|
|
25
|
+
|
|
26
|
+
The `finance-*` PNG/SVG files are original read-only Figma exports for the 32 finance widget compositions from component set `3963:7181`. Exact node IDs and export methods are recorded in `docs/design-system/figma-audit/finance-widgets-followup.json`. The exports retain source artwork and are bundled locally through `finance-widgets-artwork.ts`; no expiring asset URL is used at runtime.
|
|
27
|
+
|
|
28
|
+
## Cryptocurrency artwork
|
|
29
|
+
|
|
30
|
+
The 30 `crypto-*` PNG/SVG files are original read-only exports from the Cryptocurrency page (`6696:81120`). They include twelve coin marks, three wallet-provider logos, the source brand, Wei Chen profile photo and empty-search emoji, eight monochrome interface glyphs, and four 12px transaction status graphics. `cryptocurrency-artwork.ts` normalizes Vite and Next asset imports. Monochrome SVGs are used as masks with semantic foreground tokens; colored graphics retain their original bytes. Export node IDs are recorded in `docs/design-system/figma-audit/cryptocurrency-followup.json`.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M9 15.75C5.27198 15.75 2.25 12.728 2.25 9C2.25 5.27198 5.27198 2.25 9 2.25C12.728 2.25 15.75 5.27198 15.75 9C15.75 12.728 12.728 15.75 9 15.75ZM9 14.4C10.4322 14.4 11.8057 13.8311 12.8184 12.8184C13.8311 11.8057 14.4 10.4322 14.4 9C14.4 7.56783 13.8311 6.19432 12.8184 5.18162C11.8057 4.16893 10.4322 3.6 9 3.6C7.56783 3.6 6.19432 4.16893 5.18162 5.18162C4.16893 6.19432 3.6 7.56783 3.6 9C3.6 10.4322 4.16893 11.8057 5.18162 12.8184C6.19432 13.8311 7.56783 14.4 9 14.4ZM9.675 9H12.375V10.35H8.325V5.625H9.675V9Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M2.47988 3.92L4.99988 5.6L7.51148 2.084C7.56698 2.00622 7.64026 1.94282 7.72521 1.89908C7.81016 1.85534 7.90433 1.83252 7.99988 1.83252C8.09543 1.83252 8.1896 1.85534 8.27455 1.89908C8.3595 1.94282 8.43278 2.00622 8.48828 2.084L10.9999 5.6L13.5199 3.92C13.6153 3.85655 13.7268 3.82172 13.8413 3.81964C13.9559 3.81756 14.0686 3.84831 14.1662 3.90825C14.2638 3.9682 14.3422 4.05483 14.3922 4.15792C14.4421 4.26101 14.4615 4.37624 14.4481 4.49L13.4623 12.8702C13.4451 13.0162 13.3749 13.1507 13.2651 13.2484C13.1553 13.346 13.0134 13.4 12.8665 13.4H3.13328C2.98632 13.4 2.84448 13.346 2.73466 13.2484C2.62484 13.1507 2.55468 13.0162 2.53748 12.8702L1.55168 4.4894C1.53836 4.37569 1.55785 4.26054 1.60785 4.15755C1.65786 4.05456 1.73628 3.96802 1.83387 3.90816C1.93146 3.84829 2.04414 3.8176 2.15861 3.81969C2.27307 3.82179 2.38455 3.8566 2.47988 3.92ZM7.99988 9.8C8.31814 9.8 8.62337 9.67357 8.84841 9.44853C9.07345 9.22348 9.19988 8.91826 9.19988 8.6C9.19988 8.28174 9.07345 7.97652 8.84841 7.75147C8.62337 7.52643 8.31814 7.4 7.99988 7.4C7.68162 7.4 7.3764 7.52643 7.15135 7.75147C6.92631 7.97652 6.79988 8.28174 6.79988 8.6C6.79988 8.91826 6.92631 9.22348 7.15135 9.44853C7.3764 9.67357 7.68162 9.8 7.99988 9.8Z" fill="#16A34A"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M9 2.25C12.728 2.25 15.75 5.27198 15.75 9C15.75 12.728 12.728 15.75 9 15.75C5.27198 15.75 2.25 12.728 2.25 9H3.6C3.6 11.9822 6.01785 14.4 9 14.4C11.9822 14.4 14.4 11.9822 14.4 9C14.4 6.01785 11.9822 3.6 9 3.6C7.14375 3.6 5.5062 4.53623 4.53488 5.9625H6.3V7.3125H2.25V3.2625H3.6V4.95C4.8312 3.30975 6.79208 2.25 9 2.25ZM9.675 5.625V8.71988L11.864 10.9089L10.9089 11.864L8.325 9.27878V5.625H9.675Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M10.795 7.08243L11.8563 8.14368C12.3438 8.63119 12.7306 9.20997 12.9944 9.84697C13.2583 10.484 13.3941 11.1667 13.3941 11.8562C13.3941 12.5457 13.2583 13.2284 12.9944 13.8654C12.7306 14.5024 12.3438 15.0812 11.8563 15.5687L11.5908 15.8334C10.6061 16.818 9.27071 17.3712 7.87825 17.3712C6.48579 17.3712 5.15037 16.818 4.16575 15.8334C3.18113 14.8488 2.62798 13.5134 2.62798 12.1209C2.62798 10.7285 3.18113 9.39305 4.16575 8.40843L5.227 9.46968C4.87628 9.81734 4.59768 10.2309 4.4072 10.6865C4.21672 11.1421 4.1181 11.6309 4.11702 12.1247C4.11594 12.6185 4.21241 13.1077 4.4009 13.5642C4.58938 14.0206 4.86617 14.4354 5.21536 14.7846C5.56456 15.1338 5.97929 15.4106 6.43574 15.599C6.8922 15.7875 7.38139 15.884 7.87522 15.8829C8.36906 15.8818 8.85782 15.7832 9.31345 15.5927C9.76907 15.4023 10.1826 15.1237 10.5303 14.7729L10.7958 14.5074C11.4988 13.8042 11.8937 12.8505 11.8937 11.8562C11.8937 10.8618 11.4988 9.90816 10.7958 9.20493L9.7345 8.14368L10.7958 7.08318L10.795 7.08243ZM15.8335 11.5907L14.773 10.5302C15.1237 10.1825 15.4023 9.769 15.5928 9.31338C15.7833 8.85775 15.8819 8.36899 15.883 7.87515C15.8841 7.38132 15.7876 6.89213 15.5991 6.43567C15.4106 5.97922 15.1338 5.56449 14.7846 5.21529C14.4354 4.8661 14.0207 4.58931 13.5643 4.40082C13.1078 4.21234 12.6186 4.11587 12.1248 4.11695C11.6309 4.11803 11.1422 4.21664 10.6866 4.40713C10.2309 4.59761 9.81741 4.87621 9.46975 5.22693L9.20425 5.49243C8.50123 6.19566 8.1063 7.14931 8.1063 8.14368C8.1063 9.13805 8.50123 10.0917 9.20425 10.7949L10.2655 11.8562L9.20425 12.9167L8.14375 11.8562C7.65619 11.3687 7.26943 10.7899 7.00556 10.1529C6.74168 9.5159 6.60587 8.83316 6.60587 8.14368C6.60587 7.4542 6.74168 6.77146 7.00556 6.13447C7.26943 5.49747 7.65619 4.91869 8.14375 4.43118L8.40925 4.16643C9.39387 3.18181 10.7293 2.62866 12.1218 2.62866C13.5142 2.62866 14.8496 3.18181 15.8342 4.16643C16.8189 5.15105 17.372 6.48647 17.372 7.87893C17.372 9.27139 16.8189 10.6068 15.8342 11.5914L15.8335 11.5907Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M10 3.25C9.38125 3.25 8.875 3.75625 8.875 4.375C8.875 4.99375 9.38125 5.5 10 5.5C10.6187 5.5 11.125 4.99375 11.125 4.375C11.125 3.75625 10.6187 3.25 10 3.25ZM10 14.5C9.38125 14.5 8.875 15.0063 8.875 15.625C8.875 16.2437 9.38125 16.75 10 16.75C10.6187 16.75 11.125 16.2437 11.125 15.625C11.125 15.0063 10.6187 14.5 10 14.5ZM10 8.875C9.38125 8.875 8.875 9.38125 8.875 10C8.875 10.6188 9.38125 11.125 10 11.125C10.6187 11.125 11.125 10.6188 11.125 10C11.125 9.38125 10.6187 8.875 10 8.875Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M10.875 3.375H14.625V14.625H3.375V10.875H5.875V8.375H8.375V5.875H10.875V3.375ZM12.125 4.625V7.125H9.625V9.625H7.125V12.125H4.625V13.375H13.375V4.625H12.125Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M9.00011 1.5L11.2043 5.96619L16.1331 6.68237L12.5666 10.1588L13.4085 15.0677L9.00011 12.75L4.59172 15.0677L5.43365 10.1588L1.86719 6.68237L6.79592 5.96619L9.00011 1.5Z" stroke="#A4A4A4" stroke-width="1.2" stroke-linecap="round"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6 12C2.6862 12 0 9.3138 0 6C0 2.6862 2.6862 0 6 0C9.3138 0 12 2.6862 12 6C12 9.3138 9.3138 12 6 12ZM6 5.1516L4.3032 3.4542L3.4542 4.3032L5.1516 6L3.4542 7.6968L4.3032 8.5458L6 6.8484L7.6968 8.5458L8.5458 7.6968L6.8484 6L8.5458 4.3032L7.6968 3.4542L6 5.1516Z" fill="#A4A4A4"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6 12C2.6862 12 0 9.3138 0 6C0 2.6862 2.6862 0 6 0C9.3138 0 12 2.6862 12 6C12 9.3138 9.3138 12 6 12ZM5.4018 8.4L9.6438 4.1574L8.7954 3.309L5.4018 6.7032L3.7044 5.0058L2.856 5.8542L5.4018 8.4Z" fill="#16A34A"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6 12C2.6862 12 0 9.3138 0 6C0 2.6862 2.6862 0 6 0C9.3138 0 12 2.6862 12 6C12 9.3138 9.3138 12 6 12ZM5.4 7.8V9H6.6V7.8H5.4ZM5.4 3V6.6H6.6V3H5.4Z" fill="#D97706"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import statusSuccess from './crypto-status-success.svg'
|
|
2
|
+
import statusPending from './crypto-status-pending.svg'
|
|
3
|
+
import statusWarning from './crypto-status-warning.svg'
|
|
4
|
+
import statusCancelled from './crypto-status-cancelled.svg'
|
|
5
|
+
import brand from './crypto-brand.png'
|
|
6
|
+
import phantom from './crypto-phantom.png'
|
|
7
|
+
import metamask from './crypto-metamask.png'
|
|
8
|
+
import walletconnect from './crypto-walletconnect.png'
|
|
9
|
+
import btc from './crypto-btc.png'
|
|
10
|
+
import eth from './crypto-eth.png'
|
|
11
|
+
import xrp from './crypto-xrp.png'
|
|
12
|
+
import usdt from './crypto-usdt.png'
|
|
13
|
+
import bnb from './crypto-bnb.png'
|
|
14
|
+
import sol from './crypto-sol.png'
|
|
15
|
+
import usdc from './crypto-usdc.png'
|
|
16
|
+
import trx from './crypto-trx.png'
|
|
17
|
+
import ada from './crypto-ada.png'
|
|
18
|
+
import avax from './crypto-avax.png'
|
|
19
|
+
import hbar from './crypto-hbar.png'
|
|
20
|
+
import dot from './crypto-dot.png'
|
|
21
|
+
import crown from './crypto-crown.svg'
|
|
22
|
+
import star from './crypto-star.svg'
|
|
23
|
+
import menu from './crypto-menu.svg'
|
|
24
|
+
import history from './crypto-history.svg'
|
|
25
|
+
import clock from './crypto-clock.svg'
|
|
26
|
+
import rewards from './crypto-rewards.svg'
|
|
27
|
+
import link from './crypto-link.svg'
|
|
28
|
+
import more from './crypto-more.svg'
|
|
29
|
+
import wei from './crypto-wei.png'
|
|
30
|
+
import sadFace from './crypto-sad-face.png'
|
|
31
|
+
const source = (image: string | { src: string }) => (typeof image === 'string' ? image : image.src)
|
|
32
|
+
export const cryptoArtwork = {
|
|
33
|
+
statusSuccess: source(statusSuccess),
|
|
34
|
+
statusPending: source(statusPending),
|
|
35
|
+
statusWarning: source(statusWarning),
|
|
36
|
+
statusCancelled: source(statusCancelled),
|
|
37
|
+
brand: source(brand),
|
|
38
|
+
phantom: source(phantom),
|
|
39
|
+
metamask: source(metamask),
|
|
40
|
+
walletconnect: source(walletconnect),
|
|
41
|
+
btc: source(btc),
|
|
42
|
+
eth: source(eth),
|
|
43
|
+
xrp: source(xrp),
|
|
44
|
+
usdt: source(usdt),
|
|
45
|
+
bnb: source(bnb),
|
|
46
|
+
sol: source(sol),
|
|
47
|
+
usdc: source(usdc),
|
|
48
|
+
trx: source(trx),
|
|
49
|
+
ada: source(ada),
|
|
50
|
+
avax: source(avax),
|
|
51
|
+
hbar: source(hbar),
|
|
52
|
+
dot: source(dot),
|
|
53
|
+
crown: source(crown),
|
|
54
|
+
star: source(star),
|
|
55
|
+
menu: source(menu),
|
|
56
|
+
history: source(history),
|
|
57
|
+
clock: source(clock),
|
|
58
|
+
rewards: source(rewards),
|
|
59
|
+
link: source(link),
|
|
60
|
+
more: source(more),
|
|
61
|
+
wei: source(wei),
|
|
62
|
+
sadFace: source(sadFace),
|
|
63
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare module '*.png' {
|
|
2
|
+
const image: string | { readonly src: string; readonly width: number; readonly height: number }
|
|
3
|
+
export default image
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
declare module '*.svg' {
|
|
7
|
+
const image: string | { readonly src: string; readonly width: number; readonly height: number }
|
|
8
|
+
export default image
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_253_6853)">
|
|
3
|
+
<path d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z" fill="#0052B4"/>
|
|
4
|
+
<path d="M12 4.69556L12.3886 5.89129H13.6458L12.6286 6.63028L13.0172 7.82601L12 7.08698L10.9828 7.82601L11.3714 6.63028L10.3542 5.89129H11.6115L12 4.69556Z" fill="#FFDA44"/>
|
|
5
|
+
<path d="M6.83499 6.83503L7.9553 7.40578L8.84428 6.51685L8.64755 7.75856L9.76781 8.32936L8.52605 8.52605L8.32936 9.76786L7.75856 8.6476L6.51685 8.84433L7.40583 7.95535L6.83499 6.83503Z" fill="#FFDA44"/>
|
|
6
|
+
<path d="M4.69568 11.9998L5.89141 11.6112V10.354L6.63035 11.3712L7.82613 10.9826L7.08705 11.9998L7.82613 13.0169L6.63035 12.6284L5.89141 13.6456V12.3883L4.69568 11.9998Z" fill="#FFDA44"/>
|
|
7
|
+
<path d="M6.83499 17.165L7.40578 16.0446L6.51685 15.1557L7.75861 15.3524L8.32931 14.2322L8.52605 15.4739L9.76777 15.6706L8.64764 16.2414L8.84428 17.4831L7.9553 16.5942L6.83499 17.165Z" fill="#FFDA44"/>
|
|
8
|
+
<path d="M12 19.3042L11.6114 18.1085H10.3542L11.3714 17.3695L10.9828 16.1738L12 16.9128L13.0172 16.1738L12.6286 17.3695L13.6458 18.1085H12.3885L12 19.3042Z" fill="#FFDA44"/>
|
|
9
|
+
<path d="M17.165 17.165L16.0447 16.5942L15.1557 17.4832L15.3524 16.2414L14.2322 15.6706L15.474 15.4739L15.6706 14.2322L16.2414 15.3524L17.4831 15.1557L16.5941 16.0447L17.165 17.165Z" fill="#FFDA44"/>
|
|
10
|
+
<path d="M19.3043 11.9998L18.1086 12.3883V13.6456L17.3696 12.6284L16.174 13.0169L16.9129 11.9998L16.174 10.9826L17.3696 11.3712L18.1086 10.354V11.6113L19.3043 11.9998Z" fill="#FFDA44"/>
|
|
11
|
+
<path d="M17.165 6.83499L16.5942 7.9553L17.4832 8.84428L16.2413 8.6475L15.6706 9.76777L15.474 8.526L14.2322 8.32927L15.3524 7.75852L15.1557 6.51685L16.0448 7.40578L17.165 6.83499Z" fill="#FFDA44"/>
|
|
12
|
+
</g>
|
|
13
|
+
<defs>
|
|
14
|
+
<clipPath id="clip0_253_6853">
|
|
15
|
+
<rect width="24" height="24" fill="white"/>
|
|
16
|
+
</clipPath>
|
|
17
|
+
</defs>
|
|
18
|
+
</svg>
|
|
Binary file
|