@vendure-platform/create 0.5.0 → 0.5.1
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/CHANGELOG.md +4 -0
- package/README.md +39 -39
- package/dist/add-to-existing.js +1 -1
- package/dist/assets/demo-data/initial-data.json +663 -663
- package/dist/assets/storefront/components.json +20 -20
- package/dist/assets/storefront/eslint.config.mjs +10 -10
- package/dist/assets/storefront/graphql.config.yml +1 -1
- package/dist/assets/storefront/next.config.ts +5 -4
- package/dist/assets/storefront/package.json +1 -1
- package/dist/assets/storefront/postcss.config.mjs +1 -1
- package/dist/assets/storefront/src/app/[locale]/(catalog)/catalog/page.tsx +17 -21
- package/dist/assets/storefront/src/app/[locale]/(catalog)/collection/[slug]/page.tsx +64 -42
- package/dist/assets/storefront/src/app/[locale]/(catalog)/layout.tsx +1 -5
- package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/actions.ts +69 -65
- package/dist/assets/storefront/src/app/[locale]/(catalog)/product/[slug]/page.tsx +64 -38
- package/dist/assets/storefront/src/app/[locale]/(catalog)/search/page.tsx +24 -27
- package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-results.tsx +11 -9
- package/dist/assets/storefront/src/app/[locale]/(catalog)/search/search-term.tsx +4 -4
- package/dist/assets/storefront/src/app/[locale]/(scenario)/[...path]/page.tsx +1 -1
- package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/accept-invitation-client.tsx +8 -13
- package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/actions.ts +11 -14
- package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/page.tsx +30 -33
- package/dist/assets/storefront/src/app/[locale]/accept-invitation/[token]/sign-out-and-retry.tsx +6 -6
- package/dist/assets/storefront/src/app/[locale]/account/addresses/actions.ts +30 -45
- package/dist/assets/storefront/src/app/[locale]/account/addresses/address-form.tsx +166 -159
- package/dist/assets/storefront/src/app/[locale]/account/addresses/addresses-client.tsx +35 -26
- package/dist/assets/storefront/src/app/[locale]/account/addresses/loading.tsx +1 -3
- package/dist/assets/storefront/src/app/[locale]/account/addresses/page.tsx +16 -18
- package/dist/assets/storefront/src/app/[locale]/account/approvals/actions.ts +5 -8
- package/dist/assets/storefront/src/app/[locale]/account/approvals/page.tsx +77 -69
- package/dist/assets/storefront/src/app/[locale]/account/company/actions.ts +10 -11
- package/dist/assets/storefront/src/app/[locale]/account/company/addresses/actions.ts +6 -15
- package/dist/assets/storefront/src/app/[locale]/account/company/addresses/address-form.tsx +57 -49
- package/dist/assets/storefront/src/app/[locale]/account/company/addresses/addresses-client.tsx +23 -25
- package/dist/assets/storefront/src/app/[locale]/account/company/addresses/page.tsx +30 -30
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/actions.ts +20 -29
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-unit-form.tsx +32 -37
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/business-units-client.tsx +32 -25
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/page.tsx +24 -24
- package/dist/assets/storefront/src/app/[locale]/account/company/business-units/types.ts +7 -4
- package/dist/assets/storefront/src/app/[locale]/account/company/edit-company-form.tsx +11 -21
- package/dist/assets/storefront/src/app/[locale]/account/company/page.tsx +23 -28
- package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/page.tsx +24 -24
- package/dist/assets/storefront/src/app/[locale]/account/company/payment-methods/payment-methods-client.tsx +5 -7
- package/dist/assets/storefront/src/app/[locale]/account/company/roles/page.tsx +22 -25
- package/dist/assets/storefront/src/app/[locale]/account/company/roles/roles-client.tsx +11 -26
- package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/actions.ts +6 -10
- package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/page.tsx +18 -16
- package/dist/assets/storefront/src/app/[locale]/account/company/tax-ids/tax-ids-client.tsx +74 -67
- package/dist/assets/storefront/src/app/[locale]/account/company/users/actions.ts +16 -25
- package/dist/assets/storefront/src/app/[locale]/account/company/users/edit-user-form.tsx +27 -25
- package/dist/assets/storefront/src/app/[locale]/account/company/users/invite-user-form.tsx +27 -19
- package/dist/assets/storefront/src/app/[locale]/account/company/users/page.tsx +32 -29
- package/dist/assets/storefront/src/app/[locale]/account/company/users/users-client.tsx +35 -38
- package/dist/assets/storefront/src/app/[locale]/account/error.tsx +1 -3
- package/dist/assets/storefront/src/app/[locale]/account/layout.tsx +16 -22
- package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/page.tsx +151 -103
- package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-actions.ts +6 -7
- package/dist/assets/storefront/src/app/[locale]/account/orders/[code]/reorder-dialog.tsx +22 -48
- package/dist/assets/storefront/src/app/[locale]/account/orders/loading.tsx +8 -8
- package/dist/assets/storefront/src/app/[locale]/account/orders/page.tsx +101 -61
- package/dist/assets/storefront/src/app/[locale]/account/profile/actions.ts +32 -23
- package/dist/assets/storefront/src/app/[locale]/account/profile/change-password-form.tsx +6 -16
- package/dist/assets/storefront/src/app/[locale]/account/profile/edit-email-form.tsx +7 -17
- package/dist/assets/storefront/src/app/[locale]/account/profile/edit-profile-form.tsx +6 -16
- package/dist/assets/storefront/src/app/[locale]/account/profile/loading.tsx +12 -18
- package/dist/assets/storefront/src/app/[locale]/account/profile/page.tsx +15 -15
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/file-upload-tab.tsx +2 -6
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/manual-entry-tab.tsx +18 -15
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/page.tsx +3 -6
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/preview-table.tsx +10 -2
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/save-to-list-dialog.tsx +24 -26
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/sku-autocomplete.tsx +19 -10
- package/dist/assets/storefront/src/app/[locale]/account/quick-order/text-input-tab.tsx +3 -8
- package/dist/assets/storefront/src/app/[locale]/account/quotes/[id]/page.tsx +86 -59
- package/dist/assets/storefront/src/app/[locale]/account/quotes/actions.ts +38 -45
- package/dist/assets/storefront/src/app/[locale]/account/quotes/new/new-quote-form.tsx +3 -5
- package/dist/assets/storefront/src/app/[locale]/account/quotes/new/page.tsx +6 -6
- package/dist/assets/storefront/src/app/[locale]/account/quotes/page.tsx +92 -59
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-item-search.tsx +11 -9
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/add-member-form.tsx +31 -15
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/members-panel.tsx +52 -33
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/page.tsx +22 -14
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/[id]/rename-dialog.tsx +34 -13
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/actions.ts +117 -72
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/new-shared-cart-form.tsx +21 -14
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/new/page.tsx +10 -10
- package/dist/assets/storefront/src/app/[locale]/account/shared-carts/page.tsx +54 -41
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/page.tsx +22 -8
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/[id]/shopping-list-detail-client.tsx +62 -49
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/actions.ts +9 -4
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/create-shopping-list-form.tsx +5 -11
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/loading.tsx +1 -1
- package/dist/assets/storefront/src/app/[locale]/account/shopping-lists/page.tsx +32 -42
- package/dist/assets/storefront/src/app/[locale]/account/store-credits/actions.ts +8 -8
- package/dist/assets/storefront/src/app/[locale]/account/store-credits/claim-form.tsx +6 -10
- package/dist/assets/storefront/src/app/[locale]/account/store-credits/page.tsx +76 -55
- package/dist/assets/storefront/src/app/[locale]/account/store-credits/reveal-code.tsx +10 -6
- package/dist/assets/storefront/src/app/[locale]/account/verify-email/page.tsx +32 -39
- package/dist/assets/storefront/src/app/[locale]/cart/actions.ts +29 -23
- package/dist/assets/storefront/src/app/[locale]/cart/cart-items.tsx +111 -40
- package/dist/assets/storefront/src/app/[locale]/cart/cart-line-actions.tsx +9 -9
- package/dist/assets/storefront/src/app/[locale]/cart/cart-quantity-control.tsx +61 -48
- package/dist/assets/storefront/src/app/[locale]/cart/cart-remove-button.tsx +15 -9
- package/dist/assets/storefront/src/app/[locale]/cart/cart.tsx +38 -41
- package/dist/assets/storefront/src/app/[locale]/cart/code-input.tsx +8 -8
- package/dist/assets/storefront/src/app/[locale]/cart/order-summary.tsx +50 -32
- package/dist/assets/storefront/src/app/[locale]/cart/page.tsx +11 -11
- package/dist/assets/storefront/src/app/[locale]/cart/promotion-code.tsx +48 -42
- package/dist/assets/storefront/src/app/[locale]/cart/reapproval-confirm.tsx +22 -20
- package/dist/assets/storefront/src/app/[locale]/cart/request-quote-button.tsx +7 -16
- package/dist/assets/storefront/src/app/[locale]/checkout/actions.ts +39 -65
- package/dist/assets/storefront/src/app/[locale]/checkout/cancel-quote-checkout-button.tsx +5 -5
- package/dist/assets/storefront/src/app/[locale]/checkout/checkout-flow.tsx +202 -202
- package/dist/assets/storefront/src/app/[locale]/checkout/checkout-provider.tsx +142 -142
- package/dist/assets/storefront/src/app/[locale]/checkout/order-summary.tsx +158 -139
- package/dist/assets/storefront/src/app/[locale]/checkout/page.tsx +56 -47
- package/dist/assets/storefront/src/app/[locale]/checkout/steps/delivery-step.tsx +86 -88
- package/dist/assets/storefront/src/app/[locale]/checkout/steps/payment-step.tsx +90 -91
- package/dist/assets/storefront/src/app/[locale]/checkout/steps/review-step.tsx +166 -161
- package/dist/assets/storefront/src/app/[locale]/checkout/steps/shipping-address-step.tsx +573 -494
- package/dist/assets/storefront/src/app/[locale]/error.tsx +3 -5
- package/dist/assets/storefront/src/app/[locale]/forgot-password/actions.ts +10 -7
- package/dist/assets/storefront/src/app/[locale]/forgot-password/forgot-password-form.tsx +10 -25
- package/dist/assets/storefront/src/app/[locale]/forgot-password/page.tsx +5 -5
- package/dist/assets/storefront/src/app/[locale]/globals.css +48 -48
- package/dist/assets/storefront/src/app/[locale]/layout.tsx +53 -47
- package/dist/assets/storefront/src/app/[locale]/not-found.tsx +3 -5
- package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/order-confirmation.tsx +71 -44
- package/dist/assets/storefront/src/app/[locale]/order-confirmation/[code]/page.tsx +7 -5
- package/dist/assets/storefront/src/app/[locale]/page.tsx +33 -35
- package/dist/assets/storefront/src/app/[locale]/register/actions.ts +7 -7
- package/dist/assets/storefront/src/app/[locale]/register/page.tsx +22 -16
- package/dist/assets/storefront/src/app/[locale]/register/registration-form.tsx +22 -34
- package/dist/assets/storefront/src/app/[locale]/register-company/actions.ts +15 -19
- package/dist/assets/storefront/src/app/[locale]/register-company/page.tsx +17 -15
- package/dist/assets/storefront/src/app/[locale]/register-company/registration-form.tsx +9 -15
- package/dist/assets/storefront/src/app/[locale]/reset-password/actions.ts +7 -8
- package/dist/assets/storefront/src/app/[locale]/reset-password/page.tsx +18 -12
- package/dist/assets/storefront/src/app/[locale]/reset-password/reset-password-form.tsx +8 -16
- package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/add-to-cart-button.tsx +10 -4
- package/dist/assets/storefront/src/app/[locale]/shopping-list/[code]/page.tsx +62 -30
- package/dist/assets/storefront/src/app/[locale]/sign-in/actions.ts +14 -16
- package/dist/assets/storefront/src/app/[locale]/sign-in/login-form.tsx +17 -30
- package/dist/assets/storefront/src/app/[locale]/sign-in/page.tsx +35 -30
- package/dist/assets/storefront/src/app/[locale]/verify/actions.ts +8 -8
- package/dist/assets/storefront/src/app/[locale]/verify/page.tsx +18 -14
- package/dist/assets/storefront/src/app/[locale]/verify/verify-content.tsx +25 -27
- package/dist/assets/storefront/src/app/[locale]/verify-pending/page.tsx +23 -23
- package/dist/assets/storefront/src/app/api/clear-company-context/route.ts +6 -3
- package/dist/assets/storefront/src/app/api/revalidate/route.ts +19 -28
- package/dist/assets/storefront/src/app/api/search-analytics/route.ts +1 -1
- package/dist/assets/storefront/src/components/commerce/account-nav-items.ts +43 -18
- package/dist/assets/storefront/src/components/commerce/account-sidebar.tsx +30 -22
- package/dist/assets/storefront/src/components/commerce/active-filters.tsx +1 -1
- package/dist/assets/storefront/src/components/commerce/add-to-shared-cart.tsx +49 -27
- package/dist/assets/storefront/src/components/commerce/approval-decision-form.tsx +9 -13
- package/dist/assets/storefront/src/components/commerce/approval-status-badge.tsx +23 -15
- package/dist/assets/storefront/src/components/commerce/business-unit-switcher.tsx +11 -11
- package/dist/assets/storefront/src/components/commerce/catalog-search-bar.tsx +2 -2
- package/dist/assets/storefront/src/components/commerce/category-product-section.tsx +28 -16
- package/dist/assets/storefront/src/components/commerce/category-sidebar.tsx +31 -18
- package/dist/assets/storefront/src/components/commerce/collection-hero-banner.tsx +2 -4
- package/dist/assets/storefront/src/components/commerce/company-state-badge.tsx +10 -16
- package/dist/assets/storefront/src/components/commerce/company-switcher.tsx +12 -12
- package/dist/assets/storefront/src/components/commerce/configurator-form.tsx +188 -79
- package/dist/assets/storefront/src/components/commerce/facet-filters.tsx +29 -49
- package/dist/assets/storefront/src/components/commerce/gift-card-pdp.tsx +4 -4
- package/dist/assets/storefront/src/components/commerce/gift-card-product-info.tsx +20 -30
- package/dist/assets/storefront/src/components/commerce/instant-search-dropdown.tsx +258 -227
- package/dist/assets/storefront/src/components/commerce/order-status-badge.tsx +27 -19
- package/dist/assets/storefront/src/components/commerce/packaging-unit-selector.tsx +27 -26
- package/dist/assets/storefront/src/components/commerce/permission-gate.tsx +4 -4
- package/dist/assets/storefront/src/components/commerce/price-range-filter.tsx +5 -5
- package/dist/assets/storefront/src/components/commerce/price-tiers.tsx +38 -21
- package/dist/assets/storefront/src/components/commerce/price.tsx +3 -3
- package/dist/assets/storefront/src/components/commerce/product-card-list.tsx +35 -14
- package/dist/assets/storefront/src/components/commerce/product-card.tsx +31 -16
- package/dist/assets/storefront/src/components/commerce/product-carousel.tsx +20 -12
- package/dist/assets/storefront/src/components/commerce/product-grid.tsx +14 -13
- package/dist/assets/storefront/src/components/commerce/product-image-carousel.tsx +10 -8
- package/dist/assets/storefront/src/components/commerce/product-info.tsx +118 -74
- package/dist/assets/storefront/src/components/commerce/product-list-expansion.tsx +102 -74
- package/dist/assets/storefront/src/components/commerce/product-list-view.tsx +1 -1
- package/dist/assets/storefront/src/components/commerce/product-sidebar.tsx +36 -11
- package/dist/assets/storefront/src/components/commerce/product-view-switcher.tsx +33 -21
- package/dist/assets/storefront/src/components/commerce/quote-action-buttons.tsx +54 -36
- package/dist/assets/storefront/src/components/commerce/quote-activity-timeline.tsx +126 -50
- package/dist/assets/storefront/src/components/commerce/quote-comment-form.tsx +9 -13
- package/dist/assets/storefront/src/components/commerce/quote-csv-export-button.tsx +6 -6
- package/dist/assets/storefront/src/components/commerce/quote-product-search.tsx +22 -18
- package/dist/assets/storefront/src/components/commerce/quote-request-form.tsx +28 -27
- package/dist/assets/storefront/src/components/commerce/quote-status-badge.tsx +26 -18
- package/dist/assets/storefront/src/components/commerce/quote-validity-indicator.tsx +7 -7
- package/dist/assets/storefront/src/components/commerce/quote-version-comparison.tsx +50 -30
- package/dist/assets/storefront/src/components/commerce/related-products.tsx +37 -28
- package/dist/assets/storefront/src/components/commerce/shared-cart-status-badge.tsx +12 -8
- package/dist/assets/storefront/src/components/commerce/shop-by-category.tsx +8 -7
- package/dist/assets/storefront/src/components/commerce/shopping-list-toggle.tsx +14 -20
- package/dist/assets/storefront/src/components/commerce/sort-dropdown.tsx +9 -16
- package/dist/assets/storefront/src/components/commerce/store-credit-summary.tsx +30 -32
- package/dist/assets/storefront/src/components/commerce/subcollection-tiles.tsx +11 -13
- package/dist/assets/storefront/src/components/layout/auth-page-shell.tsx +2 -2
- package/dist/assets/storefront/src/components/layout/draft-mode-indicator.tsx +2 -7
- package/dist/assets/storefront/src/components/layout/draft-mode-link.tsx +4 -2
- package/dist/assets/storefront/src/components/layout/footer.tsx +70 -28
- package/dist/assets/storefront/src/components/layout/navbar/actions.ts +9 -12
- package/dist/assets/storefront/src/components/layout/navbar/cart-icon.tsx +9 -9
- package/dist/assets/storefront/src/components/layout/navbar/channel-picker-wrapper.tsx +4 -9
- package/dist/assets/storefront/src/components/layout/navbar/channel-picker.tsx +13 -8
- package/dist/assets/storefront/src/components/layout/navbar/currency-picker-wrapper.tsx +4 -4
- package/dist/assets/storefront/src/components/layout/navbar/currency-picker.tsx +11 -6
- package/dist/assets/storefront/src/components/layout/navbar/language-picker.tsx +7 -7
- package/dist/assets/storefront/src/components/layout/navbar/login-button.tsx +24 -21
- package/dist/assets/storefront/src/components/layout/navbar/mobile-nav.tsx +8 -8
- package/dist/assets/storefront/src/components/layout/navbar/nav-menu-items.tsx +4 -6
- package/dist/assets/storefront/src/components/layout/navbar/navbar-cart.tsx +1 -1
- package/dist/assets/storefront/src/components/layout/navbar/navbar-collections.tsx +41 -42
- package/dist/assets/storefront/src/components/layout/navbar/navbar-link.tsx +7 -10
- package/dist/assets/storefront/src/components/layout/navbar/navbar-user.tsx +18 -23
- package/dist/assets/storefront/src/components/layout/navbar/theme-switcher.tsx +9 -9
- package/dist/assets/storefront/src/components/layout/navbar.tsx +36 -31
- package/dist/assets/storefront/src/components/layout/search-input.tsx +35 -32
- package/dist/assets/storefront/src/components/providers/awaiting-approval-banner.tsx +12 -10
- package/dist/assets/storefront/src/components/providers/cart-count-server.tsx +14 -12
- package/dist/assets/storefront/src/components/providers/company-context-guard.tsx +4 -4
- package/dist/assets/storefront/src/components/providers/company-permissions-server.tsx +2 -6
- package/dist/assets/storefront/src/components/providers/theme-provider.tsx +3 -3
- package/dist/assets/storefront/src/components/shared/breadcrumbs.tsx +4 -1
- package/dist/assets/storefront/src/components/shared/country-select.tsx +63 -67
- package/dist/assets/storefront/src/components/shared/pagination.tsx +15 -28
- package/dist/assets/storefront/src/components/shared/prefetch-link.tsx +1 -1
- package/dist/assets/storefront/src/components/shared/skeletons/search-input-skeleton.tsx +1 -3
- package/dist/assets/storefront/src/components/ui/accordion.tsx +46 -51
- package/dist/assets/storefront/src/components/ui/alert-dialog.tsx +94 -121
- package/dist/assets/storefront/src/components/ui/alert.tsx +48 -54
- package/dist/assets/storefront/src/components/ui/aspect-ratio.tsx +5 -7
- package/dist/assets/storefront/src/components/ui/avatar.tsx +29 -44
- package/dist/assets/storefront/src/components/ui/badge.tsx +28 -37
- package/dist/assets/storefront/src/components/ui/breadcrumb.tsx +82 -89
- package/dist/assets/storefront/src/components/ui/button.tsx +43 -49
- package/dist/assets/storefront/src/components/ui/calendar.tsx +157 -198
- package/dist/assets/storefront/src/components/ui/card.tsx +53 -76
- package/dist/assets/storefront/src/components/ui/carousel.tsx +194 -212
- package/dist/assets/storefront/src/components/ui/chart.tsx +274 -317
- package/dist/assets/storefront/src/components/ui/checkbox.tsx +24 -27
- package/dist/assets/storefront/src/components/ui/collapsible.tsx +9 -21
- package/dist/assets/storefront/src/components/ui/command.tsx +114 -159
- package/dist/assets/storefront/src/components/ui/context-menu.tsx +167 -199
- package/dist/assets/storefront/src/components/ui/dialog.tsx +97 -114
- package/dist/assets/storefront/src/components/ui/drawer.tsx +93 -107
- package/dist/assets/storefront/src/components/ui/dropdown-menu.tsx +171 -206
- package/dist/assets/storefront/src/components/ui/empty-state.tsx +5 -5
- package/dist/assets/storefront/src/components/ui/field.tsx +196 -208
- package/dist/assets/storefront/src/components/ui/form.tsx +115 -139
- package/dist/assets/storefront/src/components/ui/hover-card.tsx +27 -33
- package/dist/assets/storefront/src/components/ui/input-otp.tsx +50 -59
- package/dist/assets/storefront/src/components/ui/input.tsx +17 -17
- package/dist/assets/storefront/src/components/ui/kbd-shortcut.tsx +3 -1
- package/dist/assets/storefront/src/components/ui/label.tsx +16 -19
- package/dist/assets/storefront/src/components/ui/menubar.tsx +193 -223
- package/dist/assets/storefront/src/components/ui/navigation-menu.tsx +123 -130
- package/dist/assets/storefront/src/components/ui/pagination.tsx +87 -108
- package/dist/assets/storefront/src/components/ui/popover.tsx +29 -35
- package/dist/assets/storefront/src/components/ui/progress.tsx +19 -26
- package/dist/assets/storefront/src/components/ui/radio-group.tsx +32 -38
- package/dist/assets/storefront/src/components/ui/resizable.tsx +37 -42
- package/dist/assets/storefront/src/components/ui/scroll-area.tsx +41 -47
- package/dist/assets/storefront/src/components/ui/select.tsx +130 -152
- package/dist/assets/storefront/src/components/ui/separator.tsx +21 -21
- package/dist/assets/storefront/src/components/ui/sheet.tsx +90 -111
- package/dist/assets/storefront/src/components/ui/sidebar.tsx +611 -649
- package/dist/assets/storefront/src/components/ui/skeleton.tsx +10 -10
- package/dist/assets/storefront/src/components/ui/slider.tsx +50 -55
- package/dist/assets/storefront/src/components/ui/sonner.tsx +20 -20
- package/dist/assets/storefront/src/components/ui/switch.tsx +23 -26
- package/dist/assets/storefront/src/components/ui/table.tsx +65 -97
- package/dist/assets/storefront/src/components/ui/tabs.tsx +39 -55
- package/dist/assets/storefront/src/components/ui/textarea.tsx +14 -14
- package/dist/assets/storefront/src/components/ui/toggle-group.tsx +56 -62
- package/dist/assets/storefront/src/components/ui/toggle.tsx +37 -38
- package/dist/assets/storefront/src/components/ui/tooltip.tsx +38 -46
- package/dist/assets/storefront/src/config/scenario-meta.ts +2 -2
- package/dist/assets/storefront/src/config/scenario.ts +14 -16
- package/dist/assets/storefront/src/contexts/auth-context.tsx +5 -6
- package/dist/assets/storefront/src/graphql.ts +5 -5
- package/dist/assets/storefront/src/hooks/use-mobile.ts +13 -13
- package/dist/assets/storefront/src/i18n/locale-utils.ts +3 -3
- package/dist/assets/storefront/src/i18n/navigation.ts +4 -4
- package/dist/assets/storefront/src/i18n/request.ts +4 -4
- package/dist/assets/storefront/src/i18n/routing.ts +5 -5
- package/dist/assets/storefront/src/i18n/server.ts +3 -3
- package/dist/assets/storefront/src/lib/actions/switch-channel.ts +9 -9
- package/dist/assets/storefront/src/lib/actions/switch-currency.ts +7 -7
- package/dist/assets/storefront/src/lib/auth.ts +1 -1
- package/dist/assets/storefront/src/lib/backend-health.ts +3 -3
- package/dist/assets/storefront/src/lib/cart-count-context.tsx +10 -4
- package/dist/assets/storefront/src/lib/cart-guard-utils.ts +2 -1
- package/dist/assets/storefront/src/lib/cart-guard.ts +7 -6
- package/dist/assets/storefront/src/lib/channel-server.ts +4 -4
- package/dist/assets/storefront/src/lib/company-context.ts +1 -1
- package/dist/assets/storefront/src/lib/company-permissions-context.tsx +1 -5
- package/dist/assets/storefront/src/lib/currency-server.ts +4 -4
- package/dist/assets/storefront/src/lib/format.ts +16 -7
- package/dist/assets/storefront/src/lib/metadata.ts +39 -44
- package/dist/assets/storefront/src/lib/quantity.ts +2 -4
- package/dist/assets/storefront/src/lib/search-bar-context.tsx +7 -4
- package/dist/assets/storefront/src/lib/use-recent-searches.ts +8 -6
- package/dist/assets/storefront/src/lib/utils.ts +3 -3
- package/dist/assets/storefront/src/lib/vendure/actions.ts +18 -16
- package/dist/assets/storefront/src/lib/vendure/api.ts +36 -23
- package/dist/assets/storefront/src/lib/vendure/approval-utils.ts +9 -8
- package/dist/assets/storefront/src/lib/vendure/cached.ts +20 -15
- package/dist/assets/storefront/src/lib/vendure/queries.ts +15 -5
- package/dist/assets/storefront/src/middleware.ts +1 -1
- package/dist/assets/storefront/src/scenarios/customer/hero.tsx +2 -2
- package/dist/assets/storefront/src/scenarios/customer/meta.ts +1 -1
- package/dist/bin/run.js +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/scaffold-storefront-only.js +1 -1
- package/dist/scaffolder.js +1 -1
- package/dist/template-renderer.js +1 -1
- package/package.json +2 -2
|
@@ -1,48 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import { ApprovalStatusBadge } from '@/components/commerce/approval-status-badge';
|
|
2
|
+
import { OrderStatusBadge } from '@/components/commerce/order-status-badge';
|
|
3
|
+
import { Price } from '@/components/commerce/price';
|
|
4
|
+
import { ErrorState } from '@/components/shared/error-state';
|
|
5
|
+
import { Badge } from '@/components/ui/badge';
|
|
6
|
+
import { Button } from '@/components/ui/button';
|
|
7
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|
8
|
+
import { Separator } from '@/components/ui/separator';
|
|
9
|
+
import { Link, redirect } from '@/i18n/navigation';
|
|
10
|
+
import { formatDate, maskCode } from '@/lib/format';
|
|
11
|
+
import { client } from '@/lib/vendure/api';
|
|
12
|
+
import { getLatestApprovalForOrder } from '@/lib/vendure/approval-utils';
|
|
13
|
+
import { GetOrderDetailQuery } from '@/lib/vendure/queries';
|
|
14
|
+
import { ChevronLeft, MessageSquare, ShoppingCart } from 'lucide-react';
|
|
15
|
+
import type { Metadata } from 'next';
|
|
16
|
+
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
|
12
17
|
import Image from 'next/image';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {maskCode} from '@/lib/format';
|
|
16
|
-
import {OrderStatusBadge} from '@/components/commerce/order-status-badge';
|
|
17
|
-
import {ApprovalStatusBadge} from '@/components/commerce/approval-status-badge';
|
|
18
|
-
import {formatDate} from '@/lib/format';
|
|
19
|
-
import {getTranslations, setRequestLocale} from 'next-intl/server';
|
|
20
|
-
import {Link} from "@/i18n/navigation";
|
|
21
|
-
import {ShoppingCart} from "lucide-react";
|
|
22
|
-
import {ReorderDialog} from './reorder-dialog';
|
|
18
|
+
import { Suspense } from 'react';
|
|
19
|
+
import { ReorderDialog } from './reorder-dialog';
|
|
23
20
|
|
|
24
|
-
type OrderDetailPageProps = {params: Promise<{locale: string; code: string}>};
|
|
21
|
+
type OrderDetailPageProps = { params: Promise<{ locale: string; code: string }> };
|
|
25
22
|
|
|
26
|
-
export async function generateMetadata({params}: OrderDetailPageProps): Promise<Metadata> {
|
|
27
|
-
const {code} = await params;
|
|
23
|
+
export async function generateMetadata({ params }: OrderDetailPageProps): Promise<Metadata> {
|
|
24
|
+
const { code } = await params;
|
|
28
25
|
return {
|
|
29
26
|
title: `Order ${code}`,
|
|
30
27
|
};
|
|
31
28
|
}
|
|
32
29
|
|
|
33
|
-
async function OrderDetailContent({params}: {params: Promise<{locale: string; code: string}>}) {
|
|
34
|
-
const {locale, code} = await params;
|
|
30
|
+
async function OrderDetailContent({ params }: { params: Promise<{ locale: string; code: string }> }) {
|
|
31
|
+
const { locale, code } = await params;
|
|
35
32
|
setRequestLocale(locale);
|
|
36
33
|
const [t, [result, error]] = await Promise.all([
|
|
37
34
|
getTranslations('Account'),
|
|
38
|
-
client.query(GetOrderDetailQuery, {code}),
|
|
35
|
+
client.query(GetOrderDetailQuery, { code }),
|
|
39
36
|
]);
|
|
40
37
|
if (error) {
|
|
41
|
-
return
|
|
42
|
-
<ErrorState message="We couldn't load this page. Please try again later." />
|
|
43
|
-
);
|
|
38
|
+
return <ErrorState message="We couldn't load this page. Please try again later." />;
|
|
44
39
|
}
|
|
45
|
-
const {data} = result;
|
|
40
|
+
const { data } = result;
|
|
46
41
|
|
|
47
42
|
if (!data.orderByCode) {
|
|
48
43
|
return await redirect('/account/orders');
|
|
@@ -68,22 +63,22 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
68
63
|
<div className="mb-6">
|
|
69
64
|
<Button variant="ghost" size="sm" asChild className="mb-4">
|
|
70
65
|
<Link href="/account/orders">
|
|
71
|
-
<ChevronLeft className="h-4 w-4 mr-2"/>
|
|
66
|
+
<ChevronLeft className="h-4 w-4 mr-2" />
|
|
72
67
|
{t('backToOrders')}
|
|
73
68
|
</Link>
|
|
74
69
|
</Button>
|
|
75
70
|
<div className="flex items-center justify-between">
|
|
76
71
|
<div>
|
|
77
|
-
<h1 className="text-3xl font-bold">{t('order', {code: order.code})}</h1>
|
|
72
|
+
<h1 className="text-3xl font-bold">{t('order', { code: order.code })}</h1>
|
|
78
73
|
<p className="text-muted-foreground mt-1">
|
|
79
|
-
{t('placedOn', {date: formatDate(order.createdAt, locale, 'long')})}
|
|
74
|
+
{t('placedOn', { date: formatDate(order.createdAt, locale, 'long') })}
|
|
80
75
|
</p>
|
|
81
76
|
</div>
|
|
82
77
|
<div className="flex items-center gap-3">
|
|
83
78
|
{canReorder && (
|
|
84
79
|
<ReorderDialog sourceOrderId={order.id} sourceOrderCode={order.code} />
|
|
85
80
|
)}
|
|
86
|
-
<OrderStatusBadge state={order.state}/>
|
|
81
|
+
<OrderStatusBadge state={order.state} />
|
|
87
82
|
</div>
|
|
88
83
|
</div>
|
|
89
84
|
</div>
|
|
@@ -91,12 +86,13 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
91
86
|
{changesRequested && (
|
|
92
87
|
<div className="rounded-lg border border-orange-200 bg-orange-50 p-4 mb-6">
|
|
93
88
|
<div className="flex gap-3">
|
|
94
|
-
<MessageSquare className="h-5 w-5 text-orange-600 flex-shrink-0 mt-0.5"/>
|
|
89
|
+
<MessageSquare className="h-5 w-5 text-orange-600 flex-shrink-0 mt-0.5" />
|
|
95
90
|
<div>
|
|
96
91
|
<h3 className="font-medium text-orange-900">Changes Requested</h3>
|
|
97
92
|
<p className="text-sm text-orange-800 mt-1">
|
|
98
93
|
A reviewer has requested changes to this order.
|
|
99
|
-
{order.state === 'AddingItems' &&
|
|
94
|
+
{order.state === 'AddingItems' &&
|
|
95
|
+
' You can modify the order and re-submit it for approval.'}
|
|
100
96
|
</p>
|
|
101
97
|
{changesComment && (
|
|
102
98
|
<blockquote className="mt-2 border-l-2 border-orange-300 pl-3 text-sm text-orange-800 italic">
|
|
@@ -108,24 +104,28 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
108
104
|
</div>
|
|
109
105
|
)}
|
|
110
106
|
|
|
111
|
-
{order.state === 'AddingItems' &&
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
107
|
+
{order.state === 'AddingItems' &&
|
|
108
|
+
!changesRequested &&
|
|
109
|
+
(order.lines.length > 0 || order.surcharges.length > 0) && (
|
|
110
|
+
<div className="rounded-lg border border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950 p-4 mb-6">
|
|
111
|
+
<div className="flex items-center justify-between gap-4">
|
|
112
|
+
<div>
|
|
113
|
+
<h3 className="font-medium text-blue-900 dark:text-blue-100">
|
|
114
|
+
Ready to Complete
|
|
115
|
+
</h3>
|
|
116
|
+
<p className="text-sm text-blue-800 dark:text-blue-200 mt-1">
|
|
117
|
+
This order needs shipping and payment details to be completed.
|
|
118
|
+
</p>
|
|
119
|
+
</div>
|
|
120
|
+
<Button asChild>
|
|
121
|
+
<Link href="/checkout">
|
|
122
|
+
<ShoppingCart className="h-4 w-4 mr-2" />
|
|
123
|
+
Complete Checkout
|
|
124
|
+
</Link>
|
|
125
|
+
</Button>
|
|
119
126
|
</div>
|
|
120
|
-
<Button asChild>
|
|
121
|
-
<Link href="/checkout">
|
|
122
|
-
<ShoppingCart className="h-4 w-4 mr-2"/>
|
|
123
|
-
Complete Checkout
|
|
124
|
-
</Link>
|
|
125
|
-
</Button>
|
|
126
127
|
</div>
|
|
127
|
-
|
|
128
|
-
)}
|
|
128
|
+
)}
|
|
129
129
|
|
|
130
130
|
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
131
131
|
<div className="lg:col-span-2 space-y-6">
|
|
@@ -137,8 +137,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
137
137
|
<div className="space-y-4">
|
|
138
138
|
{order.lines.map((line) => (
|
|
139
139
|
<div key={line.id} className="flex gap-4">
|
|
140
|
-
<div
|
|
141
|
-
className="relative h-20 w-20 rounded-md overflow-hidden bg-gray-100 flex-shrink-0">
|
|
140
|
+
<div className="relative h-20 w-20 rounded-md overflow-hidden bg-gray-100 flex-shrink-0">
|
|
142
141
|
{line.productVariant.product.featuredAsset && (
|
|
143
142
|
<Image
|
|
144
143
|
src={line.productVariant.product.featuredAsset.preview}
|
|
@@ -159,16 +158,22 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
159
158
|
{line.productVariant.name}
|
|
160
159
|
</p>
|
|
161
160
|
<p className="text-sm text-muted-foreground">
|
|
162
|
-
{t('skuLabel', {sku: line.productVariant.sku})}
|
|
161
|
+
{t('skuLabel', { sku: line.productVariant.sku })}
|
|
163
162
|
</p>
|
|
164
163
|
</div>
|
|
165
164
|
<div className="text-right">
|
|
166
165
|
<p className="font-medium">
|
|
167
|
-
<Price
|
|
166
|
+
<Price
|
|
167
|
+
value={line.linePrice}
|
|
168
|
+
currencyCode={order.currencyCode}
|
|
169
|
+
/>
|
|
168
170
|
</p>
|
|
169
171
|
<p className="text-sm text-muted-foreground">
|
|
170
|
-
{t('qty', {quantity: line.quantity})} ×
|
|
171
|
-
|
|
172
|
+
{t('qty', { quantity: line.quantity })} ×{' '}
|
|
173
|
+
<Price
|
|
174
|
+
value={line.unitPrice}
|
|
175
|
+
currencyCode={order.currencyCode}
|
|
176
|
+
/>
|
|
172
177
|
</p>
|
|
173
178
|
</div>
|
|
174
179
|
</div>
|
|
@@ -189,11 +194,16 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
189
194
|
<div>
|
|
190
195
|
<p className="font-medium">{surcharge.description}</p>
|
|
191
196
|
{surcharge.sku && (
|
|
192
|
-
<p className="text-sm text-muted-foreground">
|
|
197
|
+
<p className="text-sm text-muted-foreground">
|
|
198
|
+
SKU: {surcharge.sku}
|
|
199
|
+
</p>
|
|
193
200
|
)}
|
|
194
201
|
</div>
|
|
195
202
|
<p className="font-medium">
|
|
196
|
-
<Price
|
|
203
|
+
<Price
|
|
204
|
+
value={surcharge.price}
|
|
205
|
+
currencyCode={order.currencyCode}
|
|
206
|
+
/>
|
|
197
207
|
</p>
|
|
198
208
|
</div>
|
|
199
209
|
))}
|
|
@@ -209,14 +219,18 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
209
219
|
<CardContent>
|
|
210
220
|
<div className="space-y-2">
|
|
211
221
|
<div className="flex justify-between text-sm">
|
|
212
|
-
<span className="text-muted-foreground">
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
<span className="text-muted-foreground">
|
|
223
|
+
{t('subtotal')} <span className="text-[10px]">(excl. tax)</span>
|
|
224
|
+
</span>
|
|
225
|
+
<span>
|
|
226
|
+
<Price value={order.subTotal} currencyCode={order.currencyCode} />
|
|
227
|
+
</span>
|
|
215
228
|
</div>
|
|
216
229
|
<div className="flex justify-between text-sm">
|
|
217
230
|
<span className="text-muted-foreground">{t('shipping')}</span>
|
|
218
|
-
<span
|
|
219
|
-
|
|
231
|
+
<span>
|
|
232
|
+
<Price value={order.shipping} currencyCode={order.currencyCode} />
|
|
233
|
+
</span>
|
|
220
234
|
</div>
|
|
221
235
|
{order.discounts.length > 0 && (
|
|
222
236
|
<>
|
|
@@ -226,8 +240,11 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
226
240
|
{discount.description}
|
|
227
241
|
</span>
|
|
228
242
|
<span className="text-green-600">
|
|
229
|
-
|
|
230
|
-
|
|
243
|
+
-
|
|
244
|
+
<Price
|
|
245
|
+
value={discount.amount}
|
|
246
|
+
currencyCode={order.currencyCode}
|
|
247
|
+
/>
|
|
231
248
|
</span>
|
|
232
249
|
</div>
|
|
233
250
|
))}
|
|
@@ -239,23 +256,36 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
239
256
|
<span className="text-muted-foreground">
|
|
240
257
|
{tax.description} ({tax.taxRate}%)
|
|
241
258
|
</span>
|
|
242
|
-
<span
|
|
243
|
-
|
|
259
|
+
<span>
|
|
260
|
+
<Price
|
|
261
|
+
value={tax.taxTotal}
|
|
262
|
+
currencyCode={order.currencyCode}
|
|
263
|
+
/>
|
|
264
|
+
</span>
|
|
244
265
|
</div>
|
|
245
266
|
))
|
|
246
267
|
) : (
|
|
247
268
|
<div className="flex justify-between text-sm">
|
|
248
269
|
<span className="text-muted-foreground">Tax</span>
|
|
249
|
-
<span
|
|
250
|
-
|
|
270
|
+
<span>
|
|
271
|
+
<Price
|
|
272
|
+
value={order.totalWithTax - order.total}
|
|
273
|
+
currencyCode={order.currencyCode}
|
|
274
|
+
/>
|
|
275
|
+
</span>
|
|
251
276
|
</div>
|
|
252
277
|
)}
|
|
253
278
|
{hasCreditsApplied && (
|
|
254
279
|
<>
|
|
255
|
-
<Separator className="my-2"/>
|
|
280
|
+
<Separator className="my-2" />
|
|
256
281
|
<div className="flex justify-between text-sm font-medium">
|
|
257
282
|
<span>Subtotal</span>
|
|
258
|
-
<span
|
|
283
|
+
<span>
|
|
284
|
+
<Price
|
|
285
|
+
value={order.totalWithTax}
|
|
286
|
+
currencyCode={order.currencyCode}
|
|
287
|
+
/>
|
|
288
|
+
</span>
|
|
259
289
|
</div>
|
|
260
290
|
{order.storeCreditsApplied.map((credit) => (
|
|
261
291
|
<div key={credit.code} className="flex justify-between text-sm">
|
|
@@ -263,20 +293,26 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
263
293
|
Store Credit ({maskCode(credit.code)})
|
|
264
294
|
</span>
|
|
265
295
|
<span className="text-green-600">
|
|
266
|
-
|
|
296
|
+
-
|
|
297
|
+
<Price
|
|
298
|
+
value={credit.amountDeducted}
|
|
299
|
+
currencyCode={order.currencyCode}
|
|
300
|
+
/>
|
|
267
301
|
</span>
|
|
268
302
|
</div>
|
|
269
303
|
))}
|
|
270
304
|
</>
|
|
271
305
|
)}
|
|
272
|
-
<Separator className="my-2"/>
|
|
306
|
+
<Separator className="my-2" />
|
|
273
307
|
<div className="flex justify-between font-bold text-lg">
|
|
274
|
-
<span>
|
|
275
|
-
{hasCreditsApplied ? 'Amount Paid' : t('total')}
|
|
276
|
-
</span>
|
|
308
|
+
<span>{hasCreditsApplied ? 'Amount Paid' : t('total')}</span>
|
|
277
309
|
<span>
|
|
278
310
|
<Price
|
|
279
|
-
value={
|
|
311
|
+
value={
|
|
312
|
+
hasCreditsApplied
|
|
313
|
+
? order.totalWithTaxAfterStoreCredit
|
|
314
|
+
: order.totalWithTax
|
|
315
|
+
}
|
|
280
316
|
currencyCode={order.currencyCode}
|
|
281
317
|
taxLabel="incl"
|
|
282
318
|
/>
|
|
@@ -295,9 +331,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
295
331
|
</CardHeader>
|
|
296
332
|
<CardContent className="text-sm">
|
|
297
333
|
<p className="font-medium">{order.shippingAddress.fullName}</p>
|
|
298
|
-
{order.shippingAddress.company &&
|
|
299
|
-
<p>{order.shippingAddress.company}</p>
|
|
300
|
-
)}
|
|
334
|
+
{order.shippingAddress.company && <p>{order.shippingAddress.company}</p>}
|
|
301
335
|
<p>{order.shippingAddress.streetLine1}</p>
|
|
302
336
|
{order.shippingAddress.streetLine2 && (
|
|
303
337
|
<p>{order.shippingAddress.streetLine2}</p>
|
|
@@ -321,9 +355,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
321
355
|
</CardHeader>
|
|
322
356
|
<CardContent className="text-sm">
|
|
323
357
|
<p className="font-medium">{order.billingAddress.fullName}</p>
|
|
324
|
-
{order.billingAddress.company &&
|
|
325
|
-
<p>{order.billingAddress.company}</p>
|
|
326
|
-
)}
|
|
358
|
+
{order.billingAddress.company && <p>{order.billingAddress.company}</p>}
|
|
327
359
|
<p>{order.billingAddress.streetLine1}</p>
|
|
328
360
|
{order.billingAddress.streetLine2 && (
|
|
329
361
|
<p>{order.billingAddress.streetLine2}</p>
|
|
@@ -354,18 +386,26 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
354
386
|
</div>
|
|
355
387
|
<div className="flex justify-between">
|
|
356
388
|
<span className="text-muted-foreground">{t('amount')}</span>
|
|
357
|
-
<span
|
|
358
|
-
|
|
389
|
+
<span>
|
|
390
|
+
<Price
|
|
391
|
+
value={payment.amount}
|
|
392
|
+
currencyCode={order.currencyCode}
|
|
393
|
+
/>
|
|
394
|
+
</span>
|
|
359
395
|
</div>
|
|
360
396
|
<div className="flex justify-between">
|
|
361
|
-
<span className="text-muted-foreground">
|
|
397
|
+
<span className="text-muted-foreground">
|
|
398
|
+
{t('paymentStatus')}
|
|
399
|
+
</span>
|
|
362
400
|
<Badge variant="secondary" className="text-xs">
|
|
363
401
|
{payment.state}
|
|
364
402
|
</Badge>
|
|
365
403
|
</div>
|
|
366
404
|
{payment.transactionId && (
|
|
367
405
|
<div className="flex justify-between">
|
|
368
|
-
<span className="text-muted-foreground">
|
|
406
|
+
<span className="text-muted-foreground">
|
|
407
|
+
{t('transactionId')}
|
|
408
|
+
</span>
|
|
369
409
|
<span className="font-mono text-xs">
|
|
370
410
|
{payment.transactionId}
|
|
371
411
|
</span>
|
|
@@ -392,7 +432,7 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
392
432
|
</p>
|
|
393
433
|
)}
|
|
394
434
|
<p className="font-medium">
|
|
395
|
-
<Price value={line.price} currencyCode={order.currencyCode}/>
|
|
435
|
+
<Price value={line.price} currencyCode={order.currencyCode} />
|
|
396
436
|
</p>
|
|
397
437
|
</div>
|
|
398
438
|
))}
|
|
@@ -408,12 +448,14 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
408
448
|
<CardContent className="space-y-3">
|
|
409
449
|
<div className="flex items-center gap-2">
|
|
410
450
|
<span className="text-sm text-muted-foreground">Status:</span>
|
|
411
|
-
<ApprovalStatusBadge status={latestApproval.status}/>
|
|
451
|
+
<ApprovalStatusBadge status={latestApproval.status} />
|
|
412
452
|
</div>
|
|
413
453
|
{latestApproval.decisions && latestApproval.decisions.length > 0 && (
|
|
414
454
|
<div className="space-y-2">
|
|
415
|
-
<Separator/>
|
|
416
|
-
<p className="text-xs font-medium text-muted-foreground">
|
|
455
|
+
<Separator />
|
|
456
|
+
<p className="text-xs font-medium text-muted-foreground">
|
|
457
|
+
Decision History
|
|
458
|
+
</p>
|
|
417
459
|
{latestApproval.decisions
|
|
418
460
|
.filter((d) => d.decision !== 'PENDING')
|
|
419
461
|
.map((d) => (
|
|
@@ -424,13 +466,17 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
424
466
|
? `${d.customer.firstName} ${d.customer.lastName}`
|
|
425
467
|
: 'Admin'}
|
|
426
468
|
</span>
|
|
427
|
-
<ApprovalStatusBadge status={d.decision}/>
|
|
469
|
+
<ApprovalStatusBadge status={d.decision} />
|
|
428
470
|
</div>
|
|
429
471
|
{d.comment && (
|
|
430
|
-
<p className="text-muted-foreground italic"
|
|
472
|
+
<p className="text-muted-foreground italic">
|
|
473
|
+
“{d.comment}”
|
|
474
|
+
</p>
|
|
431
475
|
)}
|
|
432
476
|
{d.decidedAt && (
|
|
433
|
-
<p className="text-muted-foreground">
|
|
477
|
+
<p className="text-muted-foreground">
|
|
478
|
+
{formatDate(d.decidedAt, locale)}
|
|
479
|
+
</p>
|
|
434
480
|
)}
|
|
435
481
|
</div>
|
|
436
482
|
))}
|
|
@@ -450,13 +496,15 @@ async function OrderDetailContent({params}: {params: Promise<{locale: string; co
|
|
|
450
496
|
);
|
|
451
497
|
}
|
|
452
498
|
|
|
453
|
-
export default function OrderDetailPage({params}: OrderDetailPageProps) {
|
|
499
|
+
export default function OrderDetailPage({ params }: OrderDetailPageProps) {
|
|
454
500
|
return (
|
|
455
|
-
<Suspense
|
|
456
|
-
|
|
457
|
-
<
|
|
458
|
-
|
|
459
|
-
|
|
501
|
+
<Suspense
|
|
502
|
+
fallback={
|
|
503
|
+
<div className="text-center py-12">
|
|
504
|
+
<p className="text-sm text-muted-foreground">Loading...</p>
|
|
505
|
+
</div>
|
|
506
|
+
}
|
|
507
|
+
>
|
|
460
508
|
<OrderDetailContent params={params} />
|
|
461
509
|
</Suspense>
|
|
462
510
|
);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { updateTag } from 'next/cache';
|
|
4
4
|
|
|
5
|
+
import type { ResultOf } from '@/graphql';
|
|
5
6
|
import { client } from '@/lib/vendure/api';
|
|
6
7
|
import { AddReorderToActiveOrderMutation } from '@/lib/vendure/mutations';
|
|
7
8
|
import { PreviewReorderQuery } from '@/lib/vendure/queries';
|
|
8
|
-
import type { ResultOf } from '@/graphql';
|
|
9
9
|
|
|
10
10
|
// Guard against pathological payloads. The server enforces its own limits too,
|
|
11
11
|
// but failing fast here means we don't spend an HTTP round-trip to discover.
|
|
@@ -71,7 +71,7 @@ export async function previewReorder(
|
|
|
71
71
|
return {
|
|
72
72
|
success: true,
|
|
73
73
|
data: {
|
|
74
|
-
lines: preview.lines.map(line => ({
|
|
74
|
+
lines: preview.lines.map((line) => ({
|
|
75
75
|
sourceLineId: line.sourceLineId,
|
|
76
76
|
productVariantId: line.productVariant?.id ?? null,
|
|
77
77
|
productName: line.productVariant?.product?.name ?? null,
|
|
@@ -83,9 +83,8 @@ export async function previewReorder(
|
|
|
83
83
|
status: line.status as ReorderLineStatus,
|
|
84
84
|
originalUnitPriceWithTax: line.originalUnitPriceWithTax,
|
|
85
85
|
currentCatalogUnitPriceWithTax: line.currentCatalogUnitPriceWithTax,
|
|
86
|
-
priceChanged:
|
|
87
|
-
|
|
88
|
-
messages: line.messages.map(m => ({
|
|
86
|
+
priceChanged: line.originalUnitPriceWithTax !== line.currentCatalogUnitPriceWithTax,
|
|
87
|
+
messages: line.messages.map((m) => ({
|
|
89
88
|
type: m.type as 'ERROR' | 'WARNING' | 'INFO',
|
|
90
89
|
message: m.message,
|
|
91
90
|
})),
|
|
@@ -146,12 +145,12 @@ export async function commitReorder(
|
|
|
146
145
|
filteredCount: response.filteredCount,
|
|
147
146
|
failedCount: response.failedCount,
|
|
148
147
|
orderCode: response.order.code,
|
|
149
|
-
lines: response.lines.map(l => ({
|
|
148
|
+
lines: response.lines.map((l) => ({
|
|
150
149
|
sourceLineId: l.sourceLineId,
|
|
151
150
|
status: l.status as ReorderLineStatus,
|
|
152
151
|
message: l.message ?? null,
|
|
153
152
|
})),
|
|
154
|
-
messages: response.messages.map(m => ({
|
|
153
|
+
messages: response.messages.map((m) => ({
|
|
155
154
|
type: m.type as 'ERROR' | 'WARNING' | 'INFO',
|
|
156
155
|
message: m.message,
|
|
157
156
|
})),
|