@primestyleai/tryon 5.10.89 → 5.10.91

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.
@@ -1,6 +1,15 @@
1
1
  import type { PrimeStyleClassNames } from "../../types";
2
2
  import type { TranslateFn } from "../../i18n";
3
- export declare function ProcessingView({ previewUrl, progressRef, progressBarRef, progressTextRef, progressStatusRef, progressEtaRef, progressRingRef, cn, t, }: {
3
+ /**
4
+ * Engaging try-on processing screen — 65/35 split.
5
+ * Left (~65%): user's photo + scanning overlay
6
+ * Right (~35%): big % ring → "WHILE YOU WAIT" cards (style tip /
7
+ * garment spotlight / AI fact) → cancel link.
8
+ *
9
+ * Distracts the user from the 25s wait by feeding them branded micro-
10
+ * content tied to their actual purchase context.
11
+ */
12
+ export declare function ProcessingView({ previewUrl, progressRef, progressBarRef, progressTextRef, progressStatusRef, progressEtaRef, progressRingRef, productTitle, productMaterial, productDescription, onCancel, cn, t, }: {
4
13
  previewUrl: string | null;
5
14
  progressRef: React.MutableRefObject<number>;
6
15
  progressBarRef: React.MutableRefObject<HTMLDivElement | null>;
@@ -8,6 +17,10 @@ export declare function ProcessingView({ previewUrl, progressRef, progressBarRef
8
17
  progressStatusRef: React.MutableRefObject<HTMLDivElement | null>;
9
18
  progressEtaRef: React.MutableRefObject<HTMLSpanElement | null>;
10
19
  progressRingRef: React.MutableRefObject<SVGCircleElement | null>;
20
+ productTitle?: string;
21
+ productMaterial?: string;
22
+ productDescription?: string;
23
+ onCancel?: () => void;
11
24
  cn: PrimeStyleClassNames;
12
25
  t: TranslateFn;
13
26
  }): import("react/jsx-runtime").JSX.Element;
@@ -12081,6 +12081,184 @@ const STYLES$1 = `
12081
12081
  }
12082
12082
  .ps-tryon-processing-sub { font-size: 0.63vw; color: var(--ps-text-secondary); margin: 0; }
12083
12083
 
12084
+ /* ──────────────────────────────────────────────
12085
+ ProcessingView v2 — split (image left ~65%,
12086
+ panel right ~35%) with engaging cards while
12087
+ the user waits 25s for the try-on to complete.
12088
+ ────────────────────────────────────────────── */
12089
+ .ps-tryon-processing-v2 {
12090
+ display: flex; gap: 1.2vw;
12091
+ padding: 1.2vw;
12092
+ width: 100%; height: 100%;
12093
+ align-items: stretch;
12094
+ }
12095
+ .ps-tryon-processing-v2-image {
12096
+ flex: 0 0 62%;
12097
+ position: relative;
12098
+ border-radius: 0.6vw;
12099
+ overflow: hidden;
12100
+ background: var(--ps-bg-tertiary, #f3f4f6);
12101
+ min-height: 28vw;
12102
+ }
12103
+ .ps-tryon-processing-v2-image .ps-tryon-processing-blur,
12104
+ .ps-tryon-processing-v2-image .ps-tryon-processing-model {
12105
+ position: absolute; inset: 0;
12106
+ width: 100%; height: 100%;
12107
+ }
12108
+ .ps-tryon-processing-v2-image .ps-tryon-processing-blur {
12109
+ background-size: cover; background-position: center;
12110
+ filter: blur(40px) brightness(0.8); opacity: 0.65;
12111
+ }
12112
+ .ps-tryon-processing-v2-image .ps-tryon-processing-model {
12113
+ object-fit: contain; z-index: 1;
12114
+ }
12115
+ .ps-tryon-processing-v2-badge {
12116
+ position: absolute; top: 0.8vw; left: 0.8vw; z-index: 3;
12117
+ display: inline-flex; align-items: center; gap: 0.4vw;
12118
+ padding: 0.4vw 0.7vw;
12119
+ background: rgba(33, 84, 239, 0.10);
12120
+ color: var(--ps-accent);
12121
+ border: 1px solid rgba(33, 84, 239, 0.20);
12122
+ border-radius: 999px;
12123
+ font-size: 0.6vw; font-weight: 700;
12124
+ letter-spacing: 0.12em;
12125
+ }
12126
+ .ps-tryon-processing-v2-badge-dot {
12127
+ width: 6px; height: 6px; border-radius: 50%;
12128
+ background: var(--ps-accent);
12129
+ animation: ps-pulse-dot 1.4s ease-in-out infinite;
12130
+ }
12131
+ @keyframes ps-pulse-dot {
12132
+ 0%, 100% { opacity: 0.3; transform: scale(0.85); }
12133
+ 50% { opacity: 1; transform: scale(1.1); }
12134
+ }
12135
+
12136
+ .ps-tryon-processing-v2-panel {
12137
+ flex: 1 1 38%;
12138
+ display: flex; flex-direction: column;
12139
+ gap: 0.9vw;
12140
+ padding: 0.6vw 0.4vw;
12141
+ min-width: 0;
12142
+ }
12143
+ .ps-tryon-processing-v2-head {
12144
+ text-align: center;
12145
+ }
12146
+ .ps-tryon-processing-v2-title {
12147
+ margin: 0;
12148
+ font-size: 1.1vw; font-weight: 700;
12149
+ color: var(--ps-text-primary);
12150
+ line-height: 1.25;
12151
+ }
12152
+ .ps-tryon-processing-v2-sub {
12153
+ margin: 0.3vw 0 0;
12154
+ font-size: 0.68vw; line-height: 1.45;
12155
+ color: var(--ps-text-secondary);
12156
+ }
12157
+
12158
+ .ps-tryon-processing-v2-ring-wrap {
12159
+ position: relative;
12160
+ width: 120px; height: 120px;
12161
+ margin: 0.4vw auto 0;
12162
+ }
12163
+ .ps-tryon-processing-v2-ring-wrap svg {
12164
+ transform: rotate(-90deg);
12165
+ }
12166
+ .ps-tryon-processing-v2-ring-wrap .ps-tryon-progress-ring-track {
12167
+ fill: none; stroke: var(--ps-border-color); stroke-width: 6;
12168
+ }
12169
+ .ps-tryon-processing-v2-ring-wrap .ps-tryon-progress-ring-fill {
12170
+ fill: none; stroke: var(--ps-accent); stroke-width: 6;
12171
+ stroke-linecap: round;
12172
+ transition: stroke-dashoffset 0.3s ease;
12173
+ }
12174
+ .ps-tryon-processing-v2-ring-text {
12175
+ position: absolute; inset: 0;
12176
+ display: flex; flex-direction: column;
12177
+ align-items: center; justify-content: center;
12178
+ pointer-events: none;
12179
+ gap: 2px;
12180
+ }
12181
+ .ps-tryon-processing-v2-pct {
12182
+ font-size: 22px; font-weight: 700;
12183
+ color: var(--ps-accent);
12184
+ font-variant-numeric: tabular-nums;
12185
+ }
12186
+ .ps-tryon-processing-v2-status {
12187
+ font-size: 9px; font-weight: 700;
12188
+ letter-spacing: 0.12em; text-transform: uppercase;
12189
+ color: var(--ps-text-muted);
12190
+ text-align: center;
12191
+ max-width: 95px; line-height: 1.2;
12192
+ }
12193
+
12194
+ .ps-tryon-processing-v2-bar-hidden {
12195
+ display: none;
12196
+ }
12197
+
12198
+ .ps-tryon-processing-v2-sep {
12199
+ height: 1px; width: 100%;
12200
+ background: var(--ps-border-subtle, rgba(0,0,0,0.06));
12201
+ margin: 0.4vw 0 0;
12202
+ }
12203
+
12204
+ .ps-tryon-processing-v2-section-label {
12205
+ font-size: 0.6vw; font-weight: 700;
12206
+ letter-spacing: 0.12em; text-transform: uppercase;
12207
+ color: var(--ps-text-muted);
12208
+ margin-bottom: 0.5vw;
12209
+ }
12210
+ .ps-tryon-processing-v2-cards {
12211
+ display: flex; flex-direction: column; gap: 0.5vw;
12212
+ }
12213
+ .ps-tryon-processing-v2-card {
12214
+ display: flex; align-items: flex-start; gap: 0.6vw;
12215
+ padding: 0.7vw 0.8vw;
12216
+ background: var(--ps-bg-secondary, #f9fafb);
12217
+ border: 1px solid var(--ps-border-subtle, rgba(0,0,0,0.06));
12218
+ border-radius: 0.55vw;
12219
+ }
12220
+ .ps-tryon-processing-v2-card-icon {
12221
+ width: 1.7vw; height: 1.7vw;
12222
+ min-width: 28px; min-height: 28px;
12223
+ display: flex; align-items: center; justify-content: center;
12224
+ border-radius: 50%;
12225
+ flex-shrink: 0;
12226
+ }
12227
+ .ps-tryon-processing-v2-card-icon.ps-style { background: rgba(33, 84, 239, 0.10); color: var(--ps-accent); }
12228
+ .ps-tryon-processing-v2-card-icon.ps-spotlight { background: rgba(168, 85, 247, 0.10); color: #9333ea; }
12229
+ .ps-tryon-processing-v2-card-icon.ps-fact { background: rgba(16, 185, 129, 0.10); color: #059669; }
12230
+ .ps-tryon-processing-v2-card-text {
12231
+ flex: 1; min-width: 0;
12232
+ }
12233
+ .ps-tryon-processing-v2-card-head {
12234
+ font-size: 0.7vw; font-weight: 700;
12235
+ color: var(--ps-text-primary);
12236
+ margin-bottom: 2px;
12237
+ }
12238
+ .ps-tryon-processing-v2-card-body {
12239
+ font-size: 0.65vw; line-height: 1.5;
12240
+ color: var(--ps-text-secondary);
12241
+ animation: ps-fade-in 0.4s ease;
12242
+ }
12243
+ @keyframes ps-fade-in {
12244
+ from { opacity: 0; transform: translateY(2px); }
12245
+ to { opacity: 1; transform: translateY(0); }
12246
+ }
12247
+
12248
+ .ps-tryon-processing-v2-cancel {
12249
+ margin-top: auto;
12250
+ background: transparent; border: none;
12251
+ color: var(--ps-text-muted);
12252
+ font-family: inherit;
12253
+ font-size: 0.68vw; font-weight: 600;
12254
+ cursor: pointer;
12255
+ padding: 0.3vw 0;
12256
+ text-align: center;
12257
+ width: 100%;
12258
+ transition: color 0.15s;
12259
+ }
12260
+ .ps-tryon-processing-v2-cancel:hover { color: var(--ps-text-primary); }
12261
+
12084
12262
  /* Result — split layout */
12085
12263
  .ps-tryon-result-split {
12086
12264
  display: flex; gap: 1.5vw; text-align: left; align-items: flex-start;
@@ -13208,6 +13386,42 @@ const STYLES$1 = `
13208
13386
  px-based sizing (vw becomes sub-pixel and unreadable on phones)
13209
13387
  ════════════════════════════════════════════════════════════════ */
13210
13388
  @media (max-width: 768px) {
13389
+ /* ProcessingView v2 mobile — stack: image on top (max 38vh), then
13390
+ * the progress + cards panel below. */
13391
+ .ps-tryon-processing-v2 {
13392
+ flex-direction: column !important;
13393
+ gap: 12px !important;
13394
+ padding: 12px !important;
13395
+ height: auto !important;
13396
+ }
13397
+ .ps-tryon-processing-v2-image {
13398
+ flex: 0 0 auto !important;
13399
+ width: 100% !important;
13400
+ height: 38vh !important; min-height: 280px !important;
13401
+ border-radius: 12px !important;
13402
+ }
13403
+ .ps-tryon-processing-v2-badge {
13404
+ top: 10px !important; left: 10px !important;
13405
+ padding: 5px 10px !important; gap: 6px !important;
13406
+ font-size: 10px !important;
13407
+ }
13408
+ .ps-tryon-processing-v2-panel {
13409
+ gap: 12px !important; padding: 4px 6px !important;
13410
+ }
13411
+ .ps-tryon-processing-v2-title { font-size: 17px !important; }
13412
+ .ps-tryon-processing-v2-sub { font-size: 12px !important; margin-top: 4px !important; }
13413
+ .ps-tryon-processing-v2-ring-wrap { width: 96px !important; height: 96px !important; }
13414
+ .ps-tryon-processing-v2-ring-wrap svg { width: 96px !important; height: 96px !important; }
13415
+ .ps-tryon-processing-v2-pct { font-size: 18px !important; }
13416
+ .ps-tryon-processing-v2-status { font-size: 8px !important; max-width: 75px !important; }
13417
+ .ps-tryon-processing-v2-section-label { font-size: 10px !important; margin-bottom: 8px !important; }
13418
+ .ps-tryon-processing-v2-cards { gap: 8px !important; }
13419
+ .ps-tryon-processing-v2-card { padding: 10px 12px !important; gap: 10px !important; border-radius: 10px !important; }
13420
+ .ps-tryon-processing-v2-card-icon { width: 30px !important; height: 30px !important; min-width: 30px !important; min-height: 30px !important; }
13421
+ .ps-tryon-processing-v2-card-head { font-size: 12px !important; }
13422
+ .ps-tryon-processing-v2-card-body { font-size: 11px !important; }
13423
+ .ps-tryon-processing-v2-cancel { font-size: 12px !important; padding: 8px 0 !important; }
13424
+
13211
13425
  /* NoChartView mobile — stack image on top, panel below. */
13212
13426
  .ps-tryon-no-chart {
13213
13427
  flex-direction: column !important;
@@ -15010,18 +15224,22 @@ const STYLES$1 = `
15010
15224
  transition: background 0.15s, transform 0.15s;
15011
15225
  }
15012
15226
  .ps-msr-section-card:active { transform: scale(0.99); background: var(--ps-bg-secondary); }
15227
+ /* Bigger garment icon — same source as desktop (sizeGuide.sectionImages
15228
+ * → falls back to built-in line-art PNG via garmentIconForSection).
15229
+ * No background, no tinting — exact image asset shown at scale. */
15230
+ .ps-msr-section-icon-lg {
15231
+ width: 56px; height: 56px;
15232
+ object-fit: contain;
15233
+ background: none;
15234
+ margin: 0 auto 4px;
15235
+ display: block;
15236
+ }
15013
15237
  .ps-msr-section-name {
15014
- display: inline-flex; align-items: center; gap: 6px;
15015
15238
  font-size: 11px; font-weight: 600;
15016
15239
  letter-spacing: 0.12em; text-transform: uppercase;
15017
15240
  color: var(--ps-text-muted);
15018
15241
  text-align: center;
15019
15242
  }
15020
- .ps-msr-section-icon {
15021
- width: 18px; height: 18px;
15022
- object-fit: contain;
15023
- opacity: 0.85;
15024
- }
15025
15243
  .ps-msr-section-size {
15026
15244
  font-size: 32px; font-weight: 600;
15027
15245
  color: var(--ps-text-primary);
@@ -18851,10 +19069,8 @@ function MultiSectionMobile({
18851
19069
  className: `ps-msr-section-card${isOverridden ? " ps-overridden" : ""}`,
18852
19070
  onClick: () => onSelectSection(name),
18853
19071
  children: [
18854
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ps-msr-section-name", children: [
18855
- iconSrc && /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: iconSrc, alt: "", className: "ps-msr-section-icon" }),
18856
- cleanName.toUpperCase()
18857
- ] }),
19072
+ iconSrc && /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: iconSrc, alt: "", className: "ps-msr-section-icon-lg" }),
19073
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msr-section-name", children: cleanName.toUpperCase() }),
18858
19074
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-msr-section-size", children: sizeValue }),
18859
19075
  /* @__PURE__ */ jsxRuntimeExports.jsx(
18860
19076
  "span",
@@ -21714,7 +21930,7 @@ function UploadView({
21714
21930
  }
21715
21931
  ) });
21716
21932
  }
21717
- const RING_RADIUS = 27;
21933
+ const RING_RADIUS = 38;
21718
21934
  const RING_CIRCUMFERENCE = 2 * Math.PI * RING_RADIUS;
21719
21935
  function ProcessingView({
21720
21936
  previewUrl,
@@ -21724,6 +21940,10 @@ function ProcessingView({
21724
21940
  progressStatusRef,
21725
21941
  progressEtaRef,
21726
21942
  progressRingRef,
21943
+ productTitle,
21944
+ productMaterial,
21945
+ productDescription,
21946
+ onCancel,
21727
21947
  cn,
21728
21948
  t: t2
21729
21949
  }) {
@@ -21748,33 +21968,56 @@ function ProcessingView({
21748
21968
  el2.style.strokeDashoffset = String(offset);
21749
21969
  }
21750
21970
  }, []);
21751
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing", children: [
21752
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-image-wrap", children: [
21971
+ const aiFacts = [
21972
+ t2("Our model is analyzing 150+ body landmarks for the perfect fit"),
21973
+ t2("Calibrating fabric drape against your body proportions"),
21974
+ t2("Cross-checking fit against millions of garment patterns"),
21975
+ t2("Rendering shadows and highlights to match your photo's lighting")
21976
+ ];
21977
+ const styleTip = (() => {
21978
+ const t1 = t2("Pair this with neutral tones for a balanced look");
21979
+ const t22 = t2("Layer with a fitted base for sharper silhouette");
21980
+ const t3 = t2("Cuff once for a relaxed everyday feel");
21981
+ return [t1, t22, t3];
21982
+ })();
21983
+ const [factIdx, setFactIdx] = reactExports.useState(0);
21984
+ const [tipIdx, setTipIdx] = reactExports.useState(0);
21985
+ reactExports.useEffect(() => {
21986
+ const f2 = setInterval(() => setFactIdx((i) => (i + 1) % aiFacts.length), 4e3);
21987
+ const s = setInterval(() => setTipIdx((i) => (i + 1) % styleTip.length), 5e3);
21988
+ return () => {
21989
+ clearInterval(f2);
21990
+ clearInterval(s);
21991
+ };
21992
+ }, []);
21993
+ const garmentLine = productMaterial?.trim() || (productDescription?.trim() ? productDescription.trim().slice(0, 90) + (productDescription.trim().length > 90 ? "…" : "") : null) || t2("Crafted with quality materials for everyday comfort");
21994
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2", children: [
21995
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-image", children: [
21753
21996
  previewUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
21754
21997
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-blur", style: { backgroundImage: `url(${previewUrl})` } }),
21755
21998
  /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: previewUrl, alt: t2("Your photo"), className: "ps-tryon-processing-model" })
21756
21999
  ] }),
21757
22000
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-line" }),
21758
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-overlay" })
22001
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-overlay" }),
22002
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-badge", children: [
22003
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-tryon-processing-v2-badge-dot", "aria-hidden": "true" }),
22004
+ t2("ANALYZING BODY MAP")
22005
+ ] })
21759
22006
  ] }),
21760
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-progress-section", children: [
21761
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-progress-ring", children: [
21762
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { viewBox: "0 0 64 64", width: "64", height: "64", "aria-hidden": "true", children: [
21763
- /* @__PURE__ */ jsxRuntimeExports.jsx(
21764
- "circle",
21765
- {
21766
- cx: "32",
21767
- cy: "32",
21768
- r: RING_RADIUS,
21769
- className: "ps-tryon-progress-ring-track"
21770
- }
21771
- ),
22007
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-panel", children: [
22008
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-head", children: [
22009
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-processing-v2-title", children: t2("Generating Your Look") }),
22010
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-processing-v2-sub", children: t2("Our AI is precisely mapping the garment to your unique proportions.") })
22011
+ ] }),
22012
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-ring-wrap", children: [
22013
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { viewBox: "0 0 96 96", width: "120", height: "120", "aria-hidden": "true", children: [
22014
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "48", cy: "48", r: RING_RADIUS, className: "ps-tryon-progress-ring-track" }),
21772
22015
  /* @__PURE__ */ jsxRuntimeExports.jsx(
21773
22016
  "circle",
21774
22017
  {
21775
22018
  ref: ringCb,
21776
- cx: "32",
21777
- cy: "32",
22019
+ cx: "48",
22020
+ cy: "48",
21778
22021
  r: RING_RADIUS,
21779
22022
  className: "ps-tryon-progress-ring-fill",
21780
22023
  strokeDasharray: RING_CIRCUMFERENCE,
@@ -21782,13 +22025,48 @@ function ProcessingView({
21782
22025
  }
21783
22026
  )
21784
22027
  ] }),
21785
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: etaCb, className: "ps-tryon-progress-eta", children: `~22s` })
22028
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-ring-text", children: [
22029
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: pctCb, className: "ps-tryon-processing-v2-pct", children: "0%" }),
22030
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: statusCb, className: "ps-tryon-processing-v2-status", children: t2("Preparing your image…") })
22031
+ ] })
21786
22032
  ] }),
21787
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-progress-bar-wrap", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: barCb, className: "ps-tryon-progress-bar-fill" }) }),
21788
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: pctCb, className: "ps-tryon-progress-pct", children: "0%" })
21789
- ] }),
21790
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: statusCb, className: cx("ps-tryon-processing-text", cn.processingText), children: t2("Preparing your image...") }),
21791
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: cx("ps-tryon-processing-sub", cn.processingSubText), children: t2("This usually takes 15-25 seconds") })
22033
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-bar-hidden", children: [
22034
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: barCb }),
22035
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: etaCb })
22036
+ ] }),
22037
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-sep" }),
22038
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-section", children: [
22039
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-section-label", children: t2("WHILE YOU WAIT") }),
22040
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-cards", children: [
22041
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22042
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-icon ps-style", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M9 18h6M10 22h4M12 2a7 7 0 0 0-4 12.7c1 .9 1 1.8 1 2.3v1h6v-1c0-.5 0-1.4 1-2.3A7 7 0 0 0 12 2z" }) }) }),
22043
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22044
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("Style Tip") }),
22045
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: styleTip[tipIdx] }, tipIdx)
22046
+ ] })
22047
+ ] }),
22048
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22049
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-icon ps-spotlight", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
22050
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "12", cy: "12", r: "10" }),
22051
+ /* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
22052
+ /* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
22053
+ ] }) }),
22054
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22055
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("Garment Spotlight") }),
22056
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: garmentLine })
22057
+ ] })
22058
+ ] }),
22059
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22060
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-icon ps-fact", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M12 2v6M12 16v6M4.93 4.93l4.24 4.24M14.83 14.83l4.24 4.24M2 12h6M16 12h6M4.93 19.07l4.24-4.24M14.83 9.17l4.24-4.24" }) }) }),
22061
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22062
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("AI Fact") }),
22063
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: aiFacts[factIdx] }, factIdx)
22064
+ ] })
22065
+ ] })
22066
+ ] })
22067
+ ] }),
22068
+ onCancel && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", className: "ps-tryon-processing-v2-cancel", onClick: onCancel, children: t2("Cancel Generation") })
22069
+ ] })
21792
22070
  ] });
21793
22071
  }
21794
22072
  function ErrorView({
@@ -27067,7 +27345,7 @@ function PrimeStyleTryonInner({
27067
27345
  { at: 75, text: t2("Refining details...") },
27068
27346
  { at: 90, text: t2("Almost there...") }
27069
27347
  ];
27070
- const RING_CIRCUMFERENCE2 = 2 * Math.PI * 27;
27348
+ const RING_CIRCUMFERENCE2 = 2 * Math.PI * 38;
27071
27349
  progressIntervalRef.current = setInterval(() => {
27072
27350
  if (completedRef.current) return;
27073
27351
  const startTs = progressStartTsRef.current || Date.now();
@@ -28750,6 +29028,13 @@ function PrimeStyleTryonInner({
28750
29028
  progressStatusRef,
28751
29029
  progressEtaRef,
28752
29030
  progressRingRef,
29031
+ productTitle,
29032
+ productMaterial,
29033
+ productDescription,
29034
+ onCancel: () => {
29035
+ setView("size-result");
29036
+ setTryOnProcessing(false);
29037
+ },
28753
29038
  cn,
28754
29039
  t: t2
28755
29040
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primestyleai/tryon",
3
- "version": "5.10.89",
3
+ "version": "5.10.91",
4
4
  "description": "PrimeStyle Virtual Try-On SDK — React component & Web Component",
5
5
  "type": "module",
6
6
  "main": "dist/primestyle-tryon.js",