@cardenelabs/cdl 0.74.0 → 0.75.0

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/react.js CHANGED
@@ -17350,6 +17350,15 @@ var CHAIN_BLOCK_H = 66;
17350
17350
  var CHAIN_LINK_W = 12;
17351
17351
  var CHAIN_SHADOW = 3;
17352
17352
  var CHAIN_BLOCK_SW = 2.5;
17353
+ var CHAIN_HEAD_H = 16;
17354
+ var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
17355
+ var CHAIN_ROW_GAP = 14;
17356
+ var CHAIN_NO_SIZE = 10;
17357
+ var CONTRACT_CALL_SIZE = 11;
17358
+ var NFT_ID_SIZE = 15;
17359
+ var CHAIN_HASH_SIZE = 7;
17360
+ var BTC_NO_SIZE = 9;
17361
+ var ETH_NO_SIZE = 9;
17353
17362
  var NODE_HEX_R = 44;
17354
17363
  var NODE_PEER_R = 12;
17355
17364
  var NODE_PEER_GAP = 22;
@@ -17463,24 +17472,34 @@ function ShapeSmartContractNode({ node, active, lang }) {
17463
17472
  gearPts.push(`${gearCx + Math.cos(a3) * gearTipR},${gearCy + Math.sin(a3) * gearTipR}`);
17464
17473
  gearPts.push(`${gearCx + Math.cos(a4) * gearBodyR},${gearCy + Math.sin(a4) * gearBodyR}`);
17465
17474
  }
