@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/index.js
CHANGED
|
@@ -392,8 +392,14 @@ var en = {
|
|
|
392
392
|
"paymentProvider.sign": "PAY",
|
|
393
393
|
/** `shape-payment-provider` の状態の札 */
|
|
394
394
|
"paymentProvider.status": "PROCESSING",
|
|
395
|
-
/**
|
|
396
|
-
|
|
395
|
+
/**
|
|
396
|
+
* `shape-brokerage` の株価の帯。
|
|
397
|
+
*
|
|
398
|
+
* **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
|
|
399
|
+
* 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
|
|
400
|
+
* 担うので、銘柄を減らしても絵は変わらない。
|
|
401
|
+
*/
|
|
402
|
+
"brokerage.ticker": "\u25B2NKY 38,240",
|
|
397
403
|
/** `shape-brokerage` の看板 */
|
|
398
404
|
"brokerage.sign": "$ SECURITIES",
|
|
399
405
|
/** `shape-exchange` の看板 */
|
|
@@ -596,7 +602,7 @@ var ja = {
|
|
|
596
602
|
"trustBank.sign": "\u4FE1\u8A17",
|
|
597
603
|
"paymentProvider.sign": "\u6C7A\u6E08",
|
|
598
604
|
"paymentProvider.status": "\u51E6\u7406\u4E2D",
|
|
599
|
-
"brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240
|
|
605
|
+
"brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
|
|
600
606
|
"brokerage.sign": "\xA5 \u8A3C\u5238",
|
|
601
607
|
"exchange.sign": "\u53D6\u5F15\u6240",
|
|
602
608
|
"exchange.sub": "\u6E05\u7B97",
|
|
@@ -28739,9 +28745,9 @@ function ShapeKanbanCardNode({ node, active, lang }) {
|
|
|
28739
28745
|
const ID\u5B57 = 11;
|
|
28740
28746
|
const ID\u5B57\u9593 = 1;
|
|
28741
28747
|
const PILL\u4E0A = 20;
|
|
28742
|
-
const PILL\u5E45 =
|
|
28748
|
+
const PILL\u5E45 = 70;
|
|
28743
28749
|
const PILL\u9AD8 = 16;
|
|
28744
|
-
const PILL\u5B57 =
|
|
28750
|
+
const PILL\u5B57 = 11;
|
|
28745
28751
|
const FOOTER\u4E0B = 22;
|
|
28746
28752
|
const AVATAR\u4E2D\u5FC3Y = 4;
|
|
28747
28753
|
const AVATAR\u534A\u5F84 = 9;
|
|
@@ -29874,7 +29880,7 @@ var SMART_CONTRACT_H = 220;
|
|
|
29874
29880
|
var BLOCK_W = 240;
|
|
29875
29881
|
var BLOCK_H = 220;
|
|
29876
29882
|
var \u898B\u51FA\u3057\u306E\u5B57 = 13;
|
|
29877
|
-
var \u540D\u306E\u5B57 =
|
|
29883
|
+
var \u540D\u306E\u5B57 = 11;
|
|
29878
29884
|
var \u5024\u306E\u5B57 = 11;
|
|
29879
29885
|
var \u884C\u306E\u9593\u9694 = 22;
|
|
29880
29886
|
var \u898B\u51FA\u3057\u306E\u5E2F = 32;
|
|
@@ -29891,12 +29897,12 @@ var CHAIN_BLOCK_SW = 2.5;
|
|
|
29891
29897
|
var CHAIN_HEAD_H = 16;
|
|
29892
29898
|
var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
|
|
29893
29899
|
var CHAIN_ROW_GAP = 14;
|
|
29894
|
-
var CHAIN_NO_SIZE =
|
|
29900
|
+
var CHAIN_NO_SIZE = 11;
|
|
29895
29901
|
var CONTRACT_CALL_SIZE = 11;
|
|
29896
29902
|
var NFT_ID_SIZE = 15;
|
|
29897
|
-
var CHAIN_HASH_SIZE =
|
|
29898
|
-
var BTC_NO_SIZE =
|
|
29899
|
-
var ETH_NO_SIZE =
|
|
29903
|
+
var CHAIN_HASH_SIZE = 11;
|
|
29904
|
+
var BTC_NO_SIZE = 11;
|
|
29905
|
+
var ETH_NO_SIZE = 11;
|
|
29900
29906
|
var NODE_HEX_R = 44;
|
|
29901
29907
|
var NODE_PEER_R = 12;
|
|
29902
29908
|
var NODE_PEER_GAP = 22;
|
|
@@ -30225,34 +30231,40 @@ function ShapeEthereumChainNode({ node, active }) {
|
|
|
30225
30231
|
const linkW = CHAIN_LINK_W;
|
|
30226
30232
|
const totalW = blockCount * blockW + (blockCount - 1) * linkW;
|
|
30227
30233
|
const startX = cx - totalW / 2;
|
|
30228
|
-
const
|
|
30229
|
-
|
|
30230
|
-
|
|
30231
|
-
|
|
30232
|
-
|
|
30233
|
-
|
|
30234
|
-
|
|
30235
|
-
|
|
30236
|
-
|
|
30237
|
-
|
|
30238
|
-
|
|
30239
|
-
|
|
30240
|
-
|
|
30241
|
-
|
|
30242
|
-
|
|
30243
|
-
|
|
30244
|
-
|
|
30245
|
-
|
|
30246
|
-
|
|
30247
|
-
|
|
30248
|
-
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30255
|
-
|
|
30234
|
+
const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
|
|
30235
|
+
{ text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
|
|
30236
|
+
];
|
|
30237
|
+
const art = (\u500D\u7387) => {
|
|
30238
|
+
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
|
|
30239
|
+
return /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
|
|
30240
|
+
const bx = startX + i * (blockW + linkW);
|
|
30241
|
+
const isCurrent = i === blockCount - 1;
|
|
30242
|
+
const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
|
|
30243
|
+
return /* @__PURE__ */ jsxs("g", { children: [
|
|
30244
|
+
i > 0 && /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
|
|
30245
|
+
/* @__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" }),
|
|
30246
|
+
/* @__PURE__ */ jsx(
|
|
30247
|
+
"rect",
|
|
30248
|
+
{
|
|
30249
|
+
"data-cdl-role": i === 0 ? "node-body" : void 0,
|
|
30250
|
+
x: bx,
|
|
30251
|
+
y: cy - blockH / 2,
|
|
30252
|
+
width: blockW,
|
|
30253
|
+
height: blockH,
|
|
30254
|
+
rx: 4,
|
|
30255
|
+
fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
|
|
30256
|
+
stroke: ethPurple,
|
|
30257
|
+
strokeWidth: isCurrent ? 2.5 : 1.5
|
|
30258
|
+
}
|
|
30259
|
+
),
|
|
30260
|
+
/* @__PURE__ */ jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
|
|
30261
|
+
/* @__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: [
|
|
30262
|
+
"#",
|
|
30263
|
+
214 + i
|
|
30264
|
+
] })
|
|
30265
|
+
] }, i);
|
|
30266
|
+
}) });
|
|
30267
|
+
};
|
|
30256
30268
|
return /* @__PURE__ */ jsxs("g", { children: [
|
|
30257
30269
|
fitArt(r, chainExtent(), art),
|
|
30258
30270
|
bottomLabel2(node, r.cx, r.label)
|
|
@@ -30703,7 +30715,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
|
|
|
30703
30715
|
/* @__PURE__ */ jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
|
|
30704
30716
|
/* @__PURE__ */ jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
|
|
30705
30717
|
] }),
|
|
30706
|
-
/* @__PURE__ */ jsx("text", { x: cx, y: y + boxH - 16, fontSize:
|
|
30718
|
+
/* @__PURE__ */ jsx("text", { x: cx, y: y + boxH - 16, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
|
|
30707
30719
|
bottomLabel3(node, r.cx, r.label)
|
|
30708
30720
|
] });
|
|
30709
30721
|
}
|
|
@@ -30732,12 +30744,12 @@ function ShapeCreditCardNode({ node, active }) {
|
|
|
30732
30744
|
bottomLabel3(node, r.cx, r.label)
|
|
30733
30745
|
] });
|
|
30734
30746
|
}
|
|
30735
|
-
var BROKERAGE_TICK_H =
|
|
30747
|
+
var BROKERAGE_TICK_H = 18;
|
|
30736
30748
|
var BROKERAGE_LOGO_H = 26;
|
|
30737
|
-
var
|
|
30738
|
-
var
|
|
30749
|
+
var BROKERAGE_TICKER_SIZE = 11;
|
|
30750
|
+
var BROKERAGE_TICK_INNER_H = 14;
|
|
30739
30751
|
var BROKERAGE_SIGN_SIZE = 12;
|
|
30740
|
-
var BROKERAGE_GRID_TOP =
|
|
30752
|
+
var BROKERAGE_GRID_TOP = 68;
|
|
30741
30753
|
var BROKERAGE_CELL_W = 14;
|
|
30742
30754
|
var BROKERAGE_CELL_H = 18;
|
|
30743
30755
|
var BROKERAGE_GAP_X = 8;
|
|
@@ -30799,10 +30811,10 @@ function ShapeBrokerageNode({ node, active, lang }) {
|
|
|
30799
30811
|
/* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
|
|
30800
30812
|
/* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
|
|
30801
30813
|
/* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
|
|
30802
|
-
/* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height:
|
|
30803
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y +
|
|
30814
|
+
/* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
|
|
30815
|
+
/* @__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") }),
|
|
30804
30816
|
/* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
|
|
30805
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y +
|
|
30817
|
+
/* @__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") }),
|
|
30806
30818
|
Array.from({ length: rows }).map(
|
|
30807
30819
|
(_, ri) => Array.from({ length: cols }).map((_2, ci) => {
|
|
30808
30820
|
const wx = gridStartX + ci * (cellW + gapX);
|
|
@@ -30824,7 +30836,8 @@ function ShapeBrokerageNode({ node, active, lang }) {
|
|
|
30824
30836
|
bottomLabel3(node, r.cx, r.label)
|
|
30825
30837
|
] });
|
|
30826
30838
|
}
|
|
30827
|
-
var EXCHANGE_SUB_SIZE =
|
|
30839
|
+
var EXCHANGE_SUB_SIZE = 11;
|
|
30840
|
+
var EXCHANGE_HEX_R = 52;
|
|
30828
30841
|
function ShapeExchangeNode({ node, active, lang }) {
|
|
30829
30842
|
const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
|
|
30830
30843
|
const frame = commonFrame5(active);
|
|
@@ -30844,7 +30857,8 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30844
30857
|
idx: i
|
|
30845
30858
|
};
|
|
30846
30859
|
});
|
|
30847
|
-
const hexR =
|
|
30860
|
+
const hexR = EXCHANGE_HEX_R;
|
|
30861
|
+
const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
|
|
30848
30862
|
const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
|
|
30849
30863
|
const rad = deg * Math.PI / 180;
|
|
30850
30864
|
return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
|
|
@@ -30852,7 +30866,7 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30852
30866
|
const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
|
|
30853
30867
|
const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
|
|
30854
30868
|
const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
|
|
30855
|
-
const \u5B57\u4E0B =
|
|
30869
|
+
const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
|
|
30856
30870
|
const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
|
|
30857
30871
|
const \u305A\u308C = cy - r.cy;
|
|
30858
30872
|
const \u5E83\u304C\u308A = {
|
|
@@ -30862,7 +30876,11 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30862
30876
|
\u53F3: \u5916
|
|
30863
30877
|
};
|
|
30864
30878
|
const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
|
|
30865
|
-
{
|
|
30879
|
+
{
|
|
30880
|
+
text: \u5B57\u5F15("exchange.sub"),
|
|
30881
|
+
size: EXCHANGE_SUB_SIZE,
|
|
30882
|
+
\u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
|
|
30883
|
+
}
|
|
30866
30884
|
];
|
|
30867
30885
|
const \u7D75 = (\u500D\u7387) => {
|
|
30868
30886
|
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
|
|
@@ -30876,9 +30894,9 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30876
30894
|
] }, `d${i}`);
|
|
30877
30895
|
}),
|
|
30878
30896
|
/* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
|
|
30879
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: cy -
|
|
30897
|
+
/* @__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") }),
|
|
30880
30898
|
/* @__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" }),
|
|
30881
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: cy +
|
|
30899
|
+
/* @__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") }),
|
|
30882
30900
|
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}`))
|
|
30883
30901
|
] });
|
|
30884
30902
|
};
|
|
@@ -30896,10 +30914,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
|
|
|
30896
30914
|
var ATM_FLOOR_UP = 6;
|
|
30897
30915
|
var ATM_FLOOR_H = 10;
|
|
30898
30916
|
var ATM_FLOOR_RESERVE = 12;
|
|
30899
|
-
var ATM_PANEL_W =
|
|
30917
|
+
var ATM_PANEL_W = 152;
|
|
30900
30918
|
var ATM_PANEL_H = 146;
|
|
30901
30919
|
var ATM_W_MIN = 100;
|
|
30902
|
-
var ATM_W_MAX =
|
|
30920
|
+
var ATM_W_MAX = ATM_PANEL_W;
|
|
30903
30921
|
var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
|
|
30904
30922
|
function ShapeAtmNode({ node, active, lang }) {
|
|
30905
30923
|
const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
|
|
@@ -30940,9 +30958,9 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30940
30958
|
/* @__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 }),
|
|
30941
30959
|
/* @__PURE__ */ jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
|
|
30942
30960
|
/* @__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 }),
|
|
30943
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y:
|
|
30944
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y:
|
|
30945
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize:
|
|
30961
|
+
/* @__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" }),
|
|
30962
|
+
/* @__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") }),
|
|
30963
|
+
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
|
|
30946
30964
|
/* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 68, width: ATM_PANEL_W - 16, height: 42, rx: 2, fill: "#8b949e", stroke: "#5a6270", strokeWidth: 1 }),
|
|
30947
30965
|
(() => {
|
|
30948
30966
|
const keys = [
|
|
@@ -30960,7 +30978,7 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30960
30978
|
const keyW = 18;
|
|
30961
30979
|
const keyH = 10;
|
|
30962
30980
|
const keyGap = 4;
|
|
30963
|
-
const startX = \u9762\u5DE6 +
|
|
30981
|
+
const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
|
|
30964
30982
|
return keys.map((k, i) => {
|
|
30965
30983
|
const row = Math.floor(i / 5);
|
|
30966
30984
|
const col = i % 5;
|
|
@@ -30977,7 +30995,7 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30977
30995
|
})(),
|
|
30978
30996
|
/* @__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 }),
|
|
30979
30997
|
/* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
|
|
30980
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 132, fontSize:
|
|
30998
|
+
/* @__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") }),
|
|
30981
30999
|
/* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
|
|
30982
31000
|
] }),
|
|
30983
31001
|
/* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
|
|
@@ -31086,6 +31104,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
|
|
|
31086
31104
|
const doorH = facadeH - 30;
|
|
31087
31105
|
const doorX = x + bw - doorW - 12;
|
|
31088
31106
|
const doorY = facadeY + 20;
|
|
31107
|
+
const \u672D\u5E45 = Math.min(doorW - 6, 50);
|
|
31089
31108
|
return /* @__PURE__ */ jsxs("g", { children: [
|
|
31090
31109
|
/* @__PURE__ */ jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
|
|
31091
31110
|
/* @__PURE__ */ jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
|
|
@@ -31102,8 +31121,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
|
|
|
31102
31121
|
/* @__PURE__ */ jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
|
|
31103
31122
|
/* @__PURE__ */ jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.38, x2: doorX + doorW - 4, y2: doorY + doorH * 0.38, stroke: accentDarker, strokeWidth: 1 }),
|
|
31104
31123
|
/* @__PURE__ */ jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.72, x2: doorX + doorW - 4, y2: doorY + doorH * 0.72, stroke: accentDarker, strokeWidth: 1 }),
|
|
31105
|
-
/* @__PURE__ */ jsx("rect", { x: doorX + doorW / 2 -
|
|
31106
|
-
/* @__PURE__ */ jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 +
|
|
31124
|
+
/* @__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 }),
|
|
31125
|
+
/* @__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") }),
|
|
31107
31126
|
/* @__PURE__ */ jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
|
|
31108
31127
|
/* @__PURE__ */ jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
|
|
31109
31128
|
bottomLabel4(node, r.cx, r.label)
|