@akinon/projectzero 2.0.0-beta.9 → 2.0.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 +191 -17
- package/app-template/.env.example +3 -0
- package/app-template/.github/instructions/account.instructions.md +749 -0
- package/app-template/.github/instructions/checkout.instructions.md +678 -0
- package/app-template/.github/instructions/default.instructions.md +279 -0
- package/app-template/.github/instructions/edge-cases.instructions.md +73 -0
- package/app-template/.github/instructions/routing.instructions.md +603 -0
- package/app-template/.github/instructions/settings.instructions.md +338 -0
- package/app-template/.gitignore +3 -0
- package/app-template/AGENTS.md +7 -0
- package/app-template/CHANGELOG.md +2065 -232
- package/app-template/Procfile +1 -1
- package/app-template/akinon.json +1 -4
- package/app-template/build.sh +10 -0
- package/app-template/docs/advanced-usage.md +111 -0
- package/app-template/docs/plugins.md +60 -25
- package/app-template/docs/sentry-usage.md +35 -0
- package/app-template/jest.config.ts +2 -2
- package/app-template/next-env.d.ts +1 -0
- package/app-template/{next.config.ts → next.config.mjs} +6 -7
- package/app-template/package.json +58 -50
- package/app-template/postcss.config.mjs +1 -4
- package/app-template/public/amex.svg +12 -0
- package/app-template/public/apple-pay.svg +16 -0
- package/app-template/public/assets/images/product-placeholder-1.jpg +0 -0
- package/app-template/public/assets/images/product-placeholder-2.jpg +0 -0
- package/app-template/public/assets/images/product-placeholder-3.jpg +0 -0
- package/app-template/public/assets/images/product-placeholder-4.jpg +0 -0
- package/app-template/public/google-pay.svg +16 -0
- package/app-template/public/locales/en/account.json +9 -4
- package/app-template/public/locales/en/auth.json +6 -7
- package/app-template/public/locales/en/basket.json +6 -6
- package/app-template/public/locales/en/blog.json +7 -0
- package/app-template/public/locales/en/category.json +3 -1
- package/app-template/public/locales/en/checkout.json +17 -4
- package/app-template/public/locales/en/common.json +61 -3
- package/app-template/public/locales/en/forgot_password.json +6 -7
- package/app-template/public/locales/en/product.json +84 -4
- package/app-template/public/locales/tr/account.json +9 -4
- package/app-template/public/locales/tr/auth.json +16 -17
- package/app-template/public/locales/tr/basket.json +4 -4
- package/app-template/public/locales/tr/blog.json +7 -0
- package/app-template/public/locales/tr/category.json +3 -1
- package/app-template/public/locales/tr/checkout.json +48 -36
- package/app-template/public/locales/tr/common.json +60 -2
- package/app-template/public/locales/tr/forgot_password.json +12 -13
- package/app-template/public/locales/tr/product.json +82 -0
- package/app-template/public/logo.svg +3 -27
- package/app-template/public/mastercard.svg +14 -0
- package/app-template/public/masterpass-javascript-sdk-web.min.js +1 -0
- package/app-template/public/promotion-banner.jpg +0 -0
- package/app-template/public/shop-pay.svg +12 -0
- package/app-template/public/visa.svg +12 -0
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/[...prettyurl]/page.tsx +11 -11
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/layout.tsx +4 -3
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/orders/[id]/cancellation/page.tsx +13 -10
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/orders/[id]/page.tsx +73 -51
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/page.tsx +1 -1
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/profile/page.tsx +2 -2
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/address/stores/page.tsx +2 -2
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/auth/page.tsx +1 -1
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/basket/page.tsx +2 -2
- package/app-template/src/app/[pz]/blog/[slug]/page.tsx +120 -0
- package/app-template/src/app/[pz]/category/[pk]/page.tsx +37 -0
- package/app-template/src/app/[pz]/flat-page/[pk]/page.tsx +23 -0
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/forms/[pk]/generate/page.tsx +2 -3
- package/app-template/src/app/[pz]/group-product/[pk]/page.tsx +93 -0
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/landing-page/[pk]/page.tsx +2 -4
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/layout.tsx +6 -11
- package/app-template/src/app/[pz]/list/page.tsx +26 -0
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/not-found.tsx +5 -7
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/orders/completed/[token]/page.tsx +6 -4
- package/app-template/src/app/[pz]/page.tsx +28 -0
- package/app-template/src/app/[pz]/pages/[slug]/page.tsx +19 -0
- package/app-template/src/app/[pz]/product/[pk]/page.tsx +102 -0
- package/app-template/src/app/[pz]/special-page/[pk]/page.tsx +35 -0
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/users/email-set-primary/[[...id]]/page.tsx +3 -4
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/users/registration/account-confirm-email/[[...id]]/page.tsx +3 -3
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/users/reset/[[...id]]/page.tsx +41 -5
- package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/xml-sitemap/[node]/route.ts +8 -6
- package/app-template/src/app/api/auth/[...nextauth]/route.ts +3 -0
- package/app-template/src/app/api/barcode-search/route.ts +1 -0
- package/app-template/src/app/api/cache/route.ts +1 -1
- package/app-template/src/app/api/form/[...id]/route.ts +1 -7
- package/app-template/src/app/api/image-proxy/route.ts +1 -0
- package/app-template/src/app/api/logout/route.ts +1 -1
- package/app-template/src/app/api/product-categories/route.ts +1 -0
- package/app-template/src/app/api/similar-product-list/route.ts +1 -0
- package/app-template/src/app/api/similar-products/route.ts +1 -0
- package/app-template/src/app/api/theme-settings/route.ts +12 -0
- package/app-template/src/app/api/virtual-try-on/limited-categories/route.ts +1 -0
- package/app-template/src/app/api/virtual-try-on/route.ts +1 -0
- package/app-template/src/app/api/web-vitals/route.ts +1 -1
- package/app-template/src/assets/fonts/pz-icon.css +211 -49
- package/app-template/src/assets/fonts/pz-icon.eot +0 -0
- package/app-template/src/assets/fonts/pz-icon.html +486 -0
- package/app-template/src/assets/fonts/pz-icon.scss +373 -49
- package/app-template/src/assets/fonts/pz-icon.svg +215 -53
- package/app-template/src/assets/fonts/pz-icon.ttf +0 -0
- package/app-template/src/assets/fonts/pz-icon.woff +0 -0
- package/app-template/src/assets/fonts/pz-icon.woff2 +0 -0
- package/app-template/src/assets/globals.scss +8 -133
- package/app-template/src/assets/icons/arrow-right.svg +3 -0
- package/app-template/src/assets/icons/cart.svg +4 -12
- package/app-template/src/assets/icons/check.svg +2 -18
- package/app-template/src/assets/icons/chevron-down.svg +2 -7
- package/app-template/src/assets/icons/delete.svg +3 -0
- package/app-template/src/assets/icons/facebook.svg +2 -8
- package/app-template/src/assets/icons/fav-off.svg +5 -0
- package/app-template/src/assets/icons/fav-on.svg +5 -0
- package/app-template/src/assets/icons/filter-and-sort.svg +3 -0
- package/app-template/src/assets/icons/heart.svg +3 -0
- package/app-template/src/assets/icons/instagram.svg +2 -13
- package/app-template/src/assets/icons/materials.svg +3 -0
- package/app-template/src/assets/icons/person.svg +4 -0
- package/app-template/src/assets/icons/pinterest.svg +5 -11
- package/app-template/src/assets/icons/ruler.svg +3 -0
- package/app-template/src/assets/icons/search.svg +8 -11
- package/app-template/src/assets/icons/share.svg +2 -9
- package/app-template/src/assets/icons/snapchat.svg +3 -0
- package/app-template/src/assets/icons/tiktok.svg +3 -0
- package/app-template/src/assets/icons/tumblr.svg +6 -0
- package/app-template/src/assets/icons/twitter.svg +2 -10
- package/app-template/src/assets/icons/vimeo.svg +3 -0
- package/app-template/src/assets/icons/youtube.svg +3 -0
- package/app-template/src/assets/icons/zoom.svg +8 -0
- package/app-template/src/auth.ts +3 -0
- package/app-template/src/components/__tests__/badge.test.tsx +2 -2
- package/app-template/src/components/__tests__/link.test.tsx +2 -0
- package/app-template/src/components/accordion.tsx +48 -23
- package/app-template/src/components/action-tooltip.tsx +160 -0
- package/app-template/src/components/button.tsx +1 -1
- package/app-template/src/components/carousel-core.tsx +4 -11
- package/app-template/src/components/checkbox.tsx +2 -1
- package/app-template/src/components/currency-select.tsx +150 -4
- package/app-template/src/components/file-input.tsx +27 -7
- package/app-template/src/components/generate-form-fields.tsx +49 -10
- package/app-template/src/components/icon.tsx +5 -6
- package/app-template/src/components/index.ts +4 -1
- package/app-template/src/components/input.tsx +11 -5
- package/app-template/src/components/language-select.tsx +88 -2
- package/app-template/src/components/modal.tsx +34 -16
- package/app-template/src/components/pagination.tsx +133 -20
- package/app-template/src/components/price.tsx +1 -1
- package/app-template/src/components/pwa-tags.tsx +1 -0
- package/app-template/src/components/quantity-input.tsx +63 -0
- package/app-template/src/components/quantity-selector.tsx +215 -0
- package/app-template/src/components/route-handler.tsx +50 -0
- package/app-template/src/components/select.tsx +86 -54
- package/app-template/src/components/shimmer.tsx +1 -1
- package/app-template/src/components/types/index.ts +51 -1
- package/app-template/src/components/widget-content.tsx +323 -0
- package/app-template/src/data/server/theme.ts +70 -0
- package/app-template/src/hooks/use-fav-button.tsx +9 -10
- package/app-template/src/hooks/use-product-cart.ts +80 -0
- package/app-template/src/hooks/use-stock-alert.ts +74 -0
- package/app-template/src/hooks/use-theme-settings.ts +42 -0
- package/app-template/src/lib/fonts.ts +149 -0
- package/app-template/src/plugins.js +12 -2
- package/app-template/src/{middleware.ts → proxy.ts} +3 -3
- package/app-template/src/redux/middlewares/category.ts +5 -4
- package/app-template/src/redux/store.ts +21 -1
- package/app-template/src/routes/index.ts +8 -7
- package/app-template/src/settings.js +6 -3
- package/app-template/src/types/hookform-resolvers-yup.d.ts +28 -0
- package/app-template/src/types/index.ts +74 -3
- package/app-template/src/types/next-auth.d.ts +2 -2
- package/app-template/src/types/widget.ts +169 -0
- package/app-template/src/utils/__tests__/theme-page-context.test.ts +145 -0
- package/app-template/src/utils/formatDate.ts +48 -0
- package/app-template/src/utils/styles.ts +71 -0
- package/app-template/src/utils/theme-page-context.ts +309 -0
- package/app-template/src/utils/variant-validation.ts +41 -0
- package/app-template/src/views/account/address-form.tsx +8 -4
- package/app-template/src/views/account/contact-form.tsx +148 -131
- package/app-template/src/views/account/content-header.tsx +4 -3
- package/app-template/src/views/account/faq/faq-tabs.tsx +8 -2
- package/app-template/src/views/account/favorite-item.tsx +1 -1
- package/app-template/src/views/account/order.tsx +11 -9
- package/app-template/src/views/account/orders/order-cancellation-item.tsx +1 -1
- package/app-template/src/views/account/orders/order-detail-header.tsx +1 -1
- package/app-template/src/views/anonymous-tracking/order-detail/index.tsx +45 -38
- package/app-template/src/views/basket/basket-item.tsx +6 -1
- package/app-template/src/views/basket/summary.tsx +16 -0
- package/app-template/src/views/breadcrumb.tsx +2 -2
- package/app-template/src/views/category/category-banner.tsx +4 -23
- package/app-template/src/views/category/category-info.tsx +2 -1
- package/app-template/src/views/category/filters/filter-item.tsx +138 -42
- package/app-template/src/views/category/filters/index.tsx +1 -1
- package/app-template/src/views/category/layout.tsx +1 -0
- package/app-template/src/views/checkout/auth.tsx +64 -40
- package/app-template/src/views/checkout/layout/header.tsx +10 -6
- package/app-template/src/views/checkout/steps/payment/options/credit-card/index.tsx +22 -6
- package/app-template/src/views/checkout/steps/payment/options/funds-transfer.tsx +25 -5
- package/app-template/src/views/checkout/steps/payment/options/loyalty.tsx +21 -2
- package/app-template/src/views/checkout/steps/payment/options/redirection.tsx +27 -5
- package/app-template/src/views/checkout/steps/payment/options/store-credit.tsx +464 -0
- package/app-template/src/views/checkout/steps/payment/payment-option-buttons.tsx +4 -4
- package/app-template/src/views/checkout/steps/shipping/address-box.tsx +33 -20
- package/app-template/src/views/checkout/steps/shipping/addresses.tsx +2 -2
- package/app-template/src/views/checkout/summary.tsx +12 -2
- package/app-template/src/views/find-in-store/index.tsx +2 -2
- package/app-template/src/views/guest-login/index.tsx +62 -58
- package/app-template/src/views/header/action-menu.tsx +1 -1
- package/app-template/src/views/header/band.tsx +2 -2
- package/app-template/src/views/header/index.tsx +1 -1
- package/app-template/src/views/header/mini-basket.tsx +3 -3
- package/app-template/src/views/header/mobile-hamburger-button.tsx +5 -8
- package/app-template/src/views/header/mobile-menu.tsx +18 -6
- package/app-template/src/views/header/navbar.tsx +1 -1
- package/app-template/src/views/header/pwa-back-button.tsx +1 -1
- package/app-template/src/views/header/search/index.tsx +13 -3
- package/app-template/src/views/header/search/results.tsx +1 -1
- package/app-template/src/views/header/user-menu.tsx +1 -3
- package/app-template/src/views/login/index.tsx +66 -57
- package/app-template/src/views/otp-login/index.tsx +11 -6
- package/app-template/src/views/product/index.ts +1 -0
- package/app-template/src/views/product/layout.tsx +26 -6
- package/app-template/src/views/product/price-wrapper.tsx +3 -24
- package/app-template/src/views/product/product-actions.tsx +165 -0
- package/app-template/src/views/product/product-info.tsx +76 -238
- package/app-template/src/views/product/product-share.tsx +58 -0
- package/app-template/src/views/product/product-variants.tsx +26 -0
- package/app-template/src/views/product/slider.tsx +22 -1
- package/app-template/src/views/product/variant.tsx +69 -41
- package/app-template/src/views/product-pointer-banner-item.tsx +1 -1
- package/app-template/src/views/register/index.tsx +31 -46
- package/app-template/src/views/sales-contract-modal/index.tsx +17 -17
- package/app-template/src/views/share/index.tsx +9 -6
- package/app-template/src/views/widgets/home-hero-slider-content.tsx +41 -39
- package/app-template/src/widgets/flatpages/about-us/index.tsx +78 -0
- package/app-template/src/widgets/flatpages/blog-list/index.tsx +129 -0
- package/app-template/src/widgets/footer-info.tsx +1 -1
- package/app-template/src/widgets/footer-menu.tsx +7 -3
- package/app-template/src/widgets/footer-subscription/footer-subscription-form.tsx +17 -14
- package/app-template/src/widgets/footer-subscription/index.tsx +1 -1
- package/app-template/src/widgets/home-stories-eng.tsx +43 -35
- package/app-template/src/widgets/index.ts +7 -0
- package/app-template/src/widgets/schemas/about-us.json +46 -0
- package/app-template/src/widgets/schemas/blog-list.json +37 -0
- package/app-template/src/widgets/schemas/blog.json +29 -0
- package/app-template/tailwind.config.js +155 -7
- package/app-template/tsconfig.json +29 -11
- package/codemods/migrate-auth-v5/index.js +339 -0
- package/codemods/migrate-auth-v5/transform.js +86 -0
- package/codemods/migrate-segments/index.js +591 -0
- package/codemods/update-tailwind-config/index.js +30 -0
- package/codemods/update-tailwind-config/transform.js +102 -0
- package/codemods/upgrade-to-2/index.js +549 -0
- package/commands/codemod.ts +0 -1
- package/commands/plugins.ts +111 -46
- package/dist/commands/codemod.js +0 -1
- package/dist/commands/plugins.js +104 -36
- package/package.json +3 -2
- package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/page.tsx +0 -22
- package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/page.tsx +0 -20
- package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/page.tsx +0 -74
- package/app-template/src/app/[commerce]/[locale]/[currency]/list/page.tsx +0 -18
- package/app-template/src/app/[commerce]/[locale]/[currency]/page.tsx +0 -50
- package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/page.tsx +0 -84
- package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/page.tsx +0 -27
- package/app-template/src/pages/api/auth/[...nextauth].ts +0 -3
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/address/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/change-email/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/change-password/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/contact/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/coupons/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/email-verification/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/faq/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/favourite-products/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/my-quotations/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/orders/[id]/layout.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/account/orders/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/anonymous-tracking/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/auth/oauth-login/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/basket-b2b/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/category/[pk]/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/client-root.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/contact-us/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/error.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/flat-page/[pk]/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/group-product/[pk]/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/landing-page/[pk]/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/list/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/orders/checkout/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/orders/completed/[token]/layout.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/special-page/[pk]/loading.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/template.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/users/password/reset/page.tsx +0 -0
- /package/app-template/src/app/{[commerce]/[locale]/[currency] → [pz]}/xml-sitemap/route.ts +0 -0
|
@@ -62,68 +62,72 @@ const GuestLogin = () => {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
return (
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
65
|
+
<section className="w-full mt-6 lg:mt-8">
|
|
66
|
+
<form onSubmit={handleSubmit(onSubmit)}>
|
|
67
|
+
<div>
|
|
68
|
+
<Input
|
|
69
|
+
labelStyle="floating"
|
|
70
|
+
label={t('checkout.auth.form.login.email.placeholder')}
|
|
71
|
+
name="email"
|
|
72
|
+
className="h-12"
|
|
73
|
+
{...register('user_email')}
|
|
74
|
+
error={errors.user_email}
|
|
75
|
+
data-testid="guest-email"
|
|
76
|
+
required
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
80
|
+
<div className="mt-4">
|
|
81
|
+
<Input
|
|
82
|
+
labelStyle="floating"
|
|
83
|
+
label={t('checkout.auth.form.login.phone.placeholder')}
|
|
84
|
+
className="h-12"
|
|
85
|
+
name="phone_number"
|
|
86
|
+
type="tel"
|
|
87
|
+
format={user_phone_format.replace(/9/g, '#')}
|
|
88
|
+
mask="_"
|
|
89
|
+
control={control}
|
|
90
|
+
{...register('phone_number')}
|
|
91
|
+
error={errors.phone_number}
|
|
92
|
+
data-testid="guest-phone"
|
|
93
|
+
required
|
|
94
|
+
/>
|
|
95
|
+
</div>
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
>
|
|
101
|
-
{t('checkout.auth.form.login.button')}
|
|
102
|
-
</Button>
|
|
103
|
-
|
|
104
|
-
<div className="text-sm text-black-400 md:text-xs">
|
|
105
|
-
<p className="mb-4">{t('checkout.auth.form.login.agreement.label')}</p>
|
|
106
|
-
<Checkbox
|
|
107
|
-
name="sms_allowed"
|
|
108
|
-
className={clsx('underline', errors.sms_allowed ? 'mb-8' : 'mb-4')}
|
|
109
|
-
{...register('sms_allowed')}
|
|
110
|
-
error={errors.sms_allowed}
|
|
111
|
-
data-testid="guest-sms"
|
|
97
|
+
<Button
|
|
98
|
+
type="submit"
|
|
99
|
+
className="w-full h-12 uppercase text-xs font-semibold mt-[38px]"
|
|
100
|
+
data-testid="guest-submit"
|
|
112
101
|
>
|
|
113
|
-
{t('checkout.auth.form.login.
|
|
114
|
-
</
|
|
102
|
+
{t('checkout.auth.form.login.button')}
|
|
103
|
+
</Button>
|
|
115
104
|
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
105
|
+
<div className="mt-[38px] text-sm text-black-400 md:text-xs">
|
|
106
|
+
<p className="mb-4">
|
|
107
|
+
{t('checkout.auth.form.login.agreement.label')}
|
|
108
|
+
</p>
|
|
109
|
+
<Checkbox
|
|
110
|
+
name="sms_allowed"
|
|
111
|
+
className="underline"
|
|
112
|
+
{...register('sms_allowed')}
|
|
113
|
+
error={errors.sms_allowed}
|
|
114
|
+
data-testid="guest-sms"
|
|
115
|
+
>
|
|
116
|
+
{t('checkout.auth.form.login.agreement.terms_conditions')}
|
|
117
|
+
</Checkbox>
|
|
118
|
+
|
|
119
|
+
<Checkbox
|
|
120
|
+
name="confirm"
|
|
121
|
+
className="underline mt-4"
|
|
122
|
+
{...register('kvkk_confirm')}
|
|
123
|
+
error={errors.kvkk_confirm}
|
|
124
|
+
data-testid="guest-kvkk"
|
|
125
|
+
>
|
|
126
|
+
{t('checkout.auth.form.login.agreement.privacy_policy')}
|
|
127
|
+
</Checkbox>
|
|
128
|
+
</div>
|
|
129
|
+
</form>
|
|
130
|
+
</section>
|
|
127
131
|
);
|
|
128
132
|
};
|
|
129
133
|
|
|
@@ -16,13 +16,13 @@ export default function HeaderBand() {
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<div className="header-grid-area-nav bg-gray-100 h-auto p-3 sm:header-grid-area-band-m sm:h-9 sm:py-0">
|
|
19
|
-
<div className="text-center
|
|
19
|
+
<div className="text-center overflow-ellipsis line-clamp-2 h-full flex items-center justify-center">
|
|
20
20
|
<HeaderBandText />
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
24
|
<div className="header-grid-area-main-r h-full pr-4 sm:header-grid-area-band-r sm:pr-0">
|
|
25
|
-
<div className="flex items-center justify-end h-full
|
|
25
|
+
<div className="flex items-center justify-end h-full">
|
|
26
26
|
<UserMenu isMobile={false} />
|
|
27
27
|
<ActionMenu />
|
|
28
28
|
</div>
|
|
@@ -13,7 +13,7 @@ import { getMenu } from '@akinon/next/data/server';
|
|
|
13
13
|
import { Image } from '@akinon/next/components/image';
|
|
14
14
|
|
|
15
15
|
export default async function Header() {
|
|
16
|
-
const response = await getMenu();
|
|
16
|
+
const response = await getMenu({ depth: 3 });
|
|
17
17
|
const menu = menuGenerator(response);
|
|
18
18
|
|
|
19
19
|
return (
|
|
@@ -168,7 +168,7 @@ export default function MiniBasket() {
|
|
|
168
168
|
() => miniBasket?.total_quantity ?? 0,
|
|
169
169
|
[miniBasket]
|
|
170
170
|
);
|
|
171
|
-
const miniBasketList = useRef(null);
|
|
171
|
+
const miniBasketList = useRef<HTMLUListElement | null>(null);
|
|
172
172
|
|
|
173
173
|
useEffect(() => {
|
|
174
174
|
if (highlightedItem > 0) {
|
|
@@ -203,7 +203,7 @@ export default function MiniBasket() {
|
|
|
203
203
|
miniBasketOpen
|
|
204
204
|
? 'opacity-100 visible lg:invisible'
|
|
205
205
|
: 'opacity-0 invisible',
|
|
206
|
-
'fixed top-0 left-0 z-50 w-screen h-screen bg-black
|
|
206
|
+
'fixed top-0 left-0 z-50 w-screen h-screen bg-black bg-opacity-80 transition-all duration-300'
|
|
207
207
|
)}
|
|
208
208
|
onClick={() => {
|
|
209
209
|
dispatch(closeMiniBasket());
|
|
@@ -217,7 +217,7 @@ export default function MiniBasket() {
|
|
|
217
217
|
'fixed lg:absolute bottom-0 lg:-bottom-1 right-0 w-80 h-screen lg:h-auto bg-white lg:border-l lg:border-t lg:border-r-2 lg:border-b-2 lg:border-gray-500 p-5 z-50 transition-all duration-300'
|
|
218
218
|
)}
|
|
219
219
|
>
|
|
220
|
-
<header className="flex items-center gap-2 pb-3 border-b
|
|
220
|
+
<header className="flex items-center gap-2 pb-3 border-b">
|
|
221
221
|
<h3 className="text-xl font-bold">
|
|
222
222
|
{t('basket.mini_basket.my_bag')}
|
|
223
223
|
</h3>
|
|
@@ -11,24 +11,21 @@ export default function MobileHamburgerButton() {
|
|
|
11
11
|
const dispatch = useAppDispatch();
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
|
-
<div className="flex
|
|
14
|
+
<div className="flex sm:hidden">
|
|
15
15
|
<PwaBackButton />
|
|
16
16
|
<Button
|
|
17
17
|
className={clsx([
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'bg-secondary',
|
|
21
|
-
'text-white',
|
|
18
|
+
'h-auto',
|
|
19
|
+
'bg-transparent',
|
|
22
20
|
'flex',
|
|
23
21
|
'items-center',
|
|
24
22
|
'justify-center',
|
|
25
23
|
'px-0',
|
|
26
|
-
'border-none'
|
|
27
|
-
'hover:bg-secondary-hover'
|
|
24
|
+
'border-none'
|
|
28
25
|
])}
|
|
29
26
|
onClick={() => dispatch(toggleMobileMenu())}
|
|
30
27
|
>
|
|
31
|
-
<Icon name="hamburger" size={18} className="
|
|
28
|
+
<Icon name="hamburger" size={18} className="text-black" />
|
|
32
29
|
</Button>
|
|
33
30
|
</div>
|
|
34
31
|
);
|
|
@@ -58,9 +58,9 @@ export default function MobileMenu(props: MobileMenuProps) {
|
|
|
58
58
|
<>
|
|
59
59
|
<div
|
|
60
60
|
className={clsx(
|
|
61
|
-
'fixed top-0 left-0 z-30 w-screen h-screen invisible opacity-0 bg-black
|
|
61
|
+
'fixed top-0 left-0 z-30 w-screen h-screen invisible opacity-0 bg-black bg-opacity-80 transition duration-500',
|
|
62
62
|
{
|
|
63
|
-
'visible!
|
|
63
|
+
'!visible !opacity-100 scroll-lock': isMobileMenuOpen
|
|
64
64
|
}
|
|
65
65
|
)}
|
|
66
66
|
/>
|
|
@@ -70,7 +70,7 @@ export default function MobileMenu(props: MobileMenuProps) {
|
|
|
70
70
|
className={clsx(
|
|
71
71
|
'fixed top-0 left-0 z-50 flex flex-col bg-white w-72 pt-4 h-screen invisible opacity-0 transition duration-500 transform -translate-x-72',
|
|
72
72
|
{
|
|
73
|
-
'visible!
|
|
73
|
+
'!visible !opacity-100 translate-x-0': isMobileMenuOpen
|
|
74
74
|
}
|
|
75
75
|
)}
|
|
76
76
|
>
|
|
@@ -90,10 +90,22 @@ export default function MobileMenu(props: MobileMenuProps) {
|
|
|
90
90
|
onClick={(e) => {
|
|
91
91
|
if (item.children.length > 0) {
|
|
92
92
|
e.preventDefault();
|
|
93
|
+
e.stopPropagation();
|
|
93
94
|
setSelectedSubMenu(item);
|
|
95
|
+
|
|
96
|
+
window?.parent?.postMessage(
|
|
97
|
+
{
|
|
98
|
+
type: 'MENU_TOGGLE',
|
|
99
|
+
isMenuAction: true
|
|
100
|
+
},
|
|
101
|
+
'*'
|
|
102
|
+
);
|
|
94
103
|
}
|
|
95
104
|
}}
|
|
96
105
|
className="flex items-center justify-between"
|
|
106
|
+
data-is-menu-toggle={
|
|
107
|
+
item.children.length > 0 ? 'true' : undefined
|
|
108
|
+
}
|
|
97
109
|
>
|
|
98
110
|
<span>{item.label}</span>
|
|
99
111
|
<Icon name="chevron-end" size={14} />
|
|
@@ -106,15 +118,15 @@ export default function MobileMenu(props: MobileMenuProps) {
|
|
|
106
118
|
className={clsx(
|
|
107
119
|
'absolute top-0 left-0 right-0 px-8 bg-white invisible opacity-0 transition duration-500 transform translate-x-full',
|
|
108
120
|
{
|
|
109
|
-
'visible!
|
|
121
|
+
'!visible !opacity-100 !translate-x-0': selectedSubMenu
|
|
110
122
|
}
|
|
111
123
|
)}
|
|
112
124
|
>
|
|
113
|
-
<header className="flex items-center justify-between border-b
|
|
125
|
+
<header className="flex items-center justify-between border-b h-[61px] py-4 mb-4">
|
|
114
126
|
<Button
|
|
115
127
|
appearance="ghost"
|
|
116
128
|
onClick={() => setSelectedSubMenu(null)}
|
|
117
|
-
className="underline text-xs font-semibold flex items-center gap-2 p-0
|
|
129
|
+
className="underline text-xs font-semibold flex items-center gap-2 !p-0"
|
|
118
130
|
>
|
|
119
131
|
<Icon name="chevron-start" size={12} className="shrink-0" />
|
|
120
132
|
{t('common.mobile_menu.back')}
|
|
@@ -34,7 +34,7 @@ export const PwaBackButton = () => {
|
|
|
34
34
|
return (
|
|
35
35
|
<div className="relative z-10 md:top-0 md:left-0 md:fixed">
|
|
36
36
|
<button
|
|
37
|
-
className="bg-secondary-600 text-white flex items-center justify-center shrink-0 w-12 h-12 md:w-10 md:h-9 active:bg-secondary-700"
|
|
37
|
+
className="bg-secondary-600 text-white flex items-center justify-center flex-shrink-0 w-12 h-12 md:w-10 md:h-9 active:bg-secondary-700"
|
|
38
38
|
onClick={() => router.back()}
|
|
39
39
|
>
|
|
40
40
|
<svg
|
|
@@ -9,6 +9,7 @@ import { Icon } from '@theme/components';
|
|
|
9
9
|
import Results from './results';
|
|
10
10
|
import { ROUTES } from '@theme/routes';
|
|
11
11
|
import { useLocalization, useRouter } from '@akinon/next/hooks';
|
|
12
|
+
import PluginModule, { Component } from '@akinon/next/components/plugin-module';
|
|
12
13
|
|
|
13
14
|
export default function Search() {
|
|
14
15
|
const { t } = useLocalization();
|
|
@@ -46,7 +47,7 @@ export default function Search() {
|
|
|
46
47
|
<div
|
|
47
48
|
className={clsx(
|
|
48
49
|
// 177px is the height of the header
|
|
49
|
-
'absolute bg-black
|
|
50
|
+
'absolute bg-black opacity-75 w-screen h-screen transition duration-500 left-0 bottom-0 translate-y-full z-30',
|
|
50
51
|
isSearchOpen && searchText
|
|
51
52
|
? 'visible opacity-100'
|
|
52
53
|
: 'invisible opacity-0'
|
|
@@ -60,7 +61,7 @@ export default function Search() {
|
|
|
60
61
|
isSearchOpen ? 'visible opacity-100' : 'invisible opacity-0'
|
|
61
62
|
)}
|
|
62
63
|
>
|
|
63
|
-
<div className="max-w-
|
|
64
|
+
<div className="max-w-screen-2xl mx-auto flex flex-col gap-12">
|
|
64
65
|
<div className="border-b border-gray-400 flex flex-col py-1.5 gap-2 self-center items-center md:flex-row">
|
|
65
66
|
<span className="text-xl lg:text-2xl">
|
|
66
67
|
{t('common.search.results_for')}
|
|
@@ -74,10 +75,19 @@ export default function Search() {
|
|
|
74
75
|
router.push(`${ROUTES.LIST}/?search_text=${searchText}`);
|
|
75
76
|
}
|
|
76
77
|
}}
|
|
77
|
-
className="border-0 text-2xl outline-
|
|
78
|
+
className="border-0 text-2xl outline-none text-secondary placeholder:text-xl placeholder:lg:text-2xl"
|
|
78
79
|
placeholder={t('common.search.placeholder')}
|
|
79
80
|
ref={inputRef}
|
|
80
81
|
/>
|
|
82
|
+
|
|
83
|
+
<PluginModule
|
|
84
|
+
component={Component.HeaderImageSearchFeature}
|
|
85
|
+
props={{
|
|
86
|
+
enableTextSearch: true,
|
|
87
|
+
isEnabled: true
|
|
88
|
+
}}
|
|
89
|
+
/>
|
|
90
|
+
|
|
81
91
|
<Icon
|
|
82
92
|
name="close"
|
|
83
93
|
size={14}
|
|
@@ -80,7 +80,7 @@ export default function Results(props: ResultsProps) {
|
|
|
80
80
|
<div className="grid grid-cols-2 sm:grid-cols-4 gap-8">
|
|
81
81
|
{products.map((product, index) => (
|
|
82
82
|
<Link href={product?.url} key={index} className="flex flex-col">
|
|
83
|
-
<div className="relative aspect-315/448">
|
|
83
|
+
<div className="relative aspect-[315/448]">
|
|
84
84
|
{product.extra.image ? (
|
|
85
85
|
<Image
|
|
86
86
|
src={product.extra.image}
|
|
@@ -36,9 +36,7 @@ export const UserMenu = (props: UserMenuProps) => {
|
|
|
36
36
|
<ul
|
|
37
37
|
className={clsx(
|
|
38
38
|
'items-center divide-x divide-black',
|
|
39
|
-
isMobile
|
|
40
|
-
? 'flex pt-2 text-sm pb-6 border-b border-gray-200 mx-8'
|
|
41
|
-
: 'hidden sm:flex'
|
|
39
|
+
isMobile ? 'flex pt-2 text-sm pb-6 border-b mx-8' : 'hidden sm:flex'
|
|
42
40
|
)}
|
|
43
41
|
id="user-menu"
|
|
44
42
|
>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { signIn
|
|
4
|
-
import { useSearchParams } from 'next/navigation';
|
|
5
|
-
import { useState } from 'react';
|
|
3
|
+
import { signIn } from 'next-auth/react';
|
|
4
|
+
import { usePathname, useSearchParams } from 'next/navigation';
|
|
5
|
+
import { useEffect, useState } from 'react';
|
|
6
6
|
import { ROUTES } from '@theme/routes';
|
|
7
|
-
import { LoginFormType } from '@theme/types';
|
|
7
|
+
import { LoginFormType, FormType, PzSignInOptions } from '@theme/types';
|
|
8
8
|
import { Button, Input, Link } from '@theme/components';
|
|
9
9
|
import { SubmitHandler, useForm } from 'react-hook-form';
|
|
10
10
|
import * as yup from 'yup';
|
|
@@ -15,6 +15,7 @@ import { useCaptcha, useLocalization } from '@akinon/next/hooks';
|
|
|
15
15
|
import { AuthError } from '@akinon/next/types';
|
|
16
16
|
import { Image } from '@akinon/next/components/image';
|
|
17
17
|
import PluginModule, { Component } from '@akinon/next/components/plugin-module';
|
|
18
|
+
import { twMerge } from 'tailwind-merge';
|
|
18
19
|
|
|
19
20
|
const oauthProviders: Array<{
|
|
20
21
|
key: string;
|
|
@@ -24,18 +25,15 @@ const oauthProviders: Array<{
|
|
|
24
25
|
}> = [
|
|
25
26
|
{
|
|
26
27
|
key: 'google',
|
|
27
|
-
label: 'Google'
|
|
28
|
-
image: '/google.svg'
|
|
28
|
+
label: 'Google'
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
key: 'facebook',
|
|
32
|
-
label: 'Facebook'
|
|
33
|
-
image: '/facebook.svg'
|
|
32
|
+
label: 'Facebook'
|
|
34
33
|
},
|
|
35
34
|
{
|
|
36
35
|
key: 'apple',
|
|
37
|
-
label: 'Apple'
|
|
38
|
-
image: '/apple.svg'
|
|
36
|
+
label: 'Apple'
|
|
39
37
|
}
|
|
40
38
|
];
|
|
41
39
|
|
|
@@ -48,7 +46,11 @@ const loginFormSchema = (t) =>
|
|
|
48
46
|
password: yup.string().required(t('auth.login.form.error.required'))
|
|
49
47
|
});
|
|
50
48
|
|
|
51
|
-
export const Login = (
|
|
49
|
+
export const Login = ({
|
|
50
|
+
setActiveTab
|
|
51
|
+
}: {
|
|
52
|
+
setActiveTab?: (tab: string) => void;
|
|
53
|
+
}) => {
|
|
52
54
|
const { t, locale } = useLocalization();
|
|
53
55
|
|
|
54
56
|
const { refetch: refetchBasketData } = useGetBasketQuery();
|
|
@@ -62,8 +64,10 @@ export const Login = () => {
|
|
|
62
64
|
resolver: yupResolver(loginFormSchema(t))
|
|
63
65
|
});
|
|
64
66
|
|
|
67
|
+
const pathname = usePathname();
|
|
65
68
|
const searchParams = useSearchParams();
|
|
66
69
|
const [formError, setFormError] = useState(null);
|
|
70
|
+
const [isCheckout, setIsCheckout] = useState<boolean>(false);
|
|
67
71
|
|
|
68
72
|
const {
|
|
69
73
|
CaptchaView,
|
|
@@ -79,11 +83,12 @@ export const Login = () => {
|
|
|
79
83
|
redirect: false,
|
|
80
84
|
callbackUrl: searchParams.get('callbackUrl') ?? '/',
|
|
81
85
|
captchaValidated,
|
|
82
|
-
...data
|
|
83
|
-
|
|
86
|
+
...data,
|
|
87
|
+
formType: FormType.login
|
|
88
|
+
} as PzSignInOptions & { redirect: false });
|
|
84
89
|
|
|
85
90
|
if (loginResponse.error) {
|
|
86
|
-
const errors: AuthError[] = JSON.parse(loginResponse.
|
|
91
|
+
const errors: AuthError[] = JSON.parse(loginResponse.code);
|
|
87
92
|
|
|
88
93
|
if (errors.find((error) => error.type === 'captcha')) {
|
|
89
94
|
if (await validateCaptcha()) {
|
|
@@ -109,25 +114,25 @@ export const Login = () => {
|
|
|
109
114
|
try {
|
|
110
115
|
parsedValue = JSON.parse(item.value);
|
|
111
116
|
} catch {
|
|
112
|
-
parsedValue = [item.value];
|
|
117
|
+
parsedValue = [item.value];
|
|
113
118
|
}
|
|
114
119
|
} else {
|
|
115
|
-
parsedValue = item.value;
|
|
120
|
+
parsedValue = item.value;
|
|
116
121
|
}
|
|
117
122
|
|
|
118
123
|
if (Array.isArray(parsedValue)) {
|
|
119
124
|
setError(item.name as keyof LoginFormType, {
|
|
120
125
|
type: 'custom',
|
|
121
|
-
message: parsedValue.join(', ')
|
|
126
|
+
message: parsedValue.join(', ')
|
|
122
127
|
});
|
|
123
128
|
} else {
|
|
124
129
|
Object.keys(parsedValue).forEach((key) => {
|
|
125
130
|
const fieldName = key as keyof LoginFormType;
|
|
126
131
|
const errorMessages = parsedValue[key] as string[];
|
|
127
|
-
|
|
132
|
+
|
|
128
133
|
setError(fieldName, {
|
|
129
134
|
type: 'custom',
|
|
130
|
-
message: errorMessages.join(', ')
|
|
135
|
+
message: errorMessages.join(', ')
|
|
131
136
|
});
|
|
132
137
|
});
|
|
133
138
|
}
|
|
@@ -146,29 +151,27 @@ export const Login = () => {
|
|
|
146
151
|
}
|
|
147
152
|
};
|
|
148
153
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
>
|
|
155
|
-
<h2 className="mb-3 text-lg text-start text-black-800 font-light md:mb-9 md:text-2xl">
|
|
156
|
-
{t('auth.login.title')}
|
|
157
|
-
</h2>
|
|
154
|
+
useEffect(() => {
|
|
155
|
+
if (pathname.includes('/orders/checkout')) {
|
|
156
|
+
setIsCheckout(true);
|
|
157
|
+
}
|
|
158
|
+
}, [pathname]);
|
|
158
159
|
|
|
160
|
+
return (
|
|
161
|
+
<section className="w-full mt-6 lg:mt-8">
|
|
159
162
|
<form
|
|
160
163
|
action="/api/auth/signin/credentials"
|
|
161
164
|
method="post"
|
|
162
165
|
onSubmit={handleSubmit(onSubmit)}
|
|
163
166
|
>
|
|
164
|
-
<input type="hidden" value=
|
|
167
|
+
<input type="hidden" value={FormType.login} {...register('formType')} />
|
|
165
168
|
<input type="hidden" value={locale} {...register('locale')} />
|
|
166
169
|
|
|
167
|
-
<div
|
|
170
|
+
<div>
|
|
168
171
|
<Input
|
|
169
172
|
labelStyle="floating"
|
|
170
173
|
label={t('auth.login.form.email.placeholder')}
|
|
171
|
-
className="h-
|
|
174
|
+
className="h-12"
|
|
172
175
|
{...register('email')}
|
|
173
176
|
error={errors.email}
|
|
174
177
|
data-testid="login-email"
|
|
@@ -176,11 +179,11 @@ export const Login = () => {
|
|
|
176
179
|
/>
|
|
177
180
|
</div>
|
|
178
181
|
|
|
179
|
-
<div className=
|
|
182
|
+
<div className="mt-4">
|
|
180
183
|
<Input
|
|
181
184
|
labelStyle="floating"
|
|
182
185
|
label={t('auth.login.form.password.placeholder')}
|
|
183
|
-
className="h-
|
|
186
|
+
className="h-12"
|
|
184
187
|
type="password"
|
|
185
188
|
{...register('password')}
|
|
186
189
|
error={errors.password}
|
|
@@ -191,7 +194,7 @@ export const Login = () => {
|
|
|
191
194
|
|
|
192
195
|
<Link
|
|
193
196
|
href={ROUTES.FORGOT_PASSWORD}
|
|
194
|
-
className="block text-sm underline
|
|
197
|
+
className="block text-black-750/75 text-sm underline mt-4"
|
|
195
198
|
data-testid="login-forgot-password"
|
|
196
199
|
>
|
|
197
200
|
{t('auth.login.form.forgot_password')}
|
|
@@ -199,7 +202,7 @@ export const Login = () => {
|
|
|
199
202
|
|
|
200
203
|
{formError && (
|
|
201
204
|
<p
|
|
202
|
-
className="text-error text-xs my-
|
|
205
|
+
className="text-error text-xs my-2"
|
|
203
206
|
data-testid="login-error-field"
|
|
204
207
|
>
|
|
205
208
|
{formError}
|
|
@@ -207,11 +210,11 @@ export const Login = () => {
|
|
|
207
210
|
)}
|
|
208
211
|
|
|
209
212
|
<div className="flex justify-center">
|
|
210
|
-
<CaptchaView className="
|
|
213
|
+
<CaptchaView className="mt-8" data-testid="login-captcha" />
|
|
211
214
|
</div>
|
|
212
215
|
|
|
213
216
|
<Button
|
|
214
|
-
className="w-full h-12
|
|
217
|
+
className="w-full h-12 text-sm font-normal mt-6 lg:mt-8"
|
|
215
218
|
type="submit"
|
|
216
219
|
disabled={isCaptchaVisible && !captchaValidated}
|
|
217
220
|
data-testid="login-submit"
|
|
@@ -219,22 +222,23 @@ export const Login = () => {
|
|
|
219
222
|
{t('auth.login.form.submit')}
|
|
220
223
|
</Button>
|
|
221
224
|
|
|
222
|
-
<p
|
|
223
|
-
{
|
|
225
|
+
<p
|
|
226
|
+
className={clsx(
|
|
227
|
+
twMerge(
|
|
228
|
+
'relative block text-center mt-3 lg:mt-8 text-black-750 text-sm',
|
|
229
|
+
'before:absolute before:left-0 before:top-1/2 before:w-full before:h-px before:bg-[#d2d2d2] before:-z-10'
|
|
230
|
+
)
|
|
231
|
+
)}
|
|
232
|
+
>
|
|
233
|
+
<span className="bg-white px-4">{t('auth.login.form.or')}</span>
|
|
224
234
|
</p>
|
|
225
|
-
|
|
226
|
-
<div className="social-login">
|
|
227
|
-
<p className="mb-3 text-lg text-start font-light md:mb-9 md:text-2xl">
|
|
228
|
-
{t('auth.login.form.sign_in_with')}
|
|
229
|
-
</p>
|
|
230
|
-
</div>
|
|
231
235
|
</form>
|
|
232
236
|
|
|
233
|
-
<div className="grid
|
|
237
|
+
<div className="grid gap-4 mt-2">
|
|
234
238
|
{oauthProviders.map((provider) => (
|
|
235
239
|
<Button
|
|
236
240
|
key={provider.key}
|
|
237
|
-
className="
|
|
241
|
+
className="text-base text-black-750 h-auto py-4 border border-gray-650 leading-[0.94]"
|
|
238
242
|
type="submit"
|
|
239
243
|
appearance="outlined"
|
|
240
244
|
disabled={isCaptchaVisible && !captchaValidated}
|
|
@@ -242,19 +246,24 @@ export const Login = () => {
|
|
|
242
246
|
location.href = `/${provider.key}/login/`;
|
|
243
247
|
}}
|
|
244
248
|
>
|
|
245
|
-
{
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
alt={provider.label}
|
|
249
|
-
width={provider.label === 'Facebook' ? 10 : 18}
|
|
250
|
-
height={18}
|
|
251
|
-
className="shrink-0"
|
|
252
|
-
/>
|
|
249
|
+
{t('auth.login.form.continue_with_provider').replace(
|
|
250
|
+
'{provider}',
|
|
251
|
+
provider.localeKey ? t(provider.localeKey) : provider.label
|
|
253
252
|
)}
|
|
254
|
-
|
|
255
|
-
{provider.localeKey ? t(provider.localeKey) : provider.label}
|
|
256
253
|
</Button>
|
|
257
254
|
))}
|
|
255
|
+
{isCheckout && (
|
|
256
|
+
<Button
|
|
257
|
+
className="text-base text-black-750 h-auto py-4 border border-gray-650 leading-[0.94]"
|
|
258
|
+
type="submit"
|
|
259
|
+
appearance="outlined"
|
|
260
|
+
onClick={() => {
|
|
261
|
+
setActiveTab?.('guest');
|
|
262
|
+
}}
|
|
263
|
+
>
|
|
264
|
+
{t('checkout.auth.continue_as_guest_checkout')}
|
|
265
|
+
</Button>
|
|
266
|
+
)}
|
|
258
267
|
<PluginModule
|
|
259
268
|
component={Component.AkifastQuickLoginButton}
|
|
260
269
|
props={{
|