@cardenelabs/cdl 0.74.0 → 0.76.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/index.cjs CHANGED
@@ -394,8 +394,14 @@ var en = {
394
394
  "paymentProvider.sign": "PAY",
395
395
  /** `shape-payment-provider` の状態の札 */
396
396
  "paymentProvider.status": "PROCESSING",
397
- /** `shape-brokerage` の株価の帯 */
398
- "brokerage.ticker": "\u25B2NKY 38,240 \u25B2AAPL 194",
397
+ /**
398
+ * `shape-brokerage` の株価の帯。
399
+ *
400
+ * **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
401
+ * 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
402
+ * 担うので、銘柄を減らしても絵は変わらない。
403
+ */
404
+ "brokerage.ticker": "\u25B2NKY 38,240",
399
405
  /** `shape-brokerage` の看板 */
400
406
  "brokerage.sign": "$ SECURITIES",
401
407
  /** `shape-exchange` の看板 */
@@ -598,7 +604,7 @@ var ja = {
598
604
  "trustBank.sign": "\u4FE1\u8A17",
599
605
  "paymentProvider.sign": "\u6C7A\u6E08",
600
606
  "paymentProvider.status": "\u51E6\u7406\u4E2D",
601
- "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240 \u25B2\u6771\u8A3C 2,710",
607
+ "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
602
608
  "brokerage.sign": "\xA5 \u8A3C\u5238",
603
609
  "exchange.sign": "\u53D6\u5F15\u6240",
604
610
  "exchange.sub": "\u6E05\u7B97",
@@ -28741,9 +28747,9 @@ function ShapeKanbanCardNode({ node, active, lang }) {
28741
28747
  const ID\u5B57 = 11;
28742
28748
  const ID\u5B57\u9593 = 1;
28743
28749
  const PILL\u4E0A = 20;
28744
- const PILL\u5E45 = 54;
28750
+ const PILL\u5E45 = 70;
28745
28751
  const PILL\u9AD8 = 16;
28746
- const PILL\u5B57 = 9;
28752
+ const PILL\u5B57 = 11;
28747
28753
  const FOOTER\u4E0B = 22;
28748
28754
  const AVATAR\u4E2D\u5FC3Y = 4;
28749
28755
  const AVATAR\u534A\u5F84 = 9;
@@ -29876,7 +29882,7 @@ var SMART_CONTRACT_H = 220;
29876
29882
  var BLOCK_W = 240;
29877
29883
  var BLOCK_H = 220;
29878
29884
  var \u898B\u51FA\u3057\u306E\u5B57 = 13;
29879
- var \u540D\u306E\u5B57 = 10.5;
29885
+ var \u540D\u306E\u5B57 = 11;
29880
29886
  var \u5024\u306E\u5B57 = 11;
29881
29887
  var \u884C\u306E\u9593\u9694 = 22;
29882
29888
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
@@ -29890,6 +29896,15 @@ var CHAIN_BLOCK_H = 66;
29890
29896
  var CHAIN_LINK_W = 12;
29891
29897
  var CHAIN_SHADOW = 3;
29892
29898
  var CHAIN_BLOCK_SW = 2.5;
29899
+ var CHAIN_HEAD_H = 16;
29900
+ var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
29901
+ var CHAIN_ROW_GAP = 14;
29902
+ var CHAIN_NO_SIZE = 11;
29903
+ var CONTRACT_CALL_SIZE = 11;
29904
+ var NFT_ID_SIZE = 15;
29905
+ var CHAIN_HASH_SIZE = 11;
29906
+ var BTC_NO_SIZE = 11;
29907
+ var ETH_NO_SIZE = 11;
29893
29908
  var NODE_HEX_R = 44;
29894
29909
  var NODE_PEER_R = 12;
29895
29910
  var NODE_PEER_GAP = 22;
@@ -30003,24 +30018,34 @@ function ShapeSmartContractNode({ node, active, lang }) {
30003
30018
  gearPts.push(`${gearCx + Math.cos(a3) * gearTipR},${gearCy + Math.sin(a3) * gearTipR}`);
30004
30019
  gearPts.push(`${gearCx + Math.cos(a4) * gearBodyR},${gearCy + Math.sin(a4) * gearBodyR}`);
30005
30020
  }
30006
- const art = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30007
- /* @__PURE__ */ jsxRuntime.jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
30008
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30009
- [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)),
30010
- /* @__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") }),
30011
- /* @__PURE__ */ jsxRuntime.jsx(
30012
- "polygon",
30013
- {
30014
- points: gearPts.join(" "),
30015
- fill: "var(--cdl-tone-accent, #2d6a8f)",
30016
- stroke: frame.stroke,
30017
- strokeWidth: 1.2,
30018
- strokeLinejoin: "round",
30019
- children: /* @__PURE__ */ jsxRuntime.jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
30020
- }
30021
- ),
30022
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
30023
- ] });
30021
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30022
+ {
30023
+ text: \u5B57\u5F15("smartContract.call"),
30024
+ size: CONTRACT_CALL_SIZE,
30025
+ \u5E2F: { \u5E45: docW - 32, \u9AD8\u3055: 18 }
30026
+ }
30027
+ ];
30028
+ const art = (\u500D\u7387) => {
30029
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30030
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30031
+ /* @__PURE__ */ jsxRuntime.jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
30032
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30033
+ [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)),
30034
+ /* @__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") }),
30035
+ /* @__PURE__ */ jsxRuntime.jsx(
30036
+ "polygon",
30037
+ {
30038
+ points: gearPts.join(" "),
30039
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30040
+ stroke: frame.stroke,
30041
+ strokeWidth: 1.2,
30042
+ strokeLinejoin: "round",
30043
+ children: /* @__PURE__ */ jsxRuntime.jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
30044
+ }
30045
+ ),
30046
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
30047
+ ] });
30048
+ };
30024
30049
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30025
30050
  fitArt(r, smartContractExtent(frame.strokeWidth), art),
