@cardenelabs/cdl 0.75.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/react.cjs CHANGED
@@ -399,8 +399,14 @@ var en = {
399
399
  "paymentProvider.sign": "PAY",
400
400
  /** `shape-payment-provider` の状態の札 */
401
401
  "paymentProvider.status": "PROCESSING",
402
- /** `shape-brokerage` の株価の帯 */
403
- "brokerage.ticker": "\u25B2NKY 38,240 \u25B2AAPL 194",
402
+ /**
403
+ * `shape-brokerage` の株価の帯。
404
+ *
405
+ * **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
406
+ * 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
407
+ * 担うので、銘柄を減らしても絵は変わらない。
408
+ */
409
+ "brokerage.ticker": "\u25B2NKY 38,240",
404
410
  /** `shape-brokerage` の看板 */
405
411
  "brokerage.sign": "$ SECURITIES",
406
412
  /** `shape-exchange` の看板 */
@@ -603,7 +609,7 @@ var ja = {
603
609
  "trustBank.sign": "\u4FE1\u8A17",
604
610
  "paymentProvider.sign": "\u6C7A\u6E08",
605
611
  "paymentProvider.status": "\u51E6\u7406\u4E2D",
606
- "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240 \u25B2\u6771\u8A3C 2,710",
612
+ "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
607
613
  "brokerage.sign": "\xA5 \u8A3C\u5238",
608
614
  "exchange.sign": "\u53D6\u5F15\u6240",
609
615
  "exchange.sub": "\u6E05\u7B97",
@@ -16203,9 +16209,9 @@ function ShapeKanbanCardNode({ node, active, lang }) {
16203
16209
  const ID\u5B57 = 11;
16204
16210
  const ID\u5B57\u9593 = 1;
16205
16211
  const PILL\u4E0A = 20;
16206
- const PILL\u5E45 = 54;
16212
+ const PILL\u5E45 = 70;
16207
16213
  const PILL\u9AD8 = 16;
16208
- const PILL\u5B57 = 9;
16214
+ const PILL\u5B57 = 11;
16209
16215
  const FOOTER\u4E0B = 22;
16210
16216
  const AVATAR\u4E2D\u5FC3Y = 4;
16211
16217
  const AVATAR\u534A\u5F84 = 9;
@@ -17338,7 +17344,7 @@ var SMART_CONTRACT_H = 220;
17338
17344
  var BLOCK_W = 240;
17339
17345
  var BLOCK_H = 220;
17340
17346
  var \u898B\u51FA\u3057\u306E\u5B57 = 13;
17341
- var \u540D\u306E\u5B57 = 10.5;
17347
+ var \u540D\u306E\u5B57 = 11;
17342
17348
  var \u5024\u306E\u5B57 = 11;
17343
17349
  var \u884C\u306E\u9593\u9694 = 22;
17344
17350
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
@@ -17355,12 +17361,12 @@ var CHAIN_BLOCK_SW = 2.5;
17355
17361
  var CHAIN_HEAD_H = 16;
17356
17362
  var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
17357
17363
  var CHAIN_ROW_GAP = 14;
17358
- var CHAIN_NO_SIZE = 10;
17364
+ var CHAIN_NO_SIZE = 11;
17359
17365
  var CONTRACT_CALL_SIZE = 11;
17360
17366
  var NFT_ID_SIZE = 15;
17361
- var CHAIN_HASH_SIZE = 7;
17362
- var BTC_NO_SIZE = 9;
17363
- var ETH_NO_SIZE = 9;
17367
+ var CHAIN_HASH_SIZE = 11;
17368
+ var BTC_NO_SIZE = 11;
17369
+ var ETH_NO_SIZE = 11;
17364
17370
  var NODE_HEX_R = 44;
17365
17371
  var NODE_PEER_R = 12;
17366
17372
  var NODE_PEER_GAP = 22;
@@ -17689,34 +17695,40 @@ function ShapeEthereumChainNode({ node, active }) {
17689
17695
  const linkW = CHAIN_LINK_W;
17690
17696
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
17691
17697
  const startX = cx - totalW / 2;
17692
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17693
- const bx = startX + i * (blockW + linkW);
17694
- const isCurrent = i === blockCount - 1;
17695
- const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
17696
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17697
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
17698
- /* @__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" }),
17699
- /* @__PURE__ */ jsxRuntime.jsx(
17700
- "rect",
17701
- {
17702
- "data-cdl-role": i === 0 ? "node-body" : void 0,
17703
- x: bx,
17704
- y: cy - blockH / 2,
17705
- width: blockW,
17706
- height: blockH,
17707
- rx: 4,
17708
- fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
17709
- stroke: ethPurple,
17710
- strokeWidth: isCurrent ? 2.5 : 1.5
17711
- }
17712
- ),
17713
- /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
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: [
17715
- "#",
17716
- 21400 + i
17717
- ] })
17718
- ] }, i);
17719
- }) });
17698
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17699
+ { text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
17700
+ ];
17701
+ const art = (\u500D\u7387) => {
17702
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17703
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17704
+ const bx = startX + i * (blockW + linkW);
17705
+ const isCurrent = i === blockCount - 1;
17706
+ const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
17707
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17708
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
17709
+ /* @__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" }),
17710
+ /* @__PURE__ */ jsxRuntime.jsx(
17711
+ "rect",
17712
+ {
17713
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
17714
+ x: bx,
17715
+ y: cy - blockH / 2,
17716
+ width: blockW,
17717
+ height: blockH,
17718
+ rx: 4,
17719
+ fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
17720
+ stroke: ethPurple,
17721
+ strokeWidth: isCurrent ? 2.5 : 1.5
17722
+ }
17723
+ ),
17724
+ /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
17725
+ /* @__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: [
17726
+ "#",
17727
+ 214 + i
17728
+ ] })
17729
+ ] }, i);
17730
+ }) });
17731
+ };
17720
17732
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17721
17733
  fitArt(r, chainExtent(), art),
17722
17734
  bottomLabel2(node, r.cx, r.label)
@@ -18167,7 +18179,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
18167
18179
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
18168
18180
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
18169
18181
  ] }),
18170
- /* @__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") }),
18182
+ /* @__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") }),
18171
18183
  bottomLabel3(node, r.cx, r.label)
18172
18184
  ] });
18173
18185
  }
@@ -18196,12 +18208,12 @@ function ShapeCreditCardNode({ node, active }) {
18196
18208
  bottomLabel3(node, r.cx, r.label)
18197
18209
  ] });
18198
18210
  }
18199
- var BROKERAGE_TICK_H = 12;
18211
+ var BROKERAGE_TICK_H = 18;
18200
18212
  var BROKERAGE_LOGO_H = 26;
18201
- var BROKERAGE_TICK_INNER_H = 8;
18202
- var BROKERAGE_TICKER_SIZE = 5.5;
18213
+ var BROKERAGE_TICKER_SIZE = 11;
18214
+ var BROKERAGE_TICK_INNER_H = 14;
18203
18215
  var BROKERAGE_SIGN_SIZE = 12;
18204
- var BROKERAGE_GRID_TOP = 62;
18216
+ var BROKERAGE_GRID_TOP = 68;
18205
18217
  var BROKERAGE_CELL_W = 14;
18206
18218
  var BROKERAGE_CELL_H = 18;
18207
18219
  var BROKERAGE_GAP_X = 8;
@@ -18263,10 +18275,10 @@ function ShapeBrokerageNode({ node, active, lang }) {
18263
18275
  /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
18264
18276
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
18265
18277
  /* @__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") }),
18278
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
18279
+ /* @__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") }),
18268
18280
  /* @__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") }),
18281
+ /* @__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") }),
18270
18282
  Array.from({ length: rows }).map(
18271
18283
  (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
18272
18284
  const wx = gridStartX + ci * (cellW + gapX);
@@ -18288,7 +18300,8 @@ function ShapeBrokerageNode({ node, active, lang }) {
18288
18300
  bottomLabel3(node, r.cx, r.label)
18289
18301
  ] });
18290
18302
  }
18291
- var EXCHANGE_SUB_SIZE = 8;
18303
+ var EXCHANGE_SUB_SIZE = 11;
18304
+ var EXCHANGE_HEX_R = 52;
18292
18305
  function ShapeExchangeNode({ node, active, lang }) {
18293
18306
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
18294
18307
  const frame = commonFrame5(active);
@@ -18308,7 +18321,8 @@ function ShapeExchangeNode({ node, active, lang }) {
18308
18321
  idx: i
18309
18322
  };
18310
18323
  });
18311
- const hexR = 45;
18324
+ const hexR = EXCHANGE_HEX_R;
18325
+ const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
18312
18326
  const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
18313
18327
  const rad = deg * Math.PI / 180;
18314
18328
  return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
@@ -18316,7 +18330,7 @@ function ShapeExchangeNode({ node, active, lang }) {
18316
18330
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
18317
18331
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
18318
18332
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
18319
- const \u5B57\u4E0B = 26 + EXCHANGE_SUB_SIZE * 0.25;
18333
+ const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
18320
18334
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
18321
18335
  const \u305A\u308C = cy - r.cy;
18322
18336
  const \u5E83\u304C\u308A = {
@@ -18326,7 +18340,11 @@ function ShapeExchangeNode({ node, active, lang }) {
18326
18340
  \u53F3: \u5916
18327
18341
  };
18328
18342
  const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
18329
- { text: \u5B57\u5F15("exchange.sub"), size: EXCHANGE_SUB_SIZE, \u5E2F: { \u5E45: \u5916 * 2, \u9AD8\u3055: 14 } }
18343
+ {
18344
+ text: \u5B57\u5F15("exchange.sub"),
18345
+ size: EXCHANGE_SUB_SIZE,
18346
+ \u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
18347
+ }
18330
18348
  ];
18331
18349
  const \u7D75 = (\u500D\u7387) => {
18332
18350
  const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
@@ -18340,9 +18358,9 @@ function ShapeExchangeNode({ node, active, lang }) {
18340
18358
  ] }, `d${i}`);
18341
18359
  }),
18342
18360
  /* @__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") }),
18361
+ /* @__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") }),
18344
18362
  /* @__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") }),
18363
+ /* @__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") }),
18346
18364
  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
18365
  ] });
18348
18366
  };
@@ -18360,10 +18378,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
18360
18378
  var ATM_FLOOR_UP = 6;
18361
18379
  var ATM_FLOOR_H = 10;
18362
18380
  var ATM_FLOOR_RESERVE = 12;
18363
- var ATM_PANEL_W = 140;
18381
+ var ATM_PANEL_W = 152;
18364
18382
  var ATM_PANEL_H = 146;
18365
18383
  var ATM_W_MIN = 100;
18366
- var ATM_W_MAX = 140;
18384
+ var ATM_W_MAX = ATM_PANEL_W;
18367
18385
  var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
18368
18386
  function ShapeAtmNode({ node, active, lang }) {
18369
18387
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
@@ -18404,9 +18422,9 @@ function ShapeAtmNode({ node, active, lang }) {
18404
18422
  /* @__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 }),
18405
18423
  /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
18406
18424
  /* @__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 }),
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" }),
18425
+ /* @__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" }),
18426
+ /* @__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") }),
18427
+ /* @__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" }),
18410
18428
  /* @__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 }),
18411
18429
  (() => {
18412
18430
  const keys = [
@@ -18424,7 +18442,7 @@ function ShapeAtmNode({ node, active, lang }) {
18424
18442
  const keyW = 18;
18425
18443
  const keyH = 10;
18426
18444
  const keyGap = 4;
18427
- const startX = \u9762\u5DE6 + 14;
18445
+ const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
18428
18446
  return keys.map((k, i) => {
18429
18447
  const row = Math.floor(i / 5);
18430
18448
  const col = i % 5;
@@ -18441,7 +18459,7 @@ function ShapeAtmNode({ node, active, lang }) {
18441
18459
  })(),
18442
18460
  /* @__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 }),
18443
18461
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
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") }),
18462
+ /* @__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") }),
18445
18463
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
18446
18464
  ] }),
18447
18465
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -18550,6 +18568,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
18550
18568
  const doorH = facadeH - 30;
18551
18569
  const doorX = x + bw - doorW - 12;
18552
18570
  const doorY = facadeY + 20;
18571
+ const \u672D\u5E45 = Math.min(doorW - 6, 50);
18553
18572
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
18554
18573
  /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18555
18574
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
@@ -18566,8 +18585,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
18566
18585
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
18567
18586
  /* @__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 }),
18568
18587
  /* @__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 }),
18569
- /* @__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 }),
18570
- /* @__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") }),
18588
+ /* @__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 }),
18589
+ /* @__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") }),
18571
18590
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
18572
18591
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
18573
18592
  bottomLabel4(node, r.cx, r.label)