@primestyleai/tryon 5.8.32 → 5.8.33

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.
@@ -5179,101 +5179,141 @@ const STYLES = `
5179
5179
  }
5180
5180
 
5181
5181
  /* ════════════════════════════════════════════════════════════════
5182
- ProfileMeasurementsView (.ps-pmv-*) — full profile detail with
5183
- all body measurements, basics, saved sizes history, and actions.
5182
+ ProfileMeasurementsView (.ps-pmv-*) — minimal monoline-icon
5183
+ redesign. Two-column body: silhouette diagram on the left,
5184
+ basics + measurements list (each with an inline line-art icon)
5185
+ on the right. No avatar, no card boxes — just typography, icons
5186
+ and a body diagram, all vw/clamp scaled.
5184
5187
  ════════════════════════════════════════════════════════════════ */
5185
5188
  .ps-pmv-root {
5186
- display: flex; flex-direction: column; gap: 24px;
5187
- padding: 4px 4px 24px;
5189
+ display: flex; flex-direction: column;
5190
+ gap: clamp(14px, 1.3vw, 28px);
5191
+ padding: clamp(2px, 0.25vw, 6px) clamp(2px, 0.25vw, 6px) clamp(14px, 1.3vw, 28px);
5188
5192
  }
5193
+
5194
+ /* Hero — name + eyebrow only, no avatar */
5189
5195
  .ps-pmv-hero {
5190
- display: flex; align-items: center; gap: 18px;
5191
- padding-bottom: 18px;
5196
+ display: flex; flex-direction: column;
5197
+ gap: clamp(4px, 0.35vw, 10px);
5198
+ padding-bottom: clamp(10px, 0.95vw, 20px);
5192
5199
  border-bottom: 1px solid var(--ps-border-subtle);
5193
5200
  }
5194
- .ps-pmv-hero-avatar {
5195
- width: 76px; height: 76px;
5196
- border-radius: 50%;
5197
- background: var(--ps-bg-secondary);
5198
- border: 2px solid var(--ps-accent);
5199
- color: var(--ps-accent);
5200
- display: flex; align-items: center; justify-content: center;
5201
- overflow: hidden; flex-shrink: 0;
5202
- }
5203
- .ps-pmv-hero-avatar img {
5204
- width: 100%; height: 100%; object-fit: cover;
5205
- /* Bias the crop toward the top of the photo so the head/face shows
5206
- through the circular avatar instead of the torso. Works for any
5207
- full-body or head-and-torso photo where the head is in the upper
5208
- portion of the frame. */
5209
- object-position: 50% 12%;
5210
- }
5211
- .ps-pmv-hero-info { flex: 1; min-width: 0; }
5212
5201
  .ps-pmv-hero-eyebrow {
5213
- font-size: 10px; font-weight: 700;
5214
- letter-spacing: 0.16em; text-transform: uppercase;
5202
+ font-size: clamp(9px, 0.6vw, 12px); font-weight: 700;
5203
+ letter-spacing: 0.18em; text-transform: uppercase;
5215
5204
  color: var(--ps-accent);
5216
- margin-bottom: 6px;
5217
5205
  }
5218
5206
  .ps-pmv-hero-name {
5219
- font-size: 28px; font-weight: 700;
5207
+ font-size: clamp(18px, 1.5vw, 32px); font-weight: 700;
5220
5208
  color: var(--ps-text-primary);
5221
5209
  margin: 0;
5222
5210
  letter-spacing: -0.01em;
5211
+ line-height: 1.1;
5223
5212
  }
5224
5213
 
5225
- /* Basics rowheight / weight / age stats */
5226
- .ps-pmv-basics {
5214
+ /* Two-column splitdiagram on left, data on right */
5215
+ .ps-pmv-split {
5227
5216
  display: grid;
5228
- grid-template-columns: repeat(3, 1fr);
5229
- gap: 14px;
5217
+ grid-template-columns: minmax(0, 0.42fr) minmax(0, 1fr);
5218
+ gap: clamp(16px, 1.6vw, 36px);
5219
+ align-items: start;
5230
5220
  }
5231
- .ps-pmv-basic {
5232
- background: var(--ps-bg-secondary);
5233
- border: 1px solid var(--ps-border-subtle);
5234
- border-radius: 10px;
5235
- padding: 16px 18px;
5236
- display: flex; flex-direction: column; gap: 4px;
5221
+ .ps-pmv-diagram {
5222
+ display: flex; flex-direction: column; align-items: center;
5223
+ gap: clamp(6px, 0.5vw, 12px);
5224
+ padding: clamp(8px, 0.8vw, 18px) 0;
5225
+ color: var(--ps-text-primary);
5226
+ }
5227
+ .ps-pmv-body-diagram-svg {
5228
+ width: 100%;
5229
+ max-width: clamp(110px, 9vw, 180px);
5230
+ height: auto;
5231
+ color: var(--ps-text-primary);
5232
+ opacity: 0.78;
5233
+ }
5234
+ .ps-pmv-diagram-caption {
5235
+ font-size: clamp(8px, 0.55vw, 11px);
5236
+ font-weight: 600;
5237
+ letter-spacing: 0.16em;
5238
+ text-transform: uppercase;
5239
+ color: var(--ps-text-muted);
5240
+ }
5241
+ .ps-pmv-data {
5242
+ display: flex; flex-direction: column;
5243
+ gap: clamp(14px, 1.2vw, 26px);
5244
+ min-width: 0;
5245
+ }
5246
+
5247
+ /* Basics list — height / weight / age, inline icon + label + value */
5248
+ .ps-pmv-basics {
5249
+ display: flex; flex-direction: column;
5250
+ gap: clamp(6px, 0.55vw, 14px);
5251
+ padding-bottom: clamp(10px, 0.9vw, 18px);
5252
+ border-bottom: 1px solid var(--ps-border-subtle);
5237
5253
  }
5254
+ .ps-pmv-basic-row {
5255
+ display: flex; align-items: center;
5256
+ gap: clamp(8px, 0.7vw, 16px);
5257
+ }
5258
+ .ps-pmv-basic-icon {
5259
+ flex-shrink: 0;
5260
+ width: clamp(14px, 1vw, 20px);
5261
+ height: clamp(14px, 1vw, 20px);
5262
+ color: var(--ps-text-muted);
5263
+ display: inline-flex; align-items: center; justify-content: center;
5264
+ }
5265
+ .ps-pmv-basic-icon svg { width: 100%; height: 100%; }
5238
5266
  .ps-pmv-basic-label {
5239
- font-size: 10px; font-weight: 700;
5240
- letter-spacing: 0.14em; text-transform: uppercase;
5267
+ flex: 1; min-width: 0;
5268
+ font-size: clamp(9px, 0.65vw, 12px);
5269
+ font-weight: 700;
5270
+ letter-spacing: 0.14em;
5271
+ text-transform: uppercase;
5241
5272
  color: var(--ps-text-muted);
5242
5273
  }
5243
5274
  .ps-pmv-basic-value {
5244
- font-size: 22px; font-weight: 700;
5275
+ font-size: clamp(13px, 0.95vw, 18px);
5276
+ font-weight: 700;
5245
5277
  color: var(--ps-text-primary);
5246
5278
  font-feature-settings: "tnum" 1;
5279
+ text-align: right;
5247
5280
  }
5248
5281
 
5249
- /* Section blocks */
5282
+ /* Section blocks (BODY MEASUREMENTS) */
5250
5283
  .ps-pmv-section {
5251
- display: flex; flex-direction: column; gap: 14px;
5284
+ display: flex; flex-direction: column;
5285
+ gap: clamp(8px, 0.7vw, 16px);
5252
5286
  }
5253
5287
  .ps-pmv-section-head {
5254
- display: flex; flex-direction: column; gap: 4px;
5288
+ display: flex; flex-direction: column; gap: clamp(2px, 0.2vw, 6px);
5255
5289
  }
5256
5290
  .ps-pmv-section-title {
5257
- font-size: 12px; font-weight: 700;
5258
- letter-spacing: 0.14em; text-transform: uppercase;
5291
+ font-size: clamp(9px, 0.65vw, 12px);
5292
+ font-weight: 700;
5293
+ letter-spacing: 0.16em;
5294
+ text-transform: uppercase;
5259
5295
  color: var(--ps-text-primary);
5260
5296
  }
5261
5297
  .ps-pmv-section-title-row {
5262
5298
  display: flex; align-items: center; justify-content: space-between;
5263
- gap: 12px;
5299
+ gap: clamp(8px, 0.7vw, 14px);
5264
5300
  }
5265
5301
  .ps-pmv-loading-pill {
5266
- display: inline-flex; align-items: center; gap: 8px;
5267
- padding: 6px 12px;
5302
+ display: inline-flex; align-items: center;
5303
+ gap: clamp(4px, 0.4vw, 10px);
5304
+ padding: clamp(3px, 0.3vw, 7px) clamp(7px, 0.6vw, 14px);
5268
5305
  background: rgba(33, 84, 239, 0.08);
5269
5306
  color: var(--ps-accent);
5270
5307
  border-radius: 999px;
5271
- font-size: 10px; font-weight: 700;
5272
- letter-spacing: 0.1em; text-transform: uppercase;
5308
+ font-size: clamp(8px, 0.55vw, 11px);
5309
+ font-weight: 700;
5310
+ letter-spacing: 0.12em;
5311
+ text-transform: uppercase;
5273
5312
  }
5274
5313
  .ps-pmv-loading-spinner {
5275
- width: 12px; height: 12px;
5276
- border: 2px solid rgba(33, 84, 239, 0.25);
5314
+ width: clamp(8px, 0.65vw, 14px);
5315
+ height: clamp(8px, 0.65vw, 14px);
5316
+ border: 1.5px solid rgba(33, 84, 239, 0.25);
5277
5317
  border-top-color: var(--ps-accent);
5278
5318
  border-radius: 50%;
5279
5319
  animation: ps-pmv-spin 0.8s linear infinite;
@@ -5281,141 +5321,111 @@ const STYLES = `
5281
5321
  @keyframes ps-pmv-spin {
5282
5322
  to { transform: rotate(360deg); }
5283
5323
  }
