@primestyleai/tryon 5.10.89 → 5.10.90

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;
@@ -21714,7 +21928,7 @@ function UploadView({
21714
21928
  }
21715
21929
  ) });
21716
21930
  }
21717
- const RING_RADIUS = 27;
21931
+ const RING_RADIUS = 38;
21718
21932
  const RING_CIRCUMFERENCE = 2 * Math.PI * RING_RADIUS;
21719
21933
  function ProcessingView({
21720
21934
  previewUrl,
@@ -21724,6 +21938,10 @@ function ProcessingView({
21724
21938
  progressStatusRef,
21725
21939
  progressEtaRef,
21726
21940
  progressRingRef,
21941
+ productTitle,
21942
+ productMaterial,
21943
+ productDescription,
21944
+ onCancel,
21727
21945
  cn,
21728
21946
  t: t2
21729
21947
  }) {
@@ -21748,33 +21966,56 @@ function ProcessingView({
21748
21966
  el2.style.strokeDashoffset = String(offset);
21749
21967
  }
21750
21968
  }, []);
21751
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing", children: [
21752
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-image-wrap", children: [
21969
+ const aiFacts = [
21970
+ t2("Our model is analyzing 150+ body landmarks for the perfect fit"),
21971
+ t2("Calibrating fabric drape against your body proportions"),
21972
+ t2("Cross-checking fit against millions of garment patterns"),
21973
+ t2("Rendering shadows and highlights to match your photo's lighting")
21974
+ ];
21975
+ const styleTip = (() => {
21976
+ const t1 = t2("Pair this with neutral tones for a balanced look");
21977
+ const t22 = t2("Layer with a fitted base for sharper silhouette");
21978
+ const t3 = t2("Cuff once for a relaxed everyday feel");
21979
+ return [t1, t22, t3];
21980
+ })();
21981
+ const [factIdx, setFactIdx] = reactExports.useState(0);
21982
+ const [tipIdx, setTipIdx] = reactExports.useState(0);
21983
+ reactExports.useEffect(() => {
21984
+ const f2 = setInterval(() => setFactIdx((i) => (i + 1) % aiFacts.length), 4e3);
21985
+ const s = setInterval(() => setTipIdx((i) => (i + 1) % styleTip.length), 5e3);
21986
+ return () => {
21987
+ clearInterval(f2);
21988
+ clearInterval(s);
21989
+ };
21990
+ }, []);
21991
+ const garmentLine = productMaterial?.trim() || (productDescription?.trim() ? productDescription.trim().slice(0, 90) + (productDescription.trim().length > 90 ? "…" : "") : null) || t2("Crafted with quality materials for everyday comfort");
21992
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2", children: [
21993
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-image", children: [
21753
21994
  previewUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
21754
21995
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-blur", style: { backgroundImage: `url(${previewUrl})` } }),
21755
21996
  /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: previewUrl, alt: t2("Your photo"), className: "ps-tryon-processing-model" })
21756
21997
  ] }),
21757
21998
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-line" }),
21758
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-overlay" })
21999
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-scan-overlay" }),
22000
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-badge", children: [
22001
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-tryon-processing-v2-badge-dot", "aria-hidden": "true" }),
22002
+ t2("ANALYZING BODY MAP")
22003
+ ] })
21759
22004
  ] }),
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
- ),
22005
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-panel", children: [
22006
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-head", children: [
22007
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-processing-v2-title", children: t2("Generating Your Look") }),
22008
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-processing-v2-sub", children: t2("Our AI is precisely mapping the garment to your unique proportions.") })
22009
+ ] }),
22010
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-ring-wrap", children: [
22011
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { viewBox: "0 0 96 96", width: "120", height: "120", "aria-hidden": "true", children: [
22012
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "48", cy: "48", r: RING_RADIUS, className: "ps-tryon-progress-ring-track" }),
21772
22013
  /* @__PURE__ */ jsxRuntimeExports.jsx(
21773
22014
  "circle",
21774
22015
  {
21775
22016
  ref: ringCb,
21776
- cx: "32",
21777
- cy: "32",
22017
+ cx: "48",
22018
+ cy: "48",
21778
22019
  r: RING_RADIUS,
21779
22020
  className: "ps-tryon-progress-ring-fill",
21780
22021
  strokeDasharray: RING_CIRCUMFERENCE,
@@ -21782,13 +22023,48 @@ function ProcessingView({
21782
22023
  }
21783
22024
  )
21784
22025
  ] }),
21785
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: etaCb, className: "ps-tryon-progress-eta", children: `~22s` })
22026
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-ring-text", children: [
22027
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: pctCb, className: "ps-tryon-processing-v2-pct", children: "0%" }),
22028
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: statusCb, className: "ps-tryon-processing-v2-status", children: t2("Preparing your image…") })
22029
+ ] })
21786
22030
  ] }),
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") })
22031
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-bar-hidden", children: [
22032
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: barCb }),
22033
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { ref: etaCb })
22034
+ ] }),
22035
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-sep" }),
22036
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-section", children: [
22037
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-section-label", children: t2("WHILE YOU WAIT") }),
22038
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-cards", children: [
22039
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22040
+ /* @__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" }) }) }),
22041
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22042
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("Style Tip") }),
22043
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: styleTip[tipIdx] }, tipIdx)
22044
+ ] })
22045
+ ] }),
22046
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22047
+ /* @__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: [
22048
+ /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "12", cy: "12", r: "10" }),
22049
+ /* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
22050
+ /* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
22051
+ ] }) }),
22052
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22053
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("Garment Spotlight") }),
22054
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: garmentLine })
22055
+ ] })
22056
+ ] }),
22057
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card", children: [
22058
+ /* @__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" }) }) }),
22059
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-processing-v2-card-text", children: [
22060
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-head", children: t2("AI Fact") }),
22061
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-processing-v2-card-body", children: aiFacts[factIdx] }, factIdx)
22062
+ ] })
22063
+ ] })
22064
+ ] })
22065
+ ] }),
22066
+ onCancel && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", className: "ps-tryon-processing-v2-cancel", onClick: onCancel, children: t2("Cancel Generation") })
22067
+ ] })
21792
22068
  ] });
21793
22069
  }
21794
22070
  function ErrorView({
@@ -27067,7 +27343,7 @@ function PrimeStyleTryonInner({
27067
27343
  { at: 75, text: t2("Refining details...") },
27068
27344
  { at: 90, text: t2("Almost there...") }
27069
27345
  ];
27070
- const RING_CIRCUMFERENCE2 = 2 * Math.PI * 27;
27346
+ const RING_CIRCUMFERENCE2 = 2 * Math.PI * 38;
27071
27347
  progressIntervalRef.current = setInterval(() => {
27072
27348
  if (completedRef.current) return;
27073
27349
  const startTs = progressStartTsRef.current || Date.now();
@@ -28750,6 +29026,13 @@ function PrimeStyleTryonInner({
28750
29026
  progressStatusRef,
28751
29027
  progressEtaRef,
28752
29028
  progressRingRef,
29029
+ productTitle,
29030
+ productMaterial,
29031
+ productDescription,
29032
+ onCancel: () => {
29033
+ setView("size-result");
29034
+ setTryOnProcessing(false);
29035
+ },
28753
29036
  cn,
28754
29037
  t: t2
28755
29038
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primestyleai/tryon",
3
- "version": "5.10.89",
3
+ "version": "5.10.90",
4
4
  "description": "PrimeStyle Virtual Try-On SDK — React component & Web Component",
5
5
  "type": "module",
6
6
  "main": "dist/primestyle-tryon.js",