17466
- const art = /* @__PURE__ */ jsxs("g", { children: [
17467
- /* @__PURE__ */ jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
17468
- /* @__PURE__ */ jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
17469
- [y + 40, y + 58, y + 76, y + 94].map((ly, i) => /* @__PURE__ */ jsx("rect", { x: x + 16, y: ly - 3, width: docW - 32 - i * 22, height: 5, rx: 1, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.7, stroke: "none" }, i)),
17470
- /* @__PURE__ */ jsx("text", { x: x + 16, y: y + docH - 46, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u5B57\u5F15("smartContract.call") }),
17471
- /* @__PURE__ */ jsx(
17472
- "polygon",
17473
- {
17474
- points: gearPts.join(" "),
17475
- fill: "var(--cdl-tone-accent, #2d6a8f)",
17476
- stroke: frame.stroke,
17477
- strokeWidth: 1.2,
17478
- strokeLinejoin: "round",
17479
- children: /* @__PURE__ */ jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
17480
- }
17481
- ),
17482
- /* @__PURE__ */ jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
17483
- ] });
17475
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17476
+ {
17477
+ text: \u5B57\u5F15("smartContract.call"),
17478
+ size: CONTRACT_CALL_SIZE,
17479
+ \u5E2F: { \u5E45: docW - 32, \u9AD8\u3055: 18 }
17480
+ }
17481
+ ];
17482
+ const art = (\u500D\u7387) => {
17483
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17484
+ return /* @__PURE__ */ jsxs("g", { children: [
17485
+ /* @__PURE__ */ jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
17486
+ /* @__PURE__ */ jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
17487
+ [y + 40, y + 58, y + 76, y + 94].map((ly, i) => /* @__PURE__ */ jsx("rect", { x: x + 16, y: ly - 3, width: docW - 32 - i * 22, height: 5, rx: 1, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.7, stroke: "none" }, i)),
17488
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: x + 16, y: y + docH - 46, fontSize: CONTRACT_CALL_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u5B57\u5F15("smartContract.call") }),
17489
+ /* @__PURE__ */ jsx(
17490
+ "polygon",
17491
+ {
17492
+ points: gearPts.join(" "),
17493
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
17494
+ stroke: frame.stroke,
17495
+ strokeWidth: 1.2,
17496
+ strokeLinejoin: "round",
17497
+ children: /* @__PURE__ */ jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
17498
+ }
17499
+ ),
17500
+ /* @__PURE__ */ jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
17501
+ ] });
17502
+ };
17484
17503
  return /* @__PURE__ */ jsxs("g", { children: [
17485
17504
  fitArt(r, smartContractExtent(frame.strokeWidth), art),
17486
17505
  bottomLabel2(node, r.cx, r.label)
@@ -17562,38 +17581,45 @@ function ShapeBlockchainNode({ node, active }) {
17562
17581
  const linkW = CHAIN_LINK_W;
17563
17582
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
17564
17583
  const startX = cx - totalW / 2;
17565
- const art = /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17566
- const bx = startX + i * (blockW + linkW);
17567
- const isCurrent = i === blockCount - 1;
17568
- return /* @__PURE__ */ jsxs("g", { children: [
17569
- i > 0 && /* @__PURE__ */ jsxs("g", { children: [
17570
- /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
17571
- /* @__PURE__ */ jsx("circle", { cx: bx - linkW / 2, cy, r: 2.5, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.3;1;0.3", dur: `${1 + i * 0.2}s`, repeatCount: "indefinite" }) })
17572
- ] }),
17573
- /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
17574
- /* @__PURE__ */ jsx(
17575
- "rect",
17576
- {
17577
- "data-cdl-role": i === 0 ? "node-body" : void 0,
17578
- x: bx,
17579
- y: cy - blockH / 2,
17580
- width: blockW,
17581
- height: blockH,
17582
- rx: 4,
17583
- fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
17584
- stroke: frame.stroke,
17585
- strokeWidth: isCurrent ? 2.5 : 1.5
17586
- }
17587
- ),
17588
- /* @__PURE__ */ jsx("rect", { x: bx, y: cy - blockH / 2, width: blockW, height: 16, rx: 4, fill: isCurrent ? "#1a4a68" : "var(--cdl-divider, #d4d4d8)", fillOpacity: isCurrent ? 1 : 0.4, stroke: "none" }),
17589
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy - blockH / 2 + 12, fontSize: 10, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17590
- "#",
17591
- 420 + i
17592
- ] }),
17593
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy + 8, fontSize: 14, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: "#" }),
17594
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy + 22, fontSize: 7, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", opacity: 0.9, children: "0x\u2026" })
17595
- ] }, i);
17596
- }) });
17584
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17585
+ { text: "#420", size: CHAIN_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_HEAD_H } },
17586
+ { text: "0x\u2026", size: CHAIN_HASH_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_ROW_GAP } }
17587
+ ];
17588
+ const art = (\u500D\u7387) => {
17589
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17590
+ return /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17591
+ const bx = startX + i * (blockW + linkW);
17592
+ const isCurrent = i === blockCount - 1;
17593
+ return /* @__PURE__ */ jsxs("g", { children: [
17594
+ i > 0 && /* @__PURE__ */ jsxs("g", { children: [
17595
+ /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
17596
+ /* @__PURE__ */ jsx("circle", { cx: bx - linkW / 2, cy, r: 2.5, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.3;1;0.3", dur: `${1 + i * 0.2}s`, repeatCount: "indefinite" }) })
17597
+ ] }),
17598
+ /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
17599
+ /* @__PURE__ */ jsx(
17600
+ "rect",
17601
+ {
17602
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
17603
+ x: bx,
17604
+ y: cy - blockH / 2,
17605
+ width: blockW,
17606
+ height: blockH,
17607
+ rx: 4,
17608
+ fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
17609
+ stroke: frame.stroke,
17610
+ strokeWidth: isCurrent ? 2.5 : 1.5
17611
+ }
17612
+ ),
17613
+ /* @__PURE__ */ jsx("rect", { x: bx, y: cy - blockH / 2, width: blockW, height: CHAIN_HEAD_H, rx: 4, fill: isCurrent ? "#1a4a68" : "var(--cdl-divider, #d4d4d8)", fillOpacity: isCurrent ? 1 : 0.4, stroke: "none" }),
17614
+ /* @__PURE__ */ jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy - blockH / 2 + 12, fontSize: CHAIN_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17615
+ "#",
17616
+ 420 + i
17617
+ ] }),
17618
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy + 8, fontSize: 14, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: "#" }),
17619
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 22, fontSize: CHAIN_HASH_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", opacity: 0.9, children: "0x\u2026" })
17620
+ ] }, i);
17621
+ }) });
17622
+ };
17597
17623
  return /* @__PURE__ */ jsxs("g", { children: [
17598
17624
  fitArt(r, chainExtent(), art),
17599
17625
  bottomLabel2(node, r.cx, r.label)
@@ -17611,33 +17637,39 @@ function ShapeBitcoinChainNode({ node, active }) {
17611
17637
  const linkW = CHAIN_LINK_W;
17612
17638
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
17613
17639
  const startX = cx - totalW / 2;
17614
- const art = /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17615
- const bx = startX + i * (blockW + linkW);
17616
- const isCurrent = i === blockCount - 1;
17617
- return /* @__PURE__ */ jsxs("g", { children: [
17618
- i > 0 && /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
17619
- /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
17620
- /* @__PURE__ */ jsx(
17621
- "rect",
17622
- {
17623
- "data-cdl-role": i === 0 ? "node-body" : void 0,
17624
- x: bx,
17625
- y: cy - blockH / 2,
17626
- width: blockW,
17627
- height: blockH,
17628
- rx: 4,
17629
- fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
17630
- stroke: btcOrange,
17631
- strokeWidth: isCurrent ? 2.5 : 1.5
17632
- }
17633
- ),
17634
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy - 4, fontSize: 30, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : btcOrange, fontFamily: "Georgia, serif", children: "\u20BF" }),
17635
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy + 16, fontSize: 9, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17636
- "#",
17637
- 820 + i
17638
- ] })
17639
- ] }, i);
17640
- }) });
17640
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17641
+ { text: "#820", size: BTC_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
17642
+ ];
17643
+ const art = (\u500D\u7387) => {
17644
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17645
+ return /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17646
+ const bx = startX + i * (blockW + linkW);
17647
+ const isCurrent = i === blockCount - 1;
17648
+ return /* @__PURE__ */ jsxs("g", { children: [
17649
+ i > 0 && /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
17650
+ /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
17651
+ /* @__PURE__ */ jsx(
17652
+ "rect",
17653
+ {
17654
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
17655
+ x: bx,
17656
+ y: cy - blockH / 2,
17657
+ width: blockW,
17658
+ height: blockH,
17659
+ rx: 4,
17660
+ fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
17661
+ stroke: btcOrange,
17662
+ strokeWidth: isCurrent ? 2.5 : 1.5
17663
+ }
17664
+ ),
17665
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy - 4, fontSize: 30, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : btcOrange, fontFamily: "Georgia, serif", children: "\u20BF" }),
17666
+ /* @__PURE__ */ jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 16, fontSize: BTC_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17667
+ "#",
17668
+ 820 + i
17669
+ ] })
17670
+ ] }, i);
17671
+ }) });
17672
+ };
17641
17673
  return /* @__PURE__ */ jsxs("g", { children: [
17642
17674
  fitArt(r, chainExtent(), art),
17643
17675
  bottomLabel2(node, r.cx, r.label)
@@ -17677,7 +17709,7 @@ function ShapeEthereumChainNode({ node, active }) {
17677
17709
  }
17678
17710
  ),
17679
17711
  /* @__PURE__ */ jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
17680
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy + 22, fontSize: 9, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17712
+ /* @__PURE__ */ jsxs("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy + 22, fontSize: ETH_NO_SIZE, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
17681
17713
  "#",
17682
17714
  21400 + i
17683
17715
  ] })