5284
- .ps-pmv-section-sub {
5285
- font-size: 12px; font-weight: 400;
5286
- color: var(--ps-text-muted);
5287
- }
5288
5324
 
5289
- /* Body measurements grid */
5290
- .ps-pmv-measure-grid {
5291
- display: grid;
5292
- grid-template-columns: repeat(4, 1fr);
5293
- gap: 10px;
5325
+ /* Body measurements list — single column, icon + label + value rows */
5326
+ .ps-pmv-measure-list {
5327
+ display: flex; flex-direction: column;
5294
5328
  }
5295
- .ps-pmv-measure {
5296
- background: var(--ps-bg-primary);
5297
- border: 1px solid var(--ps-border-subtle);
5298
- border-radius: 10px;
5299
- padding: 12px 14px;
5300
- display: flex; flex-direction: column; gap: 4px;
5329
+ .ps-pmv-measure-row {
5330
+ display: flex; align-items: center;
5331
+ gap: clamp(8px, 0.7vw, 16px);
5332
+ padding: clamp(8px, 0.7vw, 14px) 0;
5333
+ border-bottom: 1px solid var(--ps-border-subtle);
5301
5334
  }
5335
+ .ps-pmv-measure-row:last-child { border-bottom: none; }
5336
+ .ps-pmv-measure-icon {
5337
+ flex-shrink: 0;
5338
+ width: clamp(14px, 1vw, 20px);
5339
+ height: clamp(14px, 1vw, 20px);
5340
+ color: var(--ps-text-muted);
5341
+ display: inline-flex; align-items: center; justify-content: center;
5342
+ }
5343
+ .ps-pmv-measure-icon svg { width: 100%; height: 100%; }
5302
5344
  .ps-pmv-measure-label {
5303
- font-size: 9px; font-weight: 700;
5304
- letter-spacing: 0.12em; text-transform: uppercase;
5345
+ flex: 1; min-width: 0;
5346
+ font-size: clamp(9px, 0.65vw, 12px);
5347
+ font-weight: 700;
5348
+ letter-spacing: 0.14em;
5349
+ text-transform: uppercase;
5305
5350
  color: var(--ps-text-muted);
5306
5351
  }
5307
5352
  .ps-pmv-measure-value {
5308
- font-size: 18px; font-weight: 700;
5353
+ font-size: clamp(12px, 0.85vw, 16px);
5354
+ font-weight: 700;
5309
5355
  color: var(--ps-text-primary);
5310
5356
  font-feature-settings: "tnum" 1;
5357
+ text-align: right;
5311
5358
  }
5312
5359
  .ps-pmv-measure-value.ps-loading {
5313
5360
  color: var(--ps-border-color);
5314
5361
  animation: ps-pmv-shimmer 1.4s ease-in-out infinite;
5315
5362
  }
5316
- .ps-pmv-measure.ps-loading {
5317
- background: linear-gradient(
5318
- 90deg,
5319
- var(--ps-bg-primary) 0%,
5320
- var(--ps-bg-secondary) 50%,
5321
- var(--ps-bg-primary) 100%
5322
- );
5323
- background-size: 200% 100%;
5324
- animation: ps-pmv-skeleton 1.6s ease-in-out infinite;
5363
+ .ps-pmv-measure-row.ps-loading .ps-pmv-measure-icon,
5364
+ .ps-pmv-measure-row.ps-loading .ps-pmv-measure-label {
5365
+ opacity: 0.55;
5325
5366
  }
5326
5367
  @keyframes ps-pmv-shimmer {
5327
5368
  0%, 100% { opacity: 0.5; }
5328
5369
  50% { opacity: 1; }
5329
5370
  }
5330
- @keyframes ps-pmv-skeleton {
5331
- 0% { background-position: 200% 0; }
5332
- 100% { background-position: -200% 0; }
5333
- }
5334
5371
 
5335
5372
  /* Inline measurement edit inputs */
5336
- .ps-pmv-measure.ps-editing {
5337
- border-color: var(--ps-accent);
5373
+ .ps-pmv-measure-row.ps-editing {
5338
5374
  background: rgba(33, 84, 239, 0.04);
5339
5375
  }
5340
5376
  .ps-pmv-measure-edit {
5341
- display: flex; align-items: baseline; gap: 4px;
5377
+ display: flex; align-items: baseline;
5378
+ gap: clamp(2px, 0.2vw, 6px);
5342
5379
  }
5343
5380
  .ps-pmv-measure-input {
5344
- flex: 1; min-width: 0;
5345
- background: transparent; border: none; outline: none;
5381
+ width: clamp(40px, 3vw, 70px);
5382
+ background: transparent;
5383
+ border: none;
5384
+ border-bottom: 1px solid var(--ps-border-color);
5385
+ outline: none;
5346
5386
  font-family: inherit;
5347
- font-size: 18px; font-weight: 700;
5387
+ font-size: clamp(12px, 0.85vw, 16px);
5388
+ font-weight: 700;
5348
5389
  color: var(--ps-text-primary);
5349
- padding: 0;
5390
+ padding: clamp(2px, 0.15vw, 4px) 0;
5391
+ text-align: right;
5350
5392
  font-feature-settings: "tnum" 1;
5351
5393
  }
5394
+ .ps-pmv-measure-input:focus {
5395
+ border-bottom-color: var(--ps-accent);
5396
+ }
5352
5397
  .ps-pmv-measure-input::-webkit-outer-spin-button,
5353
5398
  .ps-pmv-measure-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
5354
5399
  .ps-pmv-measure-input[type="number"] { -moz-appearance: textfield; }
5355
5400
  .ps-pmv-measure-input-unit {
5356
- font-size: 11px; color: var(--ps-text-muted); font-weight: 500;
5357
- }
5358
-
5359
- /* Saved sizes history (per-product cache) — kept for backwards compat,
5360
- no longer rendered inside ProfileMeasurementsView */
5361
- .ps-pmv-history {
5362
- display: flex; flex-direction: column; gap: 8px;
5363
- }
5364
- .ps-pmv-history-card {
5365
- display: flex; align-items: center; gap: 12px;
5366
- padding: 12px;
5367
- background: var(--ps-bg-primary);
5368
- border: 1px solid var(--ps-border-subtle);
5369
- border-radius: 10px;
5370
- }
5371
- .ps-pmv-history-thumb {
5372
- width: 44px; height: 44px;
5373
- border-radius: 6px; overflow: hidden;
5374
- background: var(--ps-bg-secondary);
5375
- flex-shrink: 0;
5376
- display: flex; align-items: center; justify-content: center;
5377
- }
5378
- .ps-pmv-history-thumb img {
5379
- max-width: 100%; max-height: 100%; object-fit: contain;
5380
- }
5381
- .ps-pmv-history-info {
5382
- flex: 1; min-width: 0;
5383
- display: flex; flex-direction: column; gap: 2px;
5384
- }
5385
- .ps-pmv-history-name {
5386
- font-size: 13px; font-weight: 600;
5387
- color: var(--ps-text-primary);
5388
- overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
5389
- }
5390
- .ps-pmv-history-meta {
5391
- font-size: 10px;
5401
+ font-size: clamp(8px, 0.55vw, 11px);
5392
5402
  color: var(--ps-text-muted);
5393
- }
5394
- .ps-pmv-history-size {
5395
- font-size: 22px; font-weight: 700;
5396
- color: var(--ps-accent);
5397
- font-feature-settings: "tnum" 1;
5403
+ font-weight: 500;
5398
5404
  }
5399
5405
 
5400
5406
  /* Actions */
5401
5407
  .ps-pmv-actions {
5402
5408
  display: flex; align-items: center; justify-content: space-between;
5403
- gap: 12px;
5404
- padding-top: 18px;
5409
+ gap: clamp(8px, 0.7vw, 14px);
5410
+ padding-top: clamp(12px, 1vw, 22px);
5405
5411
  border-top: 1px solid var(--ps-border-subtle);
5406
- margin-top: 4px;
5412
+ margin-top: clamp(2px, 0.2vw, 6px);
5407
5413
  }
5408
5414
  .ps-pmv-actions-right {
5409
- display: flex; align-items: center; gap: 8px;
5415
+ display: flex; align-items: center;
5416
+ gap: clamp(6px, 0.5vw, 12px);
5410
5417
  }
5411
5418
  .ps-pmv-btn-secondary,
5412
5419
  .ps-pmv-btn-edit,
5413
5420
  .ps-pmv-btn-delete {
5414
- background: none; border: 1px solid var(--ps-border-color);
5415
- border-radius: 6px;
5416
- padding: 10px 16px;
5417
- font-family: inherit; font-size: 11px; font-weight: 600;
5418
- letter-spacing: 0.06em;
5421
+ background: none;
5422
+ border: 1px solid var(--ps-border-color);
5423
+ border-radius: clamp(4px, 0.35vw, 8px);
5424
+ padding: clamp(6px, 0.55vw, 12px) clamp(10px, 0.9vw, 20px);
5425
+ font-family: inherit;
5426
+ font-size: clamp(9px, 0.65vw, 12px);
5427
+ font-weight: 600;
5428
+ letter-spacing: 0.08em;
5419
5429
  color: var(--ps-text-secondary);
5420
5430
  cursor: pointer;
5421
5431
  transition: border-color 0.15s, color 0.15s;
@@ -5431,14 +5441,19 @@ const STYLES = `
5431
5441
  }
5432
5442
  .ps-pmv-btn-primary {
5433
5443
  background: var(--ps-accent); color: #FFFFFF;
5434
- border: none; border-radius: 6px;
5435
- padding: 11px 18px;
5436
- font-family: inherit; font-size: 11px; font-weight: 700;
5437
- letter-spacing: 0.12em; text-transform: uppercase;
5444
+ border: none;
5445
+ border-radius: clamp(4px, 0.35vw, 8px);
5446
+ padding: clamp(7px, 0.65vw, 14px) clamp(12px, 1vw, 22px);
5447
+ font-family: inherit;
5448
+ font-size: clamp(9px, 0.65vw, 12px);
5449
+ font-weight: 700;
5450
+ letter-spacing: 0.14em;
5451
+ text-transform: uppercase;
5438
5452
  cursor: pointer;
5439
5453
  transition: opacity 0.15s, transform 0.15s, background 0.2s;
5440
- box-shadow: 0 4px 14px rgba(33, 84, 239, 0.18);
5441
- display: inline-flex; align-items: center; gap: 8px;
5454
+ box-shadow: 0 0.3vw 1vw rgba(33, 84, 239, 0.18);
5455
+ display: inline-flex; align-items: center;
5456
+ gap: clamp(4px, 0.4vw, 10px);
5442
5457
  justify-content: center;
5443
5458
  }
5444
5459
  .ps-pmv-btn-primary:hover:not(:disabled) { opacity: 0.92; }
@@ -5450,22 +5465,14 @@ const STYLES = `
5450
5465
  opacity: 0.65;
5451
5466
  }
5452
5467
  .ps-pmv-btn-spinner {
5453
- width: 12px; height: 12px;
5454
- border: 2px solid rgba(255, 255, 255, 0.35);
5468
+ width: clamp(8px, 0.65vw, 14px);
5469
+ height: clamp(8px, 0.65vw, 14px);
5470
+ border: 1.5px solid rgba(255, 255, 255, 0.35);
5455
5471
  border-top-color: #FFFFFF;
5456
5472
  border-radius: 50%;
5457
5473
  animation: ps-pmv-spin 0.8s linear infinite;
5458
5474
  }
5459
5475
 
5460
- @media (max-width: 768px) {
5461
- .ps-pmv-hero { flex-direction: column; align-items: flex-start; gap: 12px; }
5462
- .ps-pmv-hero-name { font-size: 22px; }
5463
- .ps-pmv-basics { grid-template-columns: 1fr; }
5464
- .ps-pmv-measure-grid { grid-template-columns: repeat(2, 1fr); }
5465
- .ps-pmv-actions { flex-direction: column; align-items: stretch; gap: 10px; }
5466
- .ps-pmv-actions-right { flex-wrap: wrap; }
5467
- }
5468
-
5469
5476
  /* Big product / try-on image */
5470
5477
  .ps-msd-image {
5471
5478
  width: 100%; height: 420px;
@@ -9466,26 +9473,95 @@ function CreateProfileWizard({ onSave, onCancel, t }) {
9466
9473
  ] })
9467
9474
  ] });
