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