@@ -17856,39 +17888,46 @@ function ShapeNftNode({ node, active }) {
17856
17888
  const artH = cardH * 0.72;
17857
17889
  const artCx = x + cardW / 2;
17858
17890
  const artCy = y + artH / 2;
17859
- const art = /* @__PURE__ */ jsxs("g", { children: [
17860
- /* @__PURE__ */ jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
17861
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
17862
- /* @__PURE__ */ jsx(
17863
- "path",
17864
- {
17865
- d: `M ${x} ${y + artH} L ${x} ${y + 14} Q ${x} ${y}, ${x + 14} ${y} L ${x + cardW - 14} ${y} Q ${x + cardW} ${y}, ${x + cardW} ${y + 14} L ${x + cardW} ${y + artH} Z`,
17866
- fill: "var(--cdl-tone-accent, #2d6a8f)",
17867
- fillOpacity: 0.15,
17868
- stroke: "none"
17869
- }
17870
- ),
17871
- /* @__PURE__ */ jsx(
17872
- "text",
17873
- {
17874
- x: artCx,
17875
- y: artCy + 24,
17876
- fontSize: 68,
17877
- fontWeight: 900,
17878
- letterSpacing: 4,
17879
- textAnchor: "middle",
17880
- fill: "var(--cdl-tone-accent, #2d6a8f)",
17881
- fontFamily: "Georgia, serif",
17882
- children: "NFT"
17883
- }
17884
- ),
17885
- /* @__PURE__ */ jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
17886
- /* @__PURE__ */ jsx("text", { x: x + 16, y: y + artH + 30, fontSize: 15, fontWeight: 700, fill: "var(--cdl-text, #1a1f2a)", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "#1024" }),
17887
- /* @__PURE__ */ jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
17888
- /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
17889
- /* @__PURE__ */ jsx("path", { d: "M -4 0 L -1 3 L 4 -3", fill: "none", stroke: "#ffffff", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" })
17890
- ] })
17891
- ] });
17891
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17892
+ { text: "#1024", size: NFT_ID_SIZE, \u5E2F: { \u5E45: cardW - 16 - 34, \u9AD8\u3055: cardH - artH } }
17893
+ ];
17894
+ const art = (\u500D\u7387) => {
17895
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17896
+ return /* @__PURE__ */ jsxs("g", { children: [
17897
+ /* @__PURE__ */ jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
17898
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
17899
+ /* @__PURE__ */ jsx(
17900
+ "path",
17901
+ {
17902
+ d: `M ${x} ${y + artH} L ${x} ${y + 14} Q ${x} ${y}, ${x + 14} ${y} L ${x + cardW - 14} ${y} Q ${x + cardW} ${y}, ${x + cardW} ${y + 14} L ${x + cardW} ${y + artH} Z`,
17903
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
17904
+ fillOpacity: 0.15,
17905
+ stroke: "none"
17906
+ }
17907
+ ),
17908
+ /* @__PURE__ */ jsx(
17909
+ "text",
17910
+ {
17911
+ "data-cdl-counter-scaled": "0",
17912
+ x: artCx,
17913
+ y: artCy + 24,
17914
+ fontSize: 68,
17915
+ fontWeight: 900,
17916
+ letterSpacing: 4,
17917
+ textAnchor: "middle",
17918
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
17919
+ fontFamily: "Georgia, serif",
17920
+ children: "NFT"
17921
+ }
17922
+ ),
17923
+ /* @__PURE__ */ jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
17924
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: x + 16, y: y + artH + 30, fontSize: NFT_ID_SIZE * \u500D, fontWeight: 700, fill: "var(--cdl-text, #1a1f2a)", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "#1024" }),
17925
+ /* @__PURE__ */ jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
17926
+ /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
17927
+ /* @__PURE__ */ jsx("path", { d: "M -4 0 L -1 3 L 4 -3", fill: "none", stroke: "#ffffff", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" })
17928
+ ] })
17929
+ ] });
17930
+ };
17892
17931
  return /* @__PURE__ */ jsxs("g", { children: [
17893
17932
  fitArt(r, nftExtent(frame.strokeWidth), art),
17894
17933
  bottomLabel2(node, r.cx, r.label)
@@ -18017,7 +18056,7 @@ function ShapeBankNode({ node, active }) {
18017
18056
  }),
18018
18057
  /* @__PURE__ */ jsx("path", { d: `M ${x - BANK_BODY_OUT} ${y + pedimentH} L ${r.cx} ${y - BANK_PEDIMENT_RISE} L ${x + bldW + BANK_BODY_OUT} ${y + pedimentH} Z`, fill: "var(--cdl-node-fill, #ffffff)", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
18019
18058
  /* @__PURE__ */ jsx("circle", { cx: r.cx, cy: y + pedimentH / 2 + 4, r: 14, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: frame.stroke, strokeWidth: 1.5 }),
18020
- /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH / 2 + 10, fontSize: 18, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "Georgia, serif", children: "$" }),
18059
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: r.cx, y: y + pedimentH / 2 + 10, fontSize: 18, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "Georgia, serif", children: "$" }),
18021
18060
  /* @__PURE__ */ jsx("rect", { x: x - 4, y: y + pedimentH, width: bldW + 8, height: architraveH, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.4, stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
18022
18061
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
18023
18062
  const colCx = x + 12 + colGap + i * (colW + colGap) + colW / 2;
@@ -18083,7 +18122,7 @@ function ShapeTrustBankNode({ node, active, lang }) {
18083
18122
  return /* @__PURE__ */ jsx("rect", { x: r.cx - w / 2, y: y + bldH + i * BANK_STEP_DY, width: w, height: BANK_STEP_H, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.5 + i * 0.15, stroke: frame.stroke, strokeWidth: BANK_STEP_SW }, i);
18084
18123
  }),
18085
18124
  /* @__PURE__ */ jsx("path", { d: `M ${x - 6} ${y + pedimentH} L ${r.cx} ${y + 2} L ${x + bldW + 6} ${y + pedimentH} Z`, fill: "var(--cdl-node-fill, #ffffff)", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
18086
- /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: \u5B57\u5F15("trustBank.sign") }),
18125
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: \u5B57\u5F15("trustBank.sign") }),
18087
18126
  /* @__PURE__ */ jsx("rect", { x: x - 4, y: y + pedimentH, width: bldW + 8, height: architraveH, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.4, stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
18088
18127
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
18089
18128
  const colCx = x + 15 + colGap + i * (colW + colGap) + colW / 2;
@@ -18157,6 +18196,9 @@ function ShapeCreditCardNode({ node, active }) {
18157
18196
  }
18158
18197
  var BROKERAGE_TICK_H = 12;
18159
18198
  var BROKERAGE_LOGO_H = 26;
18199
+ var BROKERAGE_TICK_INNER_H = 8;
18200
+ var BROKERAGE_TICKER_SIZE = 5.5;
18201
+ var BROKERAGE_SIGN_SIZE = 12;
18160
18202
  var BROKERAGE_GRID_TOP = 62;
18161
18203
  var BROKERAGE_CELL_W = 14;
18162
18204
  var BROKERAGE_CELL_H = 18;
@@ -18205,35 +18247,46 @@ function ShapeBrokerageNode({ node, active, lang }) {
18205
18247
  );
18206
18248
  const gridStartX = x + (w - (cols * cellW + (cols - 1) * gapX)) / 2;
18207
18249
  const goldCells = /* @__PURE__ */ new Set([`0,1`, `0,4`, `1,2`, `2,3`, `3,5`]);
18208
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
18209
- /* @__PURE__ */ jsx("ellipse", { cx, cy: y + h + BROKERAGE_SHADOW_DY, rx: w * BROKERAGE_SHADOW_RX_RATIO, ry: BROKERAGE_SHADOW_RY, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18210
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
18211
- /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
18212
- /* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
18213
- /* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
18214
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 9, fontSize: 5.5, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
18215
- /* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
18216
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 30, fontSize: 12, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
18217
- Array.from({ length: rows }).map(
18218
- (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
18219
- const wx = gridStartX + ci * (cellW + gapX);
18220
- const wy = gridStartY + ri * (cellH + gapY);
18221
- const isGold = goldCells.has(`${ri},${ci}`);
18222
- return /* @__PURE__ */ jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
18223
- })
18224
- ),
18225
- /* @__PURE__ */ jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
18226
- /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
18227
- /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
18228
- /* @__PURE__ */ jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
18229
- /* @__PURE__ */ jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
18230
- /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_FLOOR_OUT, y: y + h + BROKERAGE_FLOOR_DY, width: w + BROKERAGE_FLOOR_OUT * 2, height: BROKERAGE_FLOOR_H, fill: "#5a6270", stroke: "none" })
18231
- ] });
18250
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
18251
+ {
18252
+ text: \u5B57\u5F15("brokerage.ticker"),
18253
+ size: BROKERAGE_TICKER_SIZE,
18254
+ \u5E2F: { \u5E45: w - 4, \u9AD8\u3055: BROKERAGE_TICK_INNER_H }
18255
+ }
18256
+ ];
18257
+ const \u7D75 = (\u500D\u7387) => {
18258
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
18259
+ return /* @__PURE__ */ jsxs("g", { children: [
18260
+ /* @__PURE__ */ jsx("ellipse", { cx, cy: y + h + BROKERAGE_SHADOW_DY, rx: w * BROKERAGE_SHADOW_RX_RATIO, ry: BROKERAGE_SHADOW_RY, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18261
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
18262
+ /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
18263
+ /* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
18264
+ /* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
18265
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y + 9, fontSize: BROKERAGE_TICKER_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
18266
+ /* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
18267
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + 30, fontSize: BROKERAGE_SIGN_SIZE, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
18268
+ Array.from({ length: rows }).map(
18269
+ (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
18270
+ const wx = gridStartX + ci * (cellW + gapX);
18271
+ const wy = gridStartY + ri * (cellH + gapY);
18272
+ const isGold = goldCells.has(`${ri},${ci}`);
18273
+ return /* @__PURE__ */ jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
18274
+ })
18275
+ ),
18276
+ /* @__PURE__ */ jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
18277
+ /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
18278
+ /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
18279
+ /* @__PURE__ */ jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
18280
+ /* @__PURE__ */ jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
18281
+ /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_FLOOR_OUT, y: y + h + BROKERAGE_FLOOR_DY, width: w + BROKERAGE_FLOOR_OUT * 2, height: BROKERAGE_FLOOR_H, fill: "#5a6270", stroke: "none" })
18282
+ ] });
18283
+ };
18232
18284
  return /* @__PURE__ */ jsxs("g", { children: [
18233
18285
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
18234
18286
  bottomLabel3(node, r.cx, r.label)
18235
18287
  ] });