9468
9475
  }
9476
+ const HeightIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9477
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "3", x2: "12", y2: "21" }),
9478
+ /* @__PURE__ */ jsx("polyline", { points: "7 6 12 3 17 6" }),
9479
+ /* @__PURE__ */ jsx("polyline", { points: "7 18 12 21 17 18" })
9480
+ ] });
9481
+ const WeightIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9482
+ /* @__PURE__ */ jsx("path", { d: "M5 7h14l-1.5 12a2 2 0 0 1-2 2h-9a2 2 0 0 1-2-2L5 7z" }),
9483
+ /* @__PURE__ */ jsx("path", { d: "M9 7a3 3 0 0 1 6 0" }),
9484
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "11", x2: "12", y2: "15" })
9485
+ ] });
9486
+ const AgeIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9487
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
9488
+ /* @__PURE__ */ jsx("polyline", { points: "12 7 12 12 15 14" })
9489
+ ] });
9490
+ const ChestIcon = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M4 8 L8 5 L16 5 L20 8 L20 13 L17 11 L17 17 L7 17 L7 11 L4 13 Z" }) });
9491
+ const BustIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9492
+ /* @__PURE__ */ jsx("path", { d: "M5 9 Q12 3 19 9" }),
9493
+ /* @__PURE__ */ jsx("circle", { cx: "9", cy: "13", r: "2.5" }),
9494
+ /* @__PURE__ */ jsx("circle", { cx: "15", cy: "13", r: "2.5" })
9495
+ ] });
9496
+ const WaistIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9497
+ /* @__PURE__ */ jsx("path", { d: "M6 4 Q10 4 10 9 Q10 12 6 14" }),
9498
+ /* @__PURE__ */ jsx("path", { d: "M18 4 Q14 4 14 9 Q14 12 18 14" }),
9499
+ /* @__PURE__ */ jsx("path", { d: "M6 14 Q10 16 10 20" }),
9500
+ /* @__PURE__ */ jsx("path", { d: "M18 14 Q14 16 14 20" })
9501
+ ] });
9502
+ const HipsIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9503
+ /* @__PURE__ */ jsx("path", { d: "M7 4 Q10 4 10 9 Q10 11 9 13" }),
9504
+ /* @__PURE__ */ jsx("path", { d: "M17 4 Q14 4 14 9 Q14 11 15 13" }),
9505
+ /* @__PURE__ */ jsx("path", { d: "M5 14 Q12 22 19 14" })
9506
+ ] });
9507
+ const ShoulderIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9508
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "6", r: "2.5" }),
9509
+ /* @__PURE__ */ jsx("path", { d: "M4 13 Q8 9 12 9 Q16 9 20 13" }),
9510
+ /* @__PURE__ */ jsx("line", { x1: "4", y1: "15", x2: "20", y2: "15" })
9511
+ ] });
9512
+ const SleeveIcon = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M4 6 L8 4 L12 6 L11 11 L9 21 L5 21 L5 11 Z" }) });
9513
+ const NeckIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9514
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "6", r: "3" }),
9515
+ /* @__PURE__ */ jsx("path", { d: "M9 9 L9 13 Q9 15 12 15 Q15 15 15 13 L15 9" }),
9516
+ /* @__PURE__ */ jsx("path", { d: "M5 17 Q12 19 19 17" })
9517
+ ] });
9518
+ const InseamIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9519
+ /* @__PURE__ */ jsx("line", { x1: "12", y1: "3", x2: "12", y2: "21" }),
9520
+ /* @__PURE__ */ jsx("line", { x1: "9", y1: "3", x2: "15", y2: "3" }),
9521
+ /* @__PURE__ */ jsx("line", { x1: "9", y1: "21", x2: "15", y2: "21" })
9522
+ ] });
9523
+ const ThighIcon = () => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9524
+ /* @__PURE__ */ jsx("path", { d: "M8 4 Q10 8 10 14 L9 21" }),
9525
+ /* @__PURE__ */ jsx("path", { d: "M16 4 Q14 8 14 14 L15 21" }),
9526
+ /* @__PURE__ */ jsx("ellipse", { cx: "12", cy: "11", rx: "6", ry: "2" })
9527
+ ] });
9469
9528
  const FIELDS_MEN = [
9470
- { key: "chest", label: "CHEST" },
9471
- { key: "waist", label: "WAIST" },
9472
- { key: "hips", label: "HIPS" },
9473
- { key: "shoulderWidth", label: "SHOULDER" },
9474
- { key: "sleeveLength", label: "SLEEVE" },
9475
- { key: "neckCircumference", label: "NECK" },
9476
- { key: "inseam", label: "INSEAM" },
9477
- { key: "thighCircumference", label: "THIGH" }
9529
+ { key: "chest", label: "CHEST", Icon: ChestIcon },
9530
+ { key: "waist", label: "WAIST", Icon: WaistIcon },
9531
+ { key: "hips", label: "HIPS", Icon: HipsIcon },
9532
+ { key: "shoulderWidth", label: "SHOULDER", Icon: ShoulderIcon },
9533
+ { key: "sleeveLength", label: "SLEEVE", Icon: SleeveIcon },
9534
+ { key: "neckCircumference", label: "NECK", Icon: NeckIcon },
9535
+ { key: "inseam", label: "INSEAM", Icon: InseamIcon },
9536
+ { key: "thighCircumference", label: "THIGH", Icon: ThighIcon }
9478
9537
  ];