30026
30051
  bottomLabel2(node, r.cx, r.label)
@@ -30102,38 +30127,45 @@ function ShapeBlockchainNode({ node, active }) {
30102
30127
  const linkW = CHAIN_LINK_W;
30103
30128
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30104
30129
  const startX = cx - totalW / 2;
30105
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30106
- const bx = startX + i * (blockW + linkW);
30107
- const isCurrent = i === blockCount - 1;
30108
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30109
- i > 0 && /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30110
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
30111
- /* @__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" }) })
30112
- ] }),
30113
- /* @__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" }),
30114
- /* @__PURE__ */ jsxRuntime.jsx(
30115
- "rect",
30116
- {
30117
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30118
- x: bx,
30119
- y: cy - blockH / 2,
30120
- width: blockW,
30121
- height: blockH,
30122
- rx: 4,
30123
- fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
30124
- stroke: frame.stroke,
30125
- strokeWidth: isCurrent ? 2.5 : 1.5
30126
- }
30127
- ),
30128
- /* @__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" }),
30129
- /* @__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: [
30130
- "#",
30131
- 420 + i
30132
- ] }),
30133
- /* @__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: "#" }),
30134
- /* @__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" })
30135
- ] }, i);
30136
- }) });
30130
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30131
+ { text: "#420", size: CHAIN_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_HEAD_H } },
30132
+ { text: "0x\u2026", size: CHAIN_HASH_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_ROW_GAP } }
30133
+ ];
30134
+ const art = (\u500D\u7387) => {
30135
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30136
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30137
+ const bx = startX + i * (blockW + linkW);
30138
+ const isCurrent = i === blockCount - 1;
30139
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30140
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30141
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
30142
+ /* @__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" }) })
30143
+ ] }),
30144
+ /* @__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" }),
30145
+ /* @__PURE__ */ jsxRuntime.jsx(
30146
+ "rect",
30147
+ {
30148
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30149
+ x: bx,
30150
+ y: cy - blockH / 2,
30151
+ width: blockW,
30152
+ height: blockH,
30153
+ rx: 4,
30154
+ fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
30155
+ stroke: frame.stroke,
30156
+ strokeWidth: isCurrent ? 2.5 : 1.5
30157
+ }
30158
+ ),
30159
+ /* @__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" }),
30160
+ /* @__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: [
30161
+ "#",
30162
+ 420 + i
30163
+ ] }),
30164
+ /* @__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: "#" }),
30165
+ /* @__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" })
30166
+ ] }, i);
30167
+ }) });
30168
+ };
30137
30169
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30138
30170
  fitArt(r, chainExtent(), art),
30139
30171
  bottomLabel2(node, r.cx, r.label)
@@ -30151,33 +30183,39 @@ function ShapeBitcoinChainNode({ node, active }) {
30151
30183
  const linkW = CHAIN_LINK_W;
30152
30184
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30153
30185
  const startX = cx - totalW / 2;
30154
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30155
- const bx = startX + i * (blockW + linkW);
30156
- const isCurrent = i === blockCount - 1;
30157
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30158
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
30159
- /* @__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" }),
30160
- /* @__PURE__ */ jsxRuntime.jsx(
30161
- "rect",
30162
- {
30163
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30164
- x: bx,
30165
- y: cy - blockH / 2,
30166
- width: blockW,
30167
- height: blockH,
30168
- rx: 4,
30169
- fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
30170
- stroke: btcOrange,
30171
- strokeWidth: isCurrent ? 2.5 : 1.5
30172
- }
30173
- ),
30174
- /* @__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" }),
30175
- /* @__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: [
30176
- "#",
30177
- 820 + i
30178
- ] })
30179
- ] }, i);
30180
- }) });
30186
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30187
+ { text: "#820", size: BTC_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
30188
+ ];
30189
+ const art = (\u500D\u7387) => {
30190
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30191
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30192
+ const bx = startX + i * (blockW + linkW);
30193
+ const isCurrent = i === blockCount - 1;
30194
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30195
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
30196
+ /* @__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" }),
30197
+ /* @__PURE__ */ jsxRuntime.jsx(
30198
+ "rect",
30199
+ {
30200
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30201
+ x: bx,
30202
+ y: cy - blockH / 2,
30203
+ width: blockW,
30204
+ height: blockH,
30205
+ rx: 4,
30206
+ fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
30207
+ stroke: btcOrange,
30208
+ strokeWidth: isCurrent ? 2.5 : 1.5
30209
+ }
30210
+ ),
30211
+ /* @__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" }),
30212
+ /* @__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: [
30213
+ "#",
30214
+ 820 + i
30215
+ ] })
30216
+ ] }, i);
30217
+ }) });
30218
+ };
30181
30219
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30182
30220
  fitArt(r, chainExtent(), art),
30183
30221
  bottomLabel2(node, r.cx, r.label)
@@ -30195,34 +30233,40 @@ function ShapeEthereumChainNode({ node, active }) {
30195
30233
  const linkW = CHAIN_LINK_W;
30196
30234
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30197
30235
  const startX = cx - totalW / 2;
30198
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30199
- const bx = startX + i * (blockW + linkW);
30200
- const isCurrent = i === blockCount - 1;
30201
- const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
30202
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30203
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
30204
- /* @__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" }),
30205
- /* @__PURE__ */ jsxRuntime.jsx(
30206
- "rect",
30207
- {
30208
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30209
- x: bx,
30210
- y: cy - blockH / 2,
30211
- width: blockW,
30212
- height: blockH,
30213
- rx: 4,
30214
- fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
30215
- stroke: ethPurple,
30216
- strokeWidth: isCurrent ? 2.5 : 1.5
30217
- }
30218
- ),
30219
- /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
30220
- /* @__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: [
30221
- "#",
30222
- 21400 + i
30223
- ] })
30224
- ] }, i);
30225
- }) });
30236
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30237
+ { text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
30238
+ ];
30239
+ const art = (\u500D\u7387) => {
30240
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30241
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30242
+ const bx = startX + i * (blockW + linkW);
30243
+ const isCurrent = i === blockCount - 1;
30244
+ const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
30245
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30246
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
30247
+ /* @__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" }),
30248
+ /* @__PURE__ */ jsxRuntime.jsx(
30249
+ "rect",
30250
+ {
30251
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30252
+ x: bx,
30253
+ y: cy - blockH / 2,
30254
+ width: blockW,
30255
+ height: blockH,
30256
+ rx: 4,
30257
+ fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
30258
+ stroke: ethPurple,
30259
+ strokeWidth: isCurrent ? 2.5 : 1.5
30260
+ }
30261
+ ),
30262
+ /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
30263
+ /* @__PURE__ */ jsxRuntime.jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 22, fontSize: ETH_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30264
+ "#",
30265
+ 214 + i
30266
+ ] })
30267
+ ] }, i);
30268
+ }) });
30269
+ };
30226
30270
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30227
30271
  fitArt(r, chainExtent(), art),
