@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,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { Button } from '@/components/ui/button';
|
|
4
|
-
import {Link} from '@/i18n/navigation';
|
|
5
|
-
import {useTranslations} from 'next-intl';
|
|
4
|
+
import { Link } from '@/i18n/navigation';
|
|
5
|
+
import { useTranslations } from 'next-intl';
|
|
6
6
|
|
|
7
7
|
export default function GlobalError({ reset }: { error: Error & { digest?: string }; reset: () => void }) {
|
|
8
8
|
const t = useTranslations('Errors');
|
|
@@ -11,9 +11,7 @@ export default function GlobalError({ reset }: { error: Error & { digest?: strin
|
|
|
11
11
|
<div className="text-center space-y-6 max-w-md">
|
|
12
12
|
<h1 className="text-6xl font-bold text-destructive">Error</h1>
|
|
13
13
|
<h2 className="text-2xl font-semibold">Something went wrong</h2>
|
|
14
|
-
<p className="text-muted-foreground">
|
|
15
|
-
{t('unexpectedError')}
|
|
16
|
-
</p>
|
|
14
|
+
<p className="text-muted-foreground">{t('unexpectedError')}</p>
|
|
17
15
|
<div className="flex gap-4 justify-center">
|
|
18
16
|
<Button onClick={() => reset()} variant="outline">
|
|
19
17
|
Try Again
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
|
|
3
|
-
import {client} from '@/lib/vendure/api';
|
|
4
|
-
import {RequestPasswordResetMutation} from '@/lib/vendure/mutations';
|
|
3
|
+
import { client } from '@/lib/vendure/api';
|
|
4
|
+
import { RequestPasswordResetMutation } from '@/lib/vendure/mutations';
|
|
5
5
|
|
|
6
|
-
export async function requestPasswordResetAction(
|
|
6
|
+
export async function requestPasswordResetAction(
|
|
7
|
+
prevState: { error?: string; success?: boolean } | undefined,
|
|
8
|
+
formData: FormData,
|
|
9
|
+
) {
|
|
7
10
|
const emailAddress = formData.get('emailAddress') as string;
|
|
8
11
|
|
|
9
12
|
if (!emailAddress) {
|
|
10
|
-
return {error: 'Email address is required'};
|
|
13
|
+
return { error: 'Email address is required' };
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
const [result, error] = await client.mutate(RequestPasswordResetMutation, {
|
|
@@ -15,14 +18,14 @@ export async function requestPasswordResetAction(prevState: { error?: string; su
|
|
|
15
18
|
});
|
|
16
19
|
|
|
17
20
|
if (error) {
|
|
18
|
-
return {error: 'An unexpected error occurred. Please try again.'};
|
|
21
|
+
return { error: 'An unexpected error occurred. Please try again.' };
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
const resetResult = result.data.requestPasswordReset;
|
|
22
25
|
|
|
23
26
|
if (resetResult?.__typename !== 'Success') {
|
|
24
|
-
return {error: resetResult?.message || 'Failed to request password reset'};
|
|
27
|
+
return { error: resetResult?.message || 'Failed to request password reset' };
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
return {success: true};
|
|
30
|
+
return { success: true };
|
|
28
31
|
}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card';
|
|
5
|
+
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form';
|
|
6
|
+
import { Input } from '@/components/ui/input';
|
|
7
|
+
import { Link } from '@/i18n/navigation';
|
|
8
|
+
import { zodResolver } from '@hookform/resolvers/zod';
|
|
9
|
+
import { useTranslations } from 'next-intl';
|
|
3
10
|
import { useState, useTransition } from 'react';
|
|
4
11
|
import { useForm } from 'react-hook-form';
|
|
5
|
-
import { zodResolver } from '@hookform/resolvers/zod';
|
|
6
12
|
import * as z from 'zod';
|
|
7
|
-
import { useTranslations } from 'next-intl';
|
|
8
13
|
import { requestPasswordResetAction } from './actions';
|
|
9
|
-
import { Button } from '@/components/ui/button';
|
|
10
|
-
import { Input } from '@/components/ui/input';
|
|
11
|
-
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card';
|
|
12
|
-
import {
|
|
13
|
-
Form,
|
|
14
|
-
FormControl,
|
|
15
|
-
FormField,
|
|
16
|
-
FormItem,
|
|
17
|
-
FormLabel,
|
|
18
|
-
FormMessage,
|
|
19
|
-
} from '@/components/ui/form';
|
|
20
|
-
import {Link} from '@/i18n/navigation';
|
|
21
14
|
|
|
22
15
|
const forgotPasswordSchema = z.object({
|
|
23
16
|
emailAddress: z.email('Please enter a valid email address'),
|
|
@@ -59,9 +52,7 @@ export function ForgotPasswordForm() {
|
|
|
59
52
|
<Card>
|
|
60
53
|
<CardHeader>
|
|
61
54
|
<CardTitle>{t('checkYourEmail')}</CardTitle>
|
|
62
|
-
<CardDescription>
|
|
63
|
-
{t('checkYourEmailDescription')}
|
|
64
|
-
</CardDescription>
|
|
55
|
+
<CardDescription>{t('checkYourEmailDescription')}</CardDescription>
|
|
65
56
|
</CardHeader>
|
|
66
57
|
<CardFooter>
|
|
67
58
|
<Link href="/sign-in">
|
|
@@ -78,9 +69,7 @@ export function ForgotPasswordForm() {
|
|
|
78
69
|
<Card>
|
|
79
70
|
<CardHeader>
|
|
80
71
|
<CardTitle>{t('forgotPasswordTitle')}</CardTitle>
|
|
81
|
-
<CardDescription>
|
|
82
|
-
{t('forgotPasswordDescription')}
|
|
83
|
-
</CardDescription>
|
|
72
|
+
<CardDescription>{t('forgotPasswordDescription')}</CardDescription>
|
|
84
73
|
</CardHeader>
|
|
85
74
|
<Form {...form}>
|
|
86
75
|
<form onSubmit={form.handleSubmit(onSubmit)}>
|
|
@@ -104,11 +93,7 @@ export function ForgotPasswordForm() {
|
|
|
104
93
|
)}
|
|
105
94
|
/>
|
|
106
95
|
|
|
107
|
-
{serverError &&
|
|
108
|
-
<div className="text-sm text-destructive mt-4">
|
|
109
|
-
{serverError}
|
|
110
|
-
</div>
|
|
111
|
-
)}
|
|
96
|
+
{serverError && <div className="text-sm text-destructive mt-4">{serverError}</div>}
|
|
112
97
|
</CardContent>
|
|
113
98
|
<CardFooter className="flex flex-col space-y-4 mt-4">
|
|
114
99
|
<Button type="submit" className="w-full" disabled={isPending}>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { type Locale } from '@/i18n/routing';
|
|
2
|
+
import type { Metadata } from 'next';
|
|
3
|
+
import { getTranslations } from 'next-intl/server';
|
|
4
|
+
import { locale as rootLocale } from 'next/root-params';
|
|
5
5
|
import { ForgotPasswordForm } from './forgot-password-form';
|
|
6
6
|
|
|
7
7
|
export async function generateMetadata(): Promise<Metadata> {
|
|
8
8
|
const locale = (await rootLocale()) as Locale;
|
|
9
|
-
const t = await getTranslations({locale, namespace: 'Auth'});
|
|
9
|
+
const t = await getTranslations({ locale, namespace: 'Auth' });
|
|
10
10
|
return {
|
|
11
11
|
title: t('forgotPasswordPageTitle'),
|
|
12
12
|
description: t('forgotPasswordDescription'),
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
@import
|
|
2
|
-
@import
|
|
1
|
+
@import 'tailwindcss';
|
|
2
|
+
@import 'tw-animate-css';
|
|
3
3
|
|
|
4
4
|
@custom-variant dark (&:is(.dark *));
|
|
5
5
|
|
|
6
6
|
@theme inline {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
7
|
+
--color-background: var(--background);
|
|
8
|
+
--color-foreground: var(--foreground);
|
|
9
|
+
--font-sans: var(--font-geist-sans);
|
|
10
|
+
--font-mono: var(--font-geist-mono);
|
|
11
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
12
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
13
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
14
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
15
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
16
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
17
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
18
|
+
--color-sidebar: var(--sidebar);
|
|
19
|
+
--color-chart-5: var(--chart-5);
|
|
20
|
+
--color-chart-4: var(--chart-4);
|
|
21
|
+
--color-chart-3: var(--chart-3);
|
|
22
|
+
--color-chart-2: var(--chart-2);
|
|
23
|
+
--color-chart-1: var(--chart-1);
|
|
24
|
+
--color-ring: var(--ring);
|
|
25
|
+
--color-input: var(--input);
|
|
26
|
+
--color-border: var(--border);
|
|
27
|
+
--color-destructive: var(--destructive);
|
|
28
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
29
|
+
--color-accent: var(--accent);
|
|
30
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
31
|
+
--color-muted: var(--muted);
|
|
32
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
33
|
+
--color-secondary: var(--secondary);
|
|
34
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
35
|
+
--color-primary: var(--primary);
|
|
36
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
37
|
+
--color-popover: var(--popover);
|
|
38
|
+
--color-card-foreground: var(--card-foreground);
|
|
39
|
+
--color-card: var(--card);
|
|
40
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
41
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
42
|
+
--radius-lg: var(--radius);
|
|
43
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/* =============================================================
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
============================================================= */
|
|
51
51
|
|
|
52
52
|
@layer base {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
* {
|
|
54
|
+
@apply border-border outline-ring/50;
|
|
55
|
+
}
|
|
56
|
+
body {
|
|
57
|
+
@apply bg-background text-foreground;
|
|
58
|
+
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/* =============================================================
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<AwaitingApprovalBanner/> when active. --page-top-offset is the sum.
|
|
67
67
|
============================================================= */
|
|
68
68
|
:root {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
--navbar-height: 64px;
|
|
70
|
+
--banner-height: 0px;
|
|
71
|
+
--page-top-offset: calc(var(--navbar-height) + var(--banner-height));
|
|
72
72
|
}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {SITE_NAME, SITE_URL, buildAlternates} from
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
1
|
+
import { Footer } from '@/components/layout/footer';
|
|
2
|
+
import { Navbar } from '@/components/layout/navbar';
|
|
3
|
+
import { CartCountServer } from '@/components/providers/cart-count-server';
|
|
4
|
+
import { CompanyContextGuard } from '@/components/providers/company-context-guard';
|
|
5
|
+
import { CompanyPermissionsServer } from '@/components/providers/company-permissions-server';
|
|
6
|
+
import { ThemeProvider } from '@/components/providers/theme-provider';
|
|
7
|
+
import { Toaster } from '@/components/ui/sonner';
|
|
8
|
+
import { getBranding, getBrandingStyleTag } from '@/config/branding';
|
|
9
|
+
import { CartCountProvider } from '@/lib/cart-count-context';
|
|
10
|
+
import { SITE_NAME, SITE_URL, buildAlternates } from '@/lib/metadata';
|
|
11
|
+
import { SearchBarProvider } from '@/lib/search-bar-context';
|
|
12
|
+
import type { Metadata, Viewport } from 'next';
|
|
13
|
+
import { NextIntlClientProvider } from 'next-intl';
|
|
14
|
+
import { getMessages, setRequestLocale } from 'next-intl/server';
|
|
15
|
+
import { Geist, Geist_Mono, Inter_Tight, JetBrains_Mono } from 'next/font/google';
|
|
16
|
+
import { Suspense } from 'react';
|
|
17
|
+
import './globals.css';
|
|
18
18
|
// next/root-params provides cache-safe locale resolution. The SWC transform
|
|
19
19
|
// only runs in route files (layout/page), so this import cannot be moved to
|
|
20
20
|
// a utility module. There must be no layout.tsx above [locale] — see next.config.ts.
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
21
|
+
import { toOgLocale } from '@/i18n/locale-utils';
|
|
22
|
+
import { routing, type Locale } from '@/i18n/routing';
|
|
23
|
+
import { hasLocale } from 'next-intl';
|
|
24
|
+
import { locale as rootLocale } from 'next/root-params';
|
|
25
25
|
|
|
26
26
|
const geistSans = Geist({
|
|
27
|
-
variable:
|
|
28
|
-
subsets: [
|
|
27
|
+
variable: '--font-geist-sans',
|
|
28
|
+
subsets: ['latin'],
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
const geistMono = Geist_Mono({
|
|
32
|
-
variable:
|
|
33
|
-
subsets: [
|
|
32
|
+
variable: '--font-geist-mono',
|
|
33
|
+
subsets: ['latin'],
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
// Technical-documentation typography stack — loaded at module scope
|
|
@@ -38,13 +38,13 @@ const geistMono = Geist_Mono({
|
|
|
38
38
|
// <body> when the active scenario's branding opts in via `fonts.technical`;
|
|
39
39
|
// other scenarios render with Geist and never see these CSS variables.
|
|
40
40
|
const interTight = Inter_Tight({
|
|
41
|
-
variable:
|
|
42
|
-
subsets: [
|
|
41
|
+
variable: '--font-inter-tight',
|
|
42
|
+
subsets: ['latin'],
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
const jetbrainsMono = JetBrains_Mono({
|
|
46
|
-
variable:
|
|
47
|
-
subsets: [
|
|
46
|
+
variable: '--font-jetbrains-mono',
|
|
47
|
+
subsets: ['latin'],
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
const _branding = getBranding();
|
|
@@ -62,12 +62,12 @@ export async function generateMetadata(): Promise<Metadata> {
|
|
|
62
62
|
description: _branding.metadata.defaultDescription,
|
|
63
63
|
alternates: buildAlternates('/', locale),
|
|
64
64
|
openGraph: {
|
|
65
|
-
type:
|
|
65
|
+
type: 'website',
|
|
66
66
|
siteName: SITE_NAME,
|
|
67
67
|
locale: toOgLocale(locale),
|
|
68
68
|
},
|
|
69
69
|
twitter: {
|
|
70
|
-
card:
|
|
70
|
+
card: 'summary_large_image',
|
|
71
71
|
},
|
|
72
72
|
robots: {
|
|
73
73
|
index: true,
|
|
@@ -75,23 +75,23 @@ export async function generateMetadata(): Promise<Metadata> {
|
|
|
75
75
|
googleBot: {
|
|
76
76
|
index: true,
|
|
77
77
|
follow: true,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
'max-video-preview': -1,
|
|
79
|
+
'max-image-preview': 'large',
|
|
80
|
+
'max-snippet': -1,
|
|
81
81
|
},
|
|
82
82
|
},
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
export const viewport: Viewport = {
|
|
87
|
-
width:
|
|
87
|
+
width: 'device-width',
|
|
88
88
|
initialScale: 1,
|
|
89
89
|
maximumScale: 5,
|
|
90
90
|
themeColor: _branding.metadata.themeColor,
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
export function generateStaticParams() {
|
|
94
|
-
return routing.locales.map((locale) => ({locale}));
|
|
94
|
+
return routing.locales.map((locale) => ({ locale }));
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
// Matches the exact structure of <Footer /> so the swap is zero-shift.
|
|
@@ -104,8 +104,8 @@ function FooterSkeleton() {
|
|
|
104
104
|
<div>
|
|
105
105
|
<div className="h-5 w-20 mb-4" />
|
|
106
106
|
<div className="space-y-2">
|
|
107
|
-
{Array.from({length: 5}).map((_, i) => (
|
|
108
|
-
<div key={i} className="h-5 rounded" style={{width: `${50 + i * 8}%`}} />
|
|
107
|
+
{Array.from({ length: 5 }).map((_, i) => (
|
|
108
|
+
<div key={i} className="h-5 rounded" style={{ width: `${50 + i * 8}%` }} />
|
|
109
109
|
))}
|
|
110
110
|
</div>
|
|
111
111
|
</div>
|
|
@@ -113,8 +113,8 @@ function FooterSkeleton() {
|
|
|
113
113
|
<div>
|
|
114
114
|
<div className="h-5 w-16 mb-4" />
|
|
115
115
|
<div className="space-y-2">
|
|
116
|
-
{Array.from({length: 5}).map((_, i) => (
|
|
117
|
-
<div key={i} className="h-5 rounded" style={{width: `${40 + i * 10}%`}} />
|
|
116
|
+
{Array.from({ length: 5 }).map((_, i) => (
|
|
117
|
+
<div key={i} className="h-5 rounded" style={{ width: `${40 + i * 10}%` }} />
|
|
118
118
|
))}
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
@@ -122,8 +122,8 @@ function FooterSkeleton() {
|
|
|
122
122
|
<div>
|
|
123
123
|
<div className="h-5 w-32 mb-4" />
|
|
124
124
|
<div className="space-y-2">
|
|
125
|
-
{Array.from({length: 3}).map((_, i) => (
|
|
126
|
-
<div key={i} className="h-5 rounded" style={{width: `${50 + i * 15}%`}} />
|
|
125
|
+
{Array.from({ length: 3 }).map((_, i) => (
|
|
126
|
+
<div key={i} className="h-5 rounded" style={{ width: `${50 + i * 15}%` }} />
|
|
127
127
|
))}
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
@@ -131,8 +131,8 @@ function FooterSkeleton() {
|
|
|
131
131
|
<div>
|
|
132
132
|
<div className="h-5 w-24 mb-4" />
|
|
133
133
|
<div className="space-y-2">
|
|
134
|
-
{Array.from({length: 3}).map((_, i) => (
|
|
135
|
-
<div key={i} className="h-5 rounded" style={{width: `${55 + i * 12}%`}} />
|
|
134
|
+
{Array.from({ length: 3 }).map((_, i) => (
|
|
135
|
+
<div key={i} className="h-5 rounded" style={{ width: `${55 + i * 12}%` }} />
|
|
136
136
|
))}
|
|
137
137
|
</div>
|
|
138
138
|
</div>
|
|
@@ -146,10 +146,16 @@ function FooterSkeleton() {
|
|
|
146
146
|
);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
export default async function LocaleLayout({
|
|
150
|
-
|
|
149
|
+
export default async function LocaleLayout({
|
|
150
|
+
children,
|
|
151
|
+
params,
|
|
152
|
+
}: {
|
|
153
|
+
children: React.ReactNode;
|
|
154
|
+
params: Promise<{ locale: string }>;
|
|
155
|
+
}) {
|
|
156
|
+
const { locale } = await params;
|
|
151
157
|
setRequestLocale(locale);
|
|
152
|
-
const messages = await getMessages({locale});
|
|
158
|
+
const messages = await getMessages({ locale });
|
|
153
159
|
|
|
154
160
|
return (
|
|
155
161
|
<html lang={locale} suppressHydrationWarning>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Button } from '@/components/ui/button';
|
|
2
|
-
import {Link} from
|
|
3
|
-
import {getTranslations} from 'next-intl/server';
|
|
2
|
+
import { Link } from '@/i18n/navigation';
|
|
3
|
+
import { getTranslations } from 'next-intl/server';
|
|
4
4
|
|
|
5
5
|
export default async function NotFound() {
|
|
6
6
|
const t = await getTranslations('NotFound');
|
|
@@ -9,9 +9,7 @@ export default async function NotFound() {
|
|
|
9
9
|
<div className="text-center space-y-6 max-w-md">
|
|
10
10
|
<h1 className="text-6xl font-bold text-primary">404</h1>
|
|
11
11
|
<h2 className="text-2xl font-semibold">{t('title')}</h2>
|
|
12
|
-
<p className="text-muted-foreground">
|
|
13
|
-
{t('message')}
|
|
14
|
-
</p>
|
|
12
|
+
<p className="text-muted-foreground">{t('message')}</p>
|
|
15
13
|
<div className="flex gap-4 justify-center">
|
|
16
14
|
<Button asChild>
|
|
17
15
|
<Link href="/">{t('goHome')}</Link>
|