9479
9538
  const FIELDS_WOMEN = [
9480
- { key: "bust", label: "BUST" },
9481
- { key: "waist", label: "WAIST" },
9482
- { key: "hips", label: "HIPS" },
9483
- { key: "shoulderWidth", label: "SHOULDER" },
9484
- { key: "sleeveLength", label: "SLEEVE" },
9485
- { key: "neckCircumference", label: "NECK" },
9486
- { key: "inseam", label: "INSEAM" },
9487
- { key: "thighCircumference", label: "THIGH" }
9539
+ { key: "bust", label: "BUST", Icon: BustIcon },
9540
+ { key: "waist", label: "WAIST", Icon: WaistIcon },
9541
+ { key: "hips", label: "HIPS", Icon: HipsIcon },
9542
+ { key: "shoulderWidth", label: "SHOULDER", Icon: ShoulderIcon },
9543
+ { key: "sleeveLength", label: "SLEEVE", Icon: SleeveIcon },
9544
+ { key: "neckCircumference", label: "NECK", Icon: NeckIcon },
9545
+ { key: "inseam", label: "INSEAM", Icon: InseamIcon },
9546
+ { key: "thighCircumference", label: "THIGH", Icon: ThighIcon }
9488
9547
  ];
9548
+ const BodyDiagram = ({ female }) => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 120 320", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: "ps-pmv-body-diagram-svg", "aria-hidden": "true", children: [
9549
+ /* @__PURE__ */ jsx("circle", { cx: "60", cy: "28", r: "18" }),
9550
+ /* @__PURE__ */ jsx("line", { x1: "60", y1: "46", x2: "60", y2: "58" }),
9551
+ female ? /* @__PURE__ */ jsxs(Fragment, { children: [
9552
+ /* @__PURE__ */ jsx("path", { d: "M30 70 Q35 65 60 65 Q85 65 90 70" }),
9553
+ /* @__PURE__ */ jsx("path", { d: "M30 70 Q26 110 32 145 Q40 165 60 168 Q80 165 88 145 Q94 110 90 70" })
9554
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
9555
+ /* @__PURE__ */ jsx("path", { d: "M22 72 Q32 62 60 62 Q88 62 98 72" }),
9556
+ /* @__PURE__ */ jsx("path", { d: "M22 72 Q24 110 32 145 Q42 162 60 165 Q78 162 88 145 Q96 110 98 72" })
9557
+ ] }),
9558
+ /* @__PURE__ */ jsx("path", { d: "M22 72 Q12 130 18 175" }),
9559
+ /* @__PURE__ */ jsx("path", { d: "M98 72 Q108 130 102 175" }),
9560
+ /* @__PURE__ */ jsx("path", { d: "M40 168 L36 295" }),
9561
+ /* @__PURE__ */ jsx("path", { d: "M80 168 L84 295" }),
9562
+ /* @__PURE__ */ jsx("line", { x1: "30", y1: "295", x2: "42", y2: "295" }),
9563
+ /* @__PURE__ */ jsx("line", { x1: "78", y1: "295", x2: "90", y2: "295" })
9564
+ ] });
9489
9565
  function ProfileMeasurementsView({
9490
9566
  profile,
9491
9567
  isActive,
@@ -9545,60 +9621,64 @@ function ProfileMeasurementsView({
9545
9621
  const ageDisplay = profile.age ? `${profile.age}` : "—";
9546
9622
  return /* @__PURE__ */ jsxs("div", { className: "ps-pmv-root", children: [
9547
9623
  /* @__PURE__ */ jsxs("div", { className: "ps-pmv-hero", children: [
9548
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-hero-avatar", children: profile.photoBase64 ? /* @__PURE__ */ jsx("img", { src: profile.photoBase64, alt: profile.name }) : /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", width: "32", height: "32", children: [
9549
- /* @__PURE__ */ jsx("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
9550
- /* @__PURE__ */ jsx("circle", { cx: "12", cy: "7", r: "4" })
9551
- ] }) }),
9552
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-hero-info", children: [
9553
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-hero-eyebrow", children: isActive ? t("ACTIVE PROFILE") : profile.gender === "female" ? t("WOMEN'S FIT") : t("MEN'S FIT") }),
9554
- /* @__PURE__ */ jsx("h2", { className: "ps-pmv-hero-name", children: profile.name })
9555
- ] })
9624
+ /* @__PURE__ */ jsx("div", { className: "ps-pmv-hero-eyebrow", children: isActive ? t("ACTIVE PROFILE") : profile.gender === "female" ? t("WOMEN'S FIT") : t("MEN'S FIT") }),
9625
+ /* @__PURE__ */ jsx("h2", { className: "ps-pmv-hero-name", children: profile.name })
9556
9626
  ] }),
9557
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basics", children: [
9558
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic", children: [
9559
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-label", children: t("HEIGHT") }),
9560
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-value", children: heightDisplay })
9561
- ] }),
9562
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic", children: [
9563
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-label", children: t("WEIGHT") }),
9564
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-value", children: weightDisplay })
9627
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-split", children: [
9628
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-diagram", children: [
9629
+ /* @__PURE__ */ jsx(BodyDiagram, { female: profile.gender === "female" }),
9630
+ /* @__PURE__ */ jsx("div", { className: "ps-pmv-diagram-caption", children: t("Reference figure") })
9565
9631
  ] }),