30228
30272
  bottomLabel2(node, r.cx, r.label)
@@ -30396,39 +30440,46 @@ function ShapeNftNode({ node, active }) {
30396
30440
  const artH = cardH * 0.72;
30397
30441
  const artCx = x + cardW / 2;
30398
30442
  const artCy = y + artH / 2;
30399
- const art = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30400
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30401
- /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
30402
- /* @__PURE__ */ jsxRuntime.jsx(
30403
- "path",
30404
- {
30405
- 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`,
30406
- fill: "var(--cdl-tone-accent, #2d6a8f)",
30407
- fillOpacity: 0.15,
30408
- stroke: "none"
30409
- }
30410
- ),
30411
- /* @__PURE__ */ jsxRuntime.jsx(
30412
- "text",
30413
- {
30414
- x: artCx,
30415
- y: artCy + 24,
30416
- fontSize: 68,
30417
- fontWeight: 900,
30418
- letterSpacing: 4,
30419
- textAnchor: "middle",
30420
- fill: "var(--cdl-tone-accent, #2d6a8f)",
30421
- fontFamily: "Georgia, serif",
30422
- children: "NFT"
30423
- }
30424
- ),
30425
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
30426
- /* @__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" }),
30427
- /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
30428
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
30429
- /* @__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" })
30430
- ] })
30431
- ] });
30443
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30444
+ { text: "#1024", size: NFT_ID_SIZE, \u5E2F: { \u5E45: cardW - 16 - 34, \u9AD8\u3055: cardH - artH } }
30445
+ ];
30446
+ const art = (\u500D\u7387) => {
30447
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30448
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30449
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30450
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
30451
+ /* @__PURE__ */ jsxRuntime.jsx(
30452
+ "path",
30453
+ {
30454
+ 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`,
30455
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30456
+ fillOpacity: 0.15,
30457
+ stroke: "none"
30458
+ }
30459
+ ),
30460
+ /* @__PURE__ */ jsxRuntime.jsx(
30461
+ "text",
30462
+ {
30463
+ "data-cdl-counter-scaled": "0",
30464
+ x: artCx,
30465
+ y: artCy + 24,
30466
+ fontSize: 68,
30467
+ fontWeight: 900,
30468
+ letterSpacing: 4,
30469
+ textAnchor: "middle",
30470
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30471
+ fontFamily: "Georgia, serif",
30472
+ children: "NFT"
30473
+ }
30474
+ ),
30475
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
30476
+ /* @__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" }),
30477
+ /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
30478
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
30479
+ /* @__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" })
30480
+ ] })
30481
+ ] });
30482
+ };
30432
30483
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30433
30484
  fitArt(r, nftExtent(frame.strokeWidth), art),
30434
30485
  bottomLabel2(node, r.cx, r.label)
@@ -30557,7 +30608,7 @@ function ShapeBankNode({ node, active }) {
30557
30608
  }),
30558
30609
  /* @__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" }),
30559
30610
  /* @__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 }),
30560
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: r.cx, y: y + pedimentH / 2 + 10, fontSize: 18, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "Georgia, serif", children: "$" }),
30611
+ /* @__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: "$" }),
30561
30612
  /* @__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 }),
30562
30613
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
30563
30614
  const colCx = x + 12 + colGap + i * (colW + colGap) + colW / 2;
@@ -30623,7 +30674,7 @@ function ShapeTrustBankNode({ node, active, lang }) {
30623
30674
  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);
30624
30675
  }),
30625
30676
  /* @__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" }),
30626
- /* @__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") }),
30677
+ /* @__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") }),
30627
30678
  /* @__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 }),
30628
30679
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
30629
30680
  const colCx = x + 15 + colGap + i * (colW + colGap) + colW / 2;
@@ -30666,7 +30717,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
30666
30717
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
30667
30718
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
30668
30719
  ] }),
30669
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: y + boxH - 16, fontSize: 9, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
30720
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: y + boxH - 16, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
30670
30721
  bottomLabel3(node, r.cx, r.label)
30671
30722
  ] });
30672
30723
  }
@@ -30695,9 +30746,12 @@ function ShapeCreditCardNode({ node, active }) {
30695
30746
  bottomLabel3(node, r.cx, r.label)
30696
30747
  ] });
30697
30748
  }
30698
- var BROKERAGE_TICK_H = 12;
30749
+ var BROKERAGE_TICK_H = 18;
30699
30750
  var BROKERAGE_LOGO_H = 26;
30700
- var BROKERAGE_GRID_TOP = 62;
30751
+ var BROKERAGE_TICKER_SIZE = 11;
30752
+ var BROKERAGE_TICK_INNER_H = 14;
30753
+ var BROKERAGE_SIGN_SIZE = 12;
30754
+ var BROKERAGE_GRID_TOP = 68;
30701
30755
  var BROKERAGE_CELL_W = 14;
30702
30756
  var BROKERAGE_CELL_H = 18;
30703
30757
  var BROKERAGE_GAP_X = 8;
@@ -30745,35 +30799,47 @@ function ShapeBrokerageNode({ node, active, lang }) {
30745
30799
  );
30746
30800
  const gridStartX = x + (w - (cols * cellW + (cols - 1) * gapX)) / 2;
30747
30801
  const goldCells = /* @__PURE__ */ new Set([`0,1`, `0,4`, `1,2`, `2,3`, `3,5`]);
30748
- const \u7D75 = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30749
- /* @__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" }),
30750
- /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30751
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30752
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30753
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
30754
- /* @__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") }),
30755
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30756
- /* @__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") }),
30757
- Array.from({ length: rows }).map(
30758
- (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30759
- const wx = gridStartX + ci * (cellW + gapX);
30760
- const wy = gridStartY + ri * (cellH + gapY);
30761
- const isGold = goldCells.has(`${ri},${ci}`);
30762
- return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
30763
- })
30764
- ),
30765
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
30766
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
30767
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
30768
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
30769
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
30770
- /* @__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" })
30771
- ] });
30802
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30803
+ {
30804
+ text: \u5B57\u5F15("brokerage.ticker"),
30805
+ size: BROKERAGE_TICKER_SIZE,
30806
+ \u5E2F: { \u5E45: w - 4, \u9AD8\u3055: BROKERAGE_TICK_INNER_H }
30807
+ }
30808
+ ];
30809
+ const \u7D75 = (\u500D\u7387) => {
30810
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30811
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30812
+ /* @__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" }),
30813
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30814
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30815
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30816
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
30817
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y + 12, fontSize: BROKERAGE_TICKER_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
30818
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30819
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + BROKERAGE_TICK_H + 18, fontSize: BROKERAGE_SIGN_SIZE, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
30820
+ Array.from({ length: rows }).map(
30821
+ (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30822
+ const wx = gridStartX + ci * (cellW + gapX);
30823
+ const wy = gridStartY + ri * (cellH + gapY);
30824
+ const isGold = goldCells.has(`${ri},${ci}`);
30825
+ return /* @__PURE__ */ jsxRuntime.jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
30826
+ })
30827
+ ),
30828
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
30829
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
30830
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
30831
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
30832
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
30833
+ /* @__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" })
30834
+ ] });
30835
+ };
30772
30836
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30773
30837
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
30774
30838
  bottomLabel3(node, r.cx, r.label)
30775
30839
  ] });
30776
30840
  }
30841
+ var EXCHANGE_SUB_SIZE = 11;
30842
+ var EXCHANGE_HEX_R = 52;
30777
30843
  function ShapeExchangeNode({ node, active, lang }) {
30778
30844
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30779
30845
  const frame = commonFrame5(active);
@@ -30793,7 +30859,8 @@ function ShapeExchangeNode({ node, active, lang }) {
30793
30859
  idx: i
30794
30860
  };
30795
30861
  });
30796
- const hexR = 45;
30862
+ const hexR = EXCHANGE_HEX_R;
30863
+ const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
30797
30864
  const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
30798
30865
  const rad = deg * Math.PI / 180;
30799
30866
  return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
@@ -30801,7 +30868,7 @@ function ShapeExchangeNode({ node, active, lang }) {
30801
30868
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
30802
30869
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
30803
30870
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
30804
- const \u5B57\u4E0B = 26 + 8 * 0.25;
30871
+ const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
30805
30872
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
30806
30873
  const \u305A\u308C = cy - r.cy;
30807
30874
  const \u5E83\u304C\u308A = {
@@ -30810,21 +30877,31 @@ function ShapeExchangeNode({ node, active, lang }) {
30810
30877
  \u5DE6: \u5916,
30811
30878
  \u53F3: \u5916
30812
30879
  };
30813
- const \u7D75 = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30814
- 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}`)),
30815
- nodes.map((n, i) => {
30816
- const isGreen = i % 2 === 0;
30817
- return /* @__PURE__ */ jsxRuntime.jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
30818
- /* @__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` }),
30819
- /* @__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` })
30820
- ] }, `d${i}`);
30821
- }),
30822
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30823
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30824
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
30825
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 26, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30826
- 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}`))
30827
- ] });
30880
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30881
+ {
30882
+ text: \u5B57\u5F15("exchange.sub"),
30883
+ size: EXCHANGE_SUB_SIZE,
30884
+ \u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
30885
+ }
30886
+ ];
30887
+ const \u7D75 = (\u500D\u7387) => {
30888
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30889
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30890
+ 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}`)),
30891
+ nodes.map((n, i) => {
30892
+ const isGreen = i % 2 === 0;
30893
+ return /* @__PURE__ */ jsxRuntime.jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
30894
+ /* @__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` }),
30895
+ /* @__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` })
30896
+ ] }, `d${i}`);
30897
+ }),
30898
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30899
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: cy - 10, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30900
+ /* @__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" }),
30901
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: cy + 28, fontSize: EXCHANGE_SUB_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30902
+ 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}`))
30903
+ ] });
30904
+ };
30828
30905
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30829
30906
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
30830
30907
  bottomLabel3(node, r.cx, r.label)
@@ -30839,10 +30916,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
30839
30916
  var ATM_FLOOR_UP = 6;
30840
30917
  var ATM_FLOOR_H = 10;
30841
30918
  var ATM_FLOOR_RESERVE = 12;
30842
- var ATM_PANEL_W = 140;
30919
+ var ATM_PANEL_W = 152;
30843
30920
  var ATM_PANEL_H = 146;
30844
30921
  var ATM_W_MIN = 100;
30845
- var ATM_W_MAX = 140;
30922
+ var ATM_W_MAX = ATM_PANEL_W;
30846
30923
  var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
30847
30924
  function ShapeAtmNode({ node, active, lang }) {
30848
30925
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
@@ -30879,13 +30956,13 @@ function ShapeAtmNode({ node, active, lang }) {
30879
30956
  const \u7D75 = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30880
30957
  /* @__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" }),
30881
30958
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: signY, width: totalW, height: signH, fill: accentDarker, stroke: "#000", strokeWidth: ATM_SIGN_SW }),
30882
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
30959
+ /* @__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") }),
30883
30960
  /* @__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 }),
30884
30961
  /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
30885
30962
  /* @__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 }),
30886
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30887
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30888
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30963
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 28, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30964
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 42, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30965
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30889
30966
  /* @__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 }),
30890
30967
  (() => {
30891
30968
  const keys = [
@@ -30903,7 +30980,7 @@ function ShapeAtmNode({ node, active, lang }) {
30903
30980
  const keyW = 18;
30904
30981
  const keyH = 10;
30905
30982
  const keyGap = 4;
30906
- const startX = \u9762\u5DE6 + 14;
30983
+ const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
30907
30984
  return keys.map((k, i) => {
30908
30985
  const row = Math.floor(i / 5);
30909
30986
  const col = i % 5;
@@ -30911,7 +30988,7 @@ function ShapeAtmNode({ node, active, lang }) {
30911
30988
  const ky = 74 + row * (keyH + 2);
30912
30989
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30913
30990
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: kx, y: ky, width: keyW, height: keyH, fill: k[1], stroke: "#0f1830", strokeWidth: 0.8 }),
30914
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: kx + keyW / 2, y: ky + 7, fontSize: (
30991
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: kx + keyW / 2, y: ky + 7, fontSize: (
30915
30992
  /* 決める鍵 (末尾) は 2 字あるので小さく描く。 字は言語で変わるため位置で見分ける */
