xactsize-webcomponents 1.0.28 → 1.0.30

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.
@@ -16,7 +16,7 @@ const wA = (l, A, t) => {
16
16
  * Copyright 2019 Google LLC
17
17
  * SPDX-License-Identifier: BSD-3-Clause
18
18
  */
19
- const B = globalThis, yA = B.ShadowRoot && (B.ShadyCSS === void 0 || B.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, uA = Symbol(), TA = /* @__PURE__ */ new WeakMap();
19
+ const B = globalThis, dA = B.ShadowRoot && (B.ShadyCSS === void 0 || B.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, uA = Symbol(), TA = /* @__PURE__ */ new WeakMap();
20
20
  let ZA = class {
21
21
  constructor(A, t, r) {
22
22
  if (this._$cssResult$ = !0, r !== uA) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
@@ -25,7 +25,7 @@ let ZA = class {
25
25
  get styleSheet() {
26
26
  let A = this.o;
27
27
  const t = this.t;
28
- if (yA && A === void 0) {
28
+ if (dA && A === void 0) {
29
29
  const r = t !== void 0 && t.length === 1;
30
30
  r && (A = TA.get(t)), A === void 0 && ((this.o = A = new CSSStyleSheet()).replaceSync(this.cssText), r && TA.set(t, A));
31
31
  }
@@ -35,23 +35,23 @@ let ZA = class {
35
35
  return this.cssText;
36
36
  }
37
37
  };
38
- const CA = (l) => new ZA(typeof l == "string" ? l : l + "", void 0, uA), N = (l, ...A) => {
39
- const t = l.length === 1 ? l[0] : A.reduce((r, e, p) => r + ((V) => {
40
- if (V._$cssResult$ === !0) return V.cssText;
41
- if (typeof V == "number") return V;
42
- throw Error("Value passed to 'css' function must be a 'css' function result: " + V + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
38
+ const YA = (l) => new ZA(typeof l == "string" ? l : l + "", void 0, uA), N = (l, ...A) => {
39
+ const t = l.length === 1 ? l[0] : A.reduce((r, e, p) => r + ((n) => {
40
+ if (n._$cssResult$ === !0) return n.cssText;
41
+ if (typeof n == "number") return n;
42
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + n + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
43
43
  })(e) + l[p + 1], l[0]);
44
44
  return new ZA(t, l, uA);
45
- }, YA = (l, A) => {
46
- if (yA) l.adoptedStyleSheets = A.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
45
+ }, CA = (l, A) => {
46
+ if (dA) l.adoptedStyleSheets = A.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
47
47
  else for (const t of A) {
48
48
  const r = document.createElement("style"), e = B.litNonce;
49
49
  e !== void 0 && r.setAttribute("nonce", e), r.textContent = t.cssText, l.appendChild(r);
50
50
  }
51
- }, XA = yA ? (l) => l : (l) => l instanceof CSSStyleSheet ? ((A) => {
51
+ }, XA = dA ? (l) => l : (l) => l instanceof CSSStyleSheet ? ((A) => {
52
52
  let t = "";
53
53
  for (const r of A.cssRules) t += r.cssText;
54
- return CA(t);
54
+ return YA(t);
55
55
  })(l) : l;
56
56
  /**
57
57
  * @license
@@ -86,7 +86,7 @@ const { is: DA, defineProperty: QA, getOwnPropertyDescriptor: gA, getOwnProperty
86
86
  }
87
87
  }
88
88
  return t;
89
- } }, jA = (l, A) => !DA(l, A), iA = { attribute: !0, type: String, converter: _, reflect: !1, useDefault: !1, hasChanged: jA };
89
+ } }, cA = (l, A) => !DA(l, A), sA = { attribute: !0, type: String, converter: _, reflect: !1, useDefault: !1, hasChanged: cA };
90
90
  Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), U.litPropertyMetadata ?? (U.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
91
91
  let m = class extends HTMLElement {
92
92
  static addInitializer(A) {
@@ -95,7 +95,7 @@ let m = class extends HTMLElement {
95
95
  static get observedAttributes() {
96
96
  return this.finalize(), this._$Eh && [...this._$Eh.keys()];
97
97
  }
98
- static createProperty(A, t = iA) {
98
+ static createProperty(A, t = sA) {
99
99
  if (t.state && (t.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(A) && ((t = Object.create(t)).wrapped = !0), this.elementProperties.set(A, t), !t.noAccessor) {
100
100
  const r = Symbol(), e = this.getPropertyDescriptor(A, r, t);
101
101
  e !== void 0 && QA(this.prototype, A, e);
@@ -104,16 +104,16 @@ let m = class extends HTMLElement {
104
104
  static getPropertyDescriptor(A, t, r) {
105
105
  const { get: e, set: p } = gA(this.prototype, A) ?? { get() {
106
106
  return this[t];
107
- }, set(V) {
108
- this[t] = V;
107
+ }, set(n) {
108
+ this[t] = n;
109
109
  } };
110
- return { get: e, set(V) {
110
+ return { get: e, set(n) {
111
111
  const S = e == null ? void 0 : e.call(this);
112
- p == null || p.call(this, V), this.requestUpdate(A, S, r);
112
+ p == null || p.call(this, n), this.requestUpdate(A, S, r);
113
113
  }, configurable: !0, enumerable: !0 };
114
114
  }
115
115
  static getPropertyOptions(A) {
116
- return this.elementProperties.get(A) ?? iA;
116
+ return this.elementProperties.get(A) ?? sA;
117
117
  }
118
118
  static _$Ei() {
119
119
  if (this.hasOwnProperty(z("elementProperties"))) return;
@@ -172,7 +172,7 @@ let m = class extends HTMLElement {
172
172
  }
173
173
  createRenderRoot() {
174
174
  const A = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
175
- return YA(A, this.constructor.elementStyles), A;
175
+ return CA(A, this.constructor.elementStyles), A;
176
176
  }
177
177
  connectedCallback() {
178
178
  var A;
@@ -197,29 +197,29 @@ let m = class extends HTMLElement {
197
197
  var p;
198
198
  const r = this.constructor.elementProperties.get(A), e = this.constructor._$Eu(A, r);
199
199
  if (e !== void 0 && r.reflect === !0) {
200
- const V = (((p = r.converter) == null ? void 0 : p.toAttribute) !== void 0 ? r.converter : _).toAttribute(t, r.type);
201
- this._$Em = A, V == null ? this.removeAttribute(e) : this.setAttribute(e, V), this._$Em = null;
200
+ const n = (((p = r.converter) == null ? void 0 : p.toAttribute) !== void 0 ? r.converter : _).toAttribute(t, r.type);
201
+ this._$Em = A, n == null ? this.removeAttribute(e) : this.setAttribute(e, n), this._$Em = null;
202
202
  }
203
203
  }
204
204
  _$AK(A, t) {
205
- var p, V;
205
+ var p, n;
206
206
  const r = this.constructor, e = r._$Eh.get(A);
207
207
  if (e !== void 0 && this._$Em !== e) {
208
208
  const S = r.getPropertyOptions(e), q = typeof S.converter == "function" ? { fromAttribute: S.converter } : ((p = S.converter) == null ? void 0 : p.fromAttribute) !== void 0 ? S.converter : _;
209
- this._$Em = e, this[e] = q.fromAttribute(t, S.type) ?? ((V = this._$Ej) == null ? void 0 : V.get(e)) ?? null, this._$Em = null;
209
+ this._$Em = e, this[e] = q.fromAttribute(t, S.type) ?? ((n = this._$Ej) == null ? void 0 : n.get(e)) ?? null, this._$Em = null;
210
210
  }
211
211
  }
212
212
  requestUpdate(A, t, r) {
213
213
  var e;
214
214
  if (A !== void 0) {
215
- const p = this.constructor, V = this[A];
216
- if (r ?? (r = p.getPropertyOptions(A)), !((r.hasChanged ?? jA)(V, t) || r.useDefault && r.reflect && V === ((e = this._$Ej) == null ? void 0 : e.get(A)) && !this.hasAttribute(p._$Eu(A, r)))) return;
215
+ const p = this.constructor, n = this[A];
216
+ if (r ?? (r = p.getPropertyOptions(A)), !((r.hasChanged ?? cA)(n, t) || r.useDefault && r.reflect && n === ((e = this._$Ej) == null ? void 0 : e.get(A)) && !this.hasAttribute(p._$Eu(A, r)))) return;
217
217
  this.C(A, t, r);
218
218
  }
219
219
  this.isUpdatePending === !1 && (this._$ES = this._$EP());
220
220
  }
221
- C(A, t, { useDefault: r, reflect: e, wrapped: p }, V) {
222
- r && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(A) && (this._$Ej.set(A, V ?? t ?? this[A]), p !== !0 || V !== void 0) || (this._$AL.has(A) || (this.hasUpdated || r || (t = void 0), this._$AL.set(A, t)), e === !0 && this._$Em !== A && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(A));
221
+ C(A, t, { useDefault: r, reflect: e, wrapped: p }, n) {
222
+ r && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(A) && (this._$Ej.set(A, n ?? t ?? this[A]), p !== !0 || n !== void 0) || (this._$AL.has(A) || (this.hasUpdated || r || (t = void 0), this._$AL.set(A, t)), e === !0 && this._$Em !== A && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(A));
223
223
  }
224
224
  async _$EP() {
225
225
  this.isUpdatePending = !0;
@@ -239,13 +239,13 @@ let m = class extends HTMLElement {
239
239
  if (!this.isUpdatePending) return;
240
240
  if (!this.hasUpdated) {
241
241
  if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
242
- for (const [p, V] of this._$Ep) this[p] = V;
242
+ for (const [p, n] of this._$Ep) this[p] = n;
243
243
  this._$Ep = void 0;
244
244
  }
245
245
  const e = this.constructor.elementProperties;
246
- if (e.size > 0) for (const [p, V] of e) {
247
- const { wrapped: S } = V, q = this[p];
248
- S !== !0 || this._$AL.has(p) || q === void 0 || this.C(p, void 0, V, q);
246
+ if (e.size > 0) for (const [p, n] of e) {
247
+ const { wrapped: S } = n, q = this[p];
248
+ S !== !0 || this._$AL.has(p) || q === void 0 || this.C(p, void 0, n, q);
249
249
  }
250
250
  }
251
251
  let A = !1;
@@ -295,22 +295,22 @@ m.elementStyles = [], m.shadowRootOptions = { mode: "open" }, m[z("elementProper
295
295
  * Copyright 2017 Google LLC
296
296
  * SPDX-License-Identifier: BSD-3-Clause
297
297
  */
298
- const G = globalThis, $ = G.trustedTypes, sA = $ ? $.createPolicy("lit-html", { createHTML: (l) => l }) : void 0, NA = "$lit$", K = `lit$${Math.random().toFixed(9).slice(2)}$`, RA = "?" + K, tt = `<${RA}>`, L = document, F = () => L.createComment(""), M = (l) => l === null || typeof l != "object" && typeof l != "function", cA = Array.isArray, lt = (l) => cA(l) || typeof (l == null ? void 0 : l[Symbol.iterator]) == "function", rA = `[
298
+ const G = globalThis, $ = G.trustedTypes, iA = $ ? $.createPolicy("lit-html", { createHTML: (l) => l }) : void 0, NA = "$lit$", K = `lit$${Math.random().toFixed(9).slice(2)}$`, RA = "?" + K, tt = `<${RA}>`, L = document, F = () => L.createComment(""), M = (l) => l === null || typeof l != "object" && typeof l != "function", jA = Array.isArray, lt = (l) => jA(l) || typeof (l == null ? void 0 : l[Symbol.iterator]) == "function", rA = `[
299
299
  \f\r]`, H = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, KA = /-->/g, UA = />/g, W = RegExp(`>|${rA}(?:([^\\s"'>=/]+)(${rA}*=${rA}*(?:[^
300
- \f\r"'\`<>=]|("|')|))|$)`, "g"), WA = /'/g, vA = /"/g, HA = /^(?:script|style|textarea|title)$/i, et = (l) => (A, ...t) => ({ _$litType$: l, strings: A, values: t }), T = et(1), f = Symbol.for("lit-noChange"), c = Symbol.for("lit-nothing"), OA = /* @__PURE__ */ new WeakMap(), O = L.createTreeWalker(L, 129);
300
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), WA = /'/g, vA = /"/g, HA = /^(?:script|style|textarea|title)$/i, et = (l) => (A, ...t) => ({ _$litType$: l, strings: A, values: t }), k = et(1), f = Symbol.for("lit-noChange"), j = Symbol.for("lit-nothing"), OA = /* @__PURE__ */ new WeakMap(), O = L.createTreeWalker(L, 129);
301
301
  function zA(l, A) {
302
- if (!cA(l) || !l.hasOwnProperty("raw")) throw Error("invalid template strings array");
303
- return sA !== void 0 ? sA.createHTML(A) : A;
302
+ if (!jA(l) || !l.hasOwnProperty("raw")) throw Error("invalid template strings array");
303
+ return iA !== void 0 ? iA.createHTML(A) : A;
304
304
  }
305
305
  const rt = (l, A) => {
306
306
  const t = l.length - 1, r = [];
307
- let e, p = A === 2 ? "<svg>" : A === 3 ? "<math>" : "", V = H;
307
+ let e, p = A === 2 ? "<svg>" : A === 3 ? "<math>" : "", n = H;
308
308
  for (let S = 0; S < t; S++) {
309
309
  const q = l[S];
310
- let u, k, d = -1, x = 0;
311
- for (; x < q.length && (V.lastIndex = x, k = V.exec(q), k !== null); ) x = V.lastIndex, V === H ? k[1] === "!--" ? V = KA : k[1] !== void 0 ? V = UA : k[2] !== void 0 ? (HA.test(k[2]) && (e = RegExp("</" + k[2], "g")), V = W) : k[3] !== void 0 && (V = W) : V === W ? k[0] === ">" ? (V = e ?? H, d = -1) : k[1] === void 0 ? d = -2 : (d = V.lastIndex - k[2].length, u = k[1], V = k[3] === void 0 ? W : k[3] === '"' ? vA : WA) : V === vA || V === WA ? V = W : V === KA || V === UA ? V = H : (V = W, e = void 0);
312
- const s = V === W && l[S + 1].startsWith("/>") ? " " : "";
313
- p += V === H ? q + tt : d >= 0 ? (r.push(u), q.slice(0, d) + NA + q.slice(d) + K + s) : q + K + (d === -2 ? S : s);
310
+ let u, J, y = -1, x = 0;
311
+ for (; x < q.length && (n.lastIndex = x, J = n.exec(q), J !== null); ) x = n.lastIndex, n === H ? J[1] === "!--" ? n = KA : J[1] !== void 0 ? n = UA : J[2] !== void 0 ? (HA.test(J[2]) && (e = RegExp("</" + J[2], "g")), n = W) : J[3] !== void 0 && (n = W) : n === W ? J[0] === ">" ? (n = e ?? H, y = -1) : J[1] === void 0 ? y = -2 : (y = n.lastIndex - J[2].length, u = J[1], n = J[3] === void 0 ? W : J[3] === '"' ? vA : WA) : n === vA || n === WA ? n = W : n === KA || n === UA ? n = H : (n = W, e = void 0);
312
+ const i = n === W && l[S + 1].startsWith("/>") ? " " : "";
313
+ p += n === H ? q + tt : y >= 0 ? (r.push(u), q.slice(0, y) + NA + q.slice(y) + K + i) : q + K + (y === -2 ? S : i);
314
314
  }
315
315
  return [zA(l, p + (l[t] || "<?>") + (A === 2 ? "</svg>" : A === 3 ? "</math>" : "")), r];
316
316
  };
@@ -318,30 +318,30 @@ class h {
318
318
  constructor({ strings: A, _$litType$: t }, r) {
319
319
  let e;
320
320
  this.parts = [];
321
- let p = 0, V = 0;
322
- const S = A.length - 1, q = this.parts, [u, k] = rt(A, t);
321
+ let p = 0, n = 0;
322
+ const S = A.length - 1, q = this.parts, [u, J] = rt(A, t);
323
323
  if (this.el = h.createElement(u, r), O.currentNode = this.el.content, t === 2 || t === 3) {
324
- const d = this.el.content.firstChild;
325
- d.replaceWith(...d.childNodes);
324
+ const y = this.el.content.firstChild;
325
+ y.replaceWith(...y.childNodes);
326
326
  }
327
327
  for (; (e = O.nextNode()) !== null && q.length < S; ) {
328
328
  if (e.nodeType === 1) {
329
- if (e.hasAttributes()) for (const d of e.getAttributeNames()) if (d.endsWith(NA)) {
330
- const x = k[V++], s = e.getAttribute(d).split(K), Q = /([.?@])?(.*)/.exec(x);
331
- q.push({ type: 1, index: p, name: Q[2], strings: s, ctor: Q[1] === "." ? Vt : Q[1] === "?" ? nt : Q[1] === "@" ? qt : lA }), e.removeAttribute(d);
332
- } else d.startsWith(K) && (q.push({ type: 6, index: p }), e.removeAttribute(d));
329
+ if (e.hasAttributes()) for (const y of e.getAttributeNames()) if (y.endsWith(NA)) {
330
+ const x = J[n++], i = e.getAttribute(y).split(K), Q = /([.?@])?(.*)/.exec(x);
331
+ q.push({ type: 1, index: p, name: Q[2], strings: i, ctor: Q[1] === "." ? nt : Q[1] === "?" ? Vt : Q[1] === "@" ? qt : lA }), e.removeAttribute(y);
332
+ } else y.startsWith(K) && (q.push({ type: 6, index: p }), e.removeAttribute(y));
333
333
  if (HA.test(e.tagName)) {
334
- const d = e.textContent.split(K), x = d.length - 1;
334
+ const y = e.textContent.split(K), x = y.length - 1;
335
335
  if (x > 0) {
336
336
  e.textContent = $ ? $.emptyScript : "";
337
- for (let s = 0; s < x; s++) e.append(d[s], F()), O.nextNode(), q.push({ type: 2, index: ++p });
338
- e.append(d[x], F());
337
+ for (let i = 0; i < x; i++) e.append(y[i], F()), O.nextNode(), q.push({ type: 2, index: ++p });
338
+ e.append(y[x], F());
339
339
  }
340
340
  }
341
341
  } else if (e.nodeType === 8) if (e.data === RA) q.push({ type: 2, index: p });
342
342
  else {
343
- let d = -1;
344
- for (; (d = e.data.indexOf(K, d + 1)) !== -1; ) q.push({ type: 7, index: p }), d += K.length - 1;
343
+ let y = -1;
344
+ for (; (y = e.data.indexOf(K, y + 1)) !== -1; ) q.push({ type: 7, index: p }), y += K.length - 1;
345
345
  }
346
346
  p++;
347
347
  }
@@ -352,9 +352,9 @@ class h {
352
352
  }
353
353
  }
354
354
  function Z(l, A, t = l, r) {
355
- var V, S;
355
+ var n, S;
356
356
  if (A === f) return A;
357
- let e = r !== void 0 ? (V = t._$Co) == null ? void 0 : V[r] : t._$Cl;
357
+ let e = r !== void 0 ? (n = t._$Co) == null ? void 0 : n[r] : t._$Cl;
358
358
  const p = M(A) ? void 0 : A._$litDirective$;
359
359
  return (e == null ? void 0 : e.constructor) !== p && ((S = e == null ? void 0 : e._$AO) == null || S.call(e, !1), p === void 0 ? e = void 0 : (e = new p(l), e._$AT(l, t, r)), r !== void 0 ? (t._$Co ?? (t._$Co = []))[r] = e : t._$Cl = e), e !== void 0 && (A = Z(l, e._$AS(l, A.values), e, r)), A;
360
360
  }
@@ -371,13 +371,13 @@ class pt {
371
371
  u(A) {
372
372
  const { el: { content: t }, parts: r } = this._$AD, e = ((A == null ? void 0 : A.creationScope) ?? L).importNode(t, !0);
373
373
  O.currentNode = e;
374
- let p = O.nextNode(), V = 0, S = 0, q = r[0];
374
+ let p = O.nextNode(), n = 0, S = 0, q = r[0];
375
375
  for (; q !== void 0; ) {
376
- if (V === q.index) {
376
+ if (n === q.index) {
377
377
  let u;
378
378
  q.type === 2 ? u = new w(p, p.nextSibling, this, A) : q.type === 1 ? u = new q.ctor(p, q.name, q.strings, this, A) : q.type === 6 && (u = new St(p, this, A)), this._$AV.push(u), q = r[++S];
379
379
  }
380
- V !== (q == null ? void 0 : q.index) && (p = O.nextNode(), V++);
380
+ n !== (q == null ? void 0 : q.index) && (p = O.nextNode(), n++);
381
381
  }
382
382
  return O.currentNode = L, e;
383
383
  }
@@ -392,7 +392,7 @@ class w {
392
392
  return ((A = this._$AM) == null ? void 0 : A._$AU) ?? this._$Cv;
393
393
  }
394
394
  constructor(A, t, r, e) {
395
- this.type = 2, this._$AH = c, this._$AN = void 0, this._$AA = A, this._$AB = t, this._$AM = r, this.options = e, this._$Cv = (e == null ? void 0 : e.isConnected) ?? !0;
395
+ this.type = 2, this._$AH = j, this._$AN = void 0, this._$AA = A, this._$AB = t, this._$AM = r, this.options = e, this._$Cv = (e == null ? void 0 : e.isConnected) ?? !0;
396
396
  }
397
397
  get parentNode() {
398
398
  let A = this._$AA.parentNode;
@@ -406,7 +406,7 @@ class w {
406
406
  return this._$AB;
407
407
  }
408
408
  _$AI(A, t = this) {
409
- A = Z(this, A, t), M(A) ? A === c || A == null || A === "" ? (this._$AH !== c && this._$AR(), this._$AH = c) : A !== this._$AH && A !== f && this._(A) : A._$litType$ !== void 0 ? this.$(A) : A.nodeType !== void 0 ? this.T(A) : lt(A) ? this.k(A) : this._(A);
409
+ A = Z(this, A, t), M(A) ? A === j || A == null || A === "" ? (this._$AH !== j && this._$AR(), this._$AH = j) : A !== this._$AH && A !== f && this._(A) : A._$litType$ !== void 0 ? this.$(A) : A.nodeType !== void 0 ? this.T(A) : lt(A) ? this.k(A) : this._(A);
410
410
  }
411
411
  O(A) {
412
412
  return this._$AA.parentNode.insertBefore(A, this._$AB);
@@ -415,15 +415,15 @@ class w {
415
415
  this._$AH !== A && (this._$AR(), this._$AH = this.O(A));
416
416
  }
417
417
  _(A) {
418
- this._$AH !== c && M(this._$AH) ? this._$AA.nextSibling.data = A : this.T(L.createTextNode(A)), this._$AH = A;
418
+ this._$AH !== j && M(this._$AH) ? this._$AA.nextSibling.data = A : this.T(L.createTextNode(A)), this._$AH = A;
419
419
  }
420
420
  $(A) {
421
421
  var p;
422
422
  const { values: t, _$litType$: r } = A, e = typeof r == "number" ? this._$AC(A) : (r.el === void 0 && (r.el = h.createElement(zA(r.h, r.h[0]), this.options)), r);
423
423
  if (((p = this._$AH) == null ? void 0 : p._$AD) === e) this._$AH.p(t);
424
424
  else {
425
- const V = new pt(e, this), S = V.u(this.options);
426
- V.p(t), this.T(S), this._$AH = V;
425
+ const n = new pt(e, this), S = n.u(this.options);
426
+ n.p(t), this.T(S), this._$AH = n;
427
427
  }
428
428
  }
429
429
  _$AC(A) {
@@ -431,7 +431,7 @@ class w {
431
431
  return t === void 0 && OA.set(A.strings, t = new h(A)), t;
432
432
  }
433
433
  k(A) {
434
- cA(this._$AH) || (this._$AH = [], this._$AR());
434
+ jA(this._$AH) || (this._$AH = [], this._$AR());
435
435
  const t = this._$AH;
436
436
  let r, e = 0;
437
437
  for (const p of A) e === t.length ? t.push(r = new w(this.O(F()), this.O(F()), this, this.options)) : r = t[e], r._$AI(p), e++;
@@ -457,37 +457,37 @@ class lA {
457
457
  return this._$AM._$AU;
458
458
  }
459
459
  constructor(A, t, r, e, p) {
460
- this.type = 1, this._$AH = c, this._$AN = void 0, this.element = A, this.name = t, this._$AM = e, this.options = p, r.length > 2 || r[0] !== "" || r[1] !== "" ? (this._$AH = Array(r.length - 1).fill(new String()), this.strings = r) : this._$AH = c;
460
+ this.type = 1, this._$AH = j, this._$AN = void 0, this.element = A, this.name = t, this._$AM = e, this.options = p, r.length > 2 || r[0] !== "" || r[1] !== "" ? (this._$AH = Array(r.length - 1).fill(new String()), this.strings = r) : this._$AH = j;
461
461
  }
462
462
  _$AI(A, t = this, r, e) {
463
463
  const p = this.strings;
464
- let V = !1;
465
- if (p === void 0) A = Z(this, A, t, 0), V = !M(A) || A !== this._$AH && A !== f, V && (this._$AH = A);
464
+ let n = !1;
465
+ if (p === void 0) A = Z(this, A, t, 0), n = !M(A) || A !== this._$AH && A !== f, n && (this._$AH = A);
466
466
  else {
467
467
  const S = A;
468
468
  let q, u;
469
- for (A = p[0], q = 0; q < p.length - 1; q++) u = Z(this, S[r + q], t, q), u === f && (u = this._$AH[q]), V || (V = !M(u) || u !== this._$AH[q]), u === c ? A = c : A !== c && (A += (u ?? "") + p[q + 1]), this._$AH[q] = u;
469
+ for (A = p[0], q = 0; q < p.length - 1; q++) u = Z(this, S[r + q], t, q), u === f && (u = this._$AH[q]), n || (n = !M(u) || u !== this._$AH[q]), u === j ? A = j : A !== j && (A += (u ?? "") + p[q + 1]), this._$AH[q] = u;
470
470
  }
471
- V && !e && this.j(A);
471
+ n && !e && this.j(A);
472
472
  }
473
473
  j(A) {
474
- A === c ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, A ?? "");
474
+ A === j ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, A ?? "");
475
475
  }
476
476
  }
477
- class Vt extends lA {
477
+ class nt extends lA {
478
478
  constructor() {
479
479
  super(...arguments), this.type = 3;
480
480
  }
481
481
  j(A) {
482
- this.element[this.name] = A === c ? void 0 : A;
482
+ this.element[this.name] = A === j ? void 0 : A;
483
483
  }
484
484
  }
485
- class nt extends lA {
485
+ class Vt extends lA {
486
486
  constructor() {
487
487
  super(...arguments), this.type = 4;
488
488
  }
489
489
  j(A) {
490
- this.element.toggleAttribute(this.name, !!A && A !== c);
490
+ this.element.toggleAttribute(this.name, !!A && A !== j);
491
491
  }
492
492
  }
493
493
  class qt extends lA {
@@ -495,8 +495,8 @@ class qt extends lA {
495
495
  super(A, t, r, e, p), this.type = 5;
496
496
  }
497
497
  _$AI(A, t = this) {
498
- if ((A = Z(this, A, t, 0) ?? c) === f) return;
499
- const r = this._$AH, e = A === c && r !== c || A.capture !== r.capture || A.once !== r.once || A.passive !== r.passive, p = A !== c && (r === c || e);
498
+ if ((A = Z(this, A, t, 0) ?? j) === f) return;
499
+ const r = this._$AH, e = A === j && r !== j || A.capture !== r.capture || A.once !== r.once || A.passive !== r.passive, p = A !== j && (r === j || e);
500
500
  e && this.element.removeEventListener(this.name, this, r), p && this.element.addEventListener(this.name, this, A), this._$AH = A;
501
501
  }
502
502
  handleEvent(A) {
@@ -559,8 +559,8 @@ let X = class extends m {
559
559
  };
560
560
  var mA;
561
561
  X._$litElement$ = !0, X.finalized = !0, (mA = b.litElementHydrateSupport) == null || mA.call(b, { LitElement: X });
562
- const VA = b.litElementPolyfillSupport;
563
- VA == null || VA({ LitElement: X });
562
+ const nA = b.litElementPolyfillSupport;
563
+ nA == null || nA({ LitElement: X });
564
564
  (b.litElementVersions ?? (b.litElementVersions = [])).push("4.2.0");
565
565
  /**
566
566
  * @license
@@ -577,31 +577,31 @@ const R = (l) => (A, t) => {
577
577
  * Copyright 2017 Google LLC
578
578
  * SPDX-License-Identifier: BSD-3-Clause
579
579
  */
580
- const dt = { attribute: !0, type: String, converter: _, reflect: !1, hasChanged: jA }, yt = (l = dt, A, t) => {
580
+ const yt = { attribute: !0, type: String, converter: _, reflect: !1, hasChanged: cA }, dt = (l = yt, A, t) => {
581
581
  const { kind: r, metadata: e } = t;
582
582
  let p = globalThis.litPropertyMetadata.get(e);
583
583
  if (p === void 0 && globalThis.litPropertyMetadata.set(e, p = /* @__PURE__ */ new Map()), r === "setter" && ((l = Object.create(l)).wrapped = !0), p.set(t.name, l), r === "accessor") {
584
- const { name: V } = t;
584
+ const { name: n } = t;
585
585
  return { set(S) {
586
586
  const q = A.get.call(this);
587
- A.set.call(this, S), this.requestUpdate(V, q, l);
587
+ A.set.call(this, S), this.requestUpdate(n, q, l);
588
588
  }, init(S) {
589
- return S !== void 0 && this.C(V, void 0, l, S), S;
589
+ return S !== void 0 && this.C(n, void 0, l, S), S;
590
590
  } };
591
591
  }
592
592
  if (r === "setter") {
593
- const { name: V } = t;
593
+ const { name: n } = t;
594
594
  return function(S) {
595
- const q = this[V];
596
- A.call(this, S), this.requestUpdate(V, q, l);
595
+ const q = this[n];
596
+ A.call(this, S), this.requestUpdate(n, q, l);
597
597
  };
598
598
  }
599
599
  throw Error("Unsupported decorator location: " + r);
600
600
  };
601
- function j(l) {
602
- return (A, t) => typeof t == "object" ? yt(l, A, t) : ((r, e, p) => {
603
- const V = e.hasOwnProperty(p);
604
- return e.constructor.createProperty(p, r), V ? Object.getOwnPropertyDescriptor(e, p) : void 0;
601
+ function c(l) {
602
+ return (A, t) => typeof t == "object" ? dt(l, A, t) : ((r, e, p) => {
603
+ const n = e.hasOwnProperty(p);
604
+ return e.constructor.createProperty(p, r), n ? Object.getOwnPropertyDescriptor(e, p) : void 0;
605
605
  })(l, A, t);
606
606
  }
607
607
  /**
@@ -609,8 +609,8 @@ function j(l) {
609
609
  * Copyright 2017 Google LLC
610
610
  * SPDX-License-Identifier: BSD-3-Clause
611
611
  */
612
- function J(l) {
613
- return j({ ...l, state: !0, attribute: !1 });
612
+ function T(l) {
613
+ return c({ ...l, state: !0, attribute: !1 });
614
614
  }
615
615
  /**
616
616
  * @license
@@ -635,18 +635,18 @@ const ut = (l) => typeof l != "string" && "strTag" in l, GA = (l, A, t) => {
635
635
  * SPDX-License-Identifier: BSD-3-Clause
636
636
  */
637
637
  const FA = (l) => ut(l) ? GA(l.strings, l.values) : l;
638
- let n = FA, bA = !1;
639
- function jt(l) {
638
+ let V = FA, bA = !1;
639
+ function ct(l) {
640
640
  if (bA)
641
641
  throw new Error("lit-localize can only be configured once");
642
- n = l, bA = !0;
642
+ V = l, bA = !0;
643
643
  }
644
644
  /**
645
645
  * @license
646
646
  * Copyright 2021 Google LLC
647
647
  * SPDX-License-Identifier: BSD-3-Clause
648
648
  */
649
- class ct {
649
+ class jt {
650
650
  constructor(A) {
651
651
  this.__litLocalizeEventHandler = (t) => {
652
652
  t.detail.status === "ready" && this.host.requestUpdate();
@@ -659,13 +659,13 @@ class ct {
659
659
  window.removeEventListener(SA, this.__litLocalizeEventHandler);
660
660
  }
661
661
  }
662
- const kt = (l) => l.addController(new ct(l)), Jt = kt;
662
+ const kt = (l) => l.addController(new jt(l)), Jt = kt;
663
663
  /**
664
664
  * @license
665
665
  * Copyright 2021 Google LLC
666
666
  * SPDX-License-Identifier: BSD-3-Clause
667
667
  */
668
- const C = () => (l, A) => (l.addInitializer(Jt), l);
668
+ const Y = () => (l, A) => (l.addInitializer(Jt), l);
669
669
  /**
670
670
  * @license
671
671
  * Copyright 2020 Google LLC
@@ -689,23 +689,23 @@ class MA {
689
689
  * Copyright 2014 Travis Webb
690
690
  * SPDX-License-Identifier: MIT
691
691
  */
692
- const i = [];
692
+ const s = [];
693
693
  for (let l = 0; l < 256; l++)
694
- i[l] = (l >> 4 & 15).toString(16) + (l & 15).toString(16);
694
+ s[l] = (l >> 4 & 15).toString(16) + (l & 15).toString(16);
695
695
  function Tt(l) {
696
- let A = 0, t = 8997, r = 0, e = 33826, p = 0, V = 40164, S = 0, q = 52210;
696
+ let A = 0, t = 8997, r = 0, e = 33826, p = 0, n = 40164, S = 0, q = 52210;
697
697
  for (let u = 0; u < l.length; u++)
698
- t ^= l.charCodeAt(u), A = t * 435, r = e * 435, p = V * 435, S = q * 435, p += t << 8, S += e << 8, r += A >>> 16, t = A & 65535, p += r >>> 16, e = r & 65535, q = S + (p >>> 16) & 65535, V = p & 65535;
699
- return i[q >> 8] + i[q & 255] + i[V >> 8] + i[V & 255] + i[e >> 8] + i[e & 255] + i[t >> 8] + i[t & 255];
698
+ t ^= l.charCodeAt(u), A = t * 435, r = e * 435, p = n * 435, S = q * 435, p += t << 8, S += e << 8, r += A >>> 16, t = A & 65535, p += r >>> 16, e = r & 65535, q = S + (p >>> 16) & 65535, n = p & 65535;
699
+ return s[q >> 8] + s[q & 255] + s[n >> 8] + s[n & 255] + s[e >> 8] + s[e & 255] + s[t >> 8] + s[t & 255];
700
700
  }
701
701
  /**
702
702
  * @license
703
703
  * Copyright 2020 Google LLC
704
704
  * SPDX-License-Identifier: BSD-3-Clause
705
705
  */
706
- const Xt = "", xt = "h", it = "s";
707
- function st(l, A) {
708
- return (A ? xt : it) + Tt(typeof l == "string" ? l : l.join(Xt));
706
+ const Xt = "", xt = "h", st = "s";
707
+ function it(l, A) {
708
+ return (A ? xt : st) + Tt(typeof l == "string" ? l : l.join(Xt));
709
709
  }
710
710
  /**
711
711
  * @license
@@ -731,7 +731,7 @@ function Kt(l, A, t) {
731
731
  let p = LA.get(e);
732
732
  return p === void 0 && (p = e.values, LA.set(e, p)), {
733
733
  ...e,
734
- values: p.map((V) => A.values[V])
734
+ values: p.map((n) => A.values[n])
735
735
  };
736
736
  }
737
737
  }
@@ -741,20 +741,20 @@ function Kt(l, A, t) {
741
741
  function Ut(l) {
742
742
  const A = typeof l == "string" ? l : l.strings;
743
743
  let t = fA.get(A);
744
- return t === void 0 && (t = st(A, typeof l != "string" && !("strTag" in l)), fA.set(A, t)), t;
744
+ return t === void 0 && (t = it(A, typeof l != "string" && !("strTag" in l)), fA.set(A, t)), t;
745
745
  }
746
746
  /**
747
747
  * @license
748
748
  * Copyright 2021 Google LLC
749
749
  * SPDX-License-Identifier: BSD-3-Clause
750
750
  */
751
- function nA(l) {
751
+ function VA(l) {
752
752
  window.dispatchEvent(new CustomEvent(SA, { detail: l }));
753
753
  }
754
754
  let AA = "", qA, hA, tA, aA, EA, v = new MA();
755
755
  v.resolve();
756
756
  let g = 0;
757
- const Wt = (l) => (jt((A, t) => Kt(EA, A, t)), AA = hA = l.sourceLocale, tA = new Set(l.targetLocales), tA.add(l.sourceLocale), aA = l.loadLocale, { getLocale: vt, setLocale: Ot }), vt = () => AA, Ot = (l) => {
757
+ const Wt = (l) => (ct((A, t) => Kt(EA, A, t)), AA = hA = l.sourceLocale, tA = new Set(l.targetLocales), tA.add(l.sourceLocale), aA = l.loadLocale, { getLocale: vt, setLocale: Ot }), vt = () => AA, Ot = (l) => {
758
758
  if (l === (qA ?? AA))
759
759
  return v.promise;
760
760
  if (!tA || !aA)
@@ -763,15 +763,15 @@ const Wt = (l) => (jt((A, t) => Kt(EA, A, t)), AA = hA = l.sourceLocale, tA = ne
763
763
  throw new Error("Invalid locale code");
764
764
  g++;
765
765
  const A = g;
766
- return qA = l, v.settled && (v = new MA()), nA({ status: "loading", loadingLocale: l }), (l === hA ? (
766
+ return qA = l, v.settled && (v = new MA()), VA({ status: "loading", loadingLocale: l }), (l === hA ? (
767
767
  // We could switch to the source locale synchronously, but we prefer to
768
768
  // queue it on a microtask so that switching locales is consistently
769
769
  // asynchronous.
770
770
  Promise.resolve({ templates: void 0 })
771
771
  ) : aA(l)).then((r) => {
772
- g === A && (AA = l, qA = void 0, EA = r.templates, nA({ status: "ready", readyLocale: l }), v.resolve());
772
+ g === A && (AA = l, qA = void 0, EA = r.templates, VA({ status: "ready", readyLocale: l }), v.resolve());
773
773
  }, (r) => {
774
- g === A && (nA({
774
+ g === A && (VA({
775
775
  status: "error",
776
776
  errorLocale: l,
777
777
  errorMessage: r.toString()
@@ -825,15 +825,15 @@ const Pt = ft(class extends ot {
825
825
  const t = l.element.classList;
826
826
  for (const p of this.st) p in A || (t.remove(p), this.st.delete(p));
827
827
  for (const p in A) {
828
- const V = !!A[p];
829
- V === this.st.has(p) || (e = this.nt) != null && e.has(p) || (V ? (t.add(p), this.st.add(p)) : (t.remove(p), this.st.delete(p)));
828
+ const n = !!A[p];
829
+ n === this.st.has(p) || (e = this.nt) != null && e.has(p) || (n ? (t.add(p), this.st.add(p)) : (t.remove(p), this.st.delete(p)));
830
830
  }
831
831
  return f;
832
832
  }
833
833
  });
834
- var mt = Object.defineProperty, Zt = Object.getOwnPropertyDescriptor, Y = (l, A, t, r) => {
835
- for (var e = r > 1 ? void 0 : r ? Zt(A, t) : A, p = l.length - 1, V; p >= 0; p--)
836
- (V = l[p]) && (e = (r ? V(A, t, e) : V(e)) || e);
834
+ var mt = Object.defineProperty, Zt = Object.getOwnPropertyDescriptor, C = (l, A, t, r) => {
835
+ for (var e = r > 1 ? void 0 : r ? Zt(A, t) : A, p = l.length - 1, n; p >= 0; p--)
836
+ (n = l[p]) && (e = (r ? n(A, t, e) : n(e)) || e);
837
837
  return r && e && mt(A, t, e), e;
838
838
  };
839
839
  let o = class extends X {
@@ -841,7 +841,7 @@ let o = class extends X {
841
841
  super(...arguments), this.type = "button", this.label = "", this.disabled = !1, this.variant = "contained";
842
842
  }
843
843
  render() {
844
- return T`
844
+ return k`
845
845
  <div class="button-wrapper">
846
846
  <button
847
847
  class=${this.variant}
@@ -859,7 +859,7 @@ o.styles = N`
859
859
  :host {
860
860
  display: block;
861
861
  width: 100%;
862
- --brand-primary-fallback: #1C28BA;
862
+ --brand-primary-fallback: #000;
863
863
  --text-inverse-fallback: #FFFFFF;
864
864
  }
865
865
 
@@ -877,7 +877,7 @@ o.styles = N`
877
877
  button {
878
878
  width: 100%;
879
879
  padding: 14px 28px;
880
- border-radius: 9999px; /* cantos arredondados tipo pill */
880
+ border-radius: 12px;
881
881
  font-size: 15px;
882
882
  font-weight: 600;
883
883
  font-family: "Lato", sans-serif;
@@ -894,14 +894,14 @@ o.styles = N`
894
894
 
895
895
  /* Contained (azul cheio) */
896
896
  button.contained {
897
- background-color: var(--brand-primary, var(--brand-primary-fallback, #1C28BA));
897
+ background-color: var(--brand-primary, var(--brand-primary-fallback, #0000));
898
898
  color: var(--text-inverse, var(--text-inverse-fallback, #FFFFFF));
899
899
  border: none;
900
900
  box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.15);
901
901
  }
902
902
 
903
903
  button.contained:hover {
904
- background-color: #152093; /* azul mais escuro */
904
+ background-color: #333333; /* gris oscuro */
905
905
  }
906
906
 
907
907
  /* Outlined */
@@ -936,452 +936,295 @@ o.styles = N`
936
936
  }
937
937
  }
938
938
  `;
939
- Y([
940
- j({ type: String })
939
+ C([
940
+ c({ type: String })
941
941
  ], o.prototype, "type", 2);
942
- Y([
943
- j({ type: String })
942
+ C([
943
+ c({ type: String })
944
944
  ], o.prototype, "label", 2);
945
- Y([
946
- j({ type: Boolean })
945
+ C([
946
+ c({ type: Boolean })
947
947
  ], o.prototype, "disabled", 2);
948
- Y([
949
- j({ type: String })
948
+ C([
949
+ c({ type: String })
950
950
  ], o.prototype, "variant", 2);
951
- o = Y([
951
+ o = C([
952
952
  R("xact-button")
953
953
  ], o);
954
954
  var Nt = Object.defineProperty, Rt = Object.getOwnPropertyDescriptor, kA = (l, A, t, r) => {
955
- for (var e = r > 1 ? void 0 : r ? Rt(A, t) : A, p = l.length - 1, V; p >= 0; p--)
956
- (V = l[p]) && (e = (r ? V(A, t, e) : V(e)) || e);
955
+ for (var e = r > 1 ? void 0 : r ? Rt(A, t) : A, p = l.length - 1, n; p >= 0; p--)
956
+ (n = l[p]) && (e = (r ? n(A, t, e) : n(e)) || e);
957
957
  return r && e && Nt(A, t, e), e;
958
958
  };
959
959
  let E = class extends X {
960
960
  constructor() {
961
- super(...arguments), this.height = 0;
962
- }
963
- render() {
964
- return T`
965
- <div class="component-content">
966
- <div class="header-section">
967
- <h2 class="header-text">${n("Before you begin")}</h2>
968
- <p class="description-text">
969
- ${n("Maintain an upright posture with your arms away from your body.")}
970
- </p>
971
- </div>
972
-
973
- <div class="main-section">
974
- <div class="tips-section">
975
- <h3>${n("Tips")}</h3>
976
- <div class="tip-item">
977
- <span class="tip-title">${n("Good Lighting")}</span>
978
- <p class="tip-text">${n("Choose a well-lit area where you can see your image clearly.")}</p>
979
- </div>
980
- <div class="tip-item">
981
- <span class="tip-title">${n("Clean Background")}</span>
982
- <p class="tip-text">${n("Position yourself against a plain background.")}</p>
983
- </div>
984
- <div class="tip-item">
985
- <span class="tip-title">${n("Clothes")}</span>
986
- <p class="tip-text">${n("Wear clothes that you usually wear on a daily basis.")}</p>
987
- </div>
988
- <div class="tip-item">
989
- <span class="tip-title">${n("Framing")}</span>
990
- <p class="tip-text">${n("Make sure your entire body is visible. The app will guide you.")}</p>
991
- </div>
992
-
993
- <form>
994
- <label for="height-input" class="height-label">
995
- ${n("To get started, please tell us your height.")}
996
- </label>
997
- <input id="height-input" type="number" min="50" max="300"
998
- placeholder=${n("Height (cm)")} required tabindex="1"/>
999
- </form>
1000
- </div>
1001
-
1002
- <div class="images-section">
1003
- <svg width="300" height="245" viewBox="0 0 300 245" fill="none" xmlns="http://www.w3.org/2000/svg">
1004
- <path d="M162.404 20.4343H136.498V72.1681H162.404V20.4343Z" fill="#6D4A44"/>
1005
- <path d="M136.932 59.7042C137.111 56.7025 134.822 54.1243 131.82 53.9458C128.818 53.7673 126.24 56.0565 126.062 59.0582C126.055 59.1711 126.058 59.2815 126.058 59.3928L124.039 94.2659C123.861 97.2584 126.143 99.8282 129.136 100.007C132.128 100.184 134.698 97.9027 134.876 94.9102L136.896 60.0371C136.909 59.9267 136.926 59.8171 136.932 59.7042Z" fill="#F3A396"/>
1006
- <mask id="mask0_2344_2604" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="124" y="53" width="13" height="48">
1007
- <path d="M136.932 59.7042C137.111 56.7025 134.822 54.1243 131.82 53.9458C128.818 53.7673 126.24 56.0565 126.062 59.0582C126.055 59.1711 126.058 59.2815 126.058 59.3928L124.039 94.2659C123.861 97.2584 126.143 99.8282 129.136 100.007C132.128 100.184 134.698 97.9027 134.876 94.9102L136.896 60.0371C136.909 59.9267 136.926 59.8171 136.932 59.7042Z" fill="white"/>
1008
- </mask>
1009
- <g mask="url(#mask0_2344_2604)">
1010
- <path d="M138.204 70.4743C138.204 70.4743 128.75 69.6556 123.107 62.3022C123.107 62.3022 124.147 50.6029 133.085 52.4395C142.023 54.2771 138.204 70.4743 138.204 70.4743Z" fill="#F7E6D5"/>
1011
- </g>
1012
- <path d="M134.919 94.4893C135.097 91.4877 132.808 88.9095 129.806 88.731C126.805 88.5524 124.226 90.8417 124.048 93.8433C124.041 93.9562 124.045 94.0667 124.045 94.1771L123.549 131.903L129.384 131.406L134.882 94.8214C134.895 94.711 134.912 94.6022 134.919 94.4893Z" fill="#F3A396"/>
1013
- <path d="M127.448 128.38C125.338 127.785 124.524 128.711 123.862 129.98L123.867 129.981C123.865 129.984 123.863 129.987 123.861 129.99C120.107 136.961 119.557 140.72 118.696 143.533C117.789 146.491 118.801 151.911 120.051 151.807C121.3 151.702 121.169 149.335 120.874 147.594C120.579 145.852 122.125 143.274 123.483 140.942C124.839 138.615 125.307 139.49 125.307 139.49L125.488 141.923C125.556 142.824 126.291 143.466 127.063 143.259C127.658 143.106 127.975 142.544 128.028 141.932L129.389 131.219C129.387 131.218 129.7 129.014 127.448 128.38Z" fill="#F3A396"/>
1014
- <path d="M161.996 59.7042C161.818 56.7025 164.107 54.1243 167.108 53.9458C170.11 53.7673 172.688 56.0565 172.867 59.0582C172.873 59.1711 172.87 59.2815 172.87 59.3928L174.889 94.2659C175.067 97.2584 172.785 99.8282 169.793 100.007C166.8 100.184 164.23 97.9027 164.052 94.9102L162.033 60.0371C162.019 59.9267 162.003 59.8171 161.996 59.7042Z" fill="#F3A396"/>
1015
- <mask id="mask1_2344_2604" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="161" y="53" width="14" height="48">
1016
- <path d="M161.996 59.7042C161.818 56.7025 164.107 54.1243 167.108 53.9458C170.11 53.7673 172.688 56.0565 172.867 59.0582C172.873 59.1711 172.87 59.2815 172.87 59.3928L174.889 94.2659C175.067 97.2584 172.785 99.8282 169.793 100.007C166.8 100.184 164.23 97.9027 164.052 94.9102L162.033 60.0371C162.019 59.9267 162.003 59.8171 161.996 59.7042Z" fill="white"/>
1017
- </mask>
1018
- <g mask="url(#mask1_2344_2604)">
1019
- <path d="M160.725 70.4743C160.725 70.4743 170.178 69.6556 175.821 62.3022C175.821 62.3022 174.782 50.6029 165.844 52.4395C156.906 54.2771 160.725 70.4743 160.725 70.4743Z" fill="#F7E6D5"/>
1020
- </g>
1021
- <path d="M164.008 94.4893C163.829 91.4877 166.119 88.9095 169.12 88.731C172.122 88.5524 174.7 90.8417 174.879 93.8433C174.885 93.9562 174.882 94.0667 174.882 94.1771L175.378 131.903L169.543 131.406L164.045 94.8214C164.031 94.711 164.014 94.6022 164.008 94.4893Z" fill="#F3A396"/>
1022
- <path d="M180.234 143.533C179.372 140.72 178.822 136.962 175.069 129.99C175.067 129.987 175.065 129.984 175.062 129.981L175.067 129.98C174.405 128.711 173.591 127.786 171.481 128.38C169.229 129.014 169.542 131.218 169.542 131.218L170.902 141.931C170.956 142.543 171.273 143.105 171.868 143.258C172.64 143.466 173.375 142.823 173.442 141.923L173.624 139.489C173.624 139.489 174.092 138.615 175.447 140.941C176.807 143.273 178.352 145.852 178.056 147.593C177.761 149.334 177.63 151.702 178.879 151.806C180.129 151.912 181.141 146.492 180.234 143.533Z" fill="#F3A396"/>
1023
- <path d="M149.396 46.7827C138.982 46.7827 128.748 54.6318 128.748 54.6318L136 75.7339C137.155 79.0951 137.306 82.7203 136.435 86.1661L133.953 95.9807H165.719L162.7 86.4759C161.629 82.9661 161.669 79.2113 162.815 75.7256L170.54 54.9474C170.54 54.9474 160.432 46.7827 149.396 46.7827Z" fill="#F7E6D5"/>
1024
- <path d="M134.93 50.8313C134.93 50.8313 145.083 64.5683 165.278 51.4997C165.278 51.4997 158.77 47.0176 149.365 46.6605C142.83 46.4114 134.93 50.8313 134.93 50.8313Z" fill="#F3A396"/>
1025
- <path d="M133.868 69.5197L131.244 61.8865" stroke="#EFE3D8" stroke-width="1.04569" stroke-miterlimit="10"/>
1026
- <path d="M165.141 69.5288L167.767 61.8865" stroke="#EFE3D8" stroke-width="1.04569" stroke-miterlimit="10"/>
1027
- <path d="M165.721 95.9817H150.106H149.573H133.957C133.957 95.9817 127.833 105.494 129.387 122.399H149.573H150.106H170.291C171.352 104.097 165.721 95.9817 165.721 95.9817Z" fill="#242930"/>
1028
- <path d="M138.972 174.134C144.349 174.134 148.706 169.775 148.706 164.4V121.207C148.706 115.831 144.348 111.473 138.972 111.473C133.596 111.473 129.238 115.832 129.238 121.207V164.4C129.238 169.775 133.597 174.134 138.972 174.134Z" fill="#242930"/>
1029
- <path d="M134.605 216.849L135.36 228.943H144.237V216.849H134.605Z" fill="#F3A396"/>
1030
- <path d="M145.192 227.725L145.307 235.072H117.658V234.857C117.658 233.165 118.631 231.624 120.159 230.897L133.707 225.491C134.194 225.259 134.82 225.269 135.191 225.661C136.943 227.508 138.865 230.518 144.21 227.252C144.597 227.016 145.106 227.279 145.192 227.725Z" fill="#131321"/>
1031
- <path d="M117.661 237H145.311V235.072H117.661V237Z" fill="white"/>
1032
- <path d="M138.972 155.314C133.596 155.314 129.238 159.672 129.238 165.048V220.255H148.707V165.048C148.706 159.672 144.349 155.314 138.972 155.314Z" fill="#242930"/>
1033
- <path d="M148.71 211.719H128.131V220.255H148.71V211.719Z" fill="#21262D"/>
1034
- <path d="M160.554 174.134C165.931 174.134 170.288 169.775 170.288 164.4V121.207C170.288 115.831 165.93 111.473 160.554 111.473C155.178 111.473 150.82 115.832 150.82 121.207V164.4C150.82 169.775 155.179 174.134 160.554 174.134Z" fill="#242930"/>
1035
- <path d="M165.395 216.849L164.641 228.943H155.764V216.849H165.395Z" fill="#F3A396"/>
1036
- <path d="M154.807 227.725L154.691 235.072H182.341V234.857C182.341 233.165 181.367 231.624 179.84 230.897L166.292 225.491C165.805 225.259 165.178 225.269 164.807 225.661C163.056 227.508 161.134 230.518 155.789 227.252C155.401 227.016 154.893 227.279 154.807 227.725Z" fill="#131321"/>
1037
- <path d="M182.341 235.072H154.691V237H182.341V235.072Z" fill="white"/>
1038
- <path d="M160.554 155.314C155.178 155.314 150.82 159.672 150.82 165.048V220.255H170.289V165.048C170.289 159.672 165.931 155.314 160.554 155.314Z" fill="#242930"/>
1039
- <path d="M171.399 211.719H150.82V220.255H171.399V211.719Z" fill="#21262D"/>
1040
- <path d="M149.367 52.5674C146.712 52.5674 144.561 50.416 144.561 47.7615V38.436H154.172V47.7607C154.172 50.4152 152.02 52.5674 149.367 52.5674Z" fill="#F3A396"/>
1041
- <path d="M143.75 37.7584C143.75 37.7584 145.894 42.0529 148.861 42.9206C149.654 43.1523 150.5 43.0734 151.264 42.7604C152.381 42.3029 153.806 41.0466 154.171 39.8152V37.1133C154.171 37.1133 149.137 41.6236 143.75 37.7584Z" fill="#1A1A1A"/>
1042
- <path d="M149.425 34.7768C156.588 34.7768 162.396 28.7826 162.396 21.3885C162.396 13.9944 156.588 8.00024 149.425 8.00024C142.261 8.00024 136.453 13.9944 136.453 21.3885C136.453 28.7826 142.261 34.7768 149.425 34.7768Z" fill="#6D4A44"/>
1043
- <path d="M159.489 32.5309C161.678 34.1476 165.466 26.7942 163.332 25.0521C161.198 23.3109 160.028 26.4994 160.028 26.4994L159.469 28.6466L158.881 31.5744V32.2287L159.489 32.5309Z" fill="#F3A396"/>
1044
- <path d="M162.643 27.2678C162.643 27.2678 161.056 26.7381 159.93 29.0755" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1045
- <path d="M160.701 27.9324C160.701 27.9324 162.428 28.8557 161.287 30.2448" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1046
- <path d="M160.27 21.432C160.27 26.0395 159.629 30.0159 158.989 32.8374C158.362 35.5999 156.599 37.5313 154.108 39.0848L153.655 39.3679C151.019 41.012 147.613 41.051 144.937 39.4659C142.237 37.8675 140.347 35.761 139.765 32.7959C138.707 27.4037 138.592 21.4311 138.592 21.4311C138.592 21.4311 137.586 9.79986 149.277 10.0257C160.967 10.2524 160.27 21.432 160.27 21.432Z" fill="#F3A396"/>
1047
- <path d="M139.414 32.5307C137.224 34.1474 133.436 26.794 135.57 25.0519C137.704 23.3107 139.073 26.8388 139.073 26.8388L139.461 28.7618L139.962 31.5567V32.2351L139.414 32.5307Z" fill="#F3A396"/>
1048
- <path d="M136.262 27.2678C136.262 27.2678 137.848 26.7381 138.975 29.0755" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1049
- <path d="M138.206 27.9324C138.206 27.9324 136.479 28.8557 137.62 30.2448" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1050
- <path d="M148.387 28.2681V29.5468C148.387 29.6871 148.414 29.8216 148.463 29.9445C148.657 30.4286 149.214 30.6602 149.717 30.5257L150.318 30.2376" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1051
- <path d="M145.084 25.7994C145.084 26.3266 144.656 26.7542 144.129 26.7542C143.601 26.7542 143.174 26.3266 143.174 25.7994C143.174 25.2721 143.601 24.8445 144.129 24.8445C144.656 24.8445 145.084 25.2721 145.084 25.7994Z" fill="#1A1A1A"/>
1052
- <path d="M154.888 25.7994C154.888 26.3266 154.461 26.7542 153.933 26.7542C153.406 26.7542 152.979 26.3266 152.979 25.7994C152.979 25.2721 153.406 24.8445 153.933 24.8445C154.461 24.8445 154.888 25.2721 154.888 25.7994Z" fill="#1A1A1A"/>
1053
- <path d="M145.533 32.0991C145.533 32.0991 147.097 33.0764 149.16 33.0764C151.223 33.0764 152.787 32.0991 152.787 32.0991" stroke="#D26665" stroke-width="0.514843" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
1054
- <path d="M140.502 24.0441C140.502 24.0441 143.455 23.1307 146.382 22.9763C146.382 22.9763 145.465 21.3928 143.628 21.8196C141.791 22.2472 140.502 24.0441 140.502 24.0441Z" fill="#6D4A44"/>
1055
- <path d="M157.516 24.0441C157.516 24.0441 154.563 23.1307 151.637 22.9763C151.637 22.9763 152.553 21.3928 154.39 21.8196C156.227 22.2472 157.516 24.0441 157.516 24.0441Z" fill="#6D4A44"/>
1056
- <path d="M161.634 21.4461C161.634 21.4461 160.281 10.861 151.087 9.6321C151.087 9.6321 143.751 9.07661 141.199 12.6852C140.1 13.5637 138.553 15.6669 137.967 18.5864C137.064 23.0926 138.204 22.895 138.204 22.895C138.204 22.895 141.851 21.3937 142.414 16.3719C144.587 18.5582 150.922 22.1792 161.634 21.4461Z" fill="#6D4A44"/>
1057
- </svg>
1058
-
1059
-
1060
-
1061
-
1062
- </div>
1063
-
1064
-
1065
- </div>
1066
-
1067
- <xact-button class="xact-button buttons"
1068
- @click=${() => {
961
+ super(...arguments), this.height = 0, this.handleStart = () => {
1069
962
  var A;
1070
- const l = this.shadowRoot.querySelector("#height-input");
963
+ const l = this.shadowRoot.querySelector(
964
+ "#height-input"
965
+ );
1071
966
  if (l != null && l.value) {
1072
967
  const t = parseInt(l.value);
1073
968
  this.height = t, (A = this.onStartMeasurement) == null || A.call(this, t);
1074
969
  }
1075
- }}
1076
- label="${n("Let's go!")}"
1077
- ></xact-button>
1078
-
1079
- `;
970
+ };
1080
971
  }
1081
- };
1082
- E.styles = N`
1083
- :host {
1084
- display: flex;
1085
- justify-content: center;
1086
- align-items: flex-start;
1087
- font-family: "Lato", sans-serif;
1088
- box-sizing: border-box;
1089
- padding: 16px;
1090
- width: 100%;
1091
- }
1092
-
1093
- .component-content {
1094
- display: flex;
1095
- flex-direction: column;
1096
- gap: 12px;
1097
- width: 100%;
1098
- max-width: 960px;
1099
- }
1100
-
1101
- .header-section {
1102
- text-align: left;
1103
- }
1104
-
1105
- .header-text {
1106
- font-size: 24px;
1107
- font-weight: 700;
1108
- color: #000;
1109
- margin-bottom: 8px;
1110
- line-height: 1.2;
1111
- }
1112
-
1113
- .description-text {
1114
- font-size: 16px;
1115
- font-weight: 400;
1116
- color: #333;
1117
- line-height: 1.6;
1118
- }
1119
-
1120
- .main-section {
1121
- display: flex;
1122
- flex-direction: row;
1123
- gap: 24px;
1124
- }
972
+ render() {
973
+ return k`
974
+ <div class="card">
975
+ <div class="pill">XactSize x Canada Goose</div>
976
+ <h2 class="title">${V("Let's find your perfect size")}</h2>
977
+ <p class="subtitle">${V("Curated luxury. Perfect fit.")}</p>
978
+
979
+ <div class="tips">
980
+ <h4>${V("Tips")}</h4>
981
+
982
+ ${this.renderTip(V("Good Lighting"), V("Avoid backlighting"))}
983
+ ${this.renderTip(V("Clean Background"), V("Use a plain wall"))}
984
+ ${this.renderTip(V("Clothes"), V("Form-fitting gear"))}
985
+ ${this.renderTip(V("Framing"), V("Full body shot"))}
986
+ </div>
1125
987
 
1126
- .images-section {
1127
- flex: 1;
1128
- display: flex;
1129
- justify-content: center;
1130
- align-items: center;
1131
- }
988
+ <div class="input-group">
989
+ <input
990
+ id="height-input"
991
+ class="height-input"
992
+ type="number"
993
+ min="50"
994
+ max="300"
995
+ placeholder=${V("Enter your height (cm)")}
996
+ required
997
+ tabindex="1"
998
+ />
999
+ </div>
1132
1000
 
1133
- .images-section svg {
1134
- width: 100%;
1135
- max-width: 400px;
1136
- height: auto;
1137
- }
1001
+ <div class="cta">
1002
+ <xact-button
1003
+ label="${V("Let's get started! →")}"
1004
+ style="--brand-primary: #000;"
1005
+ @click=${this.handleStart}
1006
+ ></xact-button>
1007
+ </div>
1138
1008
 
1139
- .tips-section {
1140
- flex: 1;
1141
- display: flex;
1142
- flex-direction: column;
1143
- gap: 8px;
1009
+ <p class="disclaimer">
1010
+ ${V("By using Xactsize, you agree to our Terms and Privacy Policy.")}
1011
+ </p>
1012
+ </div>
1013
+ `;
1014
+ }
1015
+ renderTip(l, A) {
1016
+ return k`
1017
+ <div class="tip">
1018
+ <span class="check">
1019
+ <svg viewBox="0 0 24 24" aria-hidden="true">
1020
+ <path d="M5 13l4 4L19 7" />
1021
+ </svg>
1022
+ </span>
1023
+ <div>
1024
+ <strong>${l}</strong>
1025
+ <span>${A}</span>
1026
+ </div>
1027
+ </div>
1028
+ `;
1029
+ }
1030
+ };
1031
+ E.styles = N`
1032
+ :host {
1033
+ display: block;
1034
+ font-family: 'Inter', 'Helvetica', Arial, sans-serif;
1035
+ color: #111;
1036
+ }
1144
1037
 
1145
- form {
1038
+ .card {
1039
+ max-width: 560px;
1040
+ margin: 0 auto;
1041
+ padding: 28px 28px 32px;
1042
+ background: #ffffff;
1043
+ border-radius: 24px;
1044
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
1146
1045
  display: flex;
1147
1046
  flex-direction: column;
1148
- align-items: start;
1149
- gap: 16px;
1150
- width: 100%;
1047
+ gap: 20px;
1048
+ box-sizing: border-box;
1151
1049
  }
1152
1050
 
1153
- label {
1154
- font-size: 16px;
1155
- color: #333;
1156
- text-align: start;
1051
+ .pill {
1052
+ align-self: center;
1053
+ padding: 8px 16px;
1054
+ border-radius: 999px;
1055
+ background: #f1f2f3;
1056
+ font-size: 11px;
1057
+ font-weight: 700;
1058
+ letter-spacing: 0.08em;
1059
+ color: #555;
1060
+ text-transform: uppercase;
1157
1061
  }
1158
1062
 
1159
- input {
1160
- width: 100%;
1161
- max-width: 150px;
1162
- padding: 12px;
1163
- font-size: 16px;
1164
- border: 1px solid #ccc;
1165
- border-radius: 6px;
1166
- box-sizing: border-box;
1167
- font-family: "Lato", sans-serif;
1168
- text-align: start;
1063
+ .title {
1064
+ text-align: center;
1065
+ font-size: 26px;
1066
+ font-weight: 700;
1067
+ margin: 0;
1068
+ line-height: 1.2;
1169
1069
  }
1170
1070
 
1171
- input:focus {
1172
- outline: 2px solid var(--brand-primary);
1173
- outline-offset: 2px;
1071
+ .subtitle {
1072
+ text-align: center;
1073
+ color: #666;
1074
+ margin: 0;
1075
+ font-size: 14px;
1076
+ line-height: 1.5;
1174
1077
  }
1175
- }
1176
-
1177
- .xact-button {
1178
- width: 100%;
1179
- max-width: 150px;
1180
- display: flex;
1181
- justify-content: center;
1182
- align-items: center;
1183
-
1184
- }
1185
-
1186
- .tip-item {
1187
- margin-bottom: 4px;
1188
- }
1189
-
1190
- .tip-title {
1191
- font-weight: bold;
1192
- display: inline-block;
1193
- margin-bottom: 4px;
1194
- font-size: 14px;
1195
- }
1196
-
1197
- .tip-text {
1198
- margin-top: 0;
1199
- font-size: 12px;
1200
- }
1201
-
1202
- .buttons {
1203
- display: flex;
1204
- flex-direction: column;
1205
- gap: 12px;
1206
- align-items: center;
1207
- justify-content: center;
1208
- width: 100%;
1209
- max-width: 200px;
1210
- margin: 0 auto;
1211
- }
1212
-
1213
- /* Ajuste da responsividade para mobile */
1214
- @media (max-width: 754px) {
1215
- .main-section {
1216
- flex-direction: column;
1217
- gap: 5px; /* menor gap */
1218
- align-items: center;
1219
- }
1220
-
1221
- .images-section {
1222
- order: -1;
1223
- width: 100%;
1224
- }
1225
-
1226
- .images-section svg {
1227
- width: 80%; /* reduzir para não quebrar botão */
1228
- max-width: 180px; /* altura menor */
1229
- height: auto;
1230
- }
1231
-
1232
- .tips-section {
1233
- width: 100%;
1234
- gap: 6px;
1235
- align-items: flex-start; /* alinhar à esquerda */
1236
- }
1237
-
1238
- form {
1239
- align-items: flex-start; /* alinhar labels e inputs à esquerda */
1240
- width: 100%;
1241
- }
1242
1078
 
1243
- input {
1244
- max-width: 100%;
1245
- font-size: 14px;
1246
- padding: 10px;
1247
- }
1248
-
1249
- label {
1250
- text-align: left;
1251
- font-size: 14px;
1252
- }
1079
+ .tips {
1080
+ display: grid;
1081
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
1082
+ gap: 12px 16px;
1083
+ }
1253
1084
 
1254
- .xact-button {
1255
- max-width: 100%;
1256
- }
1085
+ .tips h4 {
1086
+ grid-column: 1 / -1;
1087
+ margin: 4px 0;
1088
+ font-size: 12px;
1089
+ letter-spacing: 0.08em;
1090
+ text-transform: uppercase;
1091
+ }
1257
1092
 
1258
- .header-text {
1259
- font-size: 20px;
1260
- text-align: center;
1261
- }
1093
+ .tip {
1094
+ display: flex;
1095
+ gap: 12px;
1096
+ align-items: center;
1097
+ }
1262
1098
 
1263
- .description-text {
1264
- font-size: 14px;
1265
- text-align: center;
1266
- }
1267
1099
 
1268
- .tip-title {
1269
- font-size: 12px;
1270
- text-align: left;
1271
- }
1100
+ .check {
1101
+ width: 16px;
1102
+ height: 16px;
1103
+ flex-shrink: 0;
1104
+ display: flex;
1105
+ align-items: center;
1106
+ justify-content: center;
1107
+ animation: checkAppear 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;
1108
+ }
1272
1109
 
1273
- .tip-text {
1274
- font-size: 11px;
1275
- text-align: left;
1276
- margin-left: 0; /* remove centralização */
1277
- }
1110
+ .check svg {
1111
+ width: 16px;
1112
+ height: 16px;
1113
+ stroke: #000;
1114
+ stroke-width: 2.5;
1115
+ fill: none;
1116
+ stroke-linecap: round;
1117
+ stroke-linejoin: round;
1118
+ }
1278
1119
 
1279
- .tip-item {
1280
- margin-bottom: 6px;
1281
- }
1120
+ .tip:nth-child(2) .check {
1121
+ animation-delay: 0.1s;
1122
+ }
1282
1123
 
1283
- .buttons {
1284
- gap: 8px;
1285
- width: 100%;
1286
- max-width: 100%;
1287
- margin-top: 12px;
1288
- }
1289
- }
1124
+ .tip:nth-child(3) .check {
1125
+ animation-delay: 0.2s;
1126
+ }
1290
1127
 
1291
- /* Ajuste fino para iPhones muito pequenos */
1292
- @media (max-width: 380px) {
1293
- .main-section {
1294
- gap: 1px;
1295
- }
1128
+ .tip:nth-child(4) .check {
1129
+ animation-delay: 0.3s;
1130
+ }
1296
1131
 
1297
- .images-section {
1298
- order: -1;
1299
- width: 30%;
1300
- }
1132
+ .tip:nth-child(5) .check {
1133
+ animation-delay: 0.4s;
1134
+ }
1301
1135
 
1302
- .images-section svg {
1303
- width: 80%; /* reduzir para não quebrar botão */
1304
- max-width: 150px; /* altura menor */
1305
- height: auto;
1306
- }
1136
+ @keyframes checkAppear {
1137
+ 0% {
1138
+ transform: scale(0);
1139
+ opacity: 0;
1140
+ }
1141
+ 100% {
1142
+ transform: scale(1);
1143
+ opacity: 1;
1144
+ }
1145
+ }
1307
1146
 
1308
- .tips-section {
1309
- gap: 1px;
1310
- label {
1311
- font-size: 12px;
1147
+ .tip strong {
1148
+ display: block;
1149
+ font-size: 14px;
1150
+ margin-bottom: 2px;
1312
1151
  }
1313
- input {
1152
+
1153
+ .tip span {
1154
+ display: block;
1314
1155
  font-size: 12px;
1156
+ color: #777;
1157
+ line-height: 1.4;
1315
1158
  }
1316
- }
1317
- h3 {
1318
- font-size: 14px;
1319
- }
1320
-
1321
-
1322
-
1323
-
1324
- .xact-button {
1325
- max-width: 100%;
1326
- }
1327
1159
 
1328
- .header-text {
1329
- font-size: 14px;
1330
- text-align: center;
1331
- }
1332
-
1333
- .description-text {
1334
- font-size: 12px;
1335
- text-align: center;
1336
- }
1337
-
1338
- .tip-title {
1339
- font-size: 12px;
1340
- text-align: left;
1341
- }
1160
+ .input-group {
1161
+ margin-top: 4px;
1162
+ }
1342
1163
 
1343
- .tip-text {
1344
- font-size: 11px;
1345
- text-align: left;
1346
- margin-left: 0; /* remove centralização */
1347
- }
1164
+ .height-input {
1165
+ width: 100%;
1166
+ padding: 14px 16px;
1167
+ border: 1px solid #e0e0e0;
1168
+ border-radius: 12px;
1169
+ background: #f7f7f7;
1170
+ font-size: 14px;
1171
+ color: #111;
1172
+ box-sizing: border-box;
1173
+ }
1348
1174
 
1349
- .tip-item {
1350
- margin-bottom: 1px;
1351
- }
1175
+ .height-input:focus {
1176
+ outline: none;
1177
+ border-color: #000;
1178
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.08);
1179
+ background: #fff;
1180
+ }
1352
1181
 
1353
- .buttons {
1354
- gap: 2px;
1355
- width: 100%;
1356
- max-width: 100%;
1357
- margin-top: 1px;
1358
- }
1359
- }
1182
+ .cta {
1183
+ margin-top: 8px;
1184
+ width: 100%;
1185
+ }
1360
1186
 
1187
+ .disclaimer {
1188
+ margin: 0;
1189
+ text-align: center;
1190
+ color: #9a9a9a;
1191
+ font-size: 11px;
1192
+ line-height: 1.4;
1193
+ }
1361
1194
 
1362
-
1195
+ @media (max-width: 600px) {
1196
+ .card {
1197
+ padding: 22px 18px 26px;
1198
+ }
1199
+ .title {
1200
+ font-size: 22px;
1201
+ }
1202
+ .tips {
1203
+ grid-template-columns: 1fr;
1204
+ }
1205
+ }
1363
1206
  `;
1364
1207
  kA([
1365
- j({ type: Number })
1208
+ c({ type: Number })
1366
1209
  ], E.prototype, "height", 2);
1367
1210
  kA([
1368
- j({ type: Function })
1211
+ c({ type: Function })
1369
1212
  ], E.prototype, "onStartMeasurement", 2);
1370
1213
  E = kA([
1371
1214
  R("xact-step-one"),
1372
- C()
1215
+ Y()
1373
1216
  ], E);
1374
1217
  var Ht = Object.getOwnPropertyDescriptor, zt = (l, A, t, r) => {
1375
- for (var e = r > 1 ? void 0 : r ? Ht(A, t) : A, p = l.length - 1, V; p >= 0; p--)
1376
- (V = l[p]) && (e = V(e) || e);
1218
+ for (var e = r > 1 ? void 0 : r ? Ht(A, t) : A, p = l.length - 1, n; p >= 0; p--)
1219
+ (n = l[p]) && (e = n(e) || e);
1377
1220
  return e;
1378
1221
  };
1379
- let dA = class extends X {
1222
+ let yA = class extends X {
1380
1223
  render() {
1381
- return T`
1224
+ return k`
1382
1225
  <footer class="modal-footer">
1383
1226
  <span>
1384
- <span class="powered-by">${n("Powered by")}</span>
1227
+ <span class="powered-by">${V("Powered by")}</span>
1385
1228
  <a tabindex="0" class="xactsize-link" href="http://xactsize.com" target="_blank" rel="noopener">
1386
1229
  <svg class="xactsize-icon" width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
1387
1230
  <path d="M5.82764 11.3511L11.5446 7.80768V11.3511H5.82764Z" fill="url(#paint0_linear_2010_6151)"/>
@@ -1424,7 +1267,7 @@ let dA = class extends X {
1424
1267
  `;
1425
1268
  }
1426
1269
  };
1427
- dA.styles = N`
1270
+ yA.styles = N`
1428
1271
  .modal-footer {
1429
1272
  text-align: center;
1430
1273
  font-size: 12px;
@@ -1461,13 +1304,13 @@ dA.styles = N`
1461
1304
  outline-offset: 2px;
1462
1305
  }
1463
1306
  `;
1464
- dA = zt([
1307
+ yA = zt([
1465
1308
  R("xact-footer"),
1466
- C()
1467
- ], dA);
1309
+ Y()
1310
+ ], yA);
1468
1311
  var Gt = Object.defineProperty, Ft = Object.getOwnPropertyDescriptor, D = (l, A, t, r) => {
1469
- for (var e = r > 1 ? void 0 : r ? Ft(A, t) : A, p = l.length - 1, V; p >= 0; p--)
1470
- (V = l[p]) && (e = (r ? V(A, t, e) : V(e)) || e);
1312
+ for (var e = r > 1 ? void 0 : r ? Ft(A, t) : A, p = l.length - 1, n; p >= 0; p--)
1313
+ (n = l[p]) && (e = (r ? n(A, t, e) : n(e)) || e);
1471
1314
  return r && e && Gt(A, t, e), e;
1472
1315
  };
1473
1316
  let P = class extends X {
@@ -1475,7 +1318,7 @@ let P = class extends X {
1475
1318
  super(...arguments), this.productName = "", this.recommendedSize = "";
1476
1319
  }
1477
1320
  render() {
1478
- return T`
1321
+ return k`
1479
1322
  <div class="image-container">
1480
1323
  <!-- Imagem da roupa como SVG exportado -->
1481
1324
  <svg class="product-image" width="180" height="240" viewBox="0 0 180 240" xmlns="http://www.w3.org/2000/svg">
@@ -1514,21 +1357,21 @@ let P = class extends X {
1514
1357
 
1515
1358
 
1516
1359
 
1517
- <h2 class="title">${n("Your ideal size")}</h2>
1360
+ <h2 class="title">${V("Your ideal size")}</h2>
1518
1361
  <p class="description">
1519
- ${n("Based on your measurements and the exact dimensions of the garment, the size recommendation provided is the most accurate for an ideal fit.")}
1362
+ ${V("Based on your measurements and the exact dimensions of the garment, the size recommendation provided is the most accurate for an ideal fit.")}
1520
1363
  </p>
1521
1364
 
1522
1365
  <div class="buttons">
1523
1366
  <xact-button
1524
1367
  variant="outlined"
1525
1368
  @click=${this.onRetry}
1526
- label=${n("Measure Again")}>
1369
+ label=${V("Measure Again")}>
1527
1370
  </xact-button>
1528
1371
 
1529
1372
  <xact-button
1530
1373
  @click=${this.onAccept}
1531
- label=${n("Accept Suggestion")}>
1374
+ label=${V("Accept Suggestion")}>
1532
1375
  </xact-button>
1533
1376
  </div>
1534
1377
  `;
@@ -1610,24 +1453,24 @@ P.styles = N`
1610
1453
  }
1611
1454
  `;
1612
1455
  D([
1613
- j({ type: String })
1456
+ c({ type: String })
1614
1457
  ], P.prototype, "productName", 2);
1615
1458
  D([
1616
- j({ type: String })
1459
+ c({ type: String })
1617
1460
  ], P.prototype, "recommendedSize", 2);
1618
1461
  D([
1619
- j({ type: Function })
1462
+ c({ type: Function })
1620
1463
  ], P.prototype, "onAccept", 2);
1621
1464
  D([
1622
- j({ type: Function })
1465
+ c({ type: Function })
1623
1466
  ], P.prototype, "onRetry", 2);
1624
1467
  P = D([
1625
1468
  R("xact-step-result"),
1626
- C()
1469
+ Y()
1627
1470
  ], P);
1628
1471
  var Mt = Object.defineProperty, ht = Object.getOwnPropertyDescriptor, JA = (l, A, t, r) => {
1629
- for (var e = r > 1 ? void 0 : r ? ht(A, t) : A, p = l.length - 1, V; p >= 0; p--)
1630
- (V = l[p]) && (e = (r ? V(A, t, e) : V(e)) || e);
1472
+ for (var e = r > 1 ? void 0 : r ? ht(A, t) : A, p = l.length - 1, n; p >= 0; p--)
1473
+ (n = l[p]) && (e = (r ? n(A, t, e) : n(e)) || e);
1631
1474
  return r && e && Mt(A, t, e), e;
1632
1475
  };
1633
1476
  let I = class extends X {
@@ -1635,33 +1478,34 @@ let I = class extends X {
1635
1478
  super(...arguments), this.height = 0;
1636
1479
  }
1637
1480
  render() {
1638
- return T`
1481
+ const l = Array.from({ length: 24 }, (A, t) => t);
1482
+ return k`
1639
1483
  <div class="component-content">
1640
1484
  <div class="header-section">
1641
- <h2 class="header-text">${n("Before you begin")}</h2>
1485
+ <h2 class="header-text">${V("Before you begin")}</h2>
1642
1486
  <p class="description-text">
1643
- ${n("To ensure accurate measurements, we'll take two scans: one from the front and one from the side. Maintain an upright posture with your arms slightly away from your body and stretched out. In the side view, stand up straight with your arms straight and aligned with your body.")}
1487
+ ${V("To ensure accurate measurements, we'll take two scans: one from the front and one from the side. Maintain an upright posture with your arms slightly away from your body and stretched out. In the side view, stand up straight with your arms straight and aligned with your body.")}
1644
1488
  </p>
1645
1489
  </div>
1646
1490
 
1647
1491
  <div class="main-section">
1648
1492
  <div class="tips-section">
1649
- <h3>${n("Tips")}</h3>
1493
+ <h3>${V("Tips")}</h3>
1650
1494
  <div class="tip-item">
1651
- <span class="tip-title">${n("Good Lighting")}</span>
1652
- <p class="tip-text">${n("Choose a well-lit area where you can see your image clearly.")}</p>
1495
+ <span class="tip-title">${V("Good Lighting")}</span>
1496
+ <p class="tip-text">${V("Choose a well-lit area where you can see your image clearly.")}</p>
1653
1497
  </div>
1654
1498
  <div class="tip-item">
1655
- <span class="tip-title">${n("Clean Background")}</span>
1656
- <p class="tip-text">${n("Position yourself against a plain background.")}</p>
1499
+ <span class="tip-title">${V("Clean Background")}</span>
1500
+ <p class="tip-text">${V("Position yourself against a plain background.")}</p>
1657
1501
  </div>
1658
1502
  <div class="tip-item">
1659
- <span class="tip-title">${n("Clothes")}</span>
1660
- <p class="tip-text">${n("Wear clothes that you usually wear on a daily basis.")}</p>
1503
+ <span class="tip-title">${V("Clothes")}</span>
1504
+ <p class="tip-text">${V("Wear clothes that you usually wear on a daily basis.")}</p>
1661
1505
  </div>
1662
1506
  <div class="tip-item">
1663
- <span class="tip-title">${n("Framing")}</span>
1664
- <p class="tip-text">${n("Make sure your entire body is visible. The app will guide you.")}</p>
1507
+ <span class="tip-title">${V("Framing")}</span>
1508
+ <p class="tip-text">${V("Make sure your entire body is visible. The app will guide you.")}</p>
1665
1509
  </div>
1666
1510
  </div>
1667
1511
 
@@ -1770,12 +1614,21 @@ let I = class extends X {
1770
1614
  </div>
1771
1615
  <xact-button class="buttons"
1772
1616
  @click=${() => {
1773
- var l;
1774
- (l = this.onStep2advancement) == null || l.call(this);
1617
+ var A;
1618
+ (A = this.onStep2advancement) == null || A.call(this);
1775
1619
  }}
1776
- label="${n("To start")}"
1620
+ label="${V("To start")}"
1777
1621
  ></xact-button>
1778
1622
  </div>
1623
+ <div class="snow-layer">
1624
+ ${l.map((A) => {
1625
+ const t = A * 37 % 100, r = A % 6 * 0.35, e = A % 5 * 0.4;
1626
+ return k`<span
1627
+ class="snowflake"
1628
+ style="left:${t}%; animation-delay:${r}s, ${e}s;"
1629
+ ></span>`;
1630
+ })}
1631
+ </div>
1779
1632
  `;
1780
1633
  }
1781
1634
  };
@@ -1788,6 +1641,8 @@ I.styles = N`
1788
1641
  box-sizing: border-box;
1789
1642
  padding: 16px;
1790
1643
  width: 100%;
1644
+ position: relative;
1645
+ overflow: hidden;
1791
1646
  }
1792
1647
 
1793
1648
  .component-content {
@@ -1796,6 +1651,8 @@ I.styles = N`
1796
1651
  gap: 12px;
1797
1652
  width: 100%;
1798
1653
  max-width: 960px;
1654
+ position: relative;
1655
+ z-index: 1;
1799
1656
  }
1800
1657
 
1801
1658
  .header-section {
@@ -1919,31 +1776,78 @@ I.styles = N`
1919
1776
  }
1920
1777
  }
1921
1778
 
1779
+ .snow-layer {
1780
+ position: absolute;
1781
+ inset: 0;
1782
+ pointer-events: none;
1783
+ overflow: hidden;
1784
+ z-index: 2;
1785
+ }
1786
+
1787
+ .snowflake {
1788
+ position: absolute;
1789
+ top: -8%;
1790
+ width: 6px;
1791
+ height: 6px;
1792
+ background: #fff;
1793
+ border-radius: 50%;
1794
+ opacity: 0.85;
1795
+ animation: fall 8s linear infinite, drift 5s ease-in-out infinite;
1796
+ }
1797
+
1798
+ .snowflake:nth-child(odd) {
1799
+ width: 4px;
1800
+ height: 4px;
1801
+ opacity: 0.7;
1802
+ animation-duration: 9s, 6s;
1803
+ }
1804
+
1805
+ .snowflake:nth-child(3n) {
1806
+ width: 8px;
1807
+ height: 8px;
1808
+ opacity: 0.9;
1809
+ animation-duration: 7s, 4.5s;
1810
+ }
1811
+
1812
+ .snowflake:nth-child(4n) {
1813
+ animation-delay: 1s, 0.5s;
1814
+ }
1815
+
1816
+ @keyframes fall {
1817
+ from { transform: translateY(-10%); }
1818
+ to { transform: translateY(110%); }
1819
+ }
1820
+
1821
+ @keyframes drift {
1822
+ 0%, 100% { transform: translateX(-14px); }
1823
+ 50% { transform: translateX(22px); }
1824
+ }
1825
+
1922
1826
  `;
1923
1827
  JA([
1924
- j({ type: Number })
1828
+ c({ type: Number })
1925
1829
  ], I.prototype, "height", 2);
1926
1830
  JA([
1927
- j({ type: Function })
1831
+ c({ type: Function })
1928
1832
  ], I.prototype, "onStep2advancement", 2);
1929
1833
  I = JA([
1930
1834
  R("xact-step-informs"),
1931
- C()
1835
+ Y()
1932
1836
  ], I);
1933
1837
  const oA = "data:image/svg+xml,%3csvg%20width='22'%20height='40'%20viewBox='0%200%2022%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M21.517%200L0%2013.3362V0H21.517Z'%20fill='white'/%3e%3cpath%20d='M21.517%2013.339L0%2026.6724V13.3362H21.517V13.339Z'%20fill='white'/%3e%3cpath%20d='M21.517%2026.6755L0%2040.0089V26.6726H21.517V26.6755Z'%20fill='%231C28BA'/%3e%3c/svg%3e", Et = "data:image/svg+xml,%3csvg%20width='22'%20height='41'%20viewBox='0%200%2022%2041'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M21.517%200.00878906L0%2013.345V0.00878906H21.517Z'%20fill='white'/%3e%3cpath%20d='M21.517%2013.3478L0%2026.6812V13.345H21.517V13.3478Z'%20fill='%231C28BA'/%3e%3cpath%20d='M21.517%2026.6843L0%2040.0176V26.6814H21.517V26.6843Z'%20fill='white'/%3e%3c/svg%3e", It = "data:image/svg+xml,%3csvg%20width='22'%20height='41'%20viewBox='0%200%2022%2041'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M21.517%200.0204381L0%2013.3538V0.0175781H21.517V0.0204381Z'%20fill='%231C28BA'/%3e%3cpath%20d='M21.517%2013.3538L0%2026.69V13.3538H21.517Z'%20fill='white'/%3e%3cpath%20d='M21.517%2026.693L0%2040.0264V26.6902H21.517V26.693Z'%20fill='white'/%3e%3c/svg%3e";
1934
- var wt = Object.defineProperty, Ct = Object.getOwnPropertyDescriptor, y = (l, A, t, r) => {
1935
- for (var e = r > 1 ? void 0 : r ? Ct(A, t) : A, p = l.length - 1, V; p >= 0; p--)
1936
- (V = l[p]) && (e = (r ? V(A, t, e) : V(e)) || e);
1838
+ var wt = Object.defineProperty, Yt = Object.getOwnPropertyDescriptor, d = (l, A, t, r) => {
1839
+ for (var e = r > 1 ? void 0 : r ? Yt(A, t) : A, p = l.length - 1, n; p >= 0; p--)
1840
+ (n = l[p]) && (e = (r ? n(A, t, e) : n(e)) || e);
1937
1841
  return r && e && wt(A, t, e), e;
1938
1842
  };
1939
1843
  const { getLocale: gt, setLocale: PA } = Wt({
1940
1844
  sourceLocale: IA,
1941
1845
  targetLocales: bt,
1942
- loadLocale: (l) => wA(/* @__PURE__ */ Object.assign({ "./generated/locales/pt-BR.ts": () => import("./pt-BR-vVX9MQ4x.mjs") }), `./generated/locales/${l}.ts`, 4)
1846
+ loadLocale: (l) => wA(/* @__PURE__ */ Object.assign({ "./generated/locales/pt-BR.ts": () => import("./pt-BR-DJDRIzyB.mjs") }), `./generated/locales/${l}.ts`, 4)
1943
1847
  });
1944
1848
  let a = class extends X {
1945
1849
  constructor() {
1946
- super(...arguments), this.spinnerFrame = 0, this.apiKey = "DB8mP9gStPfvdyeYbbuCV4Zf3SH745dI", this.tenantId = "1", this.productSku = "123456", this.apiUrl = "https://xactsize-dotnet-api-923169850574.southamerica-east1.run.app/api/measurer/measure/body", this._culture = "pt-BR", this.measurerKey = "", this._isLocaleLoading = !1, this.showModal = !1, this.step = 1, this.height = 0, this.recommendedSize = "", this.measurements = {}, this.errorMessage = "", this.instructionMessage = n("Position yourself in front of the camera"), this.shouldStartMeasurement = !1, this.isLoading = !1, this.isFetching = !1, this.videoElement = null, this.stream = null, this.poolingTimeout = null, this.instructionMessageTimeout = null, this.cameras = [], this.currentCameraId = null;
1850
+ super(...arguments), this.spinnerFrame = 0, this.apiKey = "DB8mP9gStPfvdyeYbbuCV4Zf3SH745dI", this.tenantId = "1", this.productSku = "123456", this.apiUrl = "https://xactsize-dotnet-api-923169850574.southamerica-east1.run.app/api/measurer/measure/body", this._culture = "pt-BR", this.measurerKey = "", this._isLocaleLoading = !1, this.showModal = !1, this.step = 1, this.height = 0, this.recommendedSize = "", this.measurements = {}, this.errorMessage = "", this.instructionMessage = V("Position yourself in front of the camera"), this.shouldStartMeasurement = !1, this.isLoading = !1, this.isFetching = !1, this.videoElement = null, this.stream = null, this.poolingTimeout = null, this.instructionMessageTimeout = null, this.cameras = [], this.currentCameraId = null, this.snowflakesCache = null;
1947
1851
  }
1948
1852
  firstUpdated() {
1949
1853
  this.startSpinnerAnimation();
@@ -1978,45 +1882,45 @@ let a = class extends X {
1978
1882
  }
1979
1883
  get errorMap() {
1980
1884
  return {
1981
- ERR_RIGHT_ARM_TOO_HIGH: n("Lower your right arm", { id: "ERR_RIGHT_ARM_TOO_HIGH" }),
1982
- ERR_LEFT_ARM_TOO_HIGH: n("Lower your left arm", { id: "ERR_LEFT_ARM_TOO_HIGH" }),
1983
- ERR_ARMS_NOT_RAISED: n("Raise both arms to a 45-degree angle", { id: "ERR_ARMS_NOT_RAISED" }),
1984
- ERR_RIGHT_ARM_NOT_RAISED: n("Raise your right arm to a 45-degree angle", { id: "ERR_RIGHT_ARM_NOT_RAISED" }),
1985
- ERR_LEFT_ARM_NOT_RAISED: n("Raise your left arm to a 45-degree angle", { id: "ERR_LEFT_ARM_NOT_RAISED" }),
1986
- ERR_BODY_LANDMARKS_NOT_DETECTED: n("Ensure your full body is visible in the camera", { id: "ERR_BODY_LANDMARKS_NOT_DETECTED" }),
1987
- ERR_HIPS_NOT_VISIBLE: n("Adjust your position to show your hips", { id: "ERR_HIPS_NOT_VISIBLE" }),
1988
- ERR_TOO_CLOSE_TO_CAMERA: n("Step back from the camera", { id: "ERR_TOO_CLOSE_TO_CAMERA" }),
1989
- ERR_NOT_SIDE_VIEW: n("Turn to show your side profile", { id: "ERR_NOT_SIDE_VIEW" }),
1990
- ERR_INVALID_CLOTHING_TYPE: n("This clothing type is not supported; please contact support", { id: "ERR_INVALID_CLOTHING_TYPE" }),
1991
- ERR_UPPER_BODY_NOT_VISIBLE: n("Adjust your position to show your upper body", { id: "ERR_UPPER_BODY_NOT_VISIBLE" }),
1992
- ERR_HEAD_TOO_CLOSE_TO_EDGE: n("Move your head away from the edge of the frame", { id: "ERR_HEAD_TOO_CLOSE_TO_EDGE" }),
1993
- ERR_LOWER_BODY_NOT_VISIBLE: n("Adjust your position to show your lower body", { id: "ERR_LOWER_BODY_NOT_VISIBLE" }),
1994
- ERR_FEET_TOO_CLOSE_TO_EDGE: n("Move your feet away from the edge of the frame", { id: "ERR_FEET_TOO_CLOSE_TO_EDGE" }),
1995
- ERR_BODY_TOO_CLOSE_TO_EDGE: n("Move your body away from the edge of the frame", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE" }),
1996
- ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_LEFT: n("Move to the left to center your body", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_LEFT" }),
1997
- ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_RIGHT: n("Move to the right to center your body", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_RIGHT" }),
1998
- ERR_SHOULDERS_NOT_VISIBLE: n("Adjust your position to show your shoulders", { id: "ERR_SHOULDERS_NOT_VISIBLE" }),
1999
- ERR_HEIGHT_MEASUREMENT_FAILED: n("Stand straight and ensure your full body is visible", { id: "ERR_HEIGHT_MEASUREMENT_FAILED" }),
2000
- ERR_HEAD_POINT_NOT_DETECTED: n("Ensure your head is fully visible in the frame", { id: "ERR_HEAD_POINT_NOT_DETECTED" }),
2001
- ERR_INCORRECT_POSTURE: n("Stand straight with your shoulders back", { id: "ERR_INCORRECT_POSTURE" }),
2002
- ERR_HEM_MEASUREMENT_FAILED: n("Ensure your clothing hem is visible and clear", { id: "ERR_HEM_MEASUREMENT_FAILED" }),
2003
- ERR_SHOULDER_MEASUREMENT_FAILED: n("Keep your shoulders relaxed and visible", { id: "ERR_SHOULDER_MEASUREMENT_FAILED" }),
2004
- ERR_ARM_NOT_STRETCHED: n("Stretch your arms fully", { id: "ERR_ARM_NOT_STRETCHED" }),
2005
- ERR_LEGS_NOT_DETECTED: n("Ensure your legs are fully visible in the frame", { id: "ERR_LEGS_NOT_DETECTED" }),
2006
- ERR_HIPS_MEASUREMENT_FAILED: n("Stand straight and ensure your hips are visible", { id: "ERR_HIPS_MEASUREMENT_FAILED" }),
2007
- ERR_WAIST_MEASUREMENT_FAILED: n("Stand straight and ensure your waist is visible", { id: "ERR_WAIST_MEASUREMENT_FAILED" }),
2008
- ERR_INVALID_MEASURE_SIDE_VIEW: n("Turn to show a clear side profile", { id: "ERR_INVALID_MEASURE_SIDE_VIEW" }),
2009
- ERR_INVALID_BODY_HEIGHT_TYPE: n("Ensure your full body is visible for height measurement", { id: "ERR_INVALID_BODY_HEIGHT_TYPE" }),
2010
- ERR_IMAGE_LOAD_FAILED: n("Try again later; the image could not be processed", { id: "ERR_IMAGE_LOAD_FAILED" }),
2011
- ERR_HEIGHT_INVALID: n("Height must be between 50 and 300 cm", { id: "ERR_HEIGHT_INVALID" })
1885
+ ERR_RIGHT_ARM_TOO_HIGH: V("Lower your right arm", { id: "ERR_RIGHT_ARM_TOO_HIGH" }),
1886
+ ERR_LEFT_ARM_TOO_HIGH: V("Lower your left arm", { id: "ERR_LEFT_ARM_TOO_HIGH" }),
1887
+ ERR_ARMS_NOT_RAISED: V("Raise both arms to a 45-degree angle", { id: "ERR_ARMS_NOT_RAISED" }),
1888
+ ERR_RIGHT_ARM_NOT_RAISED: V("Raise your right arm to a 45-degree angle", { id: "ERR_RIGHT_ARM_NOT_RAISED" }),
1889
+ ERR_LEFT_ARM_NOT_RAISED: V("Raise your left arm to a 45-degree angle", { id: "ERR_LEFT_ARM_NOT_RAISED" }),
1890
+ ERR_BODY_LANDMARKS_NOT_DETECTED: V("Ensure your full body is visible in the camera", { id: "ERR_BODY_LANDMARKS_NOT_DETECTED" }),
1891
+ ERR_HIPS_NOT_VISIBLE: V("Adjust your position to show your hips", { id: "ERR_HIPS_NOT_VISIBLE" }),
1892
+ ERR_TOO_CLOSE_TO_CAMERA: V("Step back from the camera", { id: "ERR_TOO_CLOSE_TO_CAMERA" }),
1893
+ ERR_NOT_SIDE_VIEW: V("Turn to show your side profile", { id: "ERR_NOT_SIDE_VIEW" }),
1894
+ ERR_INVALID_CLOTHING_TYPE: V("This clothing type is not supported; please contact support", { id: "ERR_INVALID_CLOTHING_TYPE" }),
1895
+ ERR_UPPER_BODY_NOT_VISIBLE: V("Adjust your position to show your upper body", { id: "ERR_UPPER_BODY_NOT_VISIBLE" }),
1896
+ ERR_HEAD_TOO_CLOSE_TO_EDGE: V("Move your head away from the edge of the frame", { id: "ERR_HEAD_TOO_CLOSE_TO_EDGE" }),
1897
+ ERR_LOWER_BODY_NOT_VISIBLE: V("Adjust your position to show your lower body", { id: "ERR_LOWER_BODY_NOT_VISIBLE" }),
1898
+ ERR_FEET_TOO_CLOSE_TO_EDGE: V("Move your feet away from the edge of the frame", { id: "ERR_FEET_TOO_CLOSE_TO_EDGE" }),
1899
+ ERR_BODY_TOO_CLOSE_TO_EDGE: V("Move your body away from the edge of the frame", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE" }),
1900
+ ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_LEFT: V("Move to the left to center your body", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_LEFT" }),
1901
+ ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_RIGHT: V("Move to the right to center your body", { id: "ERR_BODY_TOO_CLOSE_TO_EDGE_MOVE_RIGHT" }),
1902
+ ERR_SHOULDERS_NOT_VISIBLE: V("Adjust your position to show your shoulders", { id: "ERR_SHOULDERS_NOT_VISIBLE" }),
1903
+ ERR_HEIGHT_MEASUREMENT_FAILED: V("Stand straight and ensure your full body is visible", { id: "ERR_HEIGHT_MEASUREMENT_FAILED" }),
1904
+ ERR_HEAD_POINT_NOT_DETECTED: V("Ensure your head is fully visible in the frame", { id: "ERR_HEAD_POINT_NOT_DETECTED" }),
1905
+ ERR_INCORRECT_POSTURE: V("Stand straight with your shoulders back", { id: "ERR_INCORRECT_POSTURE" }),
1906
+ ERR_HEM_MEASUREMENT_FAILED: V("Ensure your clothing hem is visible and clear", { id: "ERR_HEM_MEASUREMENT_FAILED" }),
1907
+ ERR_SHOULDER_MEASUREMENT_FAILED: V("Keep your shoulders relaxed and visible", { id: "ERR_SHOULDER_MEASUREMENT_FAILED" }),
1908
+ ERR_ARM_NOT_STRETCHED: V("Stretch your arms fully", { id: "ERR_ARM_NOT_STRETCHED" }),
1909
+ ERR_LEGS_NOT_DETECTED: V("Ensure your legs are fully visible in the frame", { id: "ERR_LEGS_NOT_DETECTED" }),
1910
+ ERR_HIPS_MEASUREMENT_FAILED: V("Stand straight and ensure your hips are visible", { id: "ERR_HIPS_MEASUREMENT_FAILED" }),
1911
+ ERR_WAIST_MEASUREMENT_FAILED: V("Stand straight and ensure your waist is visible", { id: "ERR_WAIST_MEASUREMENT_FAILED" }),
1912
+ ERR_INVALID_MEASURE_SIDE_VIEW: V("Turn to show a clear side profile", { id: "ERR_INVALID_MEASURE_SIDE_VIEW" }),
1913
+ ERR_INVALID_BODY_HEIGHT_TYPE: V("Ensure your full body is visible for height measurement", { id: "ERR_INVALID_BODY_HEIGHT_TYPE" }),
1914
+ ERR_IMAGE_LOAD_FAILED: V("Try again later; the image could not be processed", { id: "ERR_IMAGE_LOAD_FAILED" }),
1915
+ ERR_HEIGHT_INVALID: V("Height must be between 50 and 300 cm", { id: "ERR_HEIGHT_INVALID" })
2012
1916
  };
2013
1917
  }
2014
1918
  getTranslatedMessage(l) {
2015
1919
  const A = this.errorMap[l];
2016
- return A || (console.info("Error code is missing", l), n("An unexpected error occurred"));
1920
+ return A || (console.info("Error code is missing", l), V("An unexpected error occurred"));
2017
1921
  }
2018
1922
  connectedCallback() {
2019
- super.connectedCallback(), document.addEventListener("keydown", this.handleEscKey.bind(this));
1923
+ super.connectedCallback(), document.addEventListener("keydown", this.handleEscKey.bind(this)), this.snowflakesCache = this.generateSnowflakes();
2020
1924
  }
2021
1925
  disconnectedCallback() {
2022
1926
  super.disconnectedCallback(), document.removeEventListener("keydown", this.handleEscKey.bind(this)), this.stopPolling(), clearInterval(this.spinnerInterval);
@@ -2025,7 +1929,7 @@ let a = class extends X {
2025
1929
  l.key === "Escape" && this.showModal && this.closeModal();
2026
1930
  }
2027
1931
  openModal() {
2028
- this.showModal = !0, this.step = 1, this.height = 0, this.instructionMessage = n("Position yourself in front of the camera");
1932
+ this.showModal = !0, this.step = 1, this.height = 0, this.instructionMessage = V("Position yourself in front of the camera");
2029
1933
  }
2030
1934
  closeModal() {
2031
1935
  this.showModal = !1, this.onMeasurementCanceled && typeof this.onMeasurementCanceled == "function" && this.onMeasurementCanceled(), this.stopPolling(), this.dispatchEvent(new CustomEvent("measurementCanceled", { detail: {} }));
@@ -2048,7 +1952,7 @@ let a = class extends X {
2048
1952
  try {
2049
1953
  this.stream = await navigator.mediaDevices.getUserMedia({ video: !0 }), this.videoElement && (this.videoElement.srcObject = this.stream, await this.videoElement.play(), await this.loadCameras(), this.startPolling());
2050
1954
  } catch {
2051
- this.errorMessage = n("Error accessing webcam");
1955
+ this.errorMessage = V("Error accessing webcam");
2052
1956
  }
2053
1957
  }
2054
1958
  async loadCameras() {
@@ -2069,7 +1973,7 @@ let a = class extends X {
2069
1973
  video: { deviceId: { exact: this.currentCameraId } }
2070
1974
  }), this.videoElement && (this.videoElement.srcObject = this.stream, await this.videoElement.play(), this.startPolling());
2071
1975
  } catch {
2072
- this.errorMessage = n("Error switching camera");
1976
+ this.errorMessage = V("Error switching camera");
2073
1977
  } finally {
2074
1978
  this.isLoading = !1;
2075
1979
  }
@@ -2082,7 +1986,7 @@ let a = class extends X {
2082
1986
  const t = A.getContext("2d");
2083
1987
  t == null || t.drawImage(this.videoElement, 0, 0, A.width, A.height);
2084
1988
  const r = await new Promise(
2085
- (V) => A.toBlob((S) => V(S), "image/jpeg")
1989
+ (n) => A.toBlob((S) => n(S), "image/jpeg")
2086
1990
  ), e = new File([r], "frame.jpg", { type: "image/jpeg" }), p = new FormData();
2087
1991
  p.append("image", e), p.append("height", this.height.toString()), p.append("productSku", this.productSku), this.measurerKey && p.append("measurerKey", this.measurerKey);
2088
1992
  try {
@@ -2097,12 +2001,12 @@ let a = class extends X {
2097
2001
  "X-Api-Key": this.apiKey
2098
2002
  }
2099
2003
  })).json();
2100
- this.isFetching = !1, this.isLoading = !1, this.errorMessage = JSON.stringify(S), S.success ? (this.measurements = S.measurements, this.recommendedSize = S.chosenSize, this.instructionMessage = n("Measurement successful!"), this.stopPolling(), this.step = 4) : (this.instructionMessage = this.getTranslatedMessage(S.message || "UNKNOWN_ERROR"), this.instructionMessageTimeout = setTimeout(() => {
2101
- this.recommendedSize || (this.instructionMessage = n("Position yourself in front of the camera"), this.poolingTimeout = setTimeout(l, 0));
2004
+ this.isFetching = !1, this.isLoading = !1, this.errorMessage = JSON.stringify(S), S.success ? (this.measurements = S.measurements, this.recommendedSize = S.chosenSize, this.instructionMessage = V("Measurement successful!"), this.stopPolling(), this.step = 4) : (this.instructionMessage = this.getTranslatedMessage(S.message || "UNKNOWN_ERROR"), this.instructionMessageTimeout = setTimeout(() => {
2005
+ this.recommendedSize || (this.instructionMessage = V("Position yourself in front of the camera"), this.poolingTimeout = setTimeout(l, 0));
2102
2006
  }, 2e3));
2103
2007
  } catch {
2104
- this.isFetching = !1, this.isLoading = !1, this.instructionMessage = n("Error processing measurement"), this.instructionMessageTimeout = setTimeout(() => {
2105
- this.recommendedSize || (this.instructionMessage = n("Position yourself in front of the camera"), this.poolingTimeout = setTimeout(l, 0));
2008
+ this.isFetching = !1, this.isLoading = !1, this.instructionMessage = V("Error processing measurement"), this.instructionMessageTimeout = setTimeout(() => {
2009
+ this.recommendedSize || (this.instructionMessage = V("Position yourself in front of the camera"), this.poolingTimeout = setTimeout(l, 0));
2106
2010
  }, 2e3);
2107
2011
  }
2108
2012
  };
@@ -2120,11 +2024,27 @@ let a = class extends X {
2120
2024
  stopMeasurement() {
2121
2025
  this.resetMeasurement(), this.showModal = !1;
2122
2026
  }
2027
+ generateSnowflakes() {
2028
+ const l = [];
2029
+ for (let t = 0; t < 80; t++) {
2030
+ const r = Math.random() * 100, e = 8 + Math.random() * 17, p = -Math.random() * 30;
2031
+ l.push(k`<span class="snowflake" style="left:${r}%; animation-duration:${e.toFixed(2)}s; animation-delay:${p.toFixed(2)}s;"></span>`);
2032
+ }
2033
+ return k`${l}`;
2034
+ }
2035
+ renderSnowflakes() {
2036
+ return this.snowflakesCache || k``;
2037
+ }
2123
2038
  render() {
2124
- return this._isLocaleLoading ? T`<div hidden></div>` : T`
2125
- <xact-button @click=${this.openModal} label="${n("Find your Xactsize")}"></xact-button>
2126
-
2127
- ${this.showModal ? T`
2039
+ return this._isLocaleLoading ? k`<div hidden></div>` : k`
2040
+ <xact-button
2041
+ class="launch-btn"
2042
+ style="--brand-primary: #000; --text-inverse: #fff; --brand-primary-hover: #111;"
2043
+ @click=${this.openModal}
2044
+ label="${V("Find your Xactsize")}"
2045
+ ></xact-button>
2046
+
2047
+ ${this.showModal ? k`
2128
2048
  <div class="modal">
2129
2049
  <div class="modal-content">
2130
2050
  <div style="display: flex; justify-content: space-between" class="modal-title-container">
@@ -2135,21 +2055,21 @@ let a = class extends X {
2135
2055
  </span>
2136
2056
  </div>
2137
2057
 
2138
- ${this.step === 1 ? T`
2058
+ ${this.step === 1 ? k`
2139
2059
  <xact-step-one .onStartMeasurement=${(l) => {
2140
2060
  this.height = l, this.startMeasurement();
2141
2061
  }}></xact-step-one>
2142
2062
  ` : ""}
2143
- ${this.step === 2 ? T`
2063
+ ${this.step === 2 ? k`
2144
2064
  <xact-step-informs .onStep2advancement=${() => {
2145
2065
  this.step2advancement();
2146
2066
  }}></xact-step-informs>
2147
2067
  ` : ""}
2148
2068
 
2149
- ${this.step === 3 ? T`
2069
+ ${this.step === 3 ? k`
2150
2070
  <div class="step-3">
2151
2071
 
2152
- <p>${n("Ensure your full body is visible in the camera")}</p>
2072
+ <p>${V("Ensure your full body is visible in the camera")}</p>
2153
2073
  <div class='video-container'>
2154
2074
  <div class="video-overlay">
2155
2075
  <h2>${this.instructionMessage}</h2>
@@ -2165,13 +2085,18 @@ let a = class extends X {
2165
2085
  <button class="video-flip-icon" @click=${this.flipCamera} ?disabled=${this.cameras.length < 2}>
2166
2086
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="white" viewBox="0 0 24 24">
2167
2087
  <path d="M12 6V9L16 5L12 1V4C7.58 4 4 7.58 4 12H6C6 8.69 8.69 6 12 6ZM18 12C18 15.31 15.31 18 12 18V15L8 19L12 23V20C16.42 20 20 16.42 20 12H18Z"/>
2168
- </svg>
2088
+ </svg>
2169
2089
  </button>
2090
+
2091
+ <!-- Snow effect -->
2092
+ <div class="snow-container">
2093
+ ${this.renderSnowflakes()}
2094
+ </div>
2170
2095
  </div>
2171
2096
  </div>
2172
2097
  ` : ""}
2173
2098
 
2174
- ${this.step === 4 ? T`
2099
+ ${this.step === 4 ? k`
2175
2100
  <div class="step-4">
2176
2101
  <xact-step-result
2177
2102
  .recommendedSize=${this.recommendedSize}
@@ -2483,6 +2408,13 @@ a.styles = N`
2483
2408
  width: 100%;
2484
2409
  }
2485
2410
 
2411
+ xact-button.launch-btn {
2412
+ --brand-primary: #000;
2413
+ --brand-primary-hover: #111;
2414
+ --text-inverse: #fff;
2415
+ --xact-button-radius: 0px;
2416
+ }
2417
+
2486
2418
  .video-overlay {
2487
2419
  position: absolute;
2488
2420
  inset: 4px 4px auto 4px;
@@ -2560,6 +2492,82 @@ a.styles = N`
2560
2492
  100% { filter: brightness(1); }
2561
2493
  }
2562
2494
 
2495
+ /* Snow effect */
2496
+ .snow-container {
2497
+ position: absolute;
2498
+ inset: 0;
2499
+ pointer-events: none;
2500
+ overflow: hidden;
2501
+ z-index: 10;
2502
+ border-radius: 8px;
2503
+ }
2504
+
2505
+ .snowflake {
2506
+ position: absolute;
2507
+ top: -10%;
2508
+ color: #fff;
2509
+ font-size: 1em;
2510
+ font-family: Arial, sans-serif;
2511
+ text-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
2512
+ opacity: 0;
2513
+ animation: snowfall linear infinite;
2514
+ will-change: transform, opacity;
2515
+ }
2516
+
2517
+ .snowflake::before {
2518
+ content: "❅";
2519
+ }
2520
+
2521
+ .snowflake:nth-child(2n)::before {
2522
+ content: "❆";
2523
+ }
2524
+
2525
+ .snowflake:nth-child(3n)::before {
2526
+ content: "❄";
2527
+ }
2528
+
2529
+ .snowflake:nth-child(odd) {
2530
+ font-size: 0.8em;
2531
+ }
2532
+
2533
+ .snowflake:nth-child(3n) {
2534
+ font-size: 1.2em;
2535
+ }
2536
+
2537
+ .snowflake:nth-child(4n) {
2538
+ font-size: 0.6em;
2539
+ }
2540
+
2541
+ .snowflake:nth-child(5n) {
2542
+ font-size: 1.1em;
2543
+ }
2544
+
2545
+ @keyframes snowfall {
2546
+ 0% {
2547
+ transform: translateY(-10vh) translateX(0);
2548
+ opacity: 0;
2549
+ }
2550
+ 5% {
2551
+ opacity: 1;
2552
+ }
2553
+ 25% {
2554
+ transform: translateY(30vh) translateX(-10px);
2555
+ }
2556
+ 50% {
2557
+ transform: translateY(60vh) translateX(10px);
2558
+ }
2559
+ 75% {
2560
+ transform: translateY(90vh) translateX(-5px);
2561
+ }
2562
+ 95% {
2563
+ opacity: 1;
2564
+ }
2565
+ 100% {
2566
+ transform: translateY(110vh) translateX(0);
2567
+ opacity: 0;
2568
+ }
2569
+ }
2570
+
2563
2571
  .error-message {
2564
2572
  color: red;
2565
2573
  font-size: 14px;
@@ -2617,75 +2625,75 @@ a.styles = N`
2617
2625
 
2618
2626
 
2619
2627
  `;
2620
- y([
2621
- j({ type: String, attribute: "api-key" })
2628
+ d([
2629
+ c({ type: String, attribute: "api-key" })
2622
2630
  ], a.prototype, "apiKey", 2);
2623
- y([
2624
- j({ type: String, attribute: "tenant-id" })
2631
+ d([
2632
+ c({ type: String, attribute: "tenant-id" })
2625
2633
  ], a.prototype, "tenantId", 2);
2626
- y([
2627
- j({ type: String, attribute: "product-sku" })
2634
+ d([
2635
+ c({ type: String, attribute: "product-sku" })
2628
2636
  ], a.prototype, "productSku", 2);
2629
- y([
2630
- j({ type: String, attribute: "api-url" })
2637
+ d([
2638
+ c({ type: String, attribute: "api-url" })
2631
2639
  ], a.prototype, "apiUrl", 2);
2632
- y([
2633
- j({ type: Function, attribute: "onmeasurementaccepted" })
2640
+ d([
2641
+ c({ type: Function, attribute: "onmeasurementaccepted" })
2634
2642
  ], a.prototype, "onMeasurementAccepted", 2);
2635
- y([
2636
- j({ type: Function, attribute: "onmeasurementcanceled" })
2643
+ d([
2644
+ c({ type: Function, attribute: "onmeasurementcanceled" })
2637
2645
  ], a.prototype, "onMeasurementCanceled", 2);
2638
- y([
2639
- j({ type: String })
2646
+ d([
2647
+ c({ type: String })
2640
2648
  ], a.prototype, "culture", 1);
2641
- y([
2642
- J()
2649
+ d([
2650
+ T()
2643
2651
  ], a.prototype, "errorMap", 1);
2644
- y([
2645
- J()
2652
+ d([
2653
+ T()
2646
2654
  ], a.prototype, "measurerKey", 2);
2647
- y([
2648
- J()
2655
+ d([
2656
+ T()
2649
2657
  ], a.prototype, "_isLocaleLoading", 2);
2650
- y([
2651
- J()
2658
+ d([
2659
+ T()
2652
2660
  ], a.prototype, "showModal", 2);
2653
- y([
2654
- J()
2661
+ d([
2662
+ T()
2655
2663
  ], a.prototype, "step", 2);
2656
- y([
2657
- J()
2664
+ d([
2665
+ T()
2658
2666
  ], a.prototype, "height", 2);
2659
- y([
2660
- J()
2667
+ d([
2668
+ T()
2661
2669
  ], a.prototype, "recommendedSize", 2);
2662
- y([
2663
- J()
2670
+ d([
2671
+ T()
2664
2672
  ], a.prototype, "measurements", 2);
2665
- y([
2666
- J()
2673
+ d([
2674
+ T()
2667
2675
  ], a.prototype, "errorMessage", 2);
2668
- y([
2669
- J()
2676
+ d([
2677
+ T()
2670
2678
  ], a.prototype, "instructionMessage", 2);
2671
- y([
2672
- J()
2679
+ d([
2680
+ T()
2673
2681
  ], a.prototype, "shouldStartMeasurement", 2);
2674
- y([
2675
- J()
2682
+ d([
2683
+ T()
2676
2684
  ], a.prototype, "isLoading", 2);
2677
- y([
2678
- J()
2685
+ d([
2686
+ T()
2679
2687
  ], a.prototype, "isFetching", 2);
2680
- y([
2681
- J()
2688
+ d([
2689
+ T()
2682
2690
  ], a.prototype, "cameras", 2);
2683
- y([
2684
- J()
2691
+ d([
2692
+ T()
2685
2693
  ], a.prototype, "currentCameraId", 2);
2686
- a = y([
2694
+ a = d([
2687
2695
  R("body-measurer"),
2688
- C()
2696
+ Y()
2689
2697
  ], a);
2690
2698
  export {
2691
2699
  a as BodyMeasurer,