9566
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic", children: [
9567
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-label", children: t("AGE") }),
9568
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-basic-value", children: ageDisplay })
9569
- ] })
9570
- ] }),
9571
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-section", children: [
9572
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-section-head", children: [
9573
- /* @__PURE__ */ jsxs("div", { className: "ps-pmv-section-title-row", children: [
9574
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-section-title", children: t("BODY MEASUREMENTS") }),
9575
- !hasMeasurements && /* @__PURE__ */ jsxs("div", { className: "ps-pmv-loading-pill", children: [
9576
- /* @__PURE__ */ jsx("span", { className: "ps-pmv-loading-spinner" }),
9577
- /* @__PURE__ */ jsx("span", { children: t("Calculating...") })
9632
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-data", children: [
9633
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basics", children: [
9634
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic-row", children: [
9635
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-icon", children: /* @__PURE__ */ jsx(HeightIcon, {}) }),
9636
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-label", children: t("HEIGHT") }),
9637
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-value", children: heightDisplay })
9638
+ ] }),
9639
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic-row", children: [
9640
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-icon", children: /* @__PURE__ */ jsx(WeightIcon, {}) }),
9641
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-label", children: t("WEIGHT") }),
9642
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-value", children: weightDisplay })
9643
+ ] }),
9644
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-basic-row", children: [
9645
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-icon", children: /* @__PURE__ */ jsx(AgeIcon, {}) }),
9646
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-label", children: t("AGE") }),
9647
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-basic-value", children: ageDisplay })
9578
9648
  ] })