18236
18288
  }
18289
+ var EXCHANGE_SUB_SIZE = 8;
18237
18290
  function ShapeExchangeNode({ node, active, lang }) {
18238
18291
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
18239
18292
  const frame = commonFrame5(active);
@@ -18261,7 +18314,7 @@ function ShapeExchangeNode({ node, active, lang }) {
18261
18314
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
18262
18315
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
18263
18316
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
18264
- const \u5B57\u4E0B = 26 + 8 * 0.25;
18317
+ const \u5B57\u4E0B = 26 + EXCHANGE_SUB_SIZE * 0.25;
18265
18318
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
18266
18319
  const \u305A\u308C = cy - r.cy;
18267
18320
  const \u5E83\u304C\u308A = {
@@ -18270,21 +18323,27 @@ function ShapeExchangeNode({ node, active, lang }) {
18270
18323
  \u5DE6: \u5916,
18271
18324
  \u53F3: \u5916
18272
18325
  };
18273
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
18274
- nodes.map((n, i) => /* @__PURE__ */ jsx("line", { x1: cx, y1: cy, x2: n.cx, y2: n.cy, stroke: accentDarker, strokeWidth: 1.5, strokeDasharray: "3 2" }, `l${i}`)),
18275
- nodes.map((n, i) => {
18276
- const isGreen = i % 2 === 0;
18277
- return /* @__PURE__ */ jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
18278
- /* @__PURE__ */ jsx("animate", { attributeName: "cx", values: isGreen ? `${n.cx};${cx};${n.cx}` : `${cx};${n.cx};${cx}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` }),
18279
- /* @__PURE__ */ jsx("animate", { attributeName: "cy", values: isGreen ? `${n.cy};${cy};${n.cy}` : `${cy};${n.cy};${cy}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` })
18280
- ] }, `d${i}`);
18281
- }),
18282
- /* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
18283
- /* @__PURE__ */ jsx("text", { x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
18284
- /* @__PURE__ */ jsx("text", { "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
18285
- /* @__PURE__ */ jsx("text", { x: cx, y: cy + 26, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
18286
- nodes.map((n, i) => /* @__PURE__ */ jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
18287
- ] });
18326
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
18327
+ { text: \u5B57\u5F15("exchange.sub"), size: EXCHANGE_SUB_SIZE, \u5E2F: { \u5E45: \u5916 * 2, \u9AD8\u3055: 14 } }
18328
+ ];
18329
+ const \u7D75 = (\u500D\u7387) => {
18330
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
18331
+ return /* @__PURE__ */ jsxs("g", { children: [
18332
+ nodes.map((n, i) => /* @__PURE__ */ jsx("line", { x1: cx, y1: cy, x2: n.cx, y2: n.cy, stroke: accentDarker, strokeWidth: 1.5, strokeDasharray: "3 2" }, `l${i}`)),
18333
+ nodes.map((n, i) => {
18334
+ const isGreen = i % 2 === 0;
18335
+ return /* @__PURE__ */ jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
18336
+ /* @__PURE__ */ jsx("animate", { attributeName: "cx", values: isGreen ? `${n.cx};${cx};${n.cx}` : `${cx};${n.cx};${cx}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` }),
18337
+ /* @__PURE__ */ jsx("animate", { attributeName: "cy", values: isGreen ? `${n.cy};${cy};${n.cy}` : `${cy};${n.cy};${cy}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` })
18338
+ ] }, `d${i}`);
18339
+ }),
18340
+ /* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
18341
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
18342
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
18343
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: cy + 26, fontSize: EXCHANGE_SUB_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
18344
+ nodes.map((n, i) => /* @__PURE__ */ jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
18345
+ ] });
18346
+ };
18288
18347
  return /* @__PURE__ */ jsxs("g", { children: [
18289
18348
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
18290
18349
  bottomLabel3(node, r.cx, r.label)
@@ -18339,13 +18398,13 @@ function ShapeAtmNode({ node, active, lang }) {
18339
18398
  const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
18340
18399
  /* @__PURE__ */ jsx("ellipse", { cx, cy: y + totalH + ATM_SHADOW_DY, rx: totalW * ATM_SHADOW_RX_RATIO, ry: ATM_SHADOW_RY, fill: frame.stroke, opacity: 0.15, stroke: "none" }),
18341
18400
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: signY, width: totalW, height: signH, fill: accentDarker, stroke: "#000", strokeWidth: ATM_SIGN_SW }),
18342
- /* @__PURE__ */ jsx("text", { x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
18401
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
18343
18402
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x: atmX, y: atmY, width: atmW, height: atmH, rx: 6, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
18344
18403
  /* @__PURE__ */ jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
18345
18404
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 10, width: ATM_PANEL_W - 16, height: 52, rx: 3, fill: "#0f1830", stroke: "#000", strokeWidth: 1.5 }),
18346
- /* @__PURE__ */ jsx("text", { x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
18347
- /* @__PURE__ */ jsx("text", { x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
18348
- /* @__PURE__ */ jsx("text", { x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
18405
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
18406
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
18407
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
18349
18408
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 68, width: ATM_PANEL_W - 16, height: 42, rx: 2, fill: "#8b949e", stroke: "#5a6270", strokeWidth: 1 }),
18350
18409
  (() => {
18351
18410
  const keys = [
@@ -18371,7 +18430,7 @@ function ShapeAtmNode({ node, active, lang }) {
18371
18430
  const ky = 74 + row * (keyH + 2);
18372
18431
  return /* @__PURE__ */ jsxs("g", { children: [
18373
18432
  /* @__PURE__ */ jsx("rect", { x: kx, y: ky, width: keyW, height: keyH, fill: k[1], stroke: "#0f1830", strokeWidth: 0.8 }),
18374
- /* @__PURE__ */ jsx("text", { x: kx + keyW / 2, y: ky + 7, fontSize: (
18433
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: kx + keyW / 2, y: ky + 7, fontSize: (
18375
18434
  /* 決める鍵 (末尾) は 2 字あるので小さく描く。 字は言語で変わるため位置で見分ける */
18376
18435
  i === keys.length - 1 ? 6 : 7
18377
18436
  ), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", children: k[0] })
@@ -18380,7 +18439,7 @@ function ShapeAtmNode({ node, active, lang }) {
18380
18439
  })(),
18381
18440
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 116, width: ATM_PANEL_W - 24, height: 8, rx: 1.5, fill: "#0f1830", stroke: accentDarker, strokeWidth: 1 }),
18382
18441
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
18383
- /* @__PURE__ */ jsx("text", { x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
18442
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
18384
18443
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
18385
18444
  ] }),
18386
18445
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -18553,7 +18612,7 @@ function ShapeWarehouseNode({ node, active, lang }) {
18553
18612
  /* @__PURE__ */ jsx("path", { d: `M ${x - WAREHOUSE_ROOF_OUT} ${y + roofH} L ${x + 12} ${y + 2} L ${x + bw - 12} ${y + 2} L ${x + bw + WAREHOUSE_ROOF_OUT} ${y + roofH} Z`, fill: "#5a6270", stroke: accentDarker, strokeWidth: WAREHOUSE_ROOF_SW, strokeLinejoin: "round" }),
18554
18613
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y: y + roofH, width: bw, height: bh - roofH - 12, fill: "#a89d8f", stroke: "#5a6270", strokeWidth: frame.strokeWidth }),
18555
18614
  /* @__PURE__ */ jsx("rect", { x, y: y + roofH, width: bw, height: signH, fill: "#c15a4a", stroke: "#8b3f2f", strokeWidth: 1.5 }),
18556
- /* @__PURE__ */ jsx("text", { x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("warehouse.sign") }),
18615
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("warehouse.sign") }),
18557
18616
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: shutterH, fill: "#8b949e", stroke: accentDarker, strokeWidth: 2 }),
18558
18617
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: 5, fill: "#5a6270", stroke: "none" }),
18559
18618
  Array.from({ length: 10 }, (_, i) => i).map((i) => /* @__PURE__ */ jsx(
@@ -18708,6 +18767,10 @@ var API_ROW_PITCH_MIN = 30;
18708
18767
  var API_ROW_BOTTOM_PAD = 12;
18709
18768
  var API_ROWS = 3;
18710
18769
  var API_H_MIN = API_ROW_TOP + (API_ROWS - 1) * API_ROW_PITCH_MIN + API_ROW_H + API_ROW_BOTTOM_PAD;
18770
+ var API_PATH_SIZE = 12;
18771
+ var API_SIGN_SIZE = 14;
18772
+ var API_METHOD_BOX_W = 54;
18773
+ var API_METHOD_TEXT_W = 48;
18711
18774
  var API_W_MIN = 200;
18712
18775
  var API_W_MAX = 300;
18713
18776
  function ShapeApiGatewayNode({ node, active, lang }) {
@@ -18722,28 +18785,37 @@ function ShapeApiGatewayNode({ node, active, lang }) {
18722
18785
  const x = cx - bw / 2;
18723
18786
  const y = r.cy - \u7E26 / 2 + \u4F59\u767D;
18724
18787
  const \u5E83\u304C\u308A = { \u4E0A: \u7E26 / 2, \u4E0B: \u7E26 / 2, \u5DE6: bw / 2 + \u4F59\u767D, \u53F3: bw / 2 + \u4F59\u767D };
18725
- const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * 48 / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
18788
+ const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * API_METHOD_TEXT_W / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
18726
18789
  const rowPitch = Math.max(
18727
18790
  API_ROW_PITCH_MIN,
18728
18791
  (bh - API_ROW_TOP - API_ROW_H - API_ROW_BOTTOM_PAD) / (API_ROWS - 1)
18729
18792
  );
18730
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
18731
- /* @__PURE__ */ jsx("rect", { x: x + DROP_SHADOW_D, y: y + DROP_SHADOW_D, width: bw, height: bh, rx: 10, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18732
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
18733
- /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
18734
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 24, fontSize: 14, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("apiGateway.sign") }),
18735
- [
18736
- { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
18737
- { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
18738
- { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
18739
- ].map((e, i) => /* @__PURE__ */ jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
18740
- /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
18741
- /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: 54, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
18742
- /* @__PURE__ */ jsx("text", { x: 27, y: 16, fontSize: \u7A2E\u985E\u306E\u5B57(e.method), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
18743
- /* @__PURE__ */ jsx("text", { x: 64, y: 16, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
18744
- /* @__PURE__ */ jsx("circle", { cx: bw - 44, cy: 12, r: 4, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.2 + i * 0.3}s`, repeatCount: "indefinite" }) })
18745
- ] }, i))
18746
- ] });
18793
+ const \u884C\u3089 = [
18794
+ { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
18795
+ { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
18796
+ { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
18797
+ ];
18798
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = \u884C\u3089.map((e) => ({
18799
+ text: e.path,
18800
+ size: API_PATH_SIZE,
18801
+ \u5E2F: { \u5E45: bw - 32 - 64 - 16, \u9AD8\u3055: API_ROW_H }
18802
+ }));
18803
+ const \u7D75 = (\u500D\u7387) => {
18804
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
18805
+ return /* @__PURE__ */ jsxs("g", { children: [
18806
+ /* @__PURE__ */ jsx("rect", { x: x + DROP_SHADOW_D, y: y + DROP_SHADOW_D, width: bw, height: bh, rx: 10, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18807
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
18808
+ /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
18809
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + 24, fontSize: API_SIGN_SIZE, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("apiGateway.sign") }),
18810
+ \u884C\u3089.map((e, i) => /* @__PURE__ */ jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
18811
+ /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
18812
+ /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: API_METHOD_BOX_W, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
18813
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 27, y: 16, fontSize: \u7A2E\u985E\u306E\u5B57(e.method), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
18814
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: 64, y: 16, fontSize: API_PATH_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
18815
+ /* @__PURE__ */ jsx("circle", { cx: bw - 44, cy: 12, r: 4, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.2 + i * 0.3}s`, repeatCount: "indefinite" }) })
18816
+ ] }, i))
18817
+ ] });
18818
+ };
18747
18819
  return /* @__PURE__ */ jsxs("g", { children: [
18748
18820
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
18749
18821
  bottomLabel4(node, r.cx, r.label)
@@ -18963,11 +19035,11 @@ function ShapeNotaryNode({ node, active }) {
18963
19035
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 14, x2: chestX + 14, y2: chestY + 14, stroke: "#8b949e", strokeWidth: 1 }),
18964
19036
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 22, x2: chestX + 8, y2: chestY + 22, stroke: "#8b949e", strokeWidth: 1 }),
18965
19037
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 34, x2: chestX + 2, y2: chestY + 34, stroke: "#0f3450", strokeWidth: 1.5 }),
18966
- /* @__PURE__ */ jsx("text", { x: chestX + 6, y: chestY + 37, fontSize: 8, fill: "#0f3450", fontFamily: "cursive", fontStyle: "italic", children: "\u2713" }),
19038
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: chestX + 6, y: chestY + 37, fontSize: 8, fill: "#0f3450", fontFamily: "cursive", fontStyle: "italic", children: "\u2713" }),
18967
19039
  haloBadge(bx, by, `nt-halo-${node.id}`, "#c15a4a", /* @__PURE__ */ jsxs("g", { children: [
18968
19040
  /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 12, fill: "#c15a4a", stroke: "none" }),
18969
19041
  /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 8, fill: "none", stroke: "#ffffff", strokeWidth: 1.2 }),
18970
- /* @__PURE__ */ jsx("text", { x: 0, y: 4, fontFamily: "Georgia, serif", fontSize: 10, fontWeight: 700, fill: "#ffffff", textAnchor: "middle", children: "\u5370" })
19042
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 4, fontFamily: "Georgia, serif", fontSize: 10, fontWeight: 700, fill: "#ffffff", textAnchor: "middle", children: "\u5370" })
18971
19043
  ] }))
