@digilogiclabs/saas-factory-ui 2.8.2 → 2.9.1

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.
package/dist/web/index.js CHANGED
@@ -497,6 +497,7 @@ __export(index_exports, {
497
497
  audioAppTabs: () => audioAppTabs,
498
498
  audioPlayerVariants: () => audioPlayerVariants,
499
499
  breadcrumbsVariants: () => breadcrumbsVariants,
500
+ buildPolyhedron: () => buildPolyhedron,
500
501
  cn: () => cn,
501
502
  commonValidators: () => commonValidators,
502
503
  containerVariants: () => containerVariants2,
@@ -507,6 +508,7 @@ __export(index_exports, {
507
508
  cssAnimations: () => cssAnimations,
508
509
  d6LandingRotation: () => d6LandingRotation,
509
510
  dailyTrendingConfig: () => dailyTrendingConfig,
511
+ dealFaceValues: () => dealFaceValues,
510
512
  detectAuthProvider: () => detectAuthProvider,
511
513
  detectDelimiter: () => detectDelimiter,
512
514
  detectHeader: () => detectHeader,
@@ -30361,17 +30363,226 @@ function d6LandingRotation(value) {
30361
30363
  y: Math.abs(p.y) === 180 ? 180 : -p.y || 0
30362
30364
  };
30363
30365
  }
30364
- var POLY_SHAPES = {
30365
- 4: { points: "50,8 93,86 7,86", textY: 62, fontScale: 0.3 },
30366
- 8: { points: "50,4 96,50 50,96 4,50", textY: 51, fontScale: 0.33 },
30367
- 10: { points: "50,4 93,44 50,96 7,44", textY: 47, fontScale: 0.3 },
30368
- 12: { points: "50,4 95,37 78,93 22,93 5,37", textY: 54, fontScale: 0.33 },
30369
- 20: {
30370
- points: "50,3 91,26 91,74 50,97 9,74 9,26",
30371
- textY: 51,
30372
- fontScale: 0.33
30366
+ var PHI = (1 + Math.sqrt(5)) / 2;
30367
+ var dot3 = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
30368
+ var cross3 = (a, b) => [
30369
+ a[1] * b[2] - a[2] * b[1],
30370
+ a[2] * b[0] - a[0] * b[2],
30371
+ a[0] * b[1] - a[1] * b[0]
30372
+ ];
30373
+ var sub3 = (a, b) => [
30374
+ a[0] - b[0],
30375
+ a[1] - b[1],
30376
+ a[2] - b[2]
30377
+ ];
30378
+ var scale3 = (a, s) => [a[0] * s, a[1] * s, a[2] * s];
30379
+ var len3 = (a) => Math.hypot(a[0], a[1], a[2]);
30380
+ var norm3 = (a) => scale3(a, 1 / len3(a));
30381
+ function rotateAround(p, axis, angle) {
30382
+ const cosA = Math.cos(angle);
30383
+ const sinA = Math.sin(angle);
30384
+ const t1 = scale3(p, cosA);
30385
+ const t2 = scale3(cross3(axis, p), sinA);
30386
+ const t3 = scale3(axis, dot3(axis, p) * (1 - cosA));
30387
+ return [t1[0] + t2[0] + t3[0], t1[1] + t2[1] + t3[1], t1[2] + t2[2] + t3[2]];
30388
+ }
30389
+ function rotationTo(from, to) {
30390
+ const c = dot3(from, to);
30391
+ if (c > 1 - 1e-9) return (p) => p;
30392
+ const axis = c < -1 + 1e-9 ? norm3(
30393
+ Math.abs(from[0]) < 0.9 ? cross3(from, [1, 0, 0]) : cross3(from, [0, 1, 0])
30394
+ ) : norm3(cross3(from, to));
30395
+ const angle = Math.acos(Math.max(-1, Math.min(1, c)));
30396
+ return (p) => rotateAround(p, axis, angle);
30397
+ }
30398
+ function solidVertices(sides) {
30399
+ switch (sides) {
30400
+ case 4:
30401
+ return [
30402
+ [1, 1, 1],
30403
+ [1, -1, -1],
30404
+ [-1, 1, -1],
30405
+ [-1, -1, 1]
30406
+ ];
30407
+ case 8:
30408
+ return [
30409
+ [1, 0, 0],
30410
+ [-1, 0, 0],
30411
+ [0, 1, 0],
30412
+ [0, -1, 0],
30413
+ [0, 0, 1],
30414
+ [0, 0, -1]
30415
+ ];
30416
+ case 10: {
30417
+ const h = 0.15;
30418
+ const cos36 = Math.cos(Math.PI / 5);
30419
+ const zApex = 2 * h / (1 - cos36) * cos36 + h;
30420
+ const verts = [
30421
+ [0, 0, zApex],
30422
+ [0, 0, -zApex]
30423
+ ];
30424
+ for (let k = 0; k < 10; k++) {
30425
+ const a = k * Math.PI / 5;
30426
+ verts.push([Math.cos(a), Math.sin(a), k % 2 === 0 ? h : -h]);
30427
+ }
30428
+ return verts;
30429
+ }
30430
+ case 12: {
30431
+ const v = [];
30432
+ for (const sx of [1, -1])
30433
+ for (const sy of [1, -1])
30434
+ for (const sz of [1, -1]) v.push([sx, sy, sz]);
30435
+ const b = 1 / PHI;
30436
+ for (const s1 of [1, -1])
30437
+ for (const s2 of [1, -1]) {
30438
+ v.push([0, s1 * b, s2 * PHI]);
30439
+ v.push([s1 * b, s2 * PHI, 0]);
30440
+ v.push([s2 * PHI, 0, s1 * b]);
30441
+ }
30442
+ return v;
30443
+ }
30444
+ case 20: {
30445
+ const v = [];
30446
+ for (const s1 of [1, -1])
30447
+ for (const s2 of [1, -1]) {
30448
+ v.push([0, s1, s2 * PHI]);
30449
+ v.push([s1, s2 * PHI, 0]);
30450
+ v.push([s2 * PHI, 0, s1]);
30451
+ }
30452
+ return v;
30453
+ }
30373
30454
  }
30374
- };
30455
+ }
30456
+ function computeFaces(verts) {
30457
+ const faces = [];
30458
+ const seen = /* @__PURE__ */ new Set();
30459
+ for (let i = 0; i < verts.length; i++)
30460
+ for (let j = i + 1; j < verts.length; j++)
30461
+ for (let k = j + 1; k < verts.length; k++) {
30462
+ let n = cross3(sub3(verts[j], verts[i]), sub3(verts[k], verts[i]));
30463
+ if (len3(n) < 1e-9) continue;
30464
+ n = norm3(n);
30465
+ let d = dot3(n, verts[i]);
30466
+ if (d < 0) {
30467
+ n = scale3(n, -1);
30468
+ d = -d;
30469
+ }
30470
+ if (verts.some((p) => dot3(n, p) > d + 1e-4)) continue;
30471
+ const ids = verts.flatMap(
30472
+ (p, idx) => Math.abs(dot3(n, p) - d) < 1e-4 ? [idx] : []
30473
+ );
30474
+ const key = ids.join(",");
30475
+ if (seen.has(key)) continue;
30476
+ seen.add(key);
30477
+ faces.push({ normal: n, ids });
30478
+ }
30479
+ return faces;
30480
+ }
30481
+ var polyhedronCache = /* @__PURE__ */ new Map();
30482
+ function buildPolyhedron(sides) {
30483
+ const cached = polyhedronCache.get(sides);
30484
+ if (cached) return cached;
30485
+ let verts = solidVertices(sides);
30486
+ const rough = computeFaces(verts);
30487
+ const front = rough.reduce(
30488
+ (best, f) => f.normal[2] > best.normal[2] + 1e-9 ? f : best
30489
+ );
30490
+ const rot = rotationTo(front.normal, [0, 0, 1]);
30491
+ verts = verts.map(rot);
30492
+ const rMax = Math.max(...verts.map(len3));
30493
+ verts = verts.map((p) => scale3(p, 1 / rMax));
30494
+ const raw = computeFaces(verts);
30495
+ const built = raw.map((f) => {
30496
+ const faceVerts = f.ids.map((i) => verts[i]);
30497
+ const centroid = scale3(
30498
+ faceVerts.reduce((a, b) => [a[0] + b[0], a[1] + b[1], a[2] + b[2]]),
30499
+ 1 / faceVerts.length
30500
+ );
30501
+ const w = f.normal;
30502
+ let vRaw = sub3([0, 1, 0], scale3(w, w[1]));
30503
+ if (len3(vRaw) < 1e-6) vRaw = sub3([0, 0, 1], scale3(w, w[2]));
30504
+ const v = norm3(vRaw);
30505
+ const u = cross3(v, w);
30506
+ const pts = faceVerts.map((p) => [
30507
+ dot3(sub3(p, centroid), u),
30508
+ dot3(sub3(p, centroid), v)
30509
+ ]).sort((a, b) => Math.atan2(a[1], a[0]) - Math.atan2(b[1], b[0]));
30510
+ return { normal: w, centroid, u, v, pts, value: 0 };
30511
+ });
30512
+ built.sort((a, b) => b.normal[2] - a.normal[2]);
30513
+ const oppOf = (i) => built.findIndex((g) => dot3(built[i].normal, g.normal) < -0.9999);
30514
+ const pool = [];
30515
+ for (let v2 = 1; v2 < sides; v2++) pool.push(v2);
30516
+ built[0].value = sides;
30517
+ const opp0 = oppOf(0);
30518
+ if (opp0 >= 0) {
30519
+ built[opp0].value = 1;
30520
+ pool.splice(pool.indexOf(1), 1);
30521
+ }
30522
+ for (let i = 1; i < built.length; i++) {
30523
+ if (built[i].value !== 0) continue;
30524
+ const v2 = pool.shift();
30525
+ built[i].value = v2;
30526
+ const j = oppOf(i);
30527
+ if (j >= 0 && built[j].value === 0) {
30528
+ built[j].value = sides + 1 - v2;
30529
+ pool.splice(pool.indexOf(sides + 1 - v2), 1);
30530
+ }
30531
+ }
30532
+ const faceRadius = Math.max(
30533
+ ...built.flatMap((f) => f.pts.map(([x, y]) => Math.hypot(x, y)))
30534
+ );
30535
+ const edgeDist = (pts) => Math.min(
30536
+ ...pts.map((p1, i2) => {
30537
+ const p2 = pts[(i2 + 1) % pts.length];
30538
+ const dx = p2[0] - p1[0];
30539
+ const dy = p2[1] - p1[1];
30540
+ const t = Math.max(
30541
+ 0,
30542
+ Math.min(1, -(p1[0] * dx + p1[1] * dy) / (dx * dx + dy * dy))
30543
+ );
30544
+ return Math.hypot(p1[0] + t * dx, p1[1] + t * dy);
30545
+ })
30546
+ );
30547
+ const faceInradius = Math.min(...built.map((f) => edgeDist(f.pts)));
30548
+ const opposite = built.map((_, i) => oppOf(i));
30549
+ const result = {
30550
+ faces: built,
30551
+ opposite,
30552
+ faceRadius,
30553
+ faceInradius
30554
+ };
30555
+ polyhedronCache.set(sides, result);
30556
+ return result;
30557
+ }
30558
+ function dealFaceValues(geo, sides, rolled) {
30559
+ const n = geo.faces.length;
30560
+ const out = new Array(n).fill(0);
30561
+ const used = /* @__PURE__ */ new Set([rolled]);
30562
+ out[0] = rolled;
30563
+ const opp0 = geo.opposite[0];
30564
+ if (opp0 >= 0) {
30565
+ out[opp0] = sides + 1 - rolled;
30566
+ used.add(sides + 1 - rolled);
30567
+ }
30568
+ const values = [];
30569
+ for (let v = 1; v <= sides; v++) if (!used.has(v)) values.push(v);
30570
+ for (let i = values.length - 1; i > 0; i--) {
30571
+ const j = Math.floor(Math.random() * (i + 1));
30572
+ [values[i], values[j]] = [values[j], values[i]];
30573
+ }
30574
+ for (let fi = 1; fi < n; fi++) {
30575
+ if (out[fi] !== 0) continue;
30576
+ const v = values.shift();
30577
+ out[fi] = v;
30578
+ const o = geo.opposite[fi];
30579
+ if (o >= 0 && out[o] === 0) {
30580
+ out[o] = sides + 1 - v;
30581
+ values.splice(values.indexOf(sides + 1 - v), 1);
30582
+ }
30583
+ }
30584
+ return out;
30585
+ }
30375
30586
  function formatDieValue(v, sides) {
30376
30587
  return sides > 8 && (v === 6 || v === 9) ? `${v}.` : String(v);
30377
30588
  }
@@ -30557,7 +30768,7 @@ function DiceRoller({
30557
30768
  const dieWrapperRefs = (0, import_react69.useRef)([]);
30558
30769
  const cubeRefs = (0, import_react69.useRef)([]);
30559
30770
  const shadowRefs = (0, import_react69.useRef)([]);
30560
- const numeralRefs = (0, import_react69.useRef)([]);
30771
+ const faceTextRefs = (0, import_react69.useRef)([]);
30561
30772
  const currentPositionsRef = (0, import_react69.useRef)(null);
30562
30773
  const rollingRef = (0, import_react69.useRef)(false);
30563
30774
  const dieSetters = (0, import_react69.useRef)([]);
@@ -30587,15 +30798,18 @@ function DiceRoller({
30587
30798
  }
30588
30799
  return shadowSetters.current[i];
30589
30800
  };
30590
- const numeralSetters = (0, import_react69.useRef)([]);
30591
- const getNumeralSetter = (i) => {
30592
- if (!numeralSetters.current[i]) {
30593
- numeralSetters.current[i] = (el) => {
30594
- numeralRefs.current[i] = el;
30801
+ const faceTextSetters = (0, import_react69.useRef)([]);
30802
+ const getFaceTextSetter = (i, fi) => {
30803
+ if (!faceTextSetters.current[i]) faceTextSetters.current[i] = [];
30804
+ if (!faceTextSetters.current[i][fi]) {
30805
+ faceTextSetters.current[i][fi] = (el) => {
30806
+ if (!faceTextRefs.current[i]) faceTextRefs.current[i] = [];
30807
+ faceTextRefs.current[i][fi] = el;
30595
30808
  };
30596
30809
  }
30597
- return numeralSetters.current[i];
30810
+ return faceTextSetters.current[i][fi];
30598
30811
  };
30812
+ const sheenGradientId = (0, import_react69.useId)();
30599
30813
  const timersRef = (0, import_react69.useRef)([]);
30600
30814
  const rafHandleRef = (0, import_react69.useRef)(null);
30601
30815
  const arenaRef = (0, import_react69.useRef)(null);
@@ -30799,12 +31013,15 @@ function DiceRoller({
30799
31013
  for (let f = 1; f <= flickerTicks; f++) {
30800
31014
  const t = setTimeout(() => {
30801
31015
  for (let i = 0; i < clampedCount; i++) {
30802
- const el = numeralRefs.current[i];
30803
- if (el)
30804
- el.textContent = formatDieValue(
30805
- Math.floor(Math.random() * sides) + 1,
30806
- sides
30807
- );
31016
+ const texts = faceTextRefs.current[i];
31017
+ if (!texts) continue;
31018
+ for (const el of texts) {
31019
+ if (el)
31020
+ el.textContent = formatDieValue(
31021
+ Math.floor(Math.random() * sides) + 1,
31022
+ sides
31023
+ );
31024
+ }
30808
31025
  }
30809
31026
  }, f * flickerStep);
30810
31027
  timersRef.current.push(t);
@@ -30831,9 +31048,19 @@ function DiceRoller({
30831
31048
  });
30832
31049
  const settleTimer = setTimeout(() => {
30833
31050
  if (sides !== 6) {
31051
+ const geo = buildPolyhedron(sides);
30834
31052
  for (let i = 0; i < clampedCount; i++) {
30835
- const el = numeralRefs.current[i];
30836
- if (el) el.textContent = formatDieValue(vals[i], sides);
31053
+ const texts = faceTextRefs.current[i];
31054
+ if (!texts) continue;
31055
+ const dealt = dealFaceValues(
31056
+ geo,
31057
+ sides,
31058
+ vals[i]
31059
+ );
31060
+ for (let fi = 0; fi < dealt.length; fi++) {
31061
+ const el = texts[fi];
31062
+ if (el) el.textContent = formatDieValue(dealt[fi], sides);
31063
+ }
30837
31064
  }
30838
31065
  }
30839
31066
  setResults(vals);
@@ -30981,99 +31208,97 @@ function DiceRoller({
30981
31208
  },
30982
31209
  val
30983
31210
  )) : (() => {
30984
- const shape = POLY_SHAPES[sides];
31211
+ const geo = buildPolyhedron(sides);
31212
+ const R = effectiveSize / 2;
31213
+ const S = Math.ceil(geo.faceRadius * R * 2) + 6;
31214
+ const fontSize = geo.faceInradius * R * 1.15;
30985
31215
  const shown = results?.[d] ?? sides;
30986
- const depth = effectiveSize * 0.18;
30987
- const edgeLayers = 16;
30988
- const cardFaceStyle = {
30989
- position: "absolute",
30990
- inset: 0,
30991
- display: "block",
30992
- overflow: "visible",
30993
- backfaceVisibility: "hidden"
30994
- };
30995
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(import_jsx_runtime113.Fragment, { children: [
30996
- Array.from({ length: edgeLayers }, (_2, li) => {
30997
- const z = -depth / 2 + depth * (li + 0.5) / edgeLayers;
30998
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
30999
- "svg",
31000
- {
31001
- viewBox: "0 0 100 100",
31002
- width: "100%",
31003
- height: "100%",
31004
- style: {
31005
- position: "absolute",
31006
- inset: 0,
31007
- display: "block",
31008
- overflow: "visible",
31009
- transform: `translateZ(${z}px)`
31010
- },
31011
- "aria-hidden": "true",
31012
- children: [
31013
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31014
- "polygon",
31015
- {
31016
- points: shape.points,
31017
- fill: colors.face
31018
- }
31019
- ),
31020
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31021
- "polygon",
31022
- {
31023
- points: shape.points,
31024
- fill: "#000",
31025
- opacity: 0.22
31026
- }
31027
- )
31028
- ]
31029
- },
31030
- li
31031
- );
31032
- }),
31033
- /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
31216
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_jsx_runtime113.Fragment, { children: geo.faces.map((f, fi) => {
31217
+ const m = `matrix3d(${f.u[0]},${f.u[1]},${f.u[2]},0,${f.v[0]},${f.v[1]},${f.v[2]},0,${f.normal[0]},${f.normal[1]},${f.normal[2]},0,${f.centroid[0] * R},${f.centroid[1] * R},${f.centroid[2] * R},1)`;
31218
+ const gid = `${sheenGradientId}-${d}-${fi}`;
31219
+ const pts = f.pts.map(
31220
+ ([x, y]) => `${(x * R + S / 2).toFixed(2)},${(y * R + S / 2).toFixed(2)}`
31221
+ ).join(" ");
31222
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
31034
31223
  "svg",
31035
31224
  {
31036
- viewBox: "0 0 100 100",
31037
- width: "100%",
31038
- height: "100%",
31225
+ width: S,
31226
+ height: S,
31227
+ viewBox: `0 0 ${S} ${S}`,
31039
31228
  style: {
31040
- ...cardFaceStyle,
31041
- transform: `translateZ(${depth / 2}px)`
31229
+ position: "absolute",
31230
+ left: "50%",
31231
+ top: "50%",
31232
+ marginLeft: -S / 2,
31233
+ marginTop: -S / 2,
31234
+ overflow: "visible",
31235
+ transform: m,
31236
+ // Convex solid: a face is either front-
31237
+ // facing or hidden behind nearer faces,
31238
+ // so hiding backfaces is both correct
31239
+ // and the mirrored-numeral guard.
31240
+ backfaceVisibility: "hidden"
31042
31241
  },
31043
31242
  "aria-hidden": "true",
31044
31243
  children: [
31045
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31046
- "polygon",
31244
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
31245
+ "radialGradient",
31047
31246
  {
31048
- points: shape.points,
31049
- fill: colors.face,
31050
- stroke: colors.faceBorder,
31051
- strokeWidth: 2.5,
31052
- strokeLinejoin: "round",
31053
- style: { transition: "fill 0.3s, stroke 0.3s" }
31247
+ id: gid,
31248
+ cx: "32%",
31249
+ cy: "26%",
31250
+ r: "80%",
31251
+ children: [
31252
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31253
+ "stop",
31254
+ {
31255
+ offset: "0%",
31256
+ stopColor: "#fff",
31257
+ stopOpacity: "0.38"
31258
+ }
31259
+ ),
31260
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31261
+ "stop",
31262
+ {
31263
+ offset: "55%",
31264
+ stopColor: "#fff",
31265
+ stopOpacity: "0.08"
31266
+ }
31267
+ ),
31268
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31269
+ "stop",
31270
+ {
31271
+ offset: "100%",
31272
+ stopColor: "#fff",
31273
+ stopOpacity: "0"
31274
+ }
31275
+ )
31276
+ ]
31054
31277
  }
31055
- ),
31278
+ ) }),
31056
31279
  /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31057
31280
  "polygon",
31058
31281
  {
31059
- points: shape.points,
31060
- fill: "none",
31282
+ points: pts,
31283
+ fill: colors.face,
31061
31284
  stroke: colors.faceBorder,
31062
31285
  strokeWidth: 1.5,
31063
31286
  strokeLinejoin: "round",
31064
- opacity: 0.55,
31065
- transform: "translate(50 50) scale(0.76) translate(-50 -50)"
31287
+ style: {
31288
+ transition: "fill 0.3s, stroke 0.3s"
31289
+ }
31066
31290
  }
31067
31291
  ),
31292
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("polygon", { points: pts, fill: `url(#${gid})` }),
31068
31293
  /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31069
31294
  "text",
31070
31295
  {
31071
- ref: getNumeralSetter(d),
31072
- x: 50,
31073
- y: shape.textY,
31296
+ ref: getFaceTextSetter(d, fi),
31297
+ x: S / 2,
31298
+ y: S / 2,
31074
31299
  textAnchor: "middle",
31075
31300
  dominantBaseline: "central",
31076
- fontSize: 100 * shape.fontScale,
31301
+ fontSize,
31077
31302
  fontWeight: 800,
31078
31303
  fill: colors.pip,
31079
31304
  style: {
@@ -31081,59 +31306,17 @@ function DiceRoller({
31081
31306
  transition: "fill 0.3s",
31082
31307
  userSelect: "none"
31083
31308
  },
31084
- children: formatDieValue(shown, sides)
31309
+ children: formatDieValue(
31310
+ fi === 0 ? shown : f.value,
31311
+ sides
31312
+ )
31085
31313
  }
31086
31314
  )
31087
31315
  ]
31088
- }
31089
- ),
31090
- /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
31091
- "svg",
31092
- {
31093
- viewBox: "0 0 100 100",
31094
- width: "100%",
31095
- height: "100%",
31096
- style: {
31097
- ...cardFaceStyle,
31098
- transform: `rotateY(180deg) translateZ(${depth / 2}px)`
31099
- },
31100
- "aria-hidden": "true",
31101
- children: [
31102
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31103
- "polygon",
31104
- {
31105
- points: shape.points,
31106
- fill: colors.face,
31107
- stroke: colors.faceBorder,
31108
- strokeWidth: 2.5,
31109
- strokeLinejoin: "round",
31110
- style: { transition: "fill 0.3s, stroke 0.3s" }
31111
- }
31112
- ),
31113
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31114
- "polygon",
31115
- {
31116
- points: shape.points,
31117
- fill: "none",
31118
- stroke: colors.faceBorder,
31119
- strokeWidth: 1.5,
31120
- strokeLinejoin: "round",
31121
- opacity: 0.55,
31122
- transform: "translate(50 50) scale(0.76) translate(-50 -50)"
31123
- }
31124
- ),
31125
- /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
31126
- "polygon",
31127
- {
31128
- points: shape.points,
31129
- fill: "#000",
31130
- opacity: 0.14
31131
- }
31132
- )
31133
- ]
31134
- }
31135
- )
31136
- ] });
31316
+ },
31317
+ fi
31318
+ );
31319
+ }) });
31137
31320
  })()
31138
31321
  }
31139
31322
  )