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