@primestyleai/tryon 5.8.54 → 5.8.56

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.
@@ -67,7 +67,15 @@ export interface BodyLandmarks {
67
67
  y: number;
68
68
  };
69
69
  }
70
+ /** Pixel dimensions of the image the landmarks were detected on. Sent to
71
+ * the backend alongside the landmarks so it can convert normalized x/y
72
+ * into pixels — without this, horizontal and vertical distances on a
73
+ * non-square image are skewed by the aspect ratio. */
74
+ export interface BodyLandmarksWithDims extends BodyLandmarks {
75
+ imageWidth: number;
76
+ imageHeight: number;
77
+ }
70
78
  export declare function detectMeasurementLines(imageSrc: string): Promise<MeasurementLines | null>;
71
79
  /** Detect full body landmarks for per-field measurement guides.
72
80
  * Accepts a URL string OR an already-loaded HTMLImageElement to avoid CORS issues. */
73
- export declare function detectBodyLandmarks(imageSrc: string | HTMLImageElement): Promise<BodyLandmarks | null>;
81
+ export declare function detectBodyLandmarks(imageSrc: string | HTMLImageElement): Promise<BodyLandmarksWithDims | null>;
@@ -121,7 +121,9 @@ async function detectBodyLandmarks(imageSrc) {
121
121
  rightKnee: { x: lm[RIGHT_KNEE].x, y: lm[RIGHT_KNEE].y },
122
122
  leftAnkle: { x: lm[LEFT_ANKLE].x, y: lm[LEFT_ANKLE].y },
123
123
  rightAnkle: { x: lm[RIGHT_ANKLE].x, y: lm[RIGHT_ANKLE].y },
124
- nose: { x: lm[NOSE].x, y: lm[NOSE].y }
124
+ nose: { x: lm[NOSE].x, y: lm[NOSE].y },
125
+ imageWidth: img.naturalWidth || img.width,
126
+ imageHeight: img.naturalHeight || img.height
125
127
  };
126
128
  } catch (err) {
127
129
  console.error("[PS-SDK] Body landmark detection failed:", err);
@@ -7819,6 +7821,7 @@ function SkeletonOverlay({ landmarks, imgWidth, imgHeight }) {
7819
7821
  SKELETON_CONNECTIONS.map(([a, b], i) => {
7820
7822
  const pa = landmarks[a];
7821
7823
  const pb = landmarks[b];
7824
+ if (!pa || !pb || typeof pa !== "object" || typeof pb !== "object" || typeof pa.x !== "number" || typeof pa.y !== "number" || typeof pb.x !== "number" || typeof pb.y !== "number") return null;
7822
7825
  return /* @__PURE__ */ jsx(
7823
7826
  "line",
7824
7827
  {
@@ -7835,7 +7838,7 @@ function SkeletonOverlay({ landmarks, imgWidth, imgHeight }) {
7835
7838
  `l-${i}`
7836
7839
  );
7837
7840
  }),
7838
- Object.entries(landmarks).map(([key, v], i) => /* @__PURE__ */ jsxs("g", { children: [
7841
+ Object.entries(landmarks).filter(([, v]) => v && typeof v === "object" && typeof v.x === "number" && typeof v.y === "number").map(([key, v], i) => /* @__PURE__ */ jsxs("g", { children: [
7839
7842
  /* @__PURE__ */ jsx(
7840
7843
  "circle",
7841
7844
  {
@@ -7879,6 +7882,7 @@ function MeasurementOverlay({ lines, fitRows, show, imgWidth, imgHeight }) {
7879
7882
  const strokeW = Math.max(5, 3 * scale);
7880
7883
  const dotR = Math.max(7, 5 * scale);
7881
7884
  return /* @__PURE__ */ jsx("svg", { className: "ps-tryon-pose-overlay", viewBox: `0 0 ${W} ${H}`, preserveAspectRatio: "xMidYMid meet", children: areas.map(({ key, line, label }, i) => {
7885
+ if (!line || typeof line.x1 !== "number" || typeof line.x2 !== "number" || typeof line.y !== "number") return null;
7882
7886
  const x1 = line.x1 * W;
7883
7887
  const x2 = line.x2 * W;
7884
7888
  const cy = line.y * H;
@@ -8046,7 +8050,8 @@ function SectionDetailView({
8046
8050
  tryOnProcessing,
8047
8051
  backLabel,
8048
8052
  internationalSizes,
8049
- continueLabel
8053
+ continueLabel,
8054
+ renderRaw = false
8050
8055
  }) {
8051
8056
  const recSize = sectionResult?.recommendedSize || "";
8052
8057
  const [selectedSize, setSelectedSize] = useState(null);
@@ -8164,6 +8169,18 @@ function SectionDetailView({
8164
8169
  return { range: val, ...parsed };
8165
8170
  }, [section, sizeColIdx, sizeHeader, unitLbl, columnUnits]);
8166
8171
  const fitRows = useMemo(() => {
8172
+ if (renderRaw) {
8173
+ const raw = sectionResult?.matchDetails || [];
8174
+ return raw.map((m) => ({
8175
+ area: m.measurement.replace(/\s*\(.*?\)\s*$/, "").trim() || m.measurement,
8176
+ rawUserValue: m.userValue,
8177
+ rawChartRange: m.chartRange,
8178
+ fit: m.fit,
8179
+ userNum: 0,
8180
+ chartLabel: "",
8181
+ isLength: false
8182
+ }));
8183
+ }
8167
8184
  const mainDetails = sectionResult?.matchDetails || [];
8168
8185
  const lengthDetails = lengthEntry?.secResult?.matchDetails || [];
8169
8186
  const details = [...mainDetails, ...lengthDetails];
@@ -8233,11 +8250,12 @@ function SectionDetailView({
8233
8250
  }
8234
8251
  return { area: m.measurement, userNum, chartLabel: cleanNumFn(chartLabel), fit, isLength: false };
8235
8252
  });
8236
- }, [sectionResult, lengthEntry, userMeasurements, displaySize, recSize, chartRangeFor, selectedLength, recLength]);
8253
+ }, [sectionResult, lengthEntry, userMeasurements, displaySize, recSize, chartRangeFor, selectedLength, recLength, renderRaw]);
8237
8254
  const goodCount = fitRows.filter(
8238
8255
  (r) => r.fit === "good" || r.fit === "a-bit-tight" || r.fit === "a-bit-loose"
8239
8256
  ).length;
8240
8257
  const matchPercent = fitRows.length > 0 ? Math.round(goodCount / fitRows.length * 100) : 0;
8258
+ const showMatchPercent = !renderRaw;
8241
8259
  const secAny = sectionResult;
8242
8260
  const backendSize = secAny?.size || recSize;
8243
8261
  const backendLength = secAny?.length || recLength;
@@ -8404,7 +8422,7 @@ function SectionDetailView({
8404
8422
  /* @__PURE__ */ jsxs("div", { className: "ps-msd-row-cells", children: [
8405
8423
  /* @__PURE__ */ jsxs("div", { className: "ps-msd-row-cell", children: [
8406
8424
  /* @__PURE__ */ jsx("span", { className: "ps-msd-cell-label", children: t("USER") }),
8407
- /* @__PURE__ */ jsx("span", { className: "ps-msd-cell-value", children: isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` })
8425
+ /* @__PURE__ */ jsx("span", { className: "ps-msd-cell-value", children: renderRaw ? row.rawUserValue || "—" : isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` })
8408
8426
  ] }),
8409
8427
  /* @__PURE__ */ jsxs("div", { className: "ps-msd-row-cell ps-right", children: [
8410
8428
  /* @__PURE__ */ jsxs("span", { className: "ps-msd-cell-label", children: [
@@ -8412,7 +8430,7 @@ function SectionDetailView({
8412
8430
  " ",
8413
8431
  displaySize
8414
8432
  ] }),
8415
- /* @__PURE__ */ jsx("span", { className: "ps-msd-cell-value", children: dLabel(row.chartLabel) })
8433
+ /* @__PURE__ */ jsx("span", { className: "ps-msd-cell-value", children: renderRaw ? row.rawChartRange || "—" : dLabel(row.chartLabel) })
8416
8434
  ] })
8417
8435
  ] }),
8418
8436
  /* @__PURE__ */ jsxs("div", { className: `ps-msd-row-badge ${fitClass}`, children: [
@@ -8511,7 +8529,7 @@ function SectionDetailView({
8511
8529
  ] })
8512
8530
  ] })
8513
8531
  ] }),
8514
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.4vw", marginBottom: "1.2vw" }, children: [
8532
+ showMatchPercent && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.4vw", marginBottom: "1.2vw" }, children: [
8515
8533
  /* @__PURE__ */ jsxs("svg", { width: "1vw", height: "1vw", viewBox: "0 0 16 16", fill: "none", children: [
8516
8534
  /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "8", fill: "var(--ps-accent)" }),
8517
8535
  /* @__PURE__ */ jsx("path", { d: "M4.5 8L7 10.5L11.5 5.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
@@ -8534,8 +8552,8 @@ function SectionDetailView({
8534
8552
  const fitBg = row.fit === "good" ? "rgba(33,84,239,0.08)" : row.fit.includes("tight") ? "rgba(220,38,38,0.08)" : "rgba(217,119,6,0.08)";
8535
8553
  return /* @__PURE__ */ jsxs("tr", { style: { borderBottom: i < fitRows.length - 1 ? "1px solid rgba(0,0,0,0.04)" : "none" }, children: [
8536
8554
  /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", fontWeight: 500, color: "var(--ps-text-primary)" }, children: row.area }),
8537
- /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` }),
8538
- /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: dLabel(row.chartLabel) }),
8555
+ /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: renderRaw ? row.rawUserValue || "—" : isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` }),
8556
+ /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: renderRaw ? row.rawChartRange || "—" : dLabel(row.chartLabel) }),
8539
8557
  /* @__PURE__ */ jsx("td", { style: { padding: "0.55vw 0.6vw", textAlign: "right" }, children: /* @__PURE__ */ jsx("span", { style: { fontSize: "0.6vw", fontWeight: 600, color: fitColor, background: fitBg, borderRadius: "1vw", padding: "0.15vw 0.5vw", whiteSpace: "nowrap" }, children: row.isLength ? lengthFitLabelFn(row.fit, t) : fitLabelFn(row.fit, t) }) })
8540
8558
  ] }, i);
8541
8559
  }) })
@@ -9264,6 +9282,7 @@ function SizeResultView({
9264
9282
  productImage: resultImageUrl || productImage,
9265
9283
  productTitle,
9266
9284
  isMobile: true,
9285
+ renderRaw: isAccessory,
9267
9286
  isTryOnImage: !!resultImageUrl,
9268
9287
  showLines,
9269
9288
  onToggleLines: () => setShowLines(!showLines),
@@ -9307,7 +9326,8 @@ function SizeResultView({
9307
9326
  onTryOn: resultImageUrl || isAccessory ? void 0 : handleSingleTryOn,
9308
9327
  continueLabel: resultImageUrl ? t("Continue Shopping") : void 0,
9309
9328
  tryOnProcessing,
9310
- t
9329
+ t,
9330
+ renderRaw: isAccessory
9311
9331
  }
9312
9332
  ) }, "panel-single")
9313
9333
  ] });
@@ -13039,6 +13059,7 @@ function FootSizeView(props) {
13039
13059
  {
13040
13060
  title: "Shoe Size",
13041
13061
  fields,
13062
+ disablePhotoUpload: true,
13042
13063
  ...rest
13043
13064
  }
13044
13065
  );
@@ -9583,7 +9583,9 @@ async function detectBodyLandmarks(imageSrc) {
9583
9583
  rightKnee: { x: lm[RIGHT_KNEE].x, y: lm[RIGHT_KNEE].y },
9584
9584
  leftAnkle: { x: lm[LEFT_ANKLE].x, y: lm[LEFT_ANKLE].y },
9585
9585
  rightAnkle: { x: lm[RIGHT_ANKLE].x, y: lm[RIGHT_ANKLE].y },
9586
- nose: { x: lm[NOSE].x, y: lm[NOSE].y }
9586
+ nose: { x: lm[NOSE].x, y: lm[NOSE].y },
9587
+ imageWidth: img.naturalWidth || img.width,
9588
+ imageHeight: img.naturalHeight || img.height
9587
9589
  };
9588
9590
  } catch (err) {
9589
9591
  console.error("[PS-SDK] Body landmark detection failed:", err);
@@ -17243,6 +17245,7 @@ function SkeletonOverlay({ landmarks, imgWidth, imgHeight }) {
17243
17245
  SKELETON_CONNECTIONS.map(([a, b], i) => {
17244
17246
  const pa2 = landmarks[a];
17245
17247
  const pb2 = landmarks[b];
17248
+ if (!pa2 || !pb2 || typeof pa2 !== "object" || typeof pb2 !== "object" || typeof pa2.x !== "number" || typeof pa2.y !== "number" || typeof pb2.x !== "number" || typeof pb2.y !== "number") return null;
17246
17249
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
17247
17250
  "line",
17248
17251
  {
@@ -17259,7 +17262,7 @@ function SkeletonOverlay({ landmarks, imgWidth, imgHeight }) {
17259
17262
  `l-${i}`
17260
17263
  );
17261
17264
  }),
17262
- Object.entries(landmarks).map(([key, v2], i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
17265
+ Object.entries(landmarks).filter(([, v2]) => v2 && typeof v2 === "object" && typeof v2.x === "number" && typeof v2.y === "number").map(([key, v2], i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
17263
17266
  /* @__PURE__ */ jsxRuntimeExports.jsx(
17264
17267
  "circle",
17265
17268
  {
@@ -17303,6 +17306,7 @@ function MeasurementOverlay({ lines, fitRows, show, imgWidth, imgHeight }) {
17303
17306
  const strokeW = Math.max(5, 3 * scale);
17304
17307
  const dotR = Math.max(7, 5 * scale);
17305
17308
  return /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "ps-tryon-pose-overlay", viewBox: `0 0 ${W2} ${H2}`, preserveAspectRatio: "xMidYMid meet", children: areas.map(({ key, line, label }, i) => {
17309
+ if (!line || typeof line.x1 !== "number" || typeof line.x2 !== "number" || typeof line.y !== "number") return null;
17306
17310
  const x1 = line.x1 * W2;
17307
17311
  const x2 = line.x2 * W2;
17308
17312
  const cy = line.y * H2;
@@ -17470,7 +17474,8 @@ function SectionDetailView({
17470
17474
  tryOnProcessing,
17471
17475
  backLabel,
17472
17476
  internationalSizes,
17473
- continueLabel
17477
+ continueLabel,
17478
+ renderRaw = false
17474
17479
  }) {
17475
17480
  const recSize = sectionResult?.recommendedSize || "";
17476
17481
  const [selectedSize, setSelectedSize] = reactExports.useState(null);
@@ -17588,6 +17593,18 @@ function SectionDetailView({
17588
17593
  return { range: val, ...parsed };
17589
17594
  }, [section, sizeColIdx, sizeHeader, unitLbl, columnUnits]);
17590
17595
  const fitRows = reactExports.useMemo(() => {
17596
+ if (renderRaw) {
17597
+ const raw = sectionResult?.matchDetails || [];
17598
+ return raw.map((m2) => ({
17599
+ area: m2.measurement.replace(/\s*\(.*?\)\s*$/, "").trim() || m2.measurement,
17600
+ rawUserValue: m2.userValue,
17601
+ rawChartRange: m2.chartRange,
17602
+ fit: m2.fit,
17603
+ userNum: 0,
17604
+ chartLabel: "",
17605
+ isLength: false
17606
+ }));
17607
+ }
17591
17608
  const mainDetails = sectionResult?.matchDetails || [];
17592
17609
  const lengthDetails = lengthEntry?.secResult?.matchDetails || [];
17593
17610
  const details = [...mainDetails, ...lengthDetails];
@@ -17657,11 +17674,12 @@ function SectionDetailView({
17657
17674
  }
17658
17675
  return { area: m2.measurement, userNum, chartLabel: cleanNumFn(chartLabel), fit, isLength: false };
17659
17676
  });
17660
- }, [sectionResult, lengthEntry, userMeasurements, displaySize, recSize, chartRangeFor, selectedLength, recLength]);
17677
+ }, [sectionResult, lengthEntry, userMeasurements, displaySize, recSize, chartRangeFor, selectedLength, recLength, renderRaw]);
17661
17678
  const goodCount = fitRows.filter(
17662
17679
  (r2) => r2.fit === "good" || r2.fit === "a-bit-tight" || r2.fit === "a-bit-loose"
17663
17680
  ).length;
17664
17681
  const matchPercent = fitRows.length > 0 ? Math.round(goodCount / fitRows.length * 100) : 0;
17682
+ const showMatchPercent = !renderRaw;
17665
17683
  const secAny = sectionResult;
17666
17684
  const backendSize = secAny?.size || recSize;
17667
17685
  const backendLength = secAny?.length || recLength;
@@ -17828,7 +17846,7 @@ function SectionDetailView({
17828
17846
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-msd-row-cells", children: [
17829
17847
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-msd-row-cell", children: [
17830
17848
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msd-cell-label", children: t2("USER") }),
17831
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msd-cell-value", children: isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` })
17849
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msd-cell-value", children: renderRaw ? row.rawUserValue || "—" : isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` })
17832
17850
  ] }),
17833
17851
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-msd-row-cell ps-right", children: [
17834
17852
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ps-msd-cell-label", children: [
@@ -17836,7 +17854,7 @@ function SectionDetailView({
17836
17854
  " ",
17837
17855
  displaySize
17838
17856
  ] }),
17839
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msd-cell-value", children: dLabel(row.chartLabel) })
17857
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msd-cell-value", children: renderRaw ? row.rawChartRange || "—" : dLabel(row.chartLabel) })
17840
17858
  ] })
17841
17859
  ] }),
17842
17860
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-msd-row-badge ${fitClass}`, children: [
@@ -17935,7 +17953,7 @@ function SectionDetailView({
17935
17953
  ] })
17936
17954
  ] })
17937
17955
  ] }),
17938
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.4vw", marginBottom: "1.2vw" }, children: [
17956
+ showMatchPercent && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.4vw", marginBottom: "1.2vw" }, children: [
17939
17957
  /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: "1vw", height: "1vw", viewBox: "0 0 16 16", fill: "none", children: [
17940
17958
  /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "8", cy: "8", r: "8", fill: "var(--ps-accent)" }),
17941
17959
  /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M4.5 8L7 10.5L11.5 5.5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
@@ -17958,8 +17976,8 @@ function SectionDetailView({
17958
17976
  const fitBg = row.fit === "good" ? "rgba(33,84,239,0.08)" : row.fit.includes("tight") ? "rgba(220,38,38,0.08)" : "rgba(217,119,6,0.08)";
17959
17977
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { style: { borderBottom: i < fitRows.length - 1 ? "1px solid rgba(0,0,0,0.04)" : "none" }, children: [
17960
17978
  /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", fontWeight: 500, color: "var(--ps-text-primary)" }, children: row.area }),
17961
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` }),
17962
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: dLabel(row.chartLabel) }),
17979
+ /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: renderRaw ? row.rawUserValue || "—" : isNaN(row.userNum) || row.userNum === 0 ? "—" : `${dNum(row.userNum)} ${unitLbl}` }),
17980
+ /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", fontSize: "0.75vw", color: "var(--ps-text-secondary)" }, children: renderRaw ? row.rawChartRange || "—" : dLabel(row.chartLabel) }),
17963
17981
  /* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: "0.55vw 0.6vw", textAlign: "right" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "0.6vw", fontWeight: 600, color: fitColor, background: fitBg, borderRadius: "1vw", padding: "0.15vw 0.5vw", whiteSpace: "nowrap" }, children: row.isLength ? lengthFitLabelFn(row.fit, t2) : fitLabelFn(row.fit, t2) }) })
17964
17982
  ] }, i);
17965
17983
  }) })
@@ -18688,6 +18706,7 @@ function SizeResultView({
18688
18706
  productImage: resultImageUrl || productImage,
18689
18707
  productTitle,
18690
18708
  isMobile: true,
18709
+ renderRaw: isAccessory,
18691
18710
  isTryOnImage: !!resultImageUrl,
18692
18711
  showLines,
18693
18712
  onToggleLines: () => setShowLines(!showLines),
@@ -18731,7 +18750,8 @@ function SizeResultView({
18731
18750
  onTryOn: resultImageUrl || isAccessory ? void 0 : handleSingleTryOn,
18732
18751
  continueLabel: resultImageUrl ? t2("Continue Shopping") : void 0,
18733
18752
  tryOnProcessing,
18734
- t: t2
18753
+ t: t2,
18754
+ renderRaw: isAccessory
18735
18755
  }
18736
18756
  ) }, "panel-single")
18737
18757
  ] });
@@ -22463,6 +22483,7 @@ function FootSizeView(props) {
22463
22483
  {
22464
22484
  title: "Shoe Size",
22465
22485
  fields,
22486
+ disablePhotoUpload: true,
22466
22487
  ...rest
22467
22488
  }
22468
22489
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primestyleai/tryon",
3
- "version": "5.8.54",
3
+ "version": "5.8.56",
4
4
  "description": "PrimeStyle Virtual Try-On SDK — React component & Web Component",
5
5
  "type": "module",
6
6
  "main": "dist/primestyle-tryon.js",