30916
30993
  i === keys.length - 1 ? 6 : 7
30917
30994
  ), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", children: k[0] })
@@ -30920,7 +30997,7 @@ function ShapeAtmNode({ node, active, lang }) {
30920
30997
  })(),
30921
30998
  /* @__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 }),
30922
30999
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
30923
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
31000
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 132, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
30924
31001
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
30925
31002
  ] }),
30926
31003
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -31029,6 +31106,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
31029
31106
  const doorH = facadeH - 30;
31030
31107
  const doorX = x + bw - doorW - 12;
31031
31108
  const doorY = facadeY + 20;
31109
+ const \u672D\u5E45 = Math.min(doorW - 6, 50);
31032
31110
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31033
31111
  /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
31034
31112
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
@@ -31045,8 +31123,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
31045
31123
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
31046
31124
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.38, x2: doorX + doorW - 4, y2: doorY + doorH * 0.38, stroke: accentDarker, strokeWidth: 1 }),
31047
31125
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.72, x2: doorX + doorW - 4, y2: doorY + doorH * 0.72, stroke: accentDarker, strokeWidth: 1 }),
31048
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + doorW / 2 - 20, y: doorY + doorH * 0.85, width: 40, height: 12, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),
31049
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 9, fontSize: 8, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: \u5B57\u5F15("storefront.open") }),
31126
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + doorW / 2 - \u672D\u5E45 / 2, y: doorY + doorH * 0.85, width: \u672D\u5E45, height: 16, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),
31127
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 11, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: \u5B57\u5F15("storefront.open") }),
31050
31128
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
31051
31129
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
31052
31130
  bottomLabel4(node, r.cx, r.label)
@@ -31093,7 +31171,7 @@ function ShapeWarehouseNode({ node, active, lang }) {
31093
31171
  /* @__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" }),
31094
31172
  /* @__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 }),
31095
31173
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + roofH, width: bw, height: signH, fill: "#c15a4a", stroke: "#8b3f2f", strokeWidth: 1.5 }),
31096
- /* @__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") }),
31174
+ /* @__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") }),
31097
31175
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: shutterH, fill: "#8b949e", stroke: accentDarker, strokeWidth: 2 }),
31098
31176
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: 5, fill: "#5a6270", stroke: "none" }),
31099
31177
  Array.from({ length: 10 }, (_, i) => i).map((i) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -31248,6 +31326,10 @@ var API_ROW_PITCH_MIN = 30;
31248
31326
  var API_ROW_BOTTOM_PAD = 12;
31249
31327
  var API_ROWS = 3;
31250
31328
  var API_H_MIN = API_ROW_TOP + (API_ROWS - 1) * API_ROW_PITCH_MIN + API_ROW_H + API_ROW_BOTTOM_PAD;
31329
+ var API_PATH_SIZE = 12;
31330
+ var API_SIGN_SIZE = 14;
31331
+ var API_METHOD_BOX_W = 54;
31332
+ var API_METHOD_TEXT_W = 48;
31251
31333
  var API_W_MIN = 200;
31252
31334
  var API_W_MAX = 300;
31253
31335
  function ShapeApiGatewayNode({ node, active, lang }) {
@@ -31262,28 +31344,37 @@ function ShapeApiGatewayNode({ node, active, lang }) {
31262
31344
  const x = cx - bw / 2;
31263
31345
  const y = r.cy - \u7E26 / 2 + \u4F59\u767D;
31264
31346
  const \u5E83\u304C\u308A = { \u4E0A: \u7E26 / 2, \u4E0B: \u7E26 / 2, \u5DE6: bw / 2 + \u4F59\u767D, \u53F3: bw / 2 + \u4F59\u767D };
31265
- const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * 48 / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
31347
+ 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)));
31266
31348
  const rowPitch = Math.max(
31267
31349
  API_ROW_PITCH_MIN,
31268
31350
  (bh - API_ROW_TOP - API_ROW_H - API_ROW_BOTTOM_PAD) / (API_ROWS - 1)
31269
31351
  );
31270
- const \u7D75 = /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31271
- /* @__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" }),
31272
- /* @__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 }),
31273
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
31274
- /* @__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") }),
31275
- [
31276
- { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
31277
- { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
31278
- { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
31279
- ].map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
31280
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
31281
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: 54, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
31282
- /* @__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 }),
31283
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 64, y: 16, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
31284
- /* @__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" }) })
31285
- ] }, i))
31286
- ] });
31352
+ const \u884C\u3089 = [
31353
+ { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
31354
+ { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
31355
+ { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
31356
+ ];
31357
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = \u884C\u3089.map((e) => ({
31358
+ text: e.path,
31359
+ size: API_PATH_SIZE,
31360
+ \u5E2F: { \u5E45: bw - 32 - 64 - 16, \u9AD8\u3055: API_ROW_H }
31361
+ }));
31362
+ const \u7D75 = (\u500D\u7387) => {
31363
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
31364
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31365
+ /* @__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" }),
31366
+ /* @__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 }),
31367
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
31368
+ /* @__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") }),
31369
+ \u884C\u3089.map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
31370
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
31371
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: API_METHOD_BOX_W, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
31372
+ /* @__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 }),
31373
+ /* @__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 }),
31374
+ /* @__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" }) })
31375
+ ] }, i))
31376
+ ] });
31377
+ };
31287
31378
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31288
31379
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
31289
31380
  bottomLabel4(node, r.cx, r.label)
@@ -31503,11 +31594,11 @@ function ShapeNotaryNode({ node, active }) {
31503
31594
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: chestX - 14, y1: chestY + 14, x2: chestX + 14, y2: chestY + 14, stroke: "#8b949e", strokeWidth: 1 }),
31504
31595
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: chestX - 14, y1: chestY + 22, x2: chestX + 8, y2: chestY + 22, stroke: "#8b949e", strokeWidth: 1 }),
31505
31596
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: chestX - 14, y1: chestY + 34, x2: chestX + 2, y2: chestY + 34, stroke: "#0f3450", strokeWidth: 1.5 }),
31506
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: chestX + 6, y: chestY + 37, fontSize: 8, fill: "#0f3450", fontFamily: "cursive", fontStyle: "italic", children: "\u2713" }),
31597
+ /* @__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" }),
31507
31598
  haloBadge(bx, by, `nt-halo-${node.id}`, "#c15a4a", /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31508
31599
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 0, cy: 0, r: 12, fill: "#c15a4a", stroke: "none" }),
31509
31600
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: 0, cy: 0, r: 8, fill: "none", stroke: "#ffffff", strokeWidth: 1.2 }),
31510
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 0, y: 4, fontFamily: "Georgia, serif", fontSize: 10, fontWeight: 700, fill: "#ffffff", textAnchor: "middle", children: "\u5370" })
31601
+ /* @__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" })
31511
31602
  ] }))
31512
31603
  ] })),
31513
31604
  bottomLabel5(node, r.cx, r.label)
@@ -31566,7 +31657,7 @@ function ShapeCustomerServiceNode({ node, active }) {
31566
31657
  p.render,
31567
31658
  collarV(cx, cy, p.strokeColor),
31568
31659
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: chestX - 22, y: chestY + 5, width: 44, height: 22, rx: 11, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 2 }),
31569
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: chestX, y: chestY + 20, fontSize: 12, fontWeight: 900, fill: "#5a3a10", textAnchor: "middle", letterSpacing: 2, children: "24H" }),
31660
+ /* @__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" }),
31570
31661
  haloBadge(bx, by, `cs-halo-${node.id}`, "#a67c00", /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31571
31662
  /* @__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" }),
31572
31663
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: -13, y: 2, width: 6, height: 11, rx: 1.5, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),