9579
9649
  ] }),
9580
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-section-sub", children: hasMeasurements ? editing ? t("Tap any value to edit. Save when you're done.") : t("Calculated from your basics. Used to recommend the perfect size for any product.") : t("Our AI is computing your full body proportions — this usually takes a few seconds.") })
9581
- ] }),
9582
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-measure-grid", children: fields.map((f) => {
9583
- const v = measurements[f.key];
9584
- return /* @__PURE__ */ jsxs("div", { className: `ps-pmv-measure${v == null && !editing ? " ps-loading" : ""}${editing ? " ps-editing" : ""}`, children: [
9585
- /* @__PURE__ */ jsx("div", { className: "ps-pmv-measure-label", children: t(f.label) }),
9586
- editing ? /* @__PURE__ */ jsxs("div", { className: "ps-pmv-measure-edit", children: [
9587
- /* @__PURE__ */ jsx(
9588
- "input",
9589
- {
9590
- type: "number",
9591
- inputMode: "decimal",
9592
- className: "ps-pmv-measure-input",
9593
- value: draft[f.key] ?? "",
9594
- placeholder: "",
9595
- onChange: (e) => handleDraftChange(f.key, e.target.value)
9596
- }
9597
- ),
9598
- /* @__PURE__ */ jsx("span", { className: "ps-pmv-measure-input-unit", children: unit })
9599
- ] }) : /* @__PURE__ */ jsx("div", { className: `ps-pmv-measure-value${v == null ? " ps-loading" : ""}`, children: v != null ? `${Math.round(v * 10) / 10} ${unit}` : "—" })
9600
- ] }, f.key);
9601
- }) })
9650
+ /* @__PURE__ */ jsxs("div", { className: "ps-pmv-section", children: [
9651
+ /* @__PURE__ */ jsx("div", { className: "ps-pmv-section-head", children: /* @__PURE__ */ jsxs("div", { className: "ps-pmv-section-title-row", children: [
9652
+ /* @__PURE__ */ jsx("div", { className: "ps-pmv-section-title", children: t("BODY MEASUREMENTS") }),
9653
+ !hasMeasurements && /* @__PURE__ */ jsxs("div", { className: "ps-pmv-loading-pill", children: [
9654
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-loading-spinner" }),
9655
+ /* @__PURE__ */ jsx("span", { children: t("Calculating...") })
9656
+ ] })
9657
+ ] }) }),
9658
+ /* @__PURE__ */ jsx("div", { className: "ps-pmv-measure-list", children: fields.map((f) => {
9659
+ const v = measurements[f.key];
9660
+ const Icon = f.Icon;
9661
+ return /* @__PURE__ */ jsxs("div", { className: `ps-pmv-measure-row${v == null && !editing ? " ps-loading" : ""}${editing ? " ps-editing" : ""}`, children: [
9662
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-measure-icon", children: /* @__PURE__ */ jsx(Icon, {}) }),
9663
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-measure-label", children: t(f.label) }),
9664
+ editing ? /* @__PURE__ */ jsxs("div", { className: "ps-pmv-measure-edit", children: [
9665
+ /* @__PURE__ */ jsx(
9666
+ "input",
9667
+ {
9668
+ type: "number",
9669
+ inputMode: "decimal",
9670
+ className: "ps-pmv-measure-input",
9671
+ value: draft[f.key] ?? "",
9672
+ placeholder: "—",
9673
+ onChange: (e) => handleDraftChange(f.key, e.target.value)
9674
+ }
9675
+ ),
9676
+ /* @__PURE__ */ jsx("span", { className: "ps-pmv-measure-input-unit", children: unit })
9677
+ ] }) : /* @__PURE__ */ jsx("span", { className: `ps-pmv-measure-value${v == null ? " ps-loading" : ""}`, children: v != null ? `${Math.round(v * 10) / 10} ${unit}` : "—" })
9678
+ ] }, f.key);
9679
+ }) })
9680
+ ] })
9681
+ ] })
9602
9682
  ] }),
9603
9683
  /* @__PURE__ */ jsxs("div", { className: "ps-pmv-actions", children: [
9604
9684
  /* @__PURE__ */ jsx("button", { type: "button", className: "ps-pmv-btn-secondary", onClick: editing ? handleEditCancel : onBack, children: editing ? t("Cancel") : t("Back") }),