@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @akinon/projectzero
2
2
 
3
- ## 1.112.0-snapshot-ZERO-3859-20251125183557
3
+ ## 1.112.0
4
4
 
5
5
  ## 1.111.0
6
6
 
@@ -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.111.0",
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.111.0",
28
- "@akinon/pz-akifast": "1.111.0",
29
- "@akinon/pz-apple-pay": "1.111.0",
30
- "@akinon/pz-b2b": "1.111.0",
31
- "@akinon/pz-basket-gift-pack": "1.111.0",
32
- "@akinon/pz-bkm": "1.111.0",
33
- "@akinon/pz-checkout-gift-pack": "1.111.0",
34
- "@akinon/pz-click-collect": "1.111.0",
35
- "@akinon/pz-credit-payment": "1.111.0",
36
- "@akinon/pz-cybersource-uc": "1.111.0",
37
- "@akinon/pz-flow-payment": "1.111.0",
38
- "@akinon/pz-gpay": "1.111.0",
39
- "@akinon/pz-hepsipay": "1.111.0",
40
- "@akinon/pz-masterpass": "1.111.0",
41
- "@akinon/pz-masterpass-rest": "1.111.0",
42
- "@akinon/pz-multi-basket": "1.111.0",
43
- "@akinon/pz-one-click-checkout": "1.111.0",
44
- "@akinon/pz-otp": "1.111.0",
45
- "@akinon/pz-pay-on-delivery": "1.111.0",
46
- "@akinon/pz-saved-card": "1.111.0",
47
- "@akinon/pz-tabby-extension": "1.111.0",
48
- "@akinon/pz-tamara-extension": "1.111.0",
49
- "@akinon/pz-virtual-try-on": "1.111.0",
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.111.0",
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",
@@ -17,6 +17,8 @@
17
17
  "navbar": {
18
18
  "search": "SEARCH"
19
19
  },
20
+ "good": "Good",
21
+ "bad": "Bad",
20
22
  "mobile_menu": {
21
23
  "back": "Back"
22
24
  },
@@ -38,24 +38,63 @@
38
38
  },
39
39
  "virtual_try_on": {
40
40
  "title": "Virtual Try On",
41
- "button_text": "Virtual Try On",
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
- "processing_message": "Creating your virtual try-on...",
50
- "result_title": "Virtual Try-On Result",
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": "I Accept & Continue"
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
  }
@@ -17,6 +17,8 @@
17
17
  "navbar": {
18
18
  "search": "ARA"
19
19
  },
20
+ "good": "İyi",
21
+ "bad": "Kötü",
20
22
  "mobile_menu": {
21
23
  "back": "Geri"
22
24
  },
@@ -37,25 +37,66 @@
37
37
  "close_button": "KAPAT"
38
38
  },
39
39
  "virtual_try_on": {
40
- "title": "Sanal Deneme",
41
- "button_text": "Sanal Deneme",
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": "Resim yüklemek için tıklayın",
45
- "upload_requirements": "Maks 1MB, sadece JPEG/PNG/WebP",
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
- "processing_message": "Sanal denemeniz oluşturuluyor...",
50
- "result_title": "Sanal Deneme Sonucu",
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": "Şartlar ve Koşullar",
57
- "text": "Bu sanal deneme özelliğini kullanarak şartlar ve koşullarımızı kabul etmiş olursunuz. Fotoğrafınız güvenli bir şekilde işlenecek ve kalıcı olarak saklanmayacaktır. Fotoğrafınızı yalnızca sanal deneme sonucunu oluşturmak için kullanırız.",
58
- "accept": "Kabul Ediyorum & Devam Et"
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
  );
@@ -109,7 +109,8 @@ export default function ProductInfo({ data }: ProductPageProps) {
109
109
  <PluginModule
110
110
  component={Component.VirtualTryOnPlugin}
111
111
  props={{
112
- product: data.product
112
+ product: data.product,
113
+ className: 'hidden sm:flex'
113
114
  }}
114
115
  />
115
116
 
@@ -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: {
@@ -152,10 +152,6 @@ export default async () => {
152
152
  {
153
153
  name: 'Masterpass Rest',
154
154
  value: 'pz-masterpass-rest'
155
- },
156
- {
157
- name: 'Haso Payment Gateway',
158
- value: 'pz-haso'
159
155
  }
160
156
  ];
161
157
 
@@ -167,10 +167,6 @@ exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
167
167
  {
168
168
  name: 'Masterpass Rest',
169
169
  value: 'pz-masterpass-rest'
170
- },
171
- {
172
- name: 'Haso Payment Gateway',
173
- value: 'pz-haso'
174
170
  }
175
171
  ];
176
172
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akinon/projectzero",
3
- "version": "1.112.0-snapshot-ZERO-3859-20251125183557",
3
+ "version": "1.112.0",
4
4
  "private": false,
5
5
  "description": "CLI tool to manage your Project Zero Next project",
6
6
  "bin": {