@primestyleai/tryon 5.10.192 → 5.10.194
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/dist/{index-D9sdGV4C.js → index-BiotPzcm.js} +81 -73
- package/dist/index-BiotPzcm.js.map +1 -0
- package/dist/primestyle-tryon.js +2 -2
- package/dist/react/index.js +5476 -5272
- package/dist/react/index.js.map +1 -1
- package/dist/react/recommendForProduct.d.ts +4 -4
- package/dist/react/styles.d.ts +1 -1
- package/dist/react/usePrimeStyleSize.d.ts +2 -2
- package/dist/react/views/SizeResultView.d.ts +2 -1
- package/dist/storefront/primestyle-tryon.js +356 -145
- package/package.json +1 -1
- package/dist/index-D9sdGV4C.js.map +0 -1
|
@@ -6981,7 +6981,7 @@ const es = {
|
|
|
6981
6981
|
"See Your Fit": "Ver tu ajuste",
|
|
6982
6982
|
"Check your size, then try it on virtually": "Comprueba tu talla y pruébatelo virtualmente",
|
|
6983
6983
|
"Get Your Size": "Tu talla",
|
|
6984
|
-
"Instant fit
|
|
6984
|
+
"Instant fit suggestion": "Sugerencia de ajuste instantánea",
|
|
6985
6985
|
"Try It On": "Pruébatelo",
|
|
6986
6986
|
"See how it looks on you": "Mira cómo te queda",
|
|
6987
6987
|
"Find My Size": "Encontrar mi talla",
|
|
@@ -7009,12 +7009,12 @@ const es = {
|
|
|
7009
7009
|
"Please fill in all required fields": "Por favor, completa todos los campos obligatorios",
|
|
7010
7010
|
"Next": "Siguiente",
|
|
7011
7011
|
"Analyzing your size...": "Analizando tu talla...",
|
|
7012
|
-
"
|
|
7013
|
-
"NOT
|
|
7012
|
+
"SUGGESTED SIZE": "TALLA SUGERIDA",
|
|
7013
|
+
"NOT SUGGESTED": "NO SUGERIDA",
|
|
7014
7014
|
"Edit measurements": "Editar medidas",
|
|
7015
7015
|
"Size guide": "Guía de tallas",
|
|
7016
7016
|
"Your fit": "Tu ajuste",
|
|
7017
|
-
"Your Size
|
|
7017
|
+
"Your Suggested Size": "Tu talla sugerida",
|
|
7018
7018
|
"Your measure": "Tu medida",
|
|
7019
7019
|
"within range": "dentro del rango",
|
|
7020
7020
|
"too tight": "demasiado ajustado",
|
|
@@ -7237,7 +7237,7 @@ const fr = {
|
|
|
7237
7237
|
"See Your Fit": "Voir votre ajustement",
|
|
7238
7238
|
"Check your size, then try it on virtually": "Vérifiez votre taille, puis essayez-le virtuellement",
|
|
7239
7239
|
"Get Your Size": "Votre taille",
|
|
7240
|
-
"Instant fit
|
|
7240
|
+
"Instant fit suggestion": "Suggestion de coupe instantanée",
|
|
7241
7241
|
"Try It On": "Essayer",
|
|
7242
7242
|
"See how it looks on you": "Voyez comment ça vous va",
|
|
7243
7243
|
"Find My Size": "Trouver ma taille",
|
|
@@ -7265,12 +7265,12 @@ const fr = {
|
|
|
7265
7265
|
"Please fill in all required fields": "Veuillez remplir tous les champs obligatoires",
|
|
7266
7266
|
"Next": "Suivant",
|
|
7267
7267
|
"Analyzing your size...": "Analyse de votre taille...",
|
|
7268
|
-
"
|
|
7269
|
-
"NOT
|
|
7268
|
+
"SUGGESTED SIZE": "TAILLE SUGGÉRÉE",
|
|
7269
|
+
"NOT SUGGESTED": "NON SUGGÉRÉE",
|
|
7270
7270
|
"Edit measurements": "Modifier les mesures",
|
|
7271
7271
|
"Size guide": "Guide des tailles",
|
|
7272
7272
|
"Your fit": "Votre coupe",
|
|
7273
|
-
"Your Size
|
|
7273
|
+
"Your Suggested Size": "Votre taille suggérée",
|
|
7274
7274
|
"Your measure": "Votre mesure",
|
|
7275
7275
|
"within range": "dans la plage",
|
|
7276
7276
|
"too tight": "trop serré",
|
|
@@ -7493,7 +7493,7 @@ const de = {
|
|
|
7493
7493
|
"See Your Fit": "Ihre Passform ansehen",
|
|
7494
7494
|
"Check your size, then try it on virtually": "Prüfen Sie Ihre Größe und probieren Sie es virtuell an",
|
|
7495
7495
|
"Get Your Size": "Ihre Größe",
|
|
7496
|
-
"Instant fit
|
|
7496
|
+
"Instant fit suggestion": "Sofortiger Passformvorschlag",
|
|
7497
7497
|
"Try It On": "Anprobieren",
|
|
7498
7498
|
"See how it looks on you": "Sehen Sie, wie es Ihnen steht",
|
|
7499
7499
|
"Find My Size": "Meine Größe finden",
|
|
@@ -7521,12 +7521,12 @@ const de = {
|
|
|
7521
7521
|
"Please fill in all required fields": "Bitte alle Pflichtfelder ausfüllen",
|
|
7522
7522
|
"Next": "Weiter",
|
|
7523
7523
|
"Analyzing your size...": "Ihre Größe wird analysiert...",
|
|
7524
|
-
"
|
|
7525
|
-
"NOT
|
|
7524
|
+
"SUGGESTED SIZE": "VORGESCHLAGENE GRÖSSE",
|
|
7525
|
+
"NOT SUGGESTED": "NICHT VORGESCHLAGEN",
|
|
7526
7526
|
"Edit measurements": "Maße bearbeiten",
|
|
7527
7527
|
"Size guide": "Größentabelle",
|
|
7528
7528
|
"Your fit": "Ihre Passform",
|
|
7529
|
-
"Your Size
|
|
7529
|
+
"Your Suggested Size": "Ihre vorgeschlagene Größe",
|
|
7530
7530
|
"Your measure": "Ihr Maß",
|
|
7531
7531
|
"within range": "im Bereich",
|
|
7532
7532
|
"too tight": "zu eng",
|
|
@@ -7749,7 +7749,7 @@ const it = {
|
|
|
7749
7749
|
"See Your Fit": "Vedi la vestibilità",
|
|
7750
7750
|
"Check your size, then try it on virtually": "Controlla la tua taglia, poi provalo virtualmente",
|
|
7751
7751
|
"Get Your Size": "La tua taglia",
|
|
7752
|
-
"Instant fit
|
|
7752
|
+
"Instant fit suggestion": "Suggerimento vestibilità istantaneo",
|
|
7753
7753
|
"Try It On": "Provalo",
|
|
7754
7754
|
"See how it looks on you": "Guarda come ti sta",
|
|
7755
7755
|
"Find My Size": "Trova la mia taglia",
|
|
@@ -7777,12 +7777,12 @@ const it = {
|
|
|
7777
7777
|
"Please fill in all required fields": "Compila tutti i campi obbligatori",
|
|
7778
7778
|
"Next": "Avanti",
|
|
7779
7779
|
"Analyzing your size...": "Analisi della tua taglia...",
|
|
7780
|
-
"
|
|
7781
|
-
"NOT
|
|
7780
|
+
"SUGGESTED SIZE": "TAGLIA SUGGERITA",
|
|
7781
|
+
"NOT SUGGESTED": "NON SUGGERITA",
|
|
7782
7782
|
"Edit measurements": "Modifica misure",
|
|
7783
7783
|
"Size guide": "Guida alle taglie",
|
|
7784
7784
|
"Your fit": "La tua vestibilità",
|
|
7785
|
-
"Your Size
|
|
7785
|
+
"Your Suggested Size": "La tua taglia suggerita",
|
|
7786
7786
|
"Your measure": "La tua misura",
|
|
7787
7787
|
"within range": "entro l'intervallo",
|
|
7788
7788
|
"too tight": "troppo stretto",
|
|
@@ -8005,7 +8005,7 @@ const pt$1 = {
|
|
|
8005
8005
|
"See Your Fit": "Veja seu ajuste",
|
|
8006
8006
|
"Check your size, then try it on virtually": "Confira seu tamanho e experimente virtualmente",
|
|
8007
8007
|
"Get Your Size": "Seu tamanho",
|
|
8008
|
-
"Instant fit
|
|
8008
|
+
"Instant fit suggestion": "Sugestão de caimento instantânea",
|
|
8009
8009
|
"Try It On": "Experimentar",
|
|
8010
8010
|
"See how it looks on you": "Veja como fica em você",
|
|
8011
8011
|
"Find My Size": "Encontrar meu tamanho",
|
|
@@ -8033,12 +8033,12 @@ const pt$1 = {
|
|
|
8033
8033
|
"Please fill in all required fields": "Por favor, preencha todos os campos obrigatórios",
|
|
8034
8034
|
"Next": "Próximo",
|
|
8035
8035
|
"Analyzing your size...": "Analisando seu tamanho...",
|
|
8036
|
-
"
|
|
8037
|
-
"NOT
|
|
8036
|
+
"SUGGESTED SIZE": "TAMANHO SUGERIDO",
|
|
8037
|
+
"NOT SUGGESTED": "NÃO SUGERIDO",
|
|
8038
8038
|
"Edit measurements": "Editar medidas",
|
|
8039
8039
|
"Size guide": "Guia de tamanhos",
|
|
8040
8040
|
"Your fit": "Seu caimento",
|
|
8041
|
-
"Your Size
|
|
8041
|
+
"Your Suggested Size": "Seu tamanho sugerido",
|
|
8042
8042
|
"Your measure": "Sua medida",
|
|
8043
8043
|
"within range": "dentro da faixa",
|
|
8044
8044
|
"too tight": "muito apertado",
|
|
@@ -8261,7 +8261,7 @@ const ja = {
|
|
|
8261
8261
|
"See Your Fit": "フィット感を見る",
|
|
8262
8262
|
"Check your size, then try it on virtually": "サイズを確認して、バーチャルで試着しましょう",
|
|
8263
8263
|
"Get Your Size": "サイズを確認",
|
|
8264
|
-
"Instant fit
|
|
8264
|
+
"Instant fit suggestion": "瞬時にフィット提案",
|
|
8265
8265
|
"Try It On": "試着する",
|
|
8266
8266
|
"See how it looks on you": "自分に似合うか確認",
|
|
8267
8267
|
"Find My Size": "自分のサイズを見つける",
|
|
@@ -8289,12 +8289,12 @@ const ja = {
|
|
|
8289
8289
|
"Please fill in all required fields": "すべての必須項目を入力してください",
|
|
8290
8290
|
"Next": "次へ",
|
|
8291
8291
|
"Analyzing your size...": "サイズを分析中...",
|
|
8292
|
-
"
|
|
8293
|
-
"NOT
|
|
8292
|
+
"SUGGESTED SIZE": "提案サイズ",
|
|
8293
|
+
"NOT SUGGESTED": "提案外",
|
|
8294
8294
|
"Edit measurements": "寸法を編集",
|
|
8295
8295
|
"Size guide": "サイズガイド",
|
|
8296
8296
|
"Your fit": "あなたのフィット",
|
|
8297
|
-
"Your Size
|
|
8297
|
+
"Your Suggested Size": "提案サイズ",
|
|
8298
8298
|
"Your measure": "あなたの寸法",
|
|
8299
8299
|
"within range": "範囲内",
|
|
8300
8300
|
"too tight": "きつすぎる",
|
|
@@ -8517,7 +8517,7 @@ const zh = {
|
|
|
8517
8517
|
"See Your Fit": "查看合身效果",
|
|
8518
8518
|
"Check your size, then try it on virtually": "确认尺码,然后虚拟试穿",
|
|
8519
8519
|
"Get Your Size": "获取尺码",
|
|
8520
|
-
"Instant fit
|
|
8520
|
+
"Instant fit suggestion": "即时合身建议",
|
|
8521
8521
|
"Try It On": "试穿",
|
|
8522
8522
|
"See how it looks on you": "看看穿在你身上的效果",
|
|
8523
8523
|
"Find My Size": "找到我的尺码",
|
|
@@ -8545,12 +8545,12 @@ const zh = {
|
|
|
8545
8545
|
"Please fill in all required fields": "请填写所有必填项",
|
|
8546
8546
|
"Next": "下一步",
|
|
8547
8547
|
"Analyzing your size...": "正在分析你的尺码...",
|
|
8548
|
-
"
|
|
8549
|
-
"NOT
|
|
8548
|
+
"SUGGESTED SIZE": "建议尺码",
|
|
8549
|
+
"NOT SUGGESTED": "不建议",
|
|
8550
8550
|
"Edit measurements": "编辑尺寸",
|
|
8551
8551
|
"Size guide": "尺码指南",
|
|
8552
8552
|
"Your fit": "你的合身度",
|
|
8553
|
-
"Your Size
|
|
8553
|
+
"Your Suggested Size": "你的建议尺码",
|
|
8554
8554
|
"Your measure": "你的尺寸",
|
|
8555
8555
|
"within range": "在范围内",
|
|
8556
8556
|
"too tight": "太紧",
|
|
@@ -8773,7 +8773,7 @@ const ko = {
|
|
|
8773
8773
|
"See Your Fit": "핏 확인하기",
|
|
8774
8774
|
"Check your size, then try it on virtually": "사이즈를 확인하고 가상으로 입어보세요",
|
|
8775
8775
|
"Get Your Size": "사이즈 확인",
|
|
8776
|
-
"Instant fit
|
|
8776
|
+
"Instant fit suggestion": "즉시 핏 제안",
|
|
8777
8777
|
"Try It On": "입어보기",
|
|
8778
8778
|
"See how it looks on you": "어떻게 보이는지 확인",
|
|
8779
8779
|
"Find My Size": "내 사이즈 찾기",
|
|
@@ -8801,12 +8801,12 @@ const ko = {
|
|
|
8801
8801
|
"Please fill in all required fields": "모든 필수 항목을 입력해주세요",
|
|
8802
8802
|
"Next": "다음",
|
|
8803
8803
|
"Analyzing your size...": "사이즈 분석 중...",
|
|
8804
|
-
"
|
|
8805
|
-
"NOT
|
|
8804
|
+
"SUGGESTED SIZE": "제안 사이즈",
|
|
8805
|
+
"NOT SUGGESTED": "제안 아님",
|
|
8806
8806
|
"Edit measurements": "치수 수정",
|
|
8807
8807
|
"Size guide": "사이즈 가이드",
|
|
8808
8808
|
"Your fit": "나의 핏",
|
|
8809
|
-
"Your Size
|
|
8809
|
+
"Your Suggested Size": "제안 사이즈",
|
|
8810
8810
|
"Your measure": "내 치수",
|
|
8811
8811
|
"within range": "범위 내",
|
|
8812
8812
|
"too tight": "너무 타이트",
|
|
@@ -9029,7 +9029,7 @@ const ar = {
|
|
|
9029
9029
|
"See Your Fit": "شاهد الملاءمة",
|
|
9030
9030
|
"Check your size, then try it on virtually": "تحقق من مقاسك ثم جرّبه افتراضياً",
|
|
9031
9031
|
"Get Your Size": "مقاسك",
|
|
9032
|
-
"Instant fit
|
|
9032
|
+
"Instant fit suggestion": "اقتراح فوري للمقاس",
|
|
9033
9033
|
"Try It On": "جرّبه",
|
|
9034
9034
|
"See how it looks on you": "شاهد كيف يبدو عليك",
|
|
9035
9035
|
"Find My Size": "اعثر على مقاسي",
|
|
@@ -9057,12 +9057,12 @@ const ar = {
|
|
|
9057
9057
|
"Please fill in all required fields": "يرجى ملء جميع الحقول المطلوبة",
|
|
9058
9058
|
"Next": "التالي",
|
|
9059
9059
|
"Analyzing your size...": "جارٍ تحليل مقاسك...",
|
|
9060
|
-
"
|
|
9061
|
-
"NOT
|
|
9060
|
+
"SUGGESTED SIZE": "المقاس المقترح",
|
|
9061
|
+
"NOT SUGGESTED": "غير مقترح",
|
|
9062
9062
|
"Edit measurements": "تعديل القياسات",
|
|
9063
9063
|
"Size guide": "دليل المقاسات",
|
|
9064
9064
|
"Your fit": "ملاءمتك",
|
|
9065
|
-
"Your Size
|
|
9065
|
+
"Your Suggested Size": "المقاس المقترح",
|
|
9066
9066
|
"Your measure": "قياسك",
|
|
9067
9067
|
"within range": "ضمن النطاق",
|
|
9068
9068
|
"too tight": "ضيق جداً",
|
|
@@ -9836,23 +9836,34 @@ async function loadMediaPipe() {
|
|
|
9836
9836
|
if (poseLandmarker) return;
|
|
9837
9837
|
if (loadingPromise$1) return loadingPromise$1;
|
|
9838
9838
|
loadingPromise$1 = (async () => {
|
|
9839
|
-
|
|
9840
|
-
|
|
9841
|
-
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
|
|
9854
|
-
|
|
9855
|
-
|
|
9839
|
+
try {
|
|
9840
|
+
const vision = await import(
|
|
9841
|
+
/* webpackIgnore: true */
|
|
9842
|
+
// @ts-ignore dynamic CDN import
|
|
9843
|
+
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.33/vision_bundle.mjs"
|
|
9844
|
+
);
|
|
9845
|
+
const { FilesetResolver, PoseLandmarker } = vision;
|
|
9846
|
+
const filesetResolver = await FilesetResolver.forVisionTasks(
|
|
9847
|
+
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.33/wasm"
|
|
9848
|
+
);
|
|
9849
|
+
const createPoseLandmarker = async (delegate) => PoseLandmarker.createFromOptions(filesetResolver, {
|
|
9850
|
+
baseOptions: {
|
|
9851
|
+
modelAssetPath: "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_lite/float16/1/pose_landmarker_lite.task",
|
|
9852
|
+
delegate
|
|
9853
|
+
},
|
|
9854
|
+
runningMode: "IMAGE",
|
|
9855
|
+
numPoses: 1
|
|
9856
|
+
});
|
|
9857
|
+
try {
|
|
9858
|
+
poseLandmarker = await createPoseLandmarker("GPU");
|
|
9859
|
+
} catch (gpuErr) {
|
|
9860
|
+
console.warn("[PS-SDK:MediaPipe] GPU delegate failed, retrying with CPU delegate:", gpuErr);
|
|
9861
|
+
poseLandmarker = await createPoseLandmarker("CPU");
|
|
9862
|
+
}
|
|
9863
|
+
} catch (err) {
|
|
9864
|
+
loadingPromise$1 = null;
|
|
9865
|
+
throw err;
|
|
9866
|
+
}
|
|
9856
9867
|
})();
|
|
9857
9868
|
return loadingPromise$1;
|
|
9858
9869
|
}
|
|
@@ -10047,19 +10058,28 @@ async function loadFaceLandmarker() {
|
|
|
10047
10058
|
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.33/wasm"
|
|
10048
10059
|
);
|
|
10049
10060
|
console.log(`[PS-SDK:FaceDetect] WASM resolver ready in ${Math.round(performance.now() - t1)}ms`);
|
|
10050
|
-
|
|
10051
|
-
|
|
10052
|
-
|
|
10053
|
-
|
|
10054
|
-
|
|
10055
|
-
|
|
10056
|
-
|
|
10057
|
-
|
|
10058
|
-
|
|
10059
|
-
|
|
10060
|
-
|
|
10061
|
-
|
|
10062
|
-
|
|
10061
|
+
const createFaceLandmarker = async (delegate) => {
|
|
10062
|
+
console.log(`[PS-SDK:FaceDetect] creating FaceLandmarker (${delegate} delegate, model=latest)…`);
|
|
10063
|
+
const t2 = performance.now();
|
|
10064
|
+
const instance = await FaceLandmarker.createFromOptions(filesetResolver, {
|
|
10065
|
+
baseOptions: {
|
|
10066
|
+
modelAssetPath: "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task",
|
|
10067
|
+
delegate
|
|
10068
|
+
},
|
|
10069
|
+
runningMode: "IMAGE",
|
|
10070
|
+
numFaces: 1,
|
|
10071
|
+
outputFaceBlendshapes: false,
|
|
10072
|
+
outputFacialTransformationMatrixes: false
|
|
10073
|
+
});
|
|
10074
|
+
console.log(`[PS-SDK:FaceDetect] FaceLandmarker ready with ${delegate} delegate in ${Math.round(performance.now() - t2)}ms`);
|
|
10075
|
+
return instance;
|
|
10076
|
+
};
|
|
10077
|
+
try {
|
|
10078
|
+
faceLandmarker = await createFaceLandmarker("GPU");
|
|
10079
|
+
} catch (gpuErr) {
|
|
10080
|
+
console.warn("[PS-SDK:FaceDetect] GPU delegate failed, retrying with CPU delegate:", gpuErr);
|
|
10081
|
+
faceLandmarker = await createFaceLandmarker("CPU");
|
|
10082
|
+
}
|
|
10063
10083
|
} catch (err) {
|
|
10064
10084
|
console.error("[PS-SDK:FaceDetect] loadFaceLandmarker FAILED:", err);
|
|
10065
10085
|
loadingPromise = null;
|
|
@@ -11765,7 +11785,8 @@ function productFitTypeToMeasurementType(fitType) {
|
|
|
11765
11785
|
if (fitType === "shoe") return "foot";
|
|
11766
11786
|
if (fitType === "hat") return "head";
|
|
11767
11787
|
if (fitType === "sunglasses") return "face";
|
|
11768
|
-
if (fitType === "
|
|
11788
|
+
if (fitType === "watch") return "wrist";
|
|
11789
|
+
if (fitType === "bracelet") return "body-basic";
|
|
11769
11790
|
if (fitType === "bag" || fitType === "belt" || fitType === "earring" || fitType === "necklace" || fitType === "ring" || fitType === "accessory") {
|
|
11770
11791
|
return "body-basic";
|
|
11771
11792
|
}
|
|
@@ -12324,6 +12345,9 @@ const STYLES = `
|
|
|
12324
12345
|
.ps-tryon-v2-result-panel .ps-tryon-v2-sep {
|
|
12325
12346
|
margin-bottom: 0;
|
|
12326
12347
|
}
|
|
12348
|
+
.ps-tryon-v2-multi-result-panel .ps-tryon-v2-result-copy {
|
|
12349
|
+
flex: 0 0 auto;
|
|
12350
|
+
}
|
|
12327
12351
|
.ps-tryon-v2-result-panel .ps-tryon-sr-cards-v2 {
|
|
12328
12352
|
flex: 0 0 auto;
|
|
12329
12353
|
min-height: 0;
|
|
@@ -14670,6 +14694,34 @@ const STYLES = `
|
|
|
14670
14694
|
.ps-tryon-sec-detail .ps-tryon-sr-fit-table td { padding: 0.9vw 0; }
|
|
14671
14695
|
.ps-tryon-sec-detail .ps-tryon-sr-fit-table th { padding: 0.4vw 0 0.6vw; }
|
|
14672
14696
|
.ps-tryon-sec-detail .ps-tryon-sr-chips { gap: 0.4vw; margin: 0.3vw 0; }
|
|
14697
|
+
.ps-tryon-sec-detail-footer {
|
|
14698
|
+
gap: clamp(16px, 1.1vw, 22px);
|
|
14699
|
+
min-height: clamp(44px, 3vw, 54px);
|
|
14700
|
+
}
|
|
14701
|
+
.ps-tryon-sec-detail-footer .ps-bp-back-btn {
|
|
14702
|
+
flex: 0 0 auto;
|
|
14703
|
+
min-width: 0;
|
|
14704
|
+
white-space: nowrap;
|
|
14705
|
+
}
|
|
14706
|
+
.ps-tryon-sec-detail-footer .ps-tryon-v2-action-group {
|
|
14707
|
+
flex: 1 1 auto;
|
|
14708
|
+
max-width: min(430px, 100%);
|
|
14709
|
+
margin-left: auto;
|
|
14710
|
+
gap: clamp(16px, 1vw, 20px);
|
|
14711
|
+
}
|
|
14712
|
+
.ps-tryon-sec-detail-footer .ps-tryon-v2-action-group-single {
|
|
14713
|
+
flex: 0 0 auto;
|
|
14714
|
+
max-width: none;
|
|
14715
|
+
}
|
|
14716
|
+
.ps-tryon-sec-detail-footer .ps-tryon-v2-action-group > .ps-tryon-v2-cta {
|
|
14717
|
+
flex: 1 1 0;
|
|
14718
|
+
min-width: clamp(140px, 9.5vw, 178px);
|
|
14719
|
+
margin-top: 0;
|
|
14720
|
+
}
|
|
14721
|
+
.ps-tryon-sec-detail-footer .ps-tryon-v2-action-group-single > .ps-tryon-v2-cta {
|
|
14722
|
+
flex: 0 0 auto;
|
|
14723
|
+
min-width: clamp(150px, 10vw, 190px);
|
|
14724
|
+
}
|
|
14673
14725
|
|
|
14674
14726
|
/* Length inline selector (inside section detail) */
|
|
14675
14727
|
.ps-tryon-sec-length-row {
|
|
@@ -14998,7 +15050,7 @@ const STYLES = `
|
|
|
14998
15050
|
transform: translateY(-1px);
|
|
14999
15051
|
}
|
|
15000
15052
|
|
|
15001
|
-
/* Size chip
|
|
15053
|
+
/* Size chip suggested dot */
|
|
15002
15054
|
.ps-tryon-sr-chip { position: relative; }
|
|
15003
15055
|
.ps-tryon-sr-rec-dot {
|
|
15004
15056
|
position: absolute; bottom: -0.3vw; left: 50%; transform: translateX(-50%);
|
|
@@ -17044,6 +17096,13 @@ const STYLES = `
|
|
|
17044
17096
|
font-size: clamp(11px, 0.66vw, 13px);
|
|
17045
17097
|
padding: 0 0 3px;
|
|
17046
17098
|
}
|
|
17099
|
+
.ps-bp-system-toggle-large {
|
|
17100
|
+
gap: clamp(18px, 1.1vw, 24px);
|
|
17101
|
+
}
|
|
17102
|
+
.ps-bp-system-toggle-large .ps-bp-system-btn {
|
|
17103
|
+
font-size: clamp(13px, 0.78vw, 15px);
|
|
17104
|
+
padding-bottom: 4px;
|
|
17105
|
+
}
|
|
17047
17106
|
|
|
17048
17107
|
.ps-bp-root {
|
|
17049
17108
|
flex: 1; min-width: 0;
|
|
@@ -20849,7 +20908,7 @@ const STYLES = `
|
|
|
20849
20908
|
min-width: 0;
|
|
20850
20909
|
}
|
|
20851
20910
|
|
|
20852
|
-
/*
|
|
20911
|
+
/* SUGGESTED SIZE card */
|
|
20853
20912
|
.ps-msd-card {
|
|
20854
20913
|
background: var(--ps-bg-primary);
|
|
20855
20914
|
border: 1px solid var(--ps-border-subtle);
|
|
@@ -21115,20 +21174,23 @@ const STYLES = `
|
|
|
21115
21174
|
.ps-bp-photo-help-backdrop { display: none; }
|
|
21116
21175
|
.ps-bp-photo-help {
|
|
21117
21176
|
position: absolute; top: 2.2vw; right: 0;
|
|
21118
|
-
width: min(
|
|
21177
|
+
width: min(520px, 34vw);
|
|
21119
21178
|
background: #FFFFFF;
|
|
21120
21179
|
border: 1px solid var(--ps-border-subtle);
|
|
21121
21180
|
border-radius: 0.8vw;
|
|
21122
21181
|
box-shadow: 0 20px 40px -12px rgba(17,24,39,0.25), 0 8px 16px -8px rgba(17,24,39,0.15);
|
|
21123
21182
|
padding: 0.8vw 1vw;
|
|
21124
21183
|
display: flex; flex-direction: column; gap: 0.6vw;
|
|
21184
|
+
max-height: min(70dvh, 520px);
|
|
21185
|
+
overflow-y: auto;
|
|
21186
|
+
-webkit-overflow-scrolling: touch;
|
|
21125
21187
|
z-index: 5;
|
|
21126
21188
|
}
|
|
21127
21189
|
.ps-bp-photo-help-upload {
|
|
21128
21190
|
top: clamp(46px, 3.2vw, 58px);
|
|
21129
21191
|
left: clamp(12px, 0.85vw, 16px);
|
|
21130
21192
|
right: auto;
|
|
21131
|
-
width: min(
|
|
21193
|
+
width: min(620px, calc(100% - clamp(24px, 1.7vw, 32px)));
|
|
21132
21194
|
max-height: calc(100% - clamp(64px, 4.5vw, 82px));
|
|
21133
21195
|
overflow-y: auto;
|
|
21134
21196
|
}
|
|
@@ -22918,14 +22980,33 @@ const STYLES = `
|
|
|
22918
22980
|
.ps-msd-actions {
|
|
22919
22981
|
padding-top: 9px !important;
|
|
22920
22982
|
padding-bottom: calc(9px + env(safe-area-inset-bottom)) !important;
|
|
22983
|
+
height: auto !important;
|
|
22984
|
+
min-height: 0 !important;
|
|
22985
|
+
}
|
|
22986
|
+
.ps-tryon-v2-result-actions {
|
|
22987
|
+
display: grid !important;
|
|
22988
|
+
grid-template-columns: auto minmax(0, 1fr) !important;
|
|
22989
|
+
align-items: end !important;
|
|
22990
|
+
gap: 10px !important;
|
|
22991
|
+
min-height: 0 !important;
|
|
22992
|
+
padding-top: 10px !important;
|
|
22993
|
+
padding-bottom: calc(10px + env(safe-area-inset-bottom)) !important;
|
|
22994
|
+
}
|
|
22995
|
+
.ps-tryon-v2-result-actions > .ps-tryon-v2-action-group,
|
|
22996
|
+
.ps-tryon-v2-result-actions > .ps-tryon-v2-cta {
|
|
22997
|
+
width: 100% !important;
|
|
22998
|
+
max-width: none !important;
|
|
22999
|
+
flex: 1 1 auto !important;
|
|
23000
|
+
margin-left: 0 !important;
|
|
22921
23001
|
}
|
|
22922
23002
|
.ps-msr-bottom-row,
|
|
22923
23003
|
.ps-tryon-v2-action-group,
|
|
22924
23004
|
.ps-msd-result-action-group {
|
|
22925
23005
|
display: grid !important;
|
|
22926
|
-
grid-template-columns: minmax(0, 1fr)
|
|
23006
|
+
grid-template-columns: minmax(0, 1fr) !important;
|
|
22927
23007
|
gap: 9px !important;
|
|
22928
23008
|
align-items: stretch !important;
|
|
23009
|
+
width: 100% !important;
|
|
22929
23010
|
}
|
|
22930
23011
|
.ps-tryon-v2-action-group-history {
|
|
22931
23012
|
display: flex !important;
|
|
@@ -22934,19 +23015,38 @@ const STYLES = `
|
|
|
22934
23015
|
.ps-tryon-v2-action-group > .ps-tryon-v2-cta,
|
|
22935
23016
|
.ps-msr-commerce-row .ps-tryon-v2-cta,
|
|
22936
23017
|
.ps-msd-result-action-group .ps-tryon-v2-cta {
|
|
22937
|
-
min-height:
|
|
22938
|
-
padding: 0
|
|
22939
|
-
border-radius:
|
|
22940
|
-
font-size:
|
|
22941
|
-
|
|
22942
|
-
|
|
22943
|
-
|
|
22944
|
-
|
|
23018
|
+
min-height: 48px !important;
|
|
23019
|
+
padding: 0 14px !important;
|
|
23020
|
+
border-radius: 11px !important;
|
|
23021
|
+
font-size: 13px !important;
|
|
23022
|
+
line-height: 1.15 !important;
|
|
23023
|
+
letter-spacing: 0.045em !important;
|
|
23024
|
+
gap: 8px !important;
|
|
23025
|
+
overflow: visible !important;
|
|
23026
|
+
text-overflow: clip !important;
|
|
23027
|
+
white-space: normal !important;
|
|
23028
|
+
}
|
|
23029
|
+
.ps-tryon-v2-action-group > .ps-tryon-v2-cta span,
|
|
23030
|
+
.ps-msr-commerce-row .ps-tryon-v2-cta span,
|
|
23031
|
+
.ps-msd-result-action-group .ps-tryon-v2-cta span {
|
|
23032
|
+
min-width: 0 !important;
|
|
23033
|
+
overflow: visible !important;
|
|
23034
|
+
text-overflow: clip !important;
|
|
23035
|
+
white-space: normal !important;
|
|
23036
|
+
overflow-wrap: normal !important;
|
|
22945
23037
|
}
|
|
22946
23038
|
.ps-tryon-v2-add-bag-cta svg,
|
|
22947
23039
|
.ps-tryon-v2-history-product-cta svg {
|
|
22948
|
-
width:
|
|
22949
|
-
height:
|
|
23040
|
+
width: 20px !important;
|
|
23041
|
+
height: 20px !important;
|
|
23042
|
+
flex: 0 0 auto !important;
|
|
23043
|
+
}
|
|
23044
|
+
.ps-tryon-v2-history-product-cta {
|
|
23045
|
+
width: auto !important;
|
|
23046
|
+
min-height: 42px !important;
|
|
23047
|
+
padding: 0 13px !important;
|
|
23048
|
+
font-size: 12px !important;
|
|
23049
|
+
white-space: nowrap !important;
|
|
22950
23050
|
}
|
|
22951
23051
|
@media (max-width: 374px) {
|
|
22952
23052
|
.ps-msr-bottom-row,
|
|
@@ -22957,7 +23057,8 @@ const STYLES = `
|
|
|
22957
23057
|
.ps-tryon-v2-action-group > .ps-tryon-v2-cta,
|
|
22958
23058
|
.ps-msr-commerce-row .ps-tryon-v2-cta,
|
|
22959
23059
|
.ps-msd-result-action-group .ps-tryon-v2-cta {
|
|
22960
|
-
min-height:
|
|
23060
|
+
min-height: 46px !important;
|
|
23061
|
+
font-size: 12px !important;
|
|
22961
23062
|
}
|
|
22962
23063
|
}
|
|
22963
23064
|
|
|
@@ -23613,7 +23714,7 @@ function WelcomeView({
|
|
|
23613
23714
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-welcome-sub", children: t2("Check your size, then try it on virtually") })
|
|
23614
23715
|
] }),
|
|
23615
23716
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-features", children: [
|
|
23616
|
-
{ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RulerIcon$1, { size: 22 }), title: t2("Get Your Size"), desc: t2("Instant fit
|
|
23717
|
+
{ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RulerIcon$1, { size: 22 }), title: t2("Get Your Size"), desc: t2("Instant fit suggestion") },
|
|
23617
23718
|
{ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(CameraIcon$1, { size: 22 }), title: t2("Try It On"), desc: t2("See how it looks on you") }
|
|
23618
23719
|
].map((f2, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-feature", children: [
|
|
23619
23720
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-feature-icon", children: f2.icon }),
|
|
@@ -23932,24 +24033,24 @@ function MobileScanningView({
|
|
|
23932
24033
|
{ title: t2("DETECTING HEAD"), desc: t2("Reading head landmarks from your photo."), viewfinderText: t2("DETECTING HEAD") },
|
|
23933
24034
|
{ title: t2("MAPPING CIRCUMFERENCE"), desc: t2("Estimating head width and depth."), viewfinderText: t2("MAPPING") },
|
|
23934
24035
|
{ title: t2("MATCHING HAT SIZE"), desc: t2("Comparing your circumference to the size chart."), viewfinderText: t2("MATCHING SIZE") },
|
|
23935
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24036
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
|
|
23936
24037
|
] : [
|
|
23937
24038
|
{ title: t2("DETECTING FACE"), desc: t2("Identifying face landmarks in your photo."), viewfinderText: t2("DETECTING FACE") },
|
|
23938
24039
|
{ title: t2("CALIBRATING SCALE"), desc: t2("Using iris size as the pixel-to-mm anchor."), viewfinderText: t2("CALIBRATING") },
|
|
23939
24040
|
{ title: t2("MEASURING FRAME"), desc: t2("Mapping bridge, frame width and temple fit."), viewfinderText: t2("MEASURING") },
|
|
23940
24041
|
{ title: t2("MATCHING FRAME SIZE"), desc: t2("Comparing your measurements to the size chart."), viewfinderText: t2("MATCHING SIZE") },
|
|
23941
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24042
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
|
|
23942
24043
|
] : [
|
|
23943
24044
|
{ title: t2("DETECTING POSE"), desc: t2("Identifying body landmarks from your photo."), viewfinderText: t2("DETECTING POSE") },
|
|
23944
|
-
{ title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size
|
|
24045
|
+
{ title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size suggestion."), viewfinderText: t2("SCANNING FRAME") },
|
|
23945
24046
|
{ title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips."), viewfinderText: t2("ANALYZING") },
|
|
23946
24047
|
{ title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide."), viewfinderText: t2("MATCHING SIZE") },
|
|
23947
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24048
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
|
|
23948
24049
|
] : [
|
|
23949
24050
|
{ title: t2("READING YOUR PROFILE"), desc: t2("Loading your saved measurements and body shape answers."), viewfinderText: t2("READING PROFILE") },
|
|
23950
24051
|
{ title: t2("ESTIMATING BODY"), desc: t2("Computing chest, waist, hips, sleeve and inseam from your basics."), viewfinderText: t2("ESTIMATING BODY") },
|
|
23951
24052
|
{ title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the garment's size guide."), viewfinderText: t2("MATCHING SIZE") },
|
|
23952
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24053
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
|
|
23953
24054
|
];
|
|
23954
24055
|
const [dims, setDims] = reactExports.useState({ w: 800, h: 1200 });
|
|
23955
24056
|
const handleImgLoad = (e) => {
|
|
@@ -24177,7 +24278,7 @@ function MultiSectionMobile({
|
|
|
24177
24278
|
marginTop: "4px",
|
|
24178
24279
|
color: isOverridden ? "#b45309" : "var(--ps-text-secondary, #6b7280)"
|
|
24179
24280
|
},
|
|
24180
|
-
children: isOverridden ? t2("your selection · not
|
|
24281
|
+
children: isOverridden ? t2("your selection · not suggested") : t2("suggested")
|
|
24181
24282
|
}
|
|
24182
24283
|
)
|
|
24183
24284
|
]
|
|
@@ -24676,13 +24777,13 @@ function StageCycler({
|
|
|
24676
24777
|
{ title: t2("DETECTING HEAD"), desc: t2("Reading head landmarks from your photo.") },
|
|
24677
24778
|
{ title: t2("MAPPING CIRCUMFERENCE"), desc: t2("Estimating head width and depth.") },
|
|
24678
24779
|
{ title: t2("MATCHING HAT SIZE"), desc: t2("Comparing your circumference to the size chart.") },
|
|
24679
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24780
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
|
|
24680
24781
|
] : category === "face" ? [
|
|
24681
24782
|
{ title: t2("DETECTING FACE"), desc: t2("Identifying 478 face landmarks in your photo.") },
|
|
24682
24783
|
{ title: t2("CALIBRATING SCALE"), desc: t2("Using iris size as the pixel-to-mm anchor.") },
|
|
24683
24784
|
{ title: t2("MEASURING FRAME"), desc: t2("Mapping bridge, lens width and temple length.") },
|
|
24684
24785
|
{ title: t2("MATCHING FRAME SIZE"), desc: t2("Comparing your measurements to the size chart.") },
|
|
24685
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24786
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
|
|
24686
24787
|
] : [
|
|
24687
24788
|
// Body + foot fall through here — broadest set of stages so long
|
|
24688
24789
|
// Gemini estimates still have fresh text to cycle through.
|
|
@@ -24690,7 +24791,7 @@ function StageCycler({
|
|
|
24690
24791
|
{ title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions.") },
|
|
24691
24792
|
{ title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips.") },
|
|
24692
24793
|
{ title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide.") },
|
|
24693
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
24794
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
|
|
24694
24795
|
];
|
|
24695
24796
|
const TOTAL_MS = 6e3;
|
|
24696
24797
|
const LAST_HOLD_MS = 1e3;
|
|
@@ -25127,7 +25228,7 @@ function SectionDetailView({
|
|
|
25127
25228
|
const details = sectionResult?.matchDetails ?? [];
|
|
25128
25229
|
const BAD_FIT = /tight|loose|large|small|very/i;
|
|
25129
25230
|
const hasBadFit = details.some((d) => BAD_FIT.test(d.fit || ""));
|
|
25130
|
-
return hasBadFit ? t2("Not
|
|
25231
|
+
return hasBadFit ? t2("Not Suggested") : t2("Your Selection");
|
|
25131
25232
|
}, [isRecommended, sectionResult, t2]);
|
|
25132
25233
|
const sizeFitPrefix = (() => {
|
|
25133
25234
|
if (renderRaw || isFootwear) return "";
|
|
@@ -25528,7 +25629,7 @@ function SectionDetailView({
|
|
|
25528
25629
|
{
|
|
25529
25630
|
className: "ps-msd-card-eyebrow",
|
|
25530
25631
|
style: displaySize !== backendSize ? { color: "#b45309", fontWeight: 700 } : void 0,
|
|
25531
|
-
children: displaySize === backendSize ? t2("
|
|
25632
|
+
children: displaySize === backendSize ? t2("SUGGESTED SIZE") : t2("YOUR CHOICE · NOT SUGGESTED")
|
|
25532
25633
|
}
|
|
25533
25634
|
),
|
|
25534
25635
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "10px", marginTop: "6px", marginBottom: "4px" }, children: [
|
|
@@ -25719,7 +25820,7 @@ function SectionDetailView({
|
|
|
25719
25820
|
] })
|
|
25720
25821
|
] }) });
|
|
25721
25822
|
}
|
|
25722
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail", style: { padding: "1.
|
|
25823
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail", style: { padding: "1.2vw 0.95vw 1vw", display: "flex", flexDirection: "column", height: "100%", background: "#F8F9FA" }, children: [
|
|
25723
25824
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { flex: 1, minHeight: 0, overflowY: "auto", scrollbarWidth: "thin", scrollbarColor: "rgba(0,0,0,0.04) transparent", display: sectionFound === false ? "flex" : "block", alignItems: sectionFound === false ? "center" : void 0, justifyContent: sectionFound === false ? "center" : void 0 }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
25724
25825
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
25725
25826
|
"span",
|
|
@@ -25731,7 +25832,7 @@ function SectionDetailView({
|
|
|
25731
25832
|
textTransform: "uppercase",
|
|
25732
25833
|
letterSpacing: "0.12em"
|
|
25733
25834
|
},
|
|
25734
|
-
children: guideOnly ? t2("Size Guide") : isRecommended ? t2("
|
|
25835
|
+
children: guideOnly ? t2("Size Guide") : isRecommended ? t2("Suggested Size") : t2("Your Choice · Not Suggested")
|
|
25735
25836
|
}
|
|
25736
25837
|
),
|
|
25737
25838
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5vw", marginTop: "0.35vw", marginBottom: "0.4vw" }, children: [
|
|
@@ -25891,11 +25992,11 @@ function SectionDetailView({
|
|
|
25891
25992
|
] })
|
|
25892
25993
|
] }) }),
|
|
25893
25994
|
profileCompletionCta && /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, t: t2 }),
|
|
25894
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", paddingTop: "0.6vw", borderTop: "1px solid rgba(0,0,0,0.06)", flexShrink: 0 }, children: [
|
|
25995
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail-footer", style: { display: "flex", alignItems: "center", justifyContent: "space-between", paddingTop: "0.6vw", borderTop: "1px solid rgba(0,0,0,0.06)", flexShrink: 0 }, children: [
|
|
25895
25996
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("button", { className: "ps-bp-back-btn", onClick: onBack, type: "button", style: { fontSize: "0.7vw" }, children: [
|
|
25896
25997
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-back-arrow", children: "←" }),
|
|
25897
25998
|
" ",
|
|
25898
|
-
backLabel || t2("Back
|
|
25999
|
+
backLabel || t2("Back")
|
|
25899
26000
|
] }),
|
|
25900
26001
|
onTryOn ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
25901
26002
|
"button",
|
|
@@ -25929,7 +26030,7 @@ function SectionDetailView({
|
|
|
25929
26030
|
tryOnProcessing ? `${t2("Generating try-on…")}${tryOnElapsedS > 0 ? ` ${tryOnElapsedS}s` : ""}` : t2("Try It On")
|
|
25930
26031
|
]
|
|
25931
26032
|
}
|
|
25932
|
-
) : resultActionNode ?
|
|
26033
|
+
) : resultActionNode ? resultActionNode : /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
25933
26034
|
"button",
|
|
25934
26035
|
{
|
|
25935
26036
|
onClick: continueLabel ? onContinue || onBack : onBack,
|
|
@@ -25992,6 +26093,7 @@ function SizeResultView({
|
|
|
25992
26093
|
bodyLandmarks,
|
|
25993
26094
|
faceLandmarks = null,
|
|
25994
26095
|
measurementType = "body",
|
|
26096
|
+
isAccessoryProduct = false,
|
|
25995
26097
|
estimationDone = false,
|
|
25996
26098
|
activeSection,
|
|
25997
26099
|
setActiveSection,
|
|
@@ -26051,9 +26153,10 @@ function SizeResultView({
|
|
|
26051
26153
|
) });
|
|
26052
26154
|
}
|
|
26053
26155
|
const allowAddToBag = options?.allowAddToBag !== false;
|
|
26156
|
+
const showContinue = options?.showContinue !== false;
|
|
26054
26157
|
if (allowAddToBag && canAddToBag) {
|
|
26055
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-action-group"
|
|
26056
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
26158
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-tryon-v2-action-group${!showContinue ? " ps-tryon-v2-action-group-single" : ""}`, children: [
|
|
26159
|
+
showContinue && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
26057
26160
|
"button",
|
|
26058
26161
|
{
|
|
26059
26162
|
className: "ps-tryon-v2-cta ps-tryon-v2-cta-secondary",
|
|
@@ -26082,6 +26185,9 @@ function SizeResultView({
|
|
|
26082
26185
|
)
|
|
26083
26186
|
] });
|
|
26084
26187
|
}
|
|
26188
|
+
if (!showContinue) {
|
|
26189
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-action-group ps-tryon-v2-action-group-single", "aria-hidden": "true" });
|
|
26190
|
+
}
|
|
26085
26191
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
26086
26192
|
"button",
|
|
26087
26193
|
{
|
|
@@ -26118,13 +26224,13 @@ function SizeResultView({
|
|
|
26118
26224
|
return /^standard(?:\s+size)?$/i.test(cleaned);
|
|
26119
26225
|
});
|
|
26120
26226
|
if (standardIdx >= 0) return standardIdx;
|
|
26121
|
-
const
|
|
26122
|
-
if (
|
|
26227
|
+
const suggested = String(sizingResult?.recommendedSize || "").trim();
|
|
26228
|
+
if (suggested) {
|
|
26123
26229
|
const byRecommendedValue = sizeGuide.headers.findIndex((h, c) => {
|
|
26124
26230
|
const cleaned = h.trim().replace(/\(.*?\)/g, "").trim();
|
|
26125
26231
|
const sizeLikeHeader = /^(size|sizes|taglia|größe|taille|standard)$/i.test(cleaned);
|
|
26126
26232
|
const alphaSizeColumn = rows.some((r2) => /^(XXS|XS|S|M|L|XL|XXL|XXXL|[3-9]XL|ONE SIZE)$/i.test(cellVal(r2, c, h)));
|
|
26127
|
-
return (sizeLikeHeader || alphaSizeColumn) && rows.some((r2) => cellVal(r2, c, h) ===
|
|
26233
|
+
return (sizeLikeHeader || alphaSizeColumn) && rows.some((r2) => cellVal(r2, c, h) === suggested);
|
|
26128
26234
|
});
|
|
26129
26235
|
if (byRecommendedValue >= 0) return byRecommendedValue;
|
|
26130
26236
|
}
|
|
@@ -26422,7 +26528,7 @@ function SizeResultView({
|
|
|
26422
26528
|
const profileCompletionCta = showProfileCompletionCta && onProfileCompletionCta ? { onClick: onProfileCompletionCta } : null;
|
|
26423
26529
|
const carouselItems = productCarouselItems?.filter((item) => item.image) ?? [];
|
|
26424
26530
|
const hasCarousel = carouselItems.length > 0 || !!(productImages && productImages.length > 0);
|
|
26425
|
-
const isAccessory = measurementType === "face" || measurementType === "head" || measurementType === "wrist";
|
|
26531
|
+
const isAccessory = isAccessoryProduct || measurementType === "face" || measurementType === "head" || measurementType === "wrist";
|
|
26426
26532
|
const suppressFitOverlayActions = isAccessory || measurementType === "foot";
|
|
26427
26533
|
const noFit = sizingResult?.found === false;
|
|
26428
26534
|
const guideOnlyResult = !!(sizingResult?.guideOnly || sizingResult?.oneSize);
|
|
@@ -26524,10 +26630,10 @@ function SizeResultView({
|
|
|
26524
26630
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-sr-img-col", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: productImage, alt: productTitle, className: "ps-tryon-sr-product-img" }) }),
|
|
26525
26631
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sr-right-col", style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "0.8vw" }, children: [
|
|
26526
26632
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-size-loading-spinner" }),
|
|
26527
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { color: "var(--ps-text-muted)", fontSize: "0.8vw" }, children: t2("Generating your size
|
|
26633
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { color: "var(--ps-text-muted)", fontSize: "0.8vw" }, children: t2("Generating your suggested size...") })
|
|
26528
26634
|
] })
|
|
26529
26635
|
] }),
|
|
26530
|
-
isMobile && isSnapProcessing &&
|
|
26636
|
+
isMobile && isSnapProcessing && previewUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
26531
26637
|
MobileScanningView,
|
|
26532
26638
|
{
|
|
26533
26639
|
previewUrl,
|
|
@@ -26596,7 +26702,7 @@ function SizeResultView({
|
|
|
26596
26702
|
})(),
|
|
26597
26703
|
onBack: () => setActiveSection(null),
|
|
26598
26704
|
onContinue: handleContinueAction,
|
|
26599
|
-
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
|
|
26705
|
+
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
|
|
26600
26706
|
internationalSizes: entry.secResult?.internationalSizes,
|
|
26601
26707
|
productImage: tryOnProcessing && previewUrl ? previewUrl : resultImageUrl || productImage,
|
|
26602
26708
|
productTitle,
|
|
@@ -26697,7 +26803,7 @@ function SizeResultView({
|
|
|
26697
26803
|
})(),
|
|
26698
26804
|
onBack: () => setActiveSection(null),
|
|
26699
26805
|
onContinue: handleContinueAction,
|
|
26700
|
-
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
|
|
26806
|
+
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
|
|
26701
26807
|
internationalSizes: entry.secResult?.internationalSizes,
|
|
26702
26808
|
tryOnProcessing,
|
|
26703
26809
|
tryOnStartedAt,
|
|
@@ -26834,9 +26940,9 @@ function SizeResultView({
|
|
|
26834
26940
|
resultImageUrl && !tryOnProcessing && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-sr-img-actions", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TryOnExperienceFeedback, { t: t2, onSubmit: onTryOnFeedbackSubmit }) })
|
|
26835
26941
|
] })
|
|
26836
26942
|
] }),
|
|
26837
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-panel ps-tryon-v2-result-panel", children: [
|
|
26943
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-panel ps-tryon-v2-result-panel ps-tryon-v2-multi-result-panel", children: [
|
|
26838
26944
|
profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-profile-head ps-expanded", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, placement: "header", t: t2 }) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-result-copy", children: [
|
|
26839
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Size
|
|
26945
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Suggested Size") }),
|
|
26840
26946
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-v2-subtitle", children: t2("Tap any section for detailed breakdown") })
|
|
26841
26947
|
] }),
|
|
26842
26948
|
mismatchNotice,
|
|
@@ -26867,7 +26973,7 @@ function SizeResultView({
|
|
|
26867
26973
|
"span",
|
|
26868
26974
|
{
|
|
26869
26975
|
className: `ps-tryon-sr-card-v2-rec-pill${isOverridden ? " is-overridden" : ""}`,
|
|
26870
|
-
children: isOverridden ? t2("YOUR SELECTION") : t2("
|
|
26976
|
+
children: isOverridden ? t2("YOUR SELECTION") : t2("SUGGESTED")
|
|
26871
26977
|
}
|
|
26872
26978
|
),
|
|
26873
26979
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ps-tryon-sr-card-v2-view", children: [
|
|
@@ -26953,7 +27059,7 @@ function SizeResultView({
|
|
|
26953
27059
|
backLabel: t2("Back"),
|
|
26954
27060
|
internationalSizes: singleInternationalSizes,
|
|
26955
27061
|
onTryOn: canAddToBag || isHistoryResult || resultImageUrl || vtoExcluded ? void 0 : handleSingleTryOn,
|
|
26956
|
-
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
|
|
27062
|
+
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
|
|
26957
27063
|
continueLabel: resultImageUrl ? resolvedContinueShoppingLabel : void 0,
|
|
26958
27064
|
tryOnProcessing,
|
|
26959
27065
|
tryOnStartedAt,
|
|
@@ -27050,7 +27156,7 @@ function SizeResultView({
|
|
|
27050
27156
|
backLabel: t2("Back"),
|
|
27051
27157
|
internationalSizes: singleInternationalSizes,
|
|
27052
27158
|
onTryOn: canAddToBag || isHistoryResult || resultImageUrl || vtoExcluded ? void 0 : handleSingleTryOn,
|
|
27053
|
-
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
|
|
27159
|
+
resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
|
|
27054
27160
|
continueLabel: resultImageUrl ? resolvedContinueShoppingLabel : void 0,
|
|
27055
27161
|
tryOnProcessing,
|
|
27056
27162
|
tryOnStartedAt,
|
|
@@ -27072,10 +27178,10 @@ function SizeResultView({
|
|
|
27072
27178
|
const rawLabelText = pendingCustomSizes[sectionName]?.displayLabel || singleResult.recommendedSize || singleResult.sizeLabel || (guideOnlyResult ? t2("One Size") : "—");
|
|
27073
27179
|
const labelText = measurementType === "foot" ? formatShoeSizeLabel(rawLabelText, shoeUserGender) : rawLabelText;
|
|
27074
27180
|
const isLong = labelText.length > 12;
|
|
27075
|
-
const badgeText = guideOnlyResult ? t2("SIZE GUIDE") : pendingCustomSizes[sectionName] ? t2("YOUR SELECTION") : t2("
|
|
27181
|
+
const badgeText = guideOnlyResult ? t2("SIZE GUIDE") : pendingCustomSizes[sectionName] ? t2("YOUR SELECTION") : t2("SUGGESTED");
|
|
27076
27182
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
27077
27183
|
profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-result-head", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-profile-head ps-expanded", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, placement: "header", t: t2 }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-result-copy ps-single-result-copy", children: [
|
|
27078
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Size
|
|
27184
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Suggested Size") }),
|
|
27079
27185
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-v2-subtitle", children: t2("Tap the card for detailed breakdown") })
|
|
27080
27186
|
] }),
|
|
27081
27187
|
profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-sep" }) : null,
|
|
@@ -27212,7 +27318,7 @@ function SizeResultView({
|
|
|
27212
27318
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Leave space above your head") }),
|
|
27213
27319
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Good lighting, plain background") })
|
|
27214
27320
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
27215
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("
|
|
27321
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Wear fitted, simple clothing") }),
|
|
27216
27322
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Standing 2-3 meters from camera") }),
|
|
27217
27323
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Neutral background with good lighting") })
|
|
27218
27324
|
] }) })
|
|
@@ -27748,7 +27854,7 @@ function PhotoGuideView({
|
|
|
27748
27854
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Leave space above your head") }),
|
|
27749
27855
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Good lighting, plain background") })
|
|
27750
27856
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
27751
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("
|
|
27857
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Wear fitted, simple clothing") }),
|
|
27752
27858
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Standing 2-3 meters from camera") }),
|
|
27753
27859
|
/* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Neutral background with good lighting") })
|
|
27754
27860
|
] }) })
|
|
@@ -27928,7 +28034,7 @@ function ProcessingView({
|
|
|
27928
28034
|
}
|
|
27929
28035
|
}, []);
|
|
27930
28036
|
const aiFacts = [
|
|
27931
|
-
t2("Our model is analyzing 150+ body landmarks for your size
|
|
28037
|
+
t2("Our model is analyzing 150+ body landmarks for your size suggestion"),
|
|
27932
28038
|
t2("Calibrating fabric drape against your body proportions"),
|
|
27933
28039
|
t2("Cross-checking fit against millions of garment patterns"),
|
|
27934
28040
|
t2("Rendering shadows and highlights to match your photo's lighting")
|
|
@@ -28168,7 +28274,7 @@ function MiniSelect$1({
|
|
|
28168
28274
|
isOpen,
|
|
28169
28275
|
onToggle,
|
|
28170
28276
|
onSelect,
|
|
28171
|
-
direction = "
|
|
28277
|
+
direction = "up"
|
|
28172
28278
|
}) {
|
|
28173
28279
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-mini-select", "data-open": isOpen ? "true" : "false", "data-dir": direction, children: [
|
|
28174
28280
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -29602,10 +29708,10 @@ function CreateProfileWizard({ onSave, onCancel, initialMode, initialDraft, dire
|
|
|
29602
29708
|
mode === "image" && imageStep === "calculating" && (() => {
|
|
29603
29709
|
const stages = [
|
|
29604
29710
|
{ title: t2("DETECTING POSE"), desc: t2("Identifying body landmarks from your photo.") },
|
|
29605
|
-
{ title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size
|
|
29711
|
+
{ title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size suggestion.") },
|
|
29606
29712
|
{ title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips.") },
|
|
29607
29713
|
{ title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide.") },
|
|
29608
|
-
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your
|
|
29714
|
+
{ title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
|
|
29609
29715
|
];
|
|
29610
29716
|
const stage = stages[Math.min(scanStageIdx, stages.length - 1)] ?? stages[0];
|
|
29611
29717
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-cpw-fade-in", style: { display: "flex", flexDirection: "column", flex: 1, overflow: "auto" }, children: estimating ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", gap: "1.2vw", padding: "1.5vw", flex: 1 }, children: [
|
|
@@ -30385,7 +30491,7 @@ function BasicsStepMobile({
|
|
|
30385
30491
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bpm-root", children: [
|
|
30386
30492
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bpm-header", children: [
|
|
30387
30493
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "ps-bpm-title", children: t2("Body Measurements") }),
|
|
30388
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-bpm-subtitle", children: t2("Enter your details for a bespoke size
|
|
30494
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-bpm-subtitle", children: t2("Enter your details for a bespoke size suggestion") })
|
|
30389
30495
|
] }),
|
|
30390
30496
|
activeProfileName && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card", children: [
|
|
30391
30497
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card-copy", children: [
|
|
@@ -31120,7 +31226,7 @@ function MiniSelect({
|
|
|
31120
31226
|
isOpen,
|
|
31121
31227
|
onToggle,
|
|
31122
31228
|
onSelect,
|
|
31123
|
-
direction = "
|
|
31229
|
+
direction = "up"
|
|
31124
31230
|
}) {
|
|
31125
31231
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-mini-select", "data-open": isOpen ? "true" : "false", "data-dir": direction, children: [
|
|
31126
31232
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -31931,7 +32037,8 @@ function BodyProfileView({
|
|
|
31931
32037
|
setBandSize(null);
|
|
31932
32038
|
setCupSize(null);
|
|
31933
32039
|
setInlineBraOpen(null);
|
|
31934
|
-
}
|
|
32040
|
+
},
|
|
32041
|
+
direction: "up"
|
|
31935
32042
|
}
|
|
31936
32043
|
) })
|
|
31937
32044
|
] }),
|
|
@@ -31948,7 +32055,8 @@ function BodyProfileView({
|
|
|
31948
32055
|
onSelect: (v2) => {
|
|
31949
32056
|
setBandSize(v2);
|
|
31950
32057
|
setInlineBraOpen(null);
|
|
31951
|
-
}
|
|
32058
|
+
},
|
|
32059
|
+
direction: "up"
|
|
31952
32060
|
}
|
|
31953
32061
|
) })
|
|
31954
32062
|
] }),
|
|
@@ -32007,6 +32115,7 @@ function BodyProfileView({
|
|
|
32007
32115
|
const analyzeDisabled = analyzeMissing.length > 0;
|
|
32008
32116
|
const analyzeLabel = analyzeDisabled ? analyzeMissing[0] ?? t2("Analyze My Size") : t2("Analyze My Size");
|
|
32009
32117
|
const compactHeightWeightAccessory = simplePhotoOnly && simpleAccessoryLayout && !isShoeReferenceMode;
|
|
32118
|
+
const maleStandardPhotoDetails = !isWomen && !simplePhotoOnly && !isShoeReferenceMode;
|
|
32010
32119
|
if (isMobile) {
|
|
32011
32120
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-wrapper", children: [
|
|
32012
32121
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-scan-progress", children: [
|
|
@@ -32186,7 +32295,7 @@ function BodyProfileView({
|
|
|
32186
32295
|
overflow: "hidden"
|
|
32187
32296
|
},
|
|
32188
32297
|
children: [
|
|
32189
|
-
!photoPreview && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32298
|
+
!photoPreview && !compactHeightWeightAccessory && !maleStandardPhotoDetails && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32190
32299
|
"button",
|
|
32191
32300
|
{
|
|
32192
32301
|
type: "button",
|
|
@@ -32203,7 +32312,7 @@ function BodyProfileView({
|
|
|
32203
32312
|
]
|
|
32204
32313
|
}
|
|
32205
32314
|
),
|
|
32206
|
-
!photoPreview && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32315
|
+
!photoPreview && !compactHeightWeightAccessory && !maleStandardPhotoDetails && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32207
32316
|
"div",
|
|
32208
32317
|
{
|
|
32209
32318
|
role: "dialog",
|
|
@@ -32497,19 +32606,118 @@ function BodyProfileView({
|
|
|
32497
32606
|
flex: compactHeightWeightAccessory ? "0 1 min(34vw, 360px)" : 1,
|
|
32498
32607
|
display: "flex",
|
|
32499
32608
|
flexDirection: "column",
|
|
32500
|
-
justifyContent:
|
|
32609
|
+
justifyContent: "flex-start",
|
|
32501
32610
|
position: "relative",
|
|
32502
|
-
gap: compactHeightWeightAccessory ? "
|
|
32611
|
+
gap: compactHeightWeightAccessory ? "0.8vw" : "0.8vw",
|
|
32503
32612
|
minWidth: compactHeightWeightAccessory ? "280px" : void 0
|
|
32504
32613
|
}, children: isShoeReferenceMode ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-shoe-ref-desktop", children: renderShoeReferenceFields() }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
32505
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
32506
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
32507
|
-
|
|
32508
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
32509
|
-
|
|
32510
|
-
|
|
32614
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
32615
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-bp-photo-details-head${compactHeightWeightAccessory || maleStandardPhotoDetails ? " ps-bp-photo-details-head-simple" : ""}`, children: [
|
|
32616
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { children: t2("Body details") }),
|
|
32617
|
+
compactHeightWeightAccessory || maleStandardPhotoDetails ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32618
|
+
"button",
|
|
32619
|
+
{
|
|
32620
|
+
type: "button",
|
|
32621
|
+
onClick: (e) => {
|
|
32622
|
+
e.stopPropagation();
|
|
32623
|
+
setPhotoHelpOpen((v2) => !v2);
|
|
32624
|
+
},
|
|
32625
|
+
"aria-label": t2("How to take a good photo"),
|
|
32626
|
+
title: t2("How to take a good photo"),
|
|
32627
|
+
className: `ps-bp-photo-help-chip${photoHelpOpen ? " ps-active" : ""}`,
|
|
32628
|
+
style: { position: "static", maxWidth: "none", flexShrink: 0 },
|
|
32629
|
+
children: [
|
|
32630
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-photo-help-chip-mark", "aria-hidden": "true", children: "?" }),
|
|
32631
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t2("How to take a good photo") })
|
|
32632
|
+
]
|
|
32633
|
+
}
|
|
32634
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-system-toggle ps-bp-system-toggle-compact", children: [
|
|
32635
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${!isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToMetric, type: "button", children: t2("Metric") }),
|
|
32636
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToImperial, type: "button", children: t2("Imperial") })
|
|
32637
|
+
] })
|
|
32638
|
+
] }),
|
|
32639
|
+
(compactHeightWeightAccessory || maleStandardPhotoDetails) && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { margin: "0.2vw 0 0", fontSize: "0.65vw", color: "var(--ps-text-muted)" }, children: t2("These calibrate the AI — all required.") })
|
|
32511
32640
|
] }),
|
|
32512
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
32641
|
+
(compactHeightWeightAccessory || maleStandardPhotoDetails) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-bp-system-toggle ps-bp-system-toggle-compact${maleStandardPhotoDetails ? " ps-bp-system-toggle-large" : ""}`, style: { alignSelf: "center", marginTop: "1.2vw" }, children: [
|
|
32642
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${!isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToMetric, type: "button", children: t2("Metric") }),
|
|
32643
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToImperial, type: "button", children: t2("Imperial") })
|
|
32644
|
+
] }),
|
|
32645
|
+
(compactHeightWeightAccessory || maleStandardPhotoDetails) && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
32646
|
+
"div",
|
|
32647
|
+
{
|
|
32648
|
+
role: "dialog",
|
|
32649
|
+
"aria-label": t2("How to take the best photo"),
|
|
32650
|
+
style: {
|
|
32651
|
+
position: "absolute",
|
|
32652
|
+
top: "2.2vw",
|
|
32653
|
+
right: 0,
|
|
32654
|
+
width: "min(360px, 22vw)",
|
|
32655
|
+
background: "#FFFFFF",
|
|
32656
|
+
border: "1px solid var(--ps-border-subtle)",
|
|
32657
|
+
borderRadius: "0.8vw",
|
|
32658
|
+
boxShadow: "0 20px 40px -12px rgba(17,24,39,0.25), 0 8px 16px -8px rgba(17,24,39,0.15)",
|
|
32659
|
+
padding: "0.8vw 1vw",
|
|
32660
|
+
display: "flex",
|
|
32661
|
+
flexDirection: "column",
|
|
32662
|
+
gap: "0.6vw",
|
|
32663
|
+
maxHeight: "min(70dvh, 520px)",
|
|
32664
|
+
overflowY: "auto",
|
|
32665
|
+
zIndex: 5
|
|
32666
|
+
},
|
|
32667
|
+
children: [
|
|
32668
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
|
|
32669
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "0.8vw", fontWeight: 700, color: "var(--ps-text-primary)" }, children: t2("How to take the best photo") }),
|
|
32670
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
32671
|
+
"button",
|
|
32672
|
+
{
|
|
32673
|
+
type: "button",
|
|
32674
|
+
onClick: () => setPhotoHelpOpen(false),
|
|
32675
|
+
"aria-label": t2("Close"),
|
|
32676
|
+
style: { width: "1.4vw", height: "1.4vw", borderRadius: "50%", background: "transparent", border: "none", color: "var(--ps-text-muted)", cursor: "pointer", fontSize: "1vw", lineHeight: 1 },
|
|
32677
|
+
children: "×"
|
|
32678
|
+
}
|
|
32679
|
+
)
|
|
32680
|
+
] }),
|
|
32681
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#ddfbe7", borderRadius: "0.5vw", padding: "0.55vw 0.75vw" }, children: [
|
|
32682
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { color: "#1c9d4c", fontSize: "0.7vw", fontWeight: 700, marginBottom: "0.3vw" }, children: [
|
|
32683
|
+
"✓ ",
|
|
32684
|
+
t2("Do")
|
|
32685
|
+
] }),
|
|
32686
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { fontSize: "0.6vw", color: "var(--ps-text-primary)", lineHeight: 1.6 }, children: [
|
|
32687
|
+
t2("Stand facing the camera with your full body in frame"),
|
|
32688
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
32689
|
+
t2("Use natural or even lighting"),
|
|
32690
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
32691
|
+
t2("Wear fitted, simple clothing"),
|
|
32692
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
32693
|
+
t2("Choose a plain background")
|
|
32694
|
+
] })
|
|
32695
|
+
] }),
|
|
32696
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#fee2e2", borderRadius: "0.5vw", padding: "0.55vw 0.75vw" }, children: [
|
|
32697
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { color: "#dc2626", fontSize: "0.7vw", fontWeight: 700, marginBottom: "0.3vw" }, children: [
|
|
32698
|
+
"✕ ",
|
|
32699
|
+
t2("Don't")
|
|
32700
|
+
] }),
|
|
32701
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { fontSize: "0.6vw", color: "var(--ps-text-primary)", lineHeight: 1.6 }, children: [
|
|
32702
|
+
t2("Don't wear loose, baggy, or layered clothing"),
|
|
32703
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
32704
|
+
t2("Don't sit, pose, or bend your body"),
|
|
32705
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
32706
|
+
t2("Don't use strong backlighting")
|
|
32707
|
+
] })
|
|
32708
|
+
] }),
|
|
32709
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#dbeafe", borderRadius: "0.5vw", padding: "0.55vw 0.75vw", fontSize: "0.58vw", color: "var(--ps-text-primary)", lineHeight: 1.5 }, children: [
|
|
32710
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("strong", { children: [
|
|
32711
|
+
t2("Quick Tip"),
|
|
32712
|
+
":"
|
|
32713
|
+
] }),
|
|
32714
|
+
" ",
|
|
32715
|
+
t2("The simpler your photo is, the more accurate your virtual try-on results will be.")
|
|
32716
|
+
] })
|
|
32717
|
+
]
|
|
32718
|
+
}
|
|
32719
|
+
),
|
|
32720
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { marginTop: compactHeightWeightAccessory || maleStandardPhotoDetails ? "auto" : "0.15vw", marginBottom: compactHeightWeightAccessory || maleStandardPhotoDetails ? "auto" : 0, minHeight: 0 }, children: [
|
|
32513
32721
|
activeProfileName && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card ps-bp-profile-card-compact", children: [
|
|
32514
32722
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card-copy", children: [
|
|
32515
32723
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-profile-card-eyebrow", children: t2("Active Profile") }),
|
|
@@ -32553,7 +32761,8 @@ function BodyProfileView({
|
|
|
32553
32761
|
setBandSize(null);
|
|
32554
32762
|
setCupSize(null);
|
|
32555
32763
|
setInlineBraOpen(null);
|
|
32556
|
-
}
|
|
32764
|
+
},
|
|
32765
|
+
direction: "up"
|
|
32557
32766
|
}
|
|
32558
32767
|
) })
|
|
32559
32768
|
] }),
|
|
@@ -32570,7 +32779,8 @@ function BodyProfileView({
|
|
|
32570
32779
|
onSelect: (v2) => {
|
|
32571
32780
|
setBandSize(v2);
|
|
32572
32781
|
setInlineBraOpen(null);
|
|
32573
|
-
}
|
|
32782
|
+
},
|
|
32783
|
+
direction: "up"
|
|
32574
32784
|
}
|
|
32575
32785
|
) })
|
|
32576
32786
|
] }),
|
|
@@ -35640,7 +35850,7 @@ function PrimeStyleTryonInner({
|
|
|
35640
35850
|
const body = await resp.text().catch(() => "");
|
|
35641
35851
|
console.error("[PS-SDK] face-recommend failed:", resp.status, body);
|
|
35642
35852
|
await minVisible;
|
|
35643
|
-
setErrorMessage(t2("Unable to get size
|
|
35853
|
+
setErrorMessage(t2("Unable to get a size suggestion. Please try again."));
|
|
35644
35854
|
setView("error");
|
|
35645
35855
|
setEstimationDone(true);
|
|
35646
35856
|
}
|
|
@@ -35771,7 +35981,7 @@ function PrimeStyleTryonInner({
|
|
|
35771
35981
|
} else {
|
|
35772
35982
|
const errBody = await res.text().catch(() => "");
|
|
35773
35983
|
console.error("[PS-SDK] Sizing recommend failed:", res.status, errBody);
|
|
35774
|
-
setErrorMessage(t2("Unable to get size
|
|
35984
|
+
setErrorMessage(t2("Unable to get a size suggestion. Please try again."));
|
|
35775
35985
|
setView("error");
|
|
35776
35986
|
setEstimationDone(true);
|
|
35777
35987
|
}
|
|
@@ -36005,7 +36215,7 @@ function PrimeStyleTryonInner({
|
|
|
36005
36215
|
await Promise.all([minVisible2, landmarksVisibleMin || Promise.resolve()]);
|
|
36006
36216
|
const errBody = await recRes.text().catch(() => "");
|
|
36007
36217
|
console.error("[ps-sdk] face-recommend failed:", recRes.status, errBody);
|
|
36008
|
-
setErrorMessage(t2("Unable to get size
|
|
36218
|
+
setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
|
|
36009
36219
|
setEstimationDone(true);
|
|
36010
36220
|
setSizingLoading(false);
|
|
36011
36221
|
setView("error");
|
|
@@ -36014,7 +36224,7 @@ function PrimeStyleTryonInner({
|
|
|
36014
36224
|
} catch (err) {
|
|
36015
36225
|
console.error("[ps-sdk] face-recommend failed:", err);
|
|
36016
36226
|
await Promise.all([minVisible2, landmarksVisibleMin || Promise.resolve()]);
|
|
36017
|
-
setErrorMessage(t2("Unable to get size
|
|
36227
|
+
setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
|
|
36018
36228
|
setEstimationDone(true);
|
|
36019
36229
|
setSizingLoading(false);
|
|
36020
36230
|
setView("error");
|
|
@@ -36145,7 +36355,7 @@ function PrimeStyleTryonInner({
|
|
|
36145
36355
|
} else {
|
|
36146
36356
|
const errBody = await recRes.text().catch(() => "");
|
|
36147
36357
|
console.error("[ps-sdk] Sizing recommend failed:", recRes.status, errBody);
|
|
36148
|
-
setErrorMessage(t2("Unable to get size
|
|
36358
|
+
setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
|
|
36149
36359
|
setEstimationDone(true);
|
|
36150
36360
|
setSizingLoading(false);
|
|
36151
36361
|
setView("error");
|
|
@@ -37136,6 +37346,7 @@ function PrimeStyleTryonInner({
|
|
|
37136
37346
|
bodyLandmarks,
|
|
37137
37347
|
faceLandmarks,
|
|
37138
37348
|
measurementType: measurementType === "body-basic" ? "body" : measurementType,
|
|
37349
|
+
isAccessoryProduct: measurementType === "body-basic" || measurementType === "face" || measurementType === "head" || measurementType === "wrist",
|
|
37139
37350
|
activeSection,
|
|
37140
37351
|
setActiveSection,
|
|
37141
37352
|
onResetTryOn: () => {
|