@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/CHANGELOG.md +48 -1
- package/dist/index.cjs +80 -61
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +80 -61
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +80 -61
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +80 -61
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/shape-blockchain.tsx +21 -15
- package/src/kinds/shape-commerce.tsx +5 -3
- package/src/kinds/shape-finance.tsx +64 -36
- package/src/kinds/shape-software.tsx +3 -2
- package/src/lang.ts +9 -3
- package/src/visual-validate.ts +0 -5
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
|
-
/**
|
|
403
|
-
|
|
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
|
|
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 =
|
|
16212
|
+
const PILL\u5E45 = 70;
|
|
16207
16213
|
const PILL\u9AD8 = 16;
|
|
16208
|
-
const PILL\u5B57 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
17362
|
-
var BTC_NO_SIZE =
|
|
17363
|
-
var ETH_NO_SIZE =
|
|
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
|
|
17693
|
-
|
|
17694
|
-
|
|
17695
|
-
|
|
17696
|
-
|
|
17697
|
-
|
|
17698
|
-
|
|
17699
|
-
|
|
17700
|
-
|
|
17701
|
-
|
|
17702
|
-
|
|
17703
|
-
|
|
17704
|
-
|
|
17705
|
-
|
|
17706
|
-
|
|
17707
|
-
|
|
17708
|
-
|
|
17709
|
-
|
|
17710
|
-
|
|
17711
|
-
|
|
17712
|
-
|
|
17713
|
-
|
|
17714
|
-
|
|
17715
|
-
|
|
17716
|
-
|
|
17717
|
-
|
|
17718
|
-
|
|
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:
|
|
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 =
|
|
18211
|
+
var BROKERAGE_TICK_H = 18;
|
|
18200
18212
|
var BROKERAGE_LOGO_H = 26;
|
|
18201
|
-
var
|
|
18202
|
-
var
|
|
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 =
|
|
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:
|
|
18267
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y +
|
|
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 +
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
{
|
|
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 -
|
|
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 +
|
|
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 =
|
|
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 =
|
|
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:
|
|
18408
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y:
|
|
18409
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize:
|
|
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 +
|
|
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:
|
|
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 -
|
|
18570
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 +
|
|
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)
|