18972
19044
  ] })),
18973
19045
  bottomLabel5(node, r.cx, r.label)
@@ -19026,7 +19098,7 @@ function ShapeCustomerServiceNode({ node, active }) {
19026
19098
  p.render,
19027
19099
  collarV(cx, cy, p.strokeColor),
19028
19100
  /* @__PURE__ */ jsx("rect", { x: chestX - 22, y: chestY + 5, width: 44, height: 22, rx: 11, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 2 }),
19029
- /* @__PURE__ */ jsx("text", { x: chestX, y: chestY + 20, fontSize: 12, fontWeight: 900, fill: "#5a3a10", textAnchor: "middle", letterSpacing: 2, children: "24H" }),
19101
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: chestX, y: chestY + 20, fontSize: 12, fontWeight: 900, fill: "#5a3a10", textAnchor: "middle", letterSpacing: 2, children: "24H" }),
19030
19102
  haloBadge(bx, by, `cs-halo-${node.id}`, "#a67c00", /* @__PURE__ */ jsxs("g", { children: [
19031
19103
  /* @__PURE__ */ jsx("path", { d: "M -11 4 C -11 -10, -6 -12, 0 -12 C 6 -12, 11 -10, 11 4", fill: "none", stroke: "#a67c00", strokeWidth: 2.5, strokeLinecap: "round" }),
19032
19104
  /* @__PURE__ */ jsx("rect", { x: -13, y: 2, width: 6, height: 11, rx: 1.5, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),