@akinon/projectzero 1.112.0-snapshot-ZERO-3859-20251125183557 → 1.112.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/app-template/CHANGELOG.md +33 -0
- package/app-template/package.json +25 -25
- package/app-template/public/locales/en/common.json +2 -0
- package/app-template/public/locales/en/product.json +44 -5
- package/app-template/public/locales/tr/common.json +2 -0
- package/app-template/public/locales/tr/product.json +51 -10
- package/app-template/src/views/basket/summary.tsx +16 -0
- package/app-template/src/views/product/product-info.tsx +2 -1
- package/app-template/src/views/product/slider.tsx +10 -0
- package/commands/plugins.ts +0 -4
- package/dist/commands/plugins.js +0 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# projectzeronext
|
|
2
2
|
|
|
3
|
+
## 1.112.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 888fdec: ZERO-3792: Virtual Try On new features are implemented and also basket support implemented.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [888fdec]
|
|
12
|
+
- @akinon/pz-virtual-try-on@1.112.0
|
|
13
|
+
- @akinon/next@1.112.0
|
|
14
|
+
- @akinon/pz-akifast@1.112.0
|
|
15
|
+
- @akinon/pz-apple-pay@1.112.0
|
|
16
|
+
- @akinon/pz-b2b@1.112.0
|
|
17
|
+
- @akinon/pz-basket-gift-pack@1.112.0
|
|
18
|
+
- @akinon/pz-bkm@1.112.0
|
|
19
|
+
- @akinon/pz-checkout-gift-pack@1.112.0
|
|
20
|
+
- @akinon/pz-click-collect@1.112.0
|
|
21
|
+
- @akinon/pz-credit-payment@1.112.0
|
|
22
|
+
- @akinon/pz-cybersource-uc@1.112.0
|
|
23
|
+
- @akinon/pz-flow-payment@1.112.0
|
|
24
|
+
- @akinon/pz-gpay@1.112.0
|
|
25
|
+
- @akinon/pz-hepsipay@1.112.0
|
|
26
|
+
- @akinon/pz-masterpass@1.112.0
|
|
27
|
+
- @akinon/pz-masterpass-rest@1.112.0
|
|
28
|
+
- @akinon/pz-multi-basket@1.112.0
|
|
29
|
+
- @akinon/pz-one-click-checkout@1.112.0
|
|
30
|
+
- @akinon/pz-otp@1.112.0
|
|
31
|
+
- @akinon/pz-pay-on-delivery@1.112.0
|
|
32
|
+
- @akinon/pz-saved-card@1.112.0
|
|
33
|
+
- @akinon/pz-tabby-extension@1.112.0
|
|
34
|
+
- @akinon/pz-tamara-extension@1.112.0
|
|
35
|
+
|
|
3
36
|
## 1.111.0
|
|
4
37
|
|
|
5
38
|
### Minor Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projectzeronext",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.112.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -24,29 +24,29 @@
|
|
|
24
24
|
"test:middleware": "jest middleware-matcher.test.ts --bail"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@akinon/next": "1.
|
|
28
|
-
"@akinon/pz-akifast": "1.
|
|
29
|
-
"@akinon/pz-apple-pay": "1.
|
|
30
|
-
"@akinon/pz-b2b": "1.
|
|
31
|
-
"@akinon/pz-basket-gift-pack": "1.
|
|
32
|
-
"@akinon/pz-bkm": "1.
|
|
33
|
-
"@akinon/pz-checkout-gift-pack": "1.
|
|
34
|
-
"@akinon/pz-click-collect": "1.
|
|
35
|
-
"@akinon/pz-credit-payment": "1.
|
|
36
|
-
"@akinon/pz-cybersource-uc": "1.
|
|
37
|
-
"@akinon/pz-flow-payment": "1.
|
|
38
|
-
"@akinon/pz-gpay": "1.
|
|
39
|
-
"@akinon/pz-hepsipay": "1.
|
|
40
|
-
"@akinon/pz-masterpass": "1.
|
|
41
|
-
"@akinon/pz-masterpass-rest": "1.
|
|
42
|
-
"@akinon/pz-multi-basket": "1.
|
|
43
|
-
"@akinon/pz-one-click-checkout": "1.
|
|
44
|
-
"@akinon/pz-otp": "1.
|
|
45
|
-
"@akinon/pz-pay-on-delivery": "1.
|
|
46
|
-
"@akinon/pz-saved-card": "1.
|
|
47
|
-
"@akinon/pz-tabby-extension": "1.
|
|
48
|
-
"@akinon/pz-tamara-extension": "1.
|
|
49
|
-
"@akinon/pz-virtual-try-on": "1.
|
|
27
|
+
"@akinon/next": "1.112.0",
|
|
28
|
+
"@akinon/pz-akifast": "1.112.0",
|
|
29
|
+
"@akinon/pz-apple-pay": "1.112.0",
|
|
30
|
+
"@akinon/pz-b2b": "1.112.0",
|
|
31
|
+
"@akinon/pz-basket-gift-pack": "1.112.0",
|
|
32
|
+
"@akinon/pz-bkm": "1.112.0",
|
|
33
|
+
"@akinon/pz-checkout-gift-pack": "1.112.0",
|
|
34
|
+
"@akinon/pz-click-collect": "1.112.0",
|
|
35
|
+
"@akinon/pz-credit-payment": "1.112.0",
|
|
36
|
+
"@akinon/pz-cybersource-uc": "1.112.0",
|
|
37
|
+
"@akinon/pz-flow-payment": "1.112.0",
|
|
38
|
+
"@akinon/pz-gpay": "1.112.0",
|
|
39
|
+
"@akinon/pz-hepsipay": "1.112.0",
|
|
40
|
+
"@akinon/pz-masterpass": "1.112.0",
|
|
41
|
+
"@akinon/pz-masterpass-rest": "1.112.0",
|
|
42
|
+
"@akinon/pz-multi-basket": "1.112.0",
|
|
43
|
+
"@akinon/pz-one-click-checkout": "1.112.0",
|
|
44
|
+
"@akinon/pz-otp": "1.112.0",
|
|
45
|
+
"@akinon/pz-pay-on-delivery": "1.112.0",
|
|
46
|
+
"@akinon/pz-saved-card": "1.112.0",
|
|
47
|
+
"@akinon/pz-tabby-extension": "1.112.0",
|
|
48
|
+
"@akinon/pz-tamara-extension": "1.112.0",
|
|
49
|
+
"@akinon/pz-virtual-try-on": "1.112.0",
|
|
50
50
|
"@hookform/resolvers": "2.9.0",
|
|
51
51
|
"@next/third-parties": "14.1.0",
|
|
52
52
|
"@react-google-maps/api": "2.17.1",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"yup": "0.32.11"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@akinon/eslint-plugin-projectzero": "1.
|
|
72
|
+
"@akinon/eslint-plugin-projectzero": "1.112.0",
|
|
73
73
|
"@semantic-release/changelog": "6.0.2",
|
|
74
74
|
"@semantic-release/exec": "6.0.3",
|
|
75
75
|
"@semantic-release/git": "10.0.1",
|
|
@@ -38,24 +38,63 @@
|
|
|
38
38
|
},
|
|
39
39
|
"virtual_try_on": {
|
|
40
40
|
"title": "Virtual Try On",
|
|
41
|
-
"
|
|
41
|
+
"title_result": "Virtual Try-On Result",
|
|
42
|
+
"button_text": "Enter Virtual Cabin",
|
|
42
43
|
"loading": "Loading...",
|
|
43
44
|
"upload_title": "Upload Your Photo",
|
|
44
45
|
"upload_prompt": "Click to upload image",
|
|
45
46
|
"upload_requirements": "Max 1MB, JPEG/PNG/WebP only",
|
|
46
47
|
"instructions": "Upload a clear photo of yourself for the best virtual try-on experience. Make sure you are facing the camera directly.",
|
|
47
48
|
"try_on": "Try On",
|
|
49
|
+
"virtual_cabin": "Virtual Cabin",
|
|
50
|
+
"upload_info": "Your photo is used solely for generating the virtual try-on and is not stored permanently.",
|
|
51
|
+
"edit_photo": "Edit Photo",
|
|
48
52
|
"processing": "Processing...",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
53
|
+
"processing_title": "Almost ready!",
|
|
54
|
+
"processing_message": "We are processing your photo to provide the best result. Please wait.",
|
|
55
|
+
"result_title": "Virtual Cabin Result",
|
|
51
56
|
"result_placeholder": "Upload your photo to see the result",
|
|
52
57
|
"error": "Virtual try-on failed. Please try again.",
|
|
58
|
+
"error_message": "Please try again with a photo where the model is clearly visible and has a simpler background.",
|
|
53
59
|
"feedback_prompt": "How did the virtual try-on work for you?",
|
|
60
|
+
"feedback_like": "I like it",
|
|
61
|
+
"feedback_dislike": "I don't like it",
|
|
54
62
|
"reset_crop": "Reset Crop",
|
|
63
|
+
"retry": "Retry",
|
|
64
|
+
"retry_upload": "Upload Again",
|
|
65
|
+
"click_to_view_details": "Click on the image to view details.",
|
|
66
|
+
"back_to_basket": "Back to Cart",
|
|
67
|
+
"products_listed_count": "{{count}} products from your cart that are suitable for Virtual Cabin are listed.",
|
|
68
|
+
"select_up_to_3": "Please select up to 3 products to continue.",
|
|
69
|
+
"select_products": "Select Products",
|
|
70
|
+
"no_suitable_products": "No suitable products found in your cart for virtual try-on.",
|
|
71
|
+
"rule_1": "Background should be plain and well-lit.",
|
|
72
|
+
"rule_2": "Choose a bright, clear, and high-quality image.",
|
|
73
|
+
"rule_3": "Details on your body should be clearly distinguishable.",
|
|
74
|
+
"rule_4": "Look directly at the camera and show your face from the front.",
|
|
75
|
+
"rule_5": "Crop the photo according to the product you want to try on.",
|
|
76
|
+
"rule_6": "You can only upload images in JPEG or PNG format.",
|
|
77
|
+
"photo_preview": "Photo Preview",
|
|
78
|
+
"error_title": "An Error Occurred",
|
|
55
79
|
"legal": {
|
|
56
80
|
"title": "Terms & Conditions",
|
|
57
81
|
"text": "By using this virtual try-on feature, you agree to our terms and conditions. Your image will be processed securely and not stored permanently. We use your photo only to generate the virtual try-on result.",
|
|
58
|
-
"accept": "
|
|
59
|
-
|
|
82
|
+
"accept": "Accept",
|
|
83
|
+
"error": "Please accept the terms and conditions."
|
|
84
|
+
},
|
|
85
|
+
"multiple_results_title": "Virtual Try-On Results",
|
|
86
|
+
"multiple_results_subtitle": "Try-on completed for {{count}} products",
|
|
87
|
+
"error_incompatible": "Image Not Compatible",
|
|
88
|
+
"error_auto_reported": "Error automatically reported",
|
|
89
|
+
"feedback_question": "How was the result?",
|
|
90
|
+
"feedback_success": "Success",
|
|
91
|
+
"feedback_failed": "Failed",
|
|
92
|
+
"feedback_thank_you": "Thank you for your feedback!",
|
|
93
|
+
"recreate_button": "Recreate",
|
|
94
|
+
"close_button": "Close",
|
|
95
|
+
"change_photo": "Change",
|
|
96
|
+
"starting": "Starting...",
|
|
97
|
+
"will_start": "will start virtual try-on for",
|
|
98
|
+
"products_count": "products"
|
|
60
99
|
}
|
|
61
100
|
}
|
|
@@ -37,25 +37,66 @@
|
|
|
37
37
|
"close_button": "KAPAT"
|
|
38
38
|
},
|
|
39
39
|
"virtual_try_on": {
|
|
40
|
-
"title": "
|
|
41
|
-
"
|
|
40
|
+
"title": "Üstünde Dene",
|
|
41
|
+
"title_result": "Üstünde Dene Sonucu",
|
|
42
|
+
"button_text": "Sanal Deneme Kabinine Gir",
|
|
42
43
|
"loading": "Yükleniyor...",
|
|
43
44
|
"upload_title": "Fotoğrafınızı Yükleyin",
|
|
44
|
-
"upload_prompt": "
|
|
45
|
-
"upload_requirements": "
|
|
45
|
+
"upload_prompt": "Bir dosya seçin veya buraya sürükleyip bırakın.",
|
|
46
|
+
"upload_requirements": "JPEG/PNG/WebP formatında, maksimum 1MB",
|
|
46
47
|
"instructions": "En iyi sanal deneme deneyimi için net bir fotoğrafınızı yükleyin. Kameraya doğrudan baktığınızdan emin olun.",
|
|
47
48
|
"try_on": "Dene",
|
|
49
|
+
"edit_photo": "Fotoğrafı Düzenle",
|
|
50
|
+
"upload_info": "Uygulamaya uygun fotograf yüklemeniz çok önemlidir.",
|
|
48
51
|
"processing": "İşleniyor...",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
52
|
+
"processing_title": "Birazdan hazır!",
|
|
53
|
+
"processing_message": "En iyi sonucu sunabilmek için fotoğrafınızı işliyoruz. Lütfen bekleyiniz.",
|
|
54
|
+
"result_title": "Sanal Kabin Sonuç",
|
|
55
|
+
"virtual_cabin": "Sanal Kabin",
|
|
51
56
|
"result_placeholder": "Sonucu görmek için fotoğrafınızı yükleyin",
|
|
52
57
|
"error": "Sanal deneme başarısız oldu. Lütfen tekrar deneyin.",
|
|
58
|
+
"error_message": "Modelin net bir şekilde göründüğü daha sade bir arka plana sahip görselle tekrar deneyin.",
|
|
53
59
|
"feedback_prompt": "Sanal deneme sizin için nasıldı?",
|
|
60
|
+
"feedback_like": "Beğendim",
|
|
61
|
+
"feedback_dislike": "Beğenmedim",
|
|
54
62
|
"reset_crop": "Kırpma Sıfırla",
|
|
63
|
+
"retry": "Yeniden Dene",
|
|
64
|
+
"retry_upload": "Tekrar Yükle",
|
|
65
|
+
"click_to_view_details": "Detayları görüntülemek için görsele tıklayın.",
|
|
66
|
+
"back_to_basket": "Sepete Dön",
|
|
67
|
+
"products_listed_count": "Sepetinizdeki ürünlerden Sanal Kabin'de denemeye uygun {{count}} tanesi listelenmiştir.",
|
|
68
|
+
"select_up_to_3": "Devam etmek için en fazla 3 ürünü seçiniz.",
|
|
69
|
+
"select_products": "Ürünleri Seç",
|
|
70
|
+
"no_suitable_products": "Sepetinizde sanal deneme kabini için uygun ürün bulunmuyor.",
|
|
71
|
+
"rule_1": "Arka plan sade ve iyi aydınlatılmış olmalıdır.",
|
|
72
|
+
"rule_2": "Aydınlık, net ve yüksek kaliteli bir görsel seçin.",
|
|
73
|
+
"rule_3": "Üzerinizdeki detaylar net bir şekilde ayırt edilebilir olmalıdır.",
|
|
74
|
+
"rule_4": "Doğrudan kameraya bakın ve yüzünüzü tam karşıdan gösterin.",
|
|
75
|
+
"rule_5": "Fotoğrafı denemek istediğiniz ürüne göre kırpın.",
|
|
76
|
+
"rule_6": "Yalnızca JPEG veya PNG formatındaki görselleri yükleyebilirsiniz.",
|
|
77
|
+
"photo_preview": "Fotoğraf Önizleme",
|
|
78
|
+
"error_title": "Bir Hata Oluştu",
|
|
79
|
+
"example_iamge": "Örnek Görsel",
|
|
80
|
+
"cabin": "Sanal Deneme Kabini",
|
|
55
81
|
"legal": {
|
|
56
|
-
"title": "
|
|
57
|
-
"text": "
|
|
58
|
-
"accept": "
|
|
59
|
-
|
|
82
|
+
"title": "Açık Rıza Metni",
|
|
83
|
+
"text": "Açık rıza metnini okudum ve onaylıyorum.",
|
|
84
|
+
"accept": "Onayla",
|
|
85
|
+
"error": "Lütfen açık rıza metnini onaylayın."
|
|
86
|
+
},
|
|
87
|
+
"multiple_results_title": "Sanal Deneme Sonuçları",
|
|
88
|
+
"multiple_results_subtitle": "{{count}} ürün için deneme tamamlandı",
|
|
89
|
+
"error_incompatible": "Görüntü Uyumlu Değil",
|
|
90
|
+
"error_auto_reported": "Hata otomatik olarak bildirildi",
|
|
91
|
+
"feedback_question": "Sonuç nasıldı?",
|
|
92
|
+
"feedback_success": "Başarılı",
|
|
93
|
+
"feedback_failed": "Başarısız",
|
|
94
|
+
"feedback_thank_you": "Geri bildiriminiz alındı, teşekkürler!",
|
|
95
|
+
"recreate_button": "Yeniden Oluştur",
|
|
96
|
+
"close_button": "Kapat",
|
|
97
|
+
"change_photo": "Değiştir",
|
|
98
|
+
"starting": "Başlatılıyor...",
|
|
99
|
+
"will_start": "için sanal deneme başlatılacak",
|
|
100
|
+
"products_count": "ürün"
|
|
60
101
|
}
|
|
61
102
|
}
|
|
@@ -223,6 +223,22 @@ export const Summary = (props: Props) => {
|
|
|
223
223
|
component={Component.OneClickCheckoutButtons}
|
|
224
224
|
props={checkoutProviderProps}
|
|
225
225
|
/>
|
|
226
|
+
|
|
227
|
+
<div className="mt-4">
|
|
228
|
+
<PluginModule
|
|
229
|
+
component={Component.BasketVirtualTryOn}
|
|
230
|
+
props={{
|
|
231
|
+
basketItems: basket.basketitem_set.map((item) => ({
|
|
232
|
+
pk: item.product.pk,
|
|
233
|
+
sku: item.product.sku,
|
|
234
|
+
name: item.product.name,
|
|
235
|
+
productimage_set: item.product.productimage_set,
|
|
236
|
+
attributes: item.product.attributes,
|
|
237
|
+
category: (item.product as any).category
|
|
238
|
+
}))
|
|
239
|
+
}}
|
|
240
|
+
/>
|
|
241
|
+
</div>
|
|
226
242
|
</div>
|
|
227
243
|
</div>
|
|
228
244
|
);
|
|
@@ -7,6 +7,7 @@ import { Product } from '@akinon/next/types';
|
|
|
7
7
|
import { Image } from '@akinon/next/components/image';
|
|
8
8
|
import useFavButton from '../../hooks/use-fav-button';
|
|
9
9
|
import { twMerge } from 'tailwind-merge';
|
|
10
|
+
import PluginModule, { Component } from '@akinon/next/components/plugin-module';
|
|
10
11
|
|
|
11
12
|
type ProductSliderItem = {
|
|
12
13
|
product: Product;
|
|
@@ -88,6 +89,15 @@ export default function ProductInfoSlider({ product }: ProductSliderItem) {
|
|
|
88
89
|
<div className="relative lg:col-span-5">
|
|
89
90
|
<FavButton className="absolute right-8 top-6 z-[20] sm:hidden" />
|
|
90
91
|
|
|
92
|
+
<PluginModule
|
|
93
|
+
component={Component.VirtualTryOnPlugin}
|
|
94
|
+
props={{
|
|
95
|
+
product,
|
|
96
|
+
className:
|
|
97
|
+
'sm:hidden absolute bottom-[70px] right-[5px] z-[30] w-auto px-4 text-xs mt-0'
|
|
98
|
+
}}
|
|
99
|
+
/>
|
|
100
|
+
|
|
91
101
|
<CarouselCore
|
|
92
102
|
responsive={{
|
|
93
103
|
all: {
|
package/commands/plugins.ts
CHANGED
package/dist/commands/plugins.js
CHANGED