@primestyleai/tryon 3.4.1 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +433 -433
- package/dist/react/index.js +255 -85
- package/logo.svg +46 -46
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -21,6 +21,22 @@ function lsSet(key, value) {
|
|
|
21
21
|
} catch {
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
const FALLBACK_FIELDS_FEMALE = [
|
|
25
|
+
{ key: "bust", label: "Bust", required: true, unit: "cm", placeholder: "e.g. 88", category: "body" },
|
|
26
|
+
{ key: "waist", label: "Waist", required: true, unit: "cm", placeholder: "e.g. 70", category: "body" },
|
|
27
|
+
{ key: "hips", label: "Hips", required: true, unit: "cm", placeholder: "e.g. 96", category: "body" },
|
|
28
|
+
{ key: "shoulderWidth", label: "Shoulders", required: false, unit: "cm", placeholder: "e.g. 39", category: "body" },
|
|
29
|
+
{ key: "inseam", label: "Inseam", required: false, unit: "cm", placeholder: "e.g. 76", category: "body" },
|
|
30
|
+
{ key: "footLengthCm", label: "Foot length", required: false, unit: "cm", placeholder: "e.g. 24", category: "shoe" }
|
|
31
|
+
];
|
|
32
|
+
const FALLBACK_FIELDS_MALE = [
|
|
33
|
+
{ key: "chest", label: "Chest", required: true, unit: "cm", placeholder: "e.g. 104", category: "body" },
|
|
34
|
+
{ key: "waist", label: "Waist", required: true, unit: "cm", placeholder: "e.g. 84", category: "body" },
|
|
35
|
+
{ key: "shoulderWidth", label: "Shoulders", required: false, unit: "cm", placeholder: "e.g. 46", category: "body" },
|
|
36
|
+
{ key: "sleeveLength", label: "Sleeve", required: false, unit: "cm", placeholder: "e.g. 64", category: "body" },
|
|
37
|
+
{ key: "inseam", label: "Inseam", required: false, unit: "cm", placeholder: "e.g. 81", category: "body" },
|
|
38
|
+
{ key: "footLengthCm", label: "Foot length", required: false, unit: "cm", placeholder: "e.g. 27", category: "shoe" }
|
|
39
|
+
];
|
|
24
40
|
const SIZING_COUNTRIES = [
|
|
25
41
|
{ code: "US", label: "United States" },
|
|
26
42
|
{ code: "UK", label: "United Kingdom" },
|
|
@@ -425,6 +441,12 @@ function PrimeStyleTryonInner({
|
|
|
425
441
|
}
|
|
426
442
|
}
|
|
427
443
|
}, [onComplete, onError, cleanupJob]);
|
|
444
|
+
const dynamicFields = useMemo(() => {
|
|
445
|
+
if (sizeGuide?.found && sizeGuide.requiredFields && sizeGuide.requiredFields.length > 0) {
|
|
446
|
+
return sizeGuide.requiredFields;
|
|
447
|
+
}
|
|
448
|
+
return formGender === "female" ? FALLBACK_FIELDS_FEMALE : FALLBACK_FIELDS_MALE;
|
|
449
|
+
}, [sizeGuide, formGender]);
|
|
428
450
|
const submitSizing = useCallback(async () => {
|
|
429
451
|
if (!apiRef.current) return;
|
|
430
452
|
const baseUrl = getApiUrl(apiUrl);
|
|
@@ -435,10 +457,17 @@ function PrimeStyleTryonInner({
|
|
|
435
457
|
product: { title: productTitle, description: "", variants: [] }
|
|
436
458
|
};
|
|
437
459
|
if (sizeGuide?.found) payload.sizeGuide = sizeGuide;
|
|
460
|
+
payload.sizingUnit = sizingUnit;
|
|
438
461
|
if (sizingMethod === "exact") {
|
|
439
|
-
const m = { gender: formRef.current.gender || "male" };
|
|
440
|
-
const
|
|
441
|
-
for (const
|
|
462
|
+
const m = { gender: formRef.current.gender || "male", sizingUnit };
|
|
463
|
+
const numericKeys = /* @__PURE__ */ new Set();
|
|
464
|
+
for (const f of dynamicFields) {
|
|
465
|
+
if (f.unit !== "size" && !["shoeEU", "shoeUS", "shoeUK"].includes(f.key)) numericKeys.add(f.key);
|
|
466
|
+
}
|
|
467
|
+
for (const k of ["chest", "bust", "waist", "hips", "shoulderWidth", "sleeveLength", "inseam", "neckCircumference", "footLengthCm"]) {
|
|
468
|
+
if (formRef.current[k]) numericKeys.add(k);
|
|
469
|
+
}
|
|
470
|
+
for (const k of numericKeys) {
|
|
442
471
|
if (formRef.current[k]) m[k] = sizingUnit === "in" ? inToCm(parseFloat(formRef.current[k])) : parseFloat(formRef.current[k]);
|
|
443
472
|
}
|
|
444
473
|
if (formRef.current.shoeEU) m.shoeEU = formRef.current.shoeEU;
|
|
@@ -450,7 +479,6 @@ function PrimeStyleTryonInner({
|
|
|
450
479
|
const qHeight = heightUnit === "ft" ? ftInToCm(parseFloat(formRef.current.heightFeet || "0"), parseFloat(formRef.current.heightInches || "0")) : parseFloat(formRef.current.height || "0");
|
|
451
480
|
const qWeight = weightUnit === "lbs" ? lbsToKg(parseFloat(formRef.current.weight || "0")) : parseFloat(formRef.current.weight || "0");
|
|
452
481
|
if (!qHeight || qHeight < 100 || !qWeight || qWeight < 30) {
|
|
453
|
-
console.warn("[PrimeStyle] Skipping sizing — invalid height/weight:", { qHeight, qWeight });
|
|
454
482
|
setSizingLoading(false);
|
|
455
483
|
return;
|
|
456
484
|
}
|
|
@@ -470,20 +498,12 @@ function PrimeStyleTryonInner({
|
|
|
470
498
|
const data = await res.json();
|
|
471
499
|
setSizingResult(data);
|
|
472
500
|
} else {
|
|
473
|
-
const errBody = await res.text().catch(() => "");
|
|
474
|
-
console.error("[PrimeStyle] Sizing API error:", res.status, errBody);
|
|
475
|
-
try {
|
|
476
|
-
const parsed = JSON.parse(errBody);
|
|
477
|
-
if (parsed.issues) console.error("[PrimeStyle] Validation issues:", JSON.stringify(parsed.issues, null, 2));
|
|
478
|
-
} catch {
|
|
479
|
-
}
|
|
480
501
|
}
|
|
481
|
-
} catch
|
|
482
|
-
console.warn("[PrimeStyle] Sizing request failed:", err);
|
|
502
|
+
} catch {
|
|
483
503
|
} finally {
|
|
484
504
|
setSizingLoading(false);
|
|
485
505
|
}
|
|
486
|
-
}, [apiUrl, sizingMethod, sizingCountry, heightUnit, weightUnit, sizingUnit, sizeGuide, productTitle]);
|
|
506
|
+
}, [apiUrl, sizingMethod, sizingCountry, heightUnit, weightUnit, sizingUnit, sizeGuide, productTitle, dynamicFields]);
|
|
487
507
|
const handleSubmit = useCallback(async () => {
|
|
488
508
|
if (!selectedFile || !apiRef.current || !sseRef.current) {
|
|
489
509
|
const msg = !apiRef.current ? "Missing NEXT_PUBLIC_PRIMESTYLE_API_KEY" : "No file selected";
|
|
@@ -584,6 +604,11 @@ function PrimeStyleTryonInner({
|
|
|
584
604
|
if (p.shoeUS) fd.shoeUS = p.shoeUS;
|
|
585
605
|
if (p.shoeUK) fd.shoeUK = p.shoeUK;
|
|
586
606
|
if (p.fitPreference) fd.fitPreference = p.fitPreference;
|
|
607
|
+
if (p.customMeasurements) {
|
|
608
|
+
for (const [key, value] of Object.entries(p.customMeasurements)) {
|
|
609
|
+
fd[key] = String(value);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
587
612
|
formRef.current = fd;
|
|
588
613
|
setFormGender(fd.gender || "male");
|
|
589
614
|
if (p.country) setSizingCountry(p.country);
|
|
@@ -619,6 +644,33 @@ function PrimeStyleTryonInner({
|
|
|
619
644
|
weightUnit,
|
|
620
645
|
createdAt: Date.now()
|
|
621
646
|
};
|
|
647
|
+
const KNOWN_PROFILE_KEYS = /* @__PURE__ */ new Set([
|
|
648
|
+
"chest",
|
|
649
|
+
"bust",
|
|
650
|
+
"waist",
|
|
651
|
+
"hips",
|
|
652
|
+
"shoulderWidth",
|
|
653
|
+
"sleeveLength",
|
|
654
|
+
"inseam",
|
|
655
|
+
"neckCircumference",
|
|
656
|
+
"footLengthCm",
|
|
657
|
+
"shoeEU",
|
|
658
|
+
"shoeUS",
|
|
659
|
+
"shoeUK",
|
|
660
|
+
"fitPreference",
|
|
661
|
+
"gender",
|
|
662
|
+
"height",
|
|
663
|
+
"weight",
|
|
664
|
+
"heightFeet",
|
|
665
|
+
"heightInches"
|
|
666
|
+
]);
|
|
667
|
+
const custom = {};
|
|
668
|
+
for (const [key, val] of Object.entries(formRef.current)) {
|
|
669
|
+
if (!KNOWN_PROFILE_KEYS.has(key) && val && !isNaN(Number(val))) {
|
|
670
|
+
custom[key] = parseFloat(val);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
if (Object.keys(custom).length > 0) p.customMeasurements = custom;
|
|
622
674
|
setProfiles((prev) => {
|
|
623
675
|
const idx = prev.findIndex((x) => x.id === id);
|
|
624
676
|
if (idx >= 0) {
|
|
@@ -830,7 +882,7 @@ function PrimeStyleTryonInner({
|
|
|
830
882
|
/* @__PURE__ */ jsx("div", { className: "ps-tryon-choice-icon", children: /* @__PURE__ */ jsx(RulerIcon, { size: 24 }) }),
|
|
831
883
|
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-choice-info", children: [
|
|
832
884
|
/* @__PURE__ */ jsx("div", { className: "ps-tryon-choice-title", children: "Enter my measurements" }),
|
|
833
|
-
/* @__PURE__ */ jsx("div", { className: "ps-tryon-choice-desc", children: "Chest, waist, hips, shoes & more" })
|
|
885
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-choice-desc", children: sizeGuide?.requiredFields?.length ? sizeGuide.requiredFields.filter((f) => f.required).slice(0, 3).map((f) => f.label).join(", ") + (sizeGuide.requiredFields.length > 3 ? " & more" : "") : "Chest, waist, hips, shoes & more" })
|
|
834
886
|
] }),
|
|
835
887
|
/* @__PURE__ */ jsx("span", { className: "ps-tryon-choice-badge", children: "Best accuracy" })
|
|
836
888
|
] }),
|
|
@@ -900,42 +952,77 @@ function PrimeStyleTryonInner({
|
|
|
900
952
|
setHeightUnit(v === "cm" ? "cm" : "ft");
|
|
901
953
|
setWeightUnit(v === "cm" ? "kg" : "lbs");
|
|
902
954
|
} }) }),
|
|
903
|
-
sizingMethod === "exact" ? /* @__PURE__ */
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
/* @__PURE__ */ jsx(
|
|
914
|
-
|
|
915
|
-
/* @__PURE__ */ jsx(InputRow, { label: "Inseam", fieldKey: "inseam", placeholder: isCm ? "e.g. 81" : "e.g. 32", type: "number", unit: sizingUnit })
|
|
916
|
-
] }),
|
|
917
|
-
isFemale && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-input-row", children: [
|
|
918
|
-
/* @__PURE__ */ jsx("label", { children: "Fit type" }),
|
|
919
|
-
/* @__PURE__ */ jsx("div", { className: "ps-tryon-unit-toggle", children: ["petite", "standard", "tall", "plus"].map((fp) => /* @__PURE__ */ jsx(
|
|
920
|
-
"button",
|
|
955
|
+
sizingMethod === "exact" ? /* @__PURE__ */ jsx(Fragment, { children: (() => {
|
|
956
|
+
const reqFields = dynamicFields.filter((f) => f.required);
|
|
957
|
+
const optFields = dynamicFields.filter((f) => !f.required);
|
|
958
|
+
const renderField = (field) => {
|
|
959
|
+
if (["shoeEU", "shoeUS", "shoeUK"].includes(field.key)) {
|
|
960
|
+
return /* @__PURE__ */ jsx(InputRow, { label: `${field.label} *`, fieldKey: field.key, placeholder: field.placeholder }, field.key);
|
|
961
|
+
}
|
|
962
|
+
const phCm = field.placeholder?.replace(/[^0-9.]/g, "") || "0";
|
|
963
|
+
const phIn = String(field.unit === "cm" ? Math.round(parseFloat(phCm) / 2.54) : phCm);
|
|
964
|
+
const placeholder = isCm ? field.placeholder || "" : `e.g. ${phIn}`;
|
|
965
|
+
return /* @__PURE__ */ jsx(
|
|
966
|
+
InputRow,
|
|
921
967
|
{
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
},
|
|
928
|
-
children: fp.charAt(0).toUpperCase() + fp.slice(1)
|
|
968
|
+
label: `${field.label}${field.required ? " *" : ""}`,
|
|
969
|
+
fieldKey: field.key,
|
|
970
|
+
placeholder,
|
|
971
|
+
type: "number",
|
|
972
|
+
unit: field.unit === "cm" ? sizingUnit : void 0
|
|
929
973
|
},
|
|
930
|
-
|
|
931
|
-
)
|
|
932
|
-
|
|
933
|
-
/* @__PURE__ */ jsxs(
|
|
934
|
-
/* @__PURE__ */
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
974
|
+
field.key
|
|
975
|
+
);
|
|
976
|
+
};
|
|
977
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
978
|
+
reqFields.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
979
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-section-label", children: "Required for this product" }),
|
|
980
|
+
reqFields.map(renderField)
|
|
981
|
+
] }),
|
|
982
|
+
isFemale && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-input-row", children: [
|
|
983
|
+
/* @__PURE__ */ jsx("label", { children: "Fit type" }),
|
|
984
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-unit-toggle", children: ["petite", "standard", "tall", "plus"].map((fp) => /* @__PURE__ */ jsx(
|
|
985
|
+
"button",
|
|
986
|
+
{
|
|
987
|
+
className: `ps-tryon-unit-btn${(formRef.current.fitPreference || "standard") === fp ? " ps-active" : ""}`,
|
|
988
|
+
onClick: (e) => {
|
|
989
|
+
updateField("fitPreference", fp);
|
|
990
|
+
const btns = e.target.parentElement.querySelectorAll(".ps-tryon-unit-btn");
|
|
991
|
+
btns.forEach((b) => b.classList.toggle("ps-active", b.textContent?.toLowerCase() === fp));
|
|
992
|
+
},
|
|
993
|
+
children: fp.charAt(0).toUpperCase() + fp.slice(1)
|
|
994
|
+
},
|
|
995
|
+
fp
|
|
996
|
+
)) })
|
|
997
|
+
] }),
|
|
998
|
+
optFields.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-optional-section", children: [
|
|
999
|
+
/* @__PURE__ */ jsxs("button", { className: "ps-tryon-optional-toggle", onClick: (e) => {
|
|
1000
|
+
const wrap = e.target.closest(".ps-tryon-optional-section").querySelector(".ps-tryon-optional-fields");
|
|
1001
|
+
const arrow = e.target.closest(".ps-tryon-optional-toggle").querySelector(".ps-tryon-chevron");
|
|
1002
|
+
if (wrap) {
|
|
1003
|
+
const open = wrap.style.display !== "none";
|
|
1004
|
+
wrap.style.display = open ? "none" : "flex";
|
|
1005
|
+
if (arrow) arrow.style.transform = open ? "rotate(0deg)" : "rotate(180deg)";
|
|
1006
|
+
}
|
|
1007
|
+
}, children: [
|
|
1008
|
+
/* @__PURE__ */ jsx("span", { children: "Optional — improve accuracy & save to profile" }),
|
|
1009
|
+
/* @__PURE__ */ jsx("span", { className: "ps-tryon-chevron", children: "▾" })
|
|
1010
|
+
] }),
|
|
1011
|
+
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-optional-fields", style: { display: "none" }, children: [
|
|
1012
|
+
optFields.map(renderField),
|
|
1013
|
+
!dynamicFields.some((f) => f.category === "shoe") && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1014
|
+
/* @__PURE__ */ jsx(InputRow, { label: "Foot length", fieldKey: "footLengthCm", placeholder: isCm ? "e.g. 27" : "e.g. 10.5", type: "number", unit: sizingUnit }),
|
|
1015
|
+
/* @__PURE__ */ jsx(InputRow, { label: shoeField.label, fieldKey: shoeField.key, placeholder: shoeField.ph })
|
|
1016
|
+
] })
|
|
1017
|
+
] })
|
|
1018
|
+
] }),
|
|
1019
|
+
optFields.length === 0 && !dynamicFields.some((f) => f.category === "shoe") && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-shoe-section", children: [
|
|
1020
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-shoe-title", children: "Shoe sizing (optional)" }),
|
|
1021
|
+
/* @__PURE__ */ jsx(InputRow, { label: "Foot length", fieldKey: "footLengthCm", placeholder: isCm ? "e.g. 27" : "e.g. 10.5", type: "number", unit: sizingUnit }),
|
|
1022
|
+
/* @__PURE__ */ jsx(InputRow, { label: shoeField.label, fieldKey: shoeField.key, placeholder: shoeField.ph })
|
|
1023
|
+
] })
|
|
1024
|
+
] });
|
|
1025
|
+
})() }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
939
1026
|
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-input-row", children: [
|
|
940
1027
|
/* @__PURE__ */ jsx("label", { children: "Height *" }),
|
|
941
1028
|
heightUnit === "ft" ? /* @__PURE__ */ jsxs("div", { className: "ps-tryon-height-ft", children: [
|
|
@@ -983,7 +1070,10 @@ function PrimeStyleTryonInner({
|
|
|
983
1070
|
function ProcessingView() {
|
|
984
1071
|
return /* @__PURE__ */ jsxs("div", { className: "ps-tryon-processing", children: [
|
|
985
1072
|
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-processing-image-wrap", children: [
|
|
986
|
-
previewUrl && /* @__PURE__ */
|
|
1073
|
+
previewUrl && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1074
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-processing-blur", style: { backgroundImage: `url(${previewUrl})` } }),
|
|
1075
|
+
/* @__PURE__ */ jsx("img", { src: previewUrl, alt: "Your photo", className: "ps-tryon-processing-model" })
|
|
1076
|
+
] }),
|
|
987
1077
|
/* @__PURE__ */ jsx("div", { className: "ps-tryon-scan-line" }),
|
|
988
1078
|
/* @__PURE__ */ jsx("div", { className: "ps-tryon-scan-overlay" })
|
|
989
1079
|
] }),
|
|
@@ -999,6 +1089,8 @@ function PrimeStyleTryonInner({
|
|
|
999
1089
|
const hasSizing = !!sizingResult || sizingLoading;
|
|
1000
1090
|
const hasBoth = !!resultImageUrl && hasSizing;
|
|
1001
1091
|
const [profileName, setProfileName] = useState("");
|
|
1092
|
+
const [showFitDetails, setShowFitDetails] = useState(false);
|
|
1093
|
+
const confidenceLabel = sizingResult?.confidence === "high" ? "High Confidence" : sizingResult?.confidence === "medium" ? "Medium Confidence" : sizingResult?.confidence === "low" ? "Low Confidence" : "";
|
|
1002
1094
|
return /* @__PURE__ */ jsxs("div", { className: `ps-tryon-result-layout${hasBoth ? " ps-tryon-result-split" : ""}`, children: [
|
|
1003
1095
|
resultImageUrl && /* @__PURE__ */ jsx("div", { className: "ps-tryon-result-image-col", children: /* @__PURE__ */ jsx("img", { src: resultImageUrl, alt: "Try-on result", className: cn.resultImage }) }),
|
|
1004
1096
|
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-result-info-col", children: [
|
|
@@ -1007,20 +1099,23 @@ function PrimeStyleTryonInner({
|
|
|
1007
1099
|
/* @__PURE__ */ jsx("p", { className: "ps-tryon-size-reasoning", children: "Analyzing your size..." })
|
|
1008
1100
|
] }),
|
|
1009
1101
|
sizingResult && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-size-recommend", children: [
|
|
1010
|
-
/* @__PURE__ */ jsx("
|
|
1011
|
-
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-size-
|
|
1012
|
-
"
|
|
1013
|
-
/* @__PURE__ */ jsx("span", { className: `ps-conf-${sizingResult.confidence}`, children:
|
|
1102
|
+
/* @__PURE__ */ jsx("h3", { className: "ps-tryon-size-title", children: "Recommended Size" }),
|
|
1103
|
+
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-size-hero-row", children: [
|
|
1104
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-size-badge", children: sizingResult.recommendedSize }),
|
|
1105
|
+
/* @__PURE__ */ jsx("span", { className: `ps-tryon-size-conf-label ps-conf-${sizingResult.confidence}`, children: confidenceLabel })
|
|
1014
1106
|
] }),
|
|
1015
|
-
/* @__PURE__ */
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1107
|
+
sizingResult.matchDetails && sizingResult.matchDetails.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-fit-summary", children: [
|
|
1108
|
+
/* @__PURE__ */ jsx("h4", { className: "ps-tryon-fit-summary-title", children: "Fit Summary" }),
|
|
1109
|
+
sizingResult.matchDetails.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "ps-tryon-fit-row", children: [
|
|
1110
|
+
/* @__PURE__ */ jsx("span", { className: `ps-tryon-fit-icon ps-fit-icon-${m.fit}`, children: m.fit === "good" ? "✓" : m.fit === "tight" ? "↑" : "↓" }),
|
|
1111
|
+
/* @__PURE__ */ jsxs("span", { className: "ps-tryon-fit-text", children: [
|
|
1112
|
+
/* @__PURE__ */ jsx("strong", { children: m.measurement }),
|
|
1113
|
+
" ",
|
|
1114
|
+
m.fit === "good" ? "within range" : m.fit === "tight" ? "may be snug" : "may be loose"
|
|
1115
|
+
] })
|
|
1116
|
+
] }, i)),
|
|
1117
|
+
/* @__PURE__ */ jsx("button", { className: "ps-tryon-fit-details-toggle", onClick: () => setShowFitDetails(!showFitDetails), children: showFitDetails ? "Hide detailed fit analysis ↑" : "See detailed fit analysis ↓" }),
|
|
1118
|
+
showFitDetails && /* @__PURE__ */ jsxs("table", { className: "ps-tryon-fit-table", children: [
|
|
1024
1119
|
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
1025
1120
|
/* @__PURE__ */ jsx("th", { children: "Area" }),
|
|
1026
1121
|
/* @__PURE__ */ jsx("th", { children: "You" }),
|
|
@@ -1034,7 +1129,15 @@ function PrimeStyleTryonInner({
|
|
|
1034
1129
|
/* @__PURE__ */ jsx("td", { className: `ps-fit-${m.fit}`, children: m.fit })
|
|
1035
1130
|
] }, i)) })
|
|
1036
1131
|
] })
|
|
1037
|
-
] })
|
|
1132
|
+
] }),
|
|
1133
|
+
sizingResult.internationalSizes && Object.keys(sizingResult.internationalSizes).length > 0 && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-equiv-section", children: [
|
|
1134
|
+
/* @__PURE__ */ jsx("h4", { className: "ps-tryon-equiv-title", children: "Equivalent Sizes" }),
|
|
1135
|
+
/* @__PURE__ */ jsx("div", { className: "ps-tryon-equiv-chips", children: Object.entries(sizingResult.internationalSizes).map(([k, v]) => /* @__PURE__ */ jsxs("div", { className: "ps-tryon-equiv-chip", children: [
|
|
1136
|
+
/* @__PURE__ */ jsx("span", { className: "ps-tryon-equiv-region", children: k }),
|
|
1137
|
+
/* @__PURE__ */ jsx("span", { className: "ps-tryon-equiv-value", children: v })
|
|
1138
|
+
] }, k)) })
|
|
1139
|
+
] }),
|
|
1140
|
+
(!sizingResult.matchDetails || sizingResult.matchDetails.length === 0) && sizingResult.reasoning && /* @__PURE__ */ jsx("p", { className: "ps-tryon-size-reasoning", children: sizingResult.reasoning })
|
|
1038
1141
|
] }),
|
|
1039
1142
|
/* @__PURE__ */ jsxs("div", { className: cx("ps-tryon-result-actions", cn.resultActions), children: [
|
|
1040
1143
|
/* @__PURE__ */ jsx("button", { onClick: handleDownload, className: cx("ps-tryon-btn-download", cn.downloadButton), children: "Download" }),
|
|
@@ -1045,15 +1148,21 @@ function PrimeStyleTryonInner({
|
|
|
1045
1148
|
/* @__PURE__ */ jsxs("div", { className: "ps-tryon-save-row", children: [
|
|
1046
1149
|
/* @__PURE__ */ jsx("input", { type: "text", placeholder: "Name this profile (e.g. John, Sarah)", value: profileName, onChange: (e) => setProfileName(e.target.value) }),
|
|
1047
1150
|
activeProfileId ? /* @__PURE__ */ jsxs("div", { className: "ps-tryon-save-btn-group", children: [
|
|
1048
|
-
/* @__PURE__ */
|
|
1151
|
+
/* @__PURE__ */ jsxs("button", { onClick: () => {
|
|
1049
1152
|
if (profileName.trim()) saveProfile(profileName.trim());
|
|
1050
|
-
}, children:
|
|
1153
|
+
}, children: [
|
|
1154
|
+
"💾",
|
|
1155
|
+
" Update"
|
|
1156
|
+
] }),
|
|
1051
1157
|
/* @__PURE__ */ jsx("button", { className: "ps-tryon-save-new-btn", onClick: () => {
|
|
1052
1158
|
if (profileName.trim()) saveProfile(profileName.trim(), true);
|
|
1053
1159
|
}, children: "+ New" })
|
|
1054
|
-
] }) : /* @__PURE__ */
|
|
1160
|
+
] }) : /* @__PURE__ */ jsxs("button", { onClick: () => {
|
|
1055
1161
|
if (profileName.trim()) saveProfile(profileName.trim());
|
|
1056
|
-
}, children:
|
|
1162
|
+
}, children: [
|
|
1163
|
+
"💾",
|
|
1164
|
+
" Save"
|
|
1165
|
+
] })
|
|
1057
1166
|
] })
|
|
1058
1167
|
] }),
|
|
1059
1168
|
profileSaved && /* @__PURE__ */ jsxs("div", { className: "ps-tryon-save-done", children: [
|
|
@@ -1238,7 +1347,11 @@ const STYLES = `
|
|
|
1238
1347
|
.ps-tryon-overlay {
|
|
1239
1348
|
position: fixed; inset: 0; background: var(--ps-modal-overlay, rgba(0,0,0,0.6));
|
|
1240
1349
|
display: flex; align-items: center; justify-content: center;
|
|
1241
|
-
z-index: 999999;
|
|
1350
|
+
z-index: 999999;
|
|
1351
|
+
padding: 16px;
|
|
1352
|
+
padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
|
|
1353
|
+
animation: ps-fade-in 0.2s ease;
|
|
1354
|
+
overflow-y: auto; -webkit-overflow-scrolling: touch;
|
|
1242
1355
|
}
|
|
1243
1356
|
@keyframes ps-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
|
1244
1357
|
|
|
@@ -1249,6 +1362,7 @@ const STYLES = `
|
|
|
1249
1362
|
font-family: var(--ps-modal-font, system-ui, -apple-system, sans-serif);
|
|
1250
1363
|
box-shadow: 0 25px 50px rgba(0,0,0,0.4); animation: ps-slide-up 0.3s ease;
|
|
1251
1364
|
scrollbar-width: thin; scrollbar-color: #333 transparent;
|
|
1365
|
+
flex-shrink: 0;
|
|
1252
1366
|
}
|
|
1253
1367
|
.ps-tryon-modal-wide { max-width: 920px; }
|
|
1254
1368
|
.ps-tryon-modal:has(.ps-tryon-drawer-open) { overflow: hidden; }
|
|
@@ -1448,6 +1562,12 @@ const STYLES = `
|
|
|
1448
1562
|
font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s; font-family: inherit;
|
|
1449
1563
|
}
|
|
1450
1564
|
.ps-tryon-unit-btn.ps-active { background: #bb945c; color: #111; }
|
|
1565
|
+
.ps-tryon-section-label { font-size: 11px; font-weight: 700; color: #bb945c; text-transform: uppercase; letter-spacing: 0.08em; margin: 4px 0 2px; }
|
|
1566
|
+
.ps-tryon-optional-section { border-top: 1px solid #333; padding-top: 10px; margin-top: 6px; }
|
|
1567
|
+
.ps-tryon-optional-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: 1px solid #333; border-radius: 10px; padding: 10px 14px; color: #999; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all 0.2s; }
|
|
1568
|
+
.ps-tryon-optional-toggle:hover { border-color: #555; color: #ccc; }
|
|
1569
|
+
.ps-tryon-chevron { transition: transform 0.2s; font-size: 14px; }
|
|
1570
|
+
.ps-tryon-optional-fields { display: flex; flex-direction: column; gap: 10px; padding-top: 12px; }
|
|
1451
1571
|
.ps-tryon-shoe-section { border-top: 1px solid #333; padding-top: 14px; margin-top: 6px; display: flex; flex-direction: column; gap: 10px; }
|
|
1452
1572
|
.ps-tryon-shoe-title { font-size: 13px; font-weight: 600; color: #999; }
|
|
1453
1573
|
.ps-tryon-disclaimer { font-size: 11px; color: #666; margin: 4px 0 0; }
|
|
@@ -1469,11 +1589,15 @@ const STYLES = `
|
|
|
1469
1589
|
.ps-tryon-processing { text-align: center; padding: 24px; display: flex; flex-direction: column; align-items: center; }
|
|
1470
1590
|
|
|
1471
1591
|
.ps-tryon-processing-image-wrap {
|
|
1472
|
-
position: relative; width:
|
|
1592
|
+
position: relative; width: 220px; height: 280px; margin: 0 auto 24px;
|
|
1473
1593
|
border-radius: 16px; overflow: hidden; border: 2px solid #333;
|
|
1474
1594
|
}
|
|
1595
|
+
.ps-tryon-processing-blur {
|
|
1596
|
+
position: absolute; inset: -20px; background-size: cover; background-position: center;
|
|
1597
|
+
filter: blur(25px) brightness(0.5); transform: scale(1.2);
|
|
1598
|
+
}
|
|
1475
1599
|
.ps-tryon-processing-model {
|
|
1476
|
-
width: 100%; height: 100%; object-fit:
|
|
1600
|
+
position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; display: block;
|
|
1477
1601
|
}
|
|
1478
1602
|
.ps-tryon-scan-overlay {
|
|
1479
1603
|
position: absolute; inset: 0;
|
|
@@ -1532,12 +1656,20 @@ const STYLES = `
|
|
|
1532
1656
|
|
|
1533
1657
|
/* Size recommendation */
|
|
1534
1658
|
.ps-tryon-size-recommend { margin-bottom: 16px; }
|
|
1659
|
+
.ps-tryon-size-title { font-size: 18px; font-weight: 700; color: #fff; margin: 0 0 14px; }
|
|
1660
|
+
.ps-tryon-size-hero-row {
|
|
1661
|
+
display: flex; align-items: center; gap: 16px; padding: 16px 20px;
|
|
1662
|
+
border: 1.5px solid #333; border-radius: 14px; margin-bottom: 18px; background: rgba(255,255,255,0.02);
|
|
1663
|
+
}
|
|
1535
1664
|
.ps-tryon-size-badge {
|
|
1536
1665
|
display: inline-flex; align-items: center; justify-content: center;
|
|
1537
|
-
width: 56px; height: 56px; border-radius:
|
|
1666
|
+
min-width: 56px; height: 56px; padding: 0 12px; border-radius: 12px;
|
|
1538
1667
|
background: linear-gradient(135deg, #bb945c, #d6ba7d);
|
|
1539
|
-
color: #111; font-size:
|
|
1668
|
+
color: #111; font-size: 24px; font-weight: 800; letter-spacing: -0.02em;
|
|
1540
1669
|
}
|
|
1670
|
+
.ps-tryon-size-conf-label { font-size: 15px; font-weight: 600; }
|
|
1671
|
+
.ps-conf-high { color: #4ade80; } .ps-conf-medium { color: #bb945c; } .ps-conf-low { color: #ef4444; }
|
|
1672
|
+
|
|
1541
1673
|
.ps-tryon-sizing-loading { text-align: center; padding: 20px 0; }
|
|
1542
1674
|
.ps-tryon-size-loading-spinner {
|
|
1543
1675
|
width: 36px; height: 36px; border: 3px solid #333;
|
|
@@ -1545,18 +1677,42 @@ const STYLES = `
|
|
|
1545
1677
|
animation: ps-spin 0.8s linear infinite; margin: 0 auto 12px;
|
|
1546
1678
|
}
|
|
1547
1679
|
@keyframes ps-spin { to { transform: rotate(360deg); } }
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
.ps-tryon-
|
|
1551
|
-
.ps-tryon-
|
|
1552
|
-
.ps-tryon-
|
|
1553
|
-
.ps-tryon-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
.ps-
|
|
1680
|
+
|
|
1681
|
+
/* Fit Summary */
|
|
1682
|
+
.ps-tryon-fit-summary { margin-bottom: 16px; }
|
|
1683
|
+
.ps-tryon-fit-summary-title { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 10px; }
|
|
1684
|
+
.ps-tryon-fit-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; }
|
|
1685
|
+
.ps-tryon-fit-icon {
|
|
1686
|
+
width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
|
|
1687
|
+
font-size: 12px; font-weight: 700; flex-shrink: 0;
|
|
1688
|
+
}
|
|
1689
|
+
.ps-fit-icon-good { background: rgba(74,222,128,0.15); color: #4ade80; }
|
|
1690
|
+
.ps-fit-icon-tight { background: rgba(245,158,11,0.15); color: #f59e0b; }
|
|
1691
|
+
.ps-fit-icon-loose { background: rgba(96,165,250,0.15); color: #60a5fa; }
|
|
1692
|
+
.ps-tryon-fit-text { font-size: 14px; color: #ccc; line-height: 1.4; }
|
|
1693
|
+
.ps-tryon-fit-text strong { color: #fff; font-weight: 600; }
|
|
1694
|
+
.ps-tryon-fit-details-toggle {
|
|
1695
|
+
display: inline-block; margin-top: 8px; font-size: 13px; color: #bb945c; cursor: pointer;
|
|
1696
|
+
font-weight: 600; background: none; border: none; padding: 0; font-family: inherit;
|
|
1697
|
+
}
|
|
1698
|
+
.ps-tryon-fit-details-toggle:hover { color: #d6ba7d; }
|
|
1699
|
+
.ps-tryon-fit-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 13px; }
|
|
1700
|
+
.ps-tryon-fit-table th { text-align: left; padding: 8px 10px; border-bottom: 1px solid #333; color: #999; font-weight: 600; }
|
|
1701
|
+
.ps-tryon-fit-table td { padding: 8px 10px; border-bottom: 1px solid #222; color: #ccc; }
|
|
1558
1702
|
.ps-fit-good { color: #4ade80; } .ps-fit-tight { color: #f59e0b; } .ps-fit-loose { color: #60a5fa; }
|
|
1559
1703
|
|
|
1704
|
+
/* Equivalent Sizes */
|
|
1705
|
+
.ps-tryon-equiv-section { margin-bottom: 16px; }
|
|
1706
|
+
.ps-tryon-equiv-title { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 10px; }
|
|
1707
|
+
.ps-tryon-equiv-chips { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
1708
|
+
.ps-tryon-equiv-chip {
|
|
1709
|
+
display: flex; align-items: center; border: 1.5px solid #333; border-radius: 10px; overflow: hidden;
|
|
1710
|
+
}
|
|
1711
|
+
.ps-tryon-equiv-region { padding: 7px 10px; font-size: 12px; color: #999; font-weight: 600; background: rgba(255,255,255,0.03); }
|
|
1712
|
+
.ps-tryon-equiv-value { padding: 7px 12px; font-size: 14px; color: #fff; font-weight: 700; }
|
|
1713
|
+
|
|
1714
|
+
.ps-tryon-size-reasoning { font-size: 14px; color: #ccc; line-height: 1.6; margin-bottom: 14px; }
|
|
1715
|
+
|
|
1560
1716
|
/* Save profile prompt */
|
|
1561
1717
|
.ps-tryon-save-prompt { margin-top: 14px; padding: 14px; border: 1px solid #333; border-radius: 12px; background: #1a1b1a; }
|
|
1562
1718
|
.ps-tryon-save-label { font-size: 12px; color: #999; margin-bottom: 10px; }
|
|
@@ -1686,13 +1842,27 @@ const STYLES = `
|
|
|
1686
1842
|
.ps-tryon-detail-delete svg { stroke: currentColor; fill: none; }
|
|
1687
1843
|
|
|
1688
1844
|
/* Mobile responsive */
|
|
1845
|
+
@media (max-width: 768px) {
|
|
1846
|
+
.ps-tryon-overlay {
|
|
1847
|
+
padding: 0;
|
|
1848
|
+
padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
|
|
1849
|
+
align-items: stretch; justify-content: stretch;
|
|
1850
|
+
}
|
|
1851
|
+
.ps-tryon-modal {
|
|
1852
|
+
max-width: 100%; max-height: none; width: 100%;
|
|
1853
|
+
border-radius: 0; box-shadow: none;
|
|
1854
|
+
min-height: 100%; flex: 1;
|
|
1855
|
+
display: flex; flex-direction: column;
|
|
1856
|
+
}
|
|
1857
|
+
.ps-tryon-modal-wide { max-width: 100%; }
|
|
1858
|
+
.ps-tryon-modal > :last-child { flex: 1; }
|
|
1859
|
+
.ps-tryon-header { border-radius: 0; }
|
|
1860
|
+
}
|
|
1689
1861
|
@media (max-width: 720px) {
|
|
1690
1862
|
.ps-tryon-result-split { flex-direction: column; }
|
|
1691
1863
|
.ps-tryon-result-image-col { flex: none; }
|
|
1692
|
-
.ps-tryon-modal-wide { max-width: 520px; }
|
|
1693
1864
|
}
|
|
1694
1865
|
@media (max-width: 480px) {
|
|
1695
|
-
.ps-tryon-modal { max-height: 100vh; border-radius: 14px; }
|
|
1696
1866
|
.ps-tryon-body { padding: 18px; }
|
|
1697
1867
|
.ps-tryon-header { padding: 14px 18px; }
|
|
1698
1868
|
.ps-tryon-stepper { padding: 14px 18px 8px; }
|
package/logo.svg
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
-
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
-
viewBox="0 0 841.9 510.4" style="enable-background:new 0 0 841.9 510.4;" xml:space="preserve">
|
|
5
|
-
<style type="text/css">
|
|
6
|
-
.st0{fill:#D6BA7D;}
|
|
7
|
-
</style>
|
|
8
|
-
<g>
|
|
9
|
-
<path class="st0" d="M333.7,230.1c-9.1-0.1-12.4,3.9-10.7,12.8c1.2,6.3,2.8,12.7,5.3,18.7c16.1,39.2,43.1,69.4,77.8,93.1
|
|
10
|
-
c5.8,3.9,11,3.7,16.8,0.2c20.3-12.2,37.5-28.1,52-46.6c15-19.1,27.6-39.7,32.5-64c2.2-11-2.4-15.7-13.8-14.5
|
|
11
|
-
c-2.9,0.3-5.7,1.4-8.5,1.9c-1.9,0.4-3.8,0.4-6.9,0.7c10.4-11.8,29.4-13.9,39.3-4.7c11,10.2,21,21.3,31.8,31.7
|
|
12
|
-
c5.2,4.9,8,10.6,6.9,17.4c-2.2,14.3-3.6,28.9-8,42.5c-14.1,43.9-41.2,79.8-72.3,113.1c-6.5,6.9-7.2,6.9-13-1.1
|
|
13
|
-
c-13.3-18.4-26.3-37-39.7-55.3c-8.3-11.3-8.5-11.2-16.7,0.3c-13.3,18.6-26.6,37.3-39.9,56c-2.8,3.8-5.4,6.9-10.2,1.8
|
|
14
|
-
c-27.8-29.9-52.8-61.7-68.4-99.8c-7.6-18.6-14-37.7-13.7-58.1c0.1-4.7,1.5-10.6,4.5-13.9c11.1-12.1,22.8-23.6,34.8-34.8
|
|
15
|
-
c9.9-9.2,29.1-6.9,39.2,4.9C345.6,231.4,339.7,230,333.7,230.1z M375.1,401.5c7.5-10.7,14.9-21.4,22.7-31.8c3-4.1,2.6-6.2-1.7-9.1
|
|
16
|
-
c-27.9-18.8-50.4-42.9-66.7-72.2c-7.5-13.5-12.2-28.6-18.3-43.3c-0.2,0.2-1.7,1.2-2.9,2.4c-4.1,4.1-7.5,9.1-12.2,12.3
|
|
17
|
-
c-12.4,8.4-12.5,19.7-9.7,32.6c7.5,34.4,22.9,64.9,43.9,92.8c9.4,12.4,19.5,24.4,30,37.4C365.7,414.8,370.4,408.1,375.1,401.5z
|
|
18
|
-
M429.1,364.4c13.7,19.3,27.2,38.3,41.2,57.9c20.5-23.3,39.3-47,53.7-74c10-18.7,16.8-38.4,20.3-59.3c1.9-11.5,1-21.2-9.4-28.8
|
|
19
|
-
c-5.7-4.3-10.2-10.2-16.3-16.4C506.1,297.7,473,334.6,429.1,364.4z"/>
|
|
20
|
-
<path class="st0" d="M481.8,268.1c-45.8-25.2-85.4-57.9-117.4-99.3c-6.8-8.8-11.9-19.4-15.4-30c-9.1-28.2,0.9-56.7,24.9-75.2
|
|
21
|
-
c21.6-16.5,54-18.1,77.7-3c16.9,10.8,27.8,26.1,30.3,46.3c0.4,3.4-1.6,8.3-4.2,10.6c-2,1.8-7.6,2.4-9.8,0.9
|
|
22
|
-
c-3.1-2.2-5.5-6.5-6.5-10.4c-6.6-25.5-26.7-39.5-53-36.5c-23.2,2.6-41.3,23.8-41.5,48.2c-0.1,13,4.2,24.7,12.4,34
|
|
23
|
-
c16.2,18.4,32.4,37.2,50.9,53.1c20,17.2,42.7,31.1,65.1,47.1c-1.8,4.5-4.3,10.7-6.9,17.2C485.7,270,483.7,269.3,481.8,268.1z"/>
|
|
24
|
-
<path class="st0" d="M134.3,426.9c64-0.3,127.9-0.2,191.9-0.1c2.3,0,5.5-0.2,6.8,1.1c6.5,6.5,12.4,13.5,19.1,20.9
|
|
25
|
-
c-2.4,0.2-4.1,0.4-5.7,0.4c-73.1,0-146.3-0.1-219.4-0.2c-3.4,0-6.8-0.2-10.1-0.7c-18.1-2.9-25-17.4-16-35.3
|
|
26
|
-
C108.4,426.9,121,426.9,134.3,426.9z"/>
|
|
27
|
-
<path class="st0" d="M705.1,448.9c-0.8,0-1.5,0-2.2,0c-73.6,0.1-147.3,0.2-220.9,0.3c-1.3,0-2.6-0.3-4.1-0.5
|
|
28
|
-
c5.6-5.9,11.1-11.2,16-17.1c2.9-3.5,5.8-5,10.4-5c64.7,0.2,129.4,0,194.1,0.4c12.9,0.1,24.5-1.1,32.3-14.9
|
|
29
|
-
C737.7,437.7,729.3,448.9,705.1,448.9z"/>
|
|
30
|
-
<path class="st0" d="M264.5,297.8c1.3,5-0.8,6.7-4.9,8.4c-22.4,9.4-45.2,18.2-67,28.9c-25.3,12.3-50.2,25.6-74.4,40
|
|
31
|
-
c-15.8,9.4-26.4,24-30.2,42.5c-1.1,5-0.9,10.3-1.4,17.3c-2.4-3.3-4.2-5.1-5.3-7.3c-8.5-17.5-8.9-35.3,3.8-50.3
|
|
32
|
-
c9.4-11,20.8-21.3,33.4-28.2c31.3-17.1,63.6-32.3,95.8-47.6c15.5-7.3,31.6-13.2,48.5-20.2C263.4,287.7,263.2,292.9,264.5,297.8z"/>
|
|
33
|
-
<path class="st0" d="M742.9,419.1c-3.1-18.8-13.7-33.1-29-43.3c-15.6-10.4-31.8-20.3-48.7-28.3c-31-14.7-62.6-27.8-93.9-41.8
|
|
34
|
-
c-2.2-1.1-5.5-3.5-5.5-5.2c0.2-6.2,1.6-12.3,2.6-18.8c2.2,0.7,4.1,1.1,5.8,1.9c34,15.1,68.3,29.5,101.8,45.5
|
|
35
|
-
c17.7,8.5,34.6,19.1,51.2,29.8c11.6,7.6,21.2,17.8,25.4,31.6c4.8,15.9,2.4,30.6-8.8,45C743.4,429,743.6,424,742.9,419.1z"/>
|
|
36
|
-
<path class="st0" d="M379.1,227.4c17-9.9,16.9-10.1,30.2,4.5c0.3,0.4,0.5,0.9,1.4,2.5c-22.4,12.4-44.9,24.7-68.2,37.6
|
|
37
|
-
c-3-7.7-5.3-13.7-7.8-20C350.1,243.5,364.7,235.7,379.1,227.4z"/>
|
|
38
|
-
<path class="st0" d="M556.3,327.9c2-5,3.5-9,5.3-13.4c48.9,20.7,98.9,36.9,143.1,66.1C657,358.4,606.5,344.1,556.3,327.9z"/>
|
|
39
|
-
<path class="st0" d="M268.3,315.2c1.1,2.9,2,4.9,2.6,6.9c0.6,2.1,1,4.1,1.2,5.1c-48.9,17.4-97.3,34.7-143.9,51.3
|
|
40
|
-
C170.4,351.4,219.9,335,268.3,315.2z"/>
|
|
41
|
-
<path class="st0" d="M465,299.1c-33.6,10.9-67,9.6-100.5,0c-7.8-2.2-9.4-3.6-12.6-12.2c42.3,15.7,84.4,16.7,127.2-0.3
|
|
42
|
-
C476.5,294.7,471.1,297.1,465,299.1z"/>
|
|
43
|
-
<path class="st0" d="M381.9,140.1c9.7,6.8,19.9,14.1,30.2,21.2c11.4,8,17.3,19,18.8,33.9C415.3,183.5,382.7,146,381.9,140.1z"/>
|
|
44
|
-
<path class="st0" d="M360.8,276c36.5,10.4,71.8,9.6,107.1,1.3C442.6,294.2,376.8,293.8,360.8,276z"/>
|
|
45
|
-
</g>
|
|
46
|
-
</svg>
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
+
viewBox="0 0 841.9 510.4" style="enable-background:new 0 0 841.9 510.4;" xml:space="preserve">
|
|
5
|
+
<style type="text/css">
|
|
6
|
+
.st0{fill:#D6BA7D;}
|
|
7
|
+
</style>
|
|
8
|
+
<g>
|
|
9
|
+
<path class="st0" d="M333.7,230.1c-9.1-0.1-12.4,3.9-10.7,12.8c1.2,6.3,2.8,12.7,5.3,18.7c16.1,39.2,43.1,69.4,77.8,93.1
|
|
10
|
+
c5.8,3.9,11,3.7,16.8,0.2c20.3-12.2,37.5-28.1,52-46.6c15-19.1,27.6-39.7,32.5-64c2.2-11-2.4-15.7-13.8-14.5
|
|
11
|
+
c-2.9,0.3-5.7,1.4-8.5,1.9c-1.9,0.4-3.8,0.4-6.9,0.7c10.4-11.8,29.4-13.9,39.3-4.7c11,10.2,21,21.3,31.8,31.7
|
|
12
|
+
c5.2,4.9,8,10.6,6.9,17.4c-2.2,14.3-3.6,28.9-8,42.5c-14.1,43.9-41.2,79.8-72.3,113.1c-6.5,6.9-7.2,6.9-13-1.1
|
|
13
|
+
c-13.3-18.4-26.3-37-39.7-55.3c-8.3-11.3-8.5-11.2-16.7,0.3c-13.3,18.6-26.6,37.3-39.9,56c-2.8,3.8-5.4,6.9-10.2,1.8
|
|
14
|
+
c-27.8-29.9-52.8-61.7-68.4-99.8c-7.6-18.6-14-37.7-13.7-58.1c0.1-4.7,1.5-10.6,4.5-13.9c11.1-12.1,22.8-23.6,34.8-34.8
|
|
15
|
+
c9.9-9.2,29.1-6.9,39.2,4.9C345.6,231.4,339.7,230,333.7,230.1z M375.1,401.5c7.5-10.7,14.9-21.4,22.7-31.8c3-4.1,2.6-6.2-1.7-9.1
|
|
16
|
+
c-27.9-18.8-50.4-42.9-66.7-72.2c-7.5-13.5-12.2-28.6-18.3-43.3c-0.2,0.2-1.7,1.2-2.9,2.4c-4.1,4.1-7.5,9.1-12.2,12.3
|
|
17
|
+
c-12.4,8.4-12.5,19.7-9.7,32.6c7.5,34.4,22.9,64.9,43.9,92.8c9.4,12.4,19.5,24.4,30,37.4C365.7,414.8,370.4,408.1,375.1,401.5z
|
|
18
|
+
M429.1,364.4c13.7,19.3,27.2,38.3,41.2,57.9c20.5-23.3,39.3-47,53.7-74c10-18.7,16.8-38.4,20.3-59.3c1.9-11.5,1-21.2-9.4-28.8
|
|
19
|
+
c-5.7-4.3-10.2-10.2-16.3-16.4C506.1,297.7,473,334.6,429.1,364.4z"/>
|
|
20
|
+
<path class="st0" d="M481.8,268.1c-45.8-25.2-85.4-57.9-117.4-99.3c-6.8-8.8-11.9-19.4-15.4-30c-9.1-28.2,0.9-56.7,24.9-75.2
|
|
21
|
+
c21.6-16.5,54-18.1,77.7-3c16.9,10.8,27.8,26.1,30.3,46.3c0.4,3.4-1.6,8.3-4.2,10.6c-2,1.8-7.6,2.4-9.8,0.9
|
|
22
|
+
c-3.1-2.2-5.5-6.5-6.5-10.4c-6.6-25.5-26.7-39.5-53-36.5c-23.2,2.6-41.3,23.8-41.5,48.2c-0.1,13,4.2,24.7,12.4,34
|
|
23
|
+
c16.2,18.4,32.4,37.2,50.9,53.1c20,17.2,42.7,31.1,65.1,47.1c-1.8,4.5-4.3,10.7-6.9,17.2C485.7,270,483.7,269.3,481.8,268.1z"/>
|
|
24
|
+
<path class="st0" d="M134.3,426.9c64-0.3,127.9-0.2,191.9-0.1c2.3,0,5.5-0.2,6.8,1.1c6.5,6.5,12.4,13.5,19.1,20.9
|
|
25
|
+
c-2.4,0.2-4.1,0.4-5.7,0.4c-73.1,0-146.3-0.1-219.4-0.2c-3.4,0-6.8-0.2-10.1-0.7c-18.1-2.9-25-17.4-16-35.3
|
|
26
|
+
C108.4,426.9,121,426.9,134.3,426.9z"/>
|
|
27
|
+
<path class="st0" d="M705.1,448.9c-0.8,0-1.5,0-2.2,0c-73.6,0.1-147.3,0.2-220.9,0.3c-1.3,0-2.6-0.3-4.1-0.5
|
|
28
|
+
c5.6-5.9,11.1-11.2,16-17.1c2.9-3.5,5.8-5,10.4-5c64.7,0.2,129.4,0,194.1,0.4c12.9,0.1,24.5-1.1,32.3-14.9
|
|
29
|
+
C737.7,437.7,729.3,448.9,705.1,448.9z"/>
|
|
30
|
+
<path class="st0" d="M264.5,297.8c1.3,5-0.8,6.7-4.9,8.4c-22.4,9.4-45.2,18.2-67,28.9c-25.3,12.3-50.2,25.6-74.4,40
|
|
31
|
+
c-15.8,9.4-26.4,24-30.2,42.5c-1.1,5-0.9,10.3-1.4,17.3c-2.4-3.3-4.2-5.1-5.3-7.3c-8.5-17.5-8.9-35.3,3.8-50.3
|
|
32
|
+
c9.4-11,20.8-21.3,33.4-28.2c31.3-17.1,63.6-32.3,95.8-47.6c15.5-7.3,31.6-13.2,48.5-20.2C263.4,287.7,263.2,292.9,264.5,297.8z"/>
|
|
33
|
+
<path class="st0" d="M742.9,419.1c-3.1-18.8-13.7-33.1-29-43.3c-15.6-10.4-31.8-20.3-48.7-28.3c-31-14.7-62.6-27.8-93.9-41.8
|
|
34
|
+
c-2.2-1.1-5.5-3.5-5.5-5.2c0.2-6.2,1.6-12.3,2.6-18.8c2.2,0.7,4.1,1.1,5.8,1.9c34,15.1,68.3,29.5,101.8,45.5
|
|
35
|
+
c17.7,8.5,34.6,19.1,51.2,29.8c11.6,7.6,21.2,17.8,25.4,31.6c4.8,15.9,2.4,30.6-8.8,45C743.4,429,743.6,424,742.9,419.1z"/>
|
|
36
|
+
<path class="st0" d="M379.1,227.4c17-9.9,16.9-10.1,30.2,4.5c0.3,0.4,0.5,0.9,1.4,2.5c-22.4,12.4-44.9,24.7-68.2,37.6
|
|
37
|
+
c-3-7.7-5.3-13.7-7.8-20C350.1,243.5,364.7,235.7,379.1,227.4z"/>
|
|
38
|
+
<path class="st0" d="M556.3,327.9c2-5,3.5-9,5.3-13.4c48.9,20.7,98.9,36.9,143.1,66.1C657,358.4,606.5,344.1,556.3,327.9z"/>
|
|
39
|
+
<path class="st0" d="M268.3,315.2c1.1,2.9,2,4.9,2.6,6.9c0.6,2.1,1,4.1,1.2,5.1c-48.9,17.4-97.3,34.7-143.9,51.3
|
|
40
|
+
C170.4,351.4,219.9,335,268.3,315.2z"/>
|
|
41
|
+
<path class="st0" d="M465,299.1c-33.6,10.9-67,9.6-100.5,0c-7.8-2.2-9.4-3.6-12.6-12.2c42.3,15.7,84.4,16.7,127.2-0.3
|
|
42
|
+
C476.5,294.7,471.1,297.1,465,299.1z"/>
|
|
43
|
+
<path class="st0" d="M381.9,140.1c9.7,6.8,19.9,14.1,30.2,21.2c11.4,8,17.3,19,18.8,33.9C415.3,183.5,382.7,146,381.9,140.1z"/>
|
|
44
|
+
<path class="st0" d="M360.8,276c36.5,10.4,71.8,9.6,107.1,1.3C442.6,294.2,376.8,293.8,360.8,276z"/>
|
|
45
|
+
</g>
|
|
46
|
+
</svg>
|