@cardenelabs/cdl 0.58.0 → 0.59.1

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
@@ -1,4 +1,4 @@
1
- import { useMemo, useEffect, useSyncExternalStore, useRef, useCallback, useState, useLayoutEffect, useId, createElement } from 'react';
1
+ import { createContext, useMemo, useEffect, useSyncExternalStore, useRef, useCallback, useState, useLayoutEffect, useId, createElement, useContext } from 'react';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
 
4
4
  // src/render.tsx
@@ -428,7 +428,147 @@ var en = {
428
428
  /** `shape-api-gateway` の 2 行目の宛先 */
429
429
  "apiGateway.orders": "/orders",
430
430
  /** `shape-api-gateway` の 3 行目の宛先 */
431
- "apiGateway.session": "/session"
431
+ "apiGateway.session": "/session",
432
+ // 読み出し (`readout.*`) と入力欄の固定の字 (#849)。
433
+ // `{名前}` は描く時に値を差し込む位置 (`字を差し込む`)。 語順が言語で変わるので、位置ごと辞書に持つ
434
+ /** 配列を描く読み出しで、値が空の時の字 */
435
+ "readout.empty": "empty",
436
+ /** `sparkline` で点がまだ無い時の字 */
437
+ "readout.sparkline.waiting": "waiting",
438
+ /** 時の流れの入力欄の速さ */
439
+ "input.timeline.speed": "{speed}x",
440
+ /** 時の流れの入力欄の経過と長さ (秒) */
441
+ "input.timeline.time": "{t}s / {d}s",
442
+ /** `sequence-timeline` の点の見出し */
443
+ "readout.sequenceTimeline.title": "{name}: t={t}",
444
+ /** `bubble-chart` の泡の見出し */
445
+ "readout.bubbleChart.title": "({x}, {y}) r={r}",
446
+ /** `calendar-heatmap` の升目の見出し (`i` は 0 から) */
447
+ "readout.calendarHeatmap.title": "day {i}: {v}",
448
+ /** `candlestick` の足の見出し (始値 / 高値 / 安値 / 終値) */
449
+ "readout.candlestick.title": "O:{o} H:{h} L:{l} C:{c}",
450
+ /** `slope` の左の目盛 */
451
+ "readout.slope.before": "before",
452
+ /** `slope` の右の目盛 */
453
+ "readout.slope.after": "after",
454
+ /** `bullet-chart` の実績の見出し */
455
+ "readout.bulletChart.actual": "actual: {v}",
456
+ /** `bullet-chart` の目標の見出し */
457
+ "readout.bulletChart.target": "target: {v}",
458
+ /** `rating` の塗った星の見出し */
459
+ "readout.rating.full": "full",
460
+ /** `rating` の半分塗った星の見出し */
461
+ "readout.rating.half": "half",
462
+ /** `rating` の塗っていない星の見出し */
463
+ "readout.rating.empty": "empty",
464
+ /** `price-tag` の割引額 */
465
+ "readout.priceTag.save": "You save {amount}",
466
+ /** `confidence-meter` の低い帯の名前 */
467
+ "readout.confidence.low": "low",
468
+ /** `confidence-meter` の中ほどの帯の名前 */
469
+ "readout.confidence.mid": "mid",
470
+ /** `confidence-meter` の高い帯の名前 */
471
+ "readout.confidence.high": "high",
472
+ /** 並べきれなかった件数 (`user-stack` / `kanban-board` / `user-presence`) */
473
+ "readout.more": "+{n} more",
474
+ /** `video-card` の再生数 */
475
+ "readout.videoCard.views": "{v} views",
476
+ /** `attendance-grid` の角の見出し */
477
+ "readout.attendance.corner": "day",
478
+ /** `calendar-month` の曜日 (日曜) */
479
+ "readout.weekday.0": "Sun",
480
+ /** `calendar-month` の曜日 (月曜) */
481
+ "readout.weekday.1": "Mon",
482
+ /** `calendar-month` の曜日 (火曜) */
483
+ "readout.weekday.2": "Tue",
484
+ /** `calendar-month` の曜日 (水曜) */
485
+ "readout.weekday.3": "Wed",
486
+ /** `calendar-month` の曜日 (木曜) */
487
+ "readout.weekday.4": "Thu",
488
+ /** `calendar-month` の曜日 (金曜) */
489
+ "readout.weekday.5": "Fri",
490
+ /** `calendar-month` の曜日 (土曜) */
491
+ "readout.weekday.6": "Sat",
492
+ /** `rating-thumb` の賛成の割合と票数 */
493
+ "readout.ratingThumb.summary": "{pct}% up \xB7 {total} votes",
494
+ /** `kpi-trend-tile` の前の期間の値 */
495
+ "readout.kpiTrend.prev": "prev {v}",
496
+ /** `quick-poll-emoji` の票の合計 */
497
+ "readout.poll.total": "total {n}",
498
+ /** `thread-summary` の参加者の数 */
499
+ "readout.thread.participants": "{n} participants",
500
+ /** `thread-summary` の最後に書いた人 */
501
+ "readout.thread.last": "last: {name}",
502
+ /** `read-receipt` の送信した段 */
503
+ "readout.readReceipt.sent": "sent",
504
+ /** `read-receipt` の相手に届いた段 */
505
+ "readout.readReceipt.delivered": "delivered",
506
+ /** `read-receipt` の読まれた段 */
507
+ "readout.readReceipt.read": "read",
508
+ /** `password-strength` の段階 0 */
509
+ "readout.password.0": "too weak",
510
+ /** `password-strength` の段階 1 */
511
+ "readout.password.1": "weak",
512
+ /** `password-strength` の段階 2 */
513
+ "readout.password.2": "fair",
514
+ /** `password-strength` の段階 3 */
515
+ "readout.password.3": "good",
516
+ /** `password-strength` の段階 4 */
517
+ "readout.password.4": "strong",
518
+ /** `file-dropzone` で取り込んだ後の字 */
519
+ "readout.dropzone.uploaded": "uploaded",
520
+ /** `file-dropzone` の空の時の 1 行目 */
521
+ "readout.dropzone.drop": "\u2B06 Drop file here",
522
+ /** `file-dropzone` の空の時の 2 行目 */
523
+ "readout.dropzone.browse": "or click to browse",
524
+ /** `log-stream` の重さ 0 (調べるための詳細) */
525
+ "readout.log.0": "DBG",
526
+ /** `log-stream` の重さ 1 (知らせ) */
527
+ "readout.log.1": "INF",
528
+ /** `log-stream` の重さ 2 (警告) */
529
+ "readout.log.2": "WRN",
530
+ /** `log-stream` の重さ 3 (異常) */
531
+ "readout.log.3": "ERR",
532
+ /** `cart-summary` の点数 */
533
+ "readout.cart.items": "Items",
534
+ /** `cart-summary` の小計 */
535
+ "readout.cart.subtotal": "Subtotal",
536
+ /** `cart-summary` の送料 */
537
+ "readout.cart.shipping": "Shipping",
538
+ /** `cart-summary` の合計 */
539
+ "readout.cart.total": "Total",
540
+ /** `pricing-tier` で名前が空の時の名前 */
541
+ "readout.pricing.plan": "Plan",
542
+ /** `pricing-tier` の価格の後ろ */
543
+ "readout.pricing.perMonth": "per month",
544
+ /** `pricing-tier` の押す札 */
545
+ "readout.pricing.get": "Get {name}",
546
+ /** `coupon-code` で番号が空の時の字 */
547
+ "readout.coupon.placeholder": "ENTER CODE",
548
+ /** `coupon-code` の割引の割合 */
549
+ "readout.coupon.off": "-{pct}% off",
550
+ /** `coupon-code` の押す札 */
551
+ "readout.coupon.apply": "Apply",
552
+ /** `article-preview` の書いた人 */
553
+ "readout.article.by": "by {author}",
554
+ /** `priority-badge` の高い優先度の表示 (値は `high` / `2` で読む) */
555
+ "readout.priority.high": "HIGH",
556
+ /** `priority-badge` の中ほどの優先度の表示 */
557
+ "readout.priority.med": "MED",
558
+ /** `priority-badge` の低い優先度の表示 (値は `low` / `0` で読む) */
559
+ "readout.priority.low": "LOW",
560
+ /** `kanban-board` の列の見出し (値は `todo` で読む) */
561
+ "readout.kanban.todo": "Todo",
562
+ /** `kanban-board` の列の見出し (値は `inprogress` で読む) */
563
+ "readout.kanban.inprogress": "In Progress",
564
+ /** `kanban-board` の列の見出し (値は `done` で読む) */
565
+ "readout.kanban.done": "Done",
566
+ /** `traffic-light` の赤の灯の見出し (値は `red` で読む) */
567
+ "readout.trafficLight.red": "red",
568
+ /** `traffic-light` の黄の灯の見出し (値は `yellow` / `amber` で読む) */
569
+ "readout.trafficLight.yellow": "yellow",
570
+ /** `traffic-light` の緑の灯の見出し (値は `green` で読む) */
571
+ "readout.trafficLight.green": "green"
432
572
  };
433
573
  var ja = {
434
574
  "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
@@ -464,13 +604,85 @@ var ja = {
464
604
  "apiGateway.delete": "DELETE",
465
605
  "apiGateway.users": "/\u5229\u7528\u8005",
466
606
  "apiGateway.orders": "/\u6CE8\u6587",
467
- "apiGateway.session": "/\u63A5\u7D9A"
607
+ "apiGateway.session": "/\u63A5\u7D9A",
608
+ "readout.empty": "\u306A\u3057",
609
+ "readout.sparkline.waiting": "\u5F85\u6A5F\u4E2D",
610
+ "input.timeline.speed": "{speed}\u500D",
611
+ "input.timeline.time": "{t}\u79D2 / {d}\u79D2",
612
+ "readout.sequenceTimeline.title": "{name}: \u6642\u523B {t}",
613
+ "readout.bubbleChart.title": "({x}, {y}) \u534A\u5F84 {r}",
614
+ "readout.calendarHeatmap.title": "{i} \u65E5\u76EE: {v}",
615
+ "readout.candlestick.title": "\u59CB {o} \u9AD8 {h} \u5B89 {l} \u7D42 {c}",
616
+ "readout.slope.before": "\u524D",
617
+ "readout.slope.after": "\u5F8C",
618
+ "readout.bulletChart.actual": "\u5B9F\u7E3E: {v}",
619
+ "readout.bulletChart.target": "\u76EE\u6A19: {v}",
620
+ "readout.rating.full": "\u6E80",
621
+ "readout.rating.half": "\u534A\u5206",
622
+ "readout.rating.empty": "\u7A7A",
623
+ "readout.priceTag.save": "{amount} \u304A\u5F97",
624
+ "readout.confidence.low": "\u4F4E",
625
+ "readout.confidence.mid": "\u4E2D",
626
+ "readout.confidence.high": "\u9AD8",
627
+ "readout.more": "\u307B\u304B {n}",
628
+ "readout.videoCard.views": "{v} \u56DE\u8996\u8074",
629
+ "readout.attendance.corner": "\u65E5",
630
+ "readout.weekday.0": "\u65E5",
631
+ "readout.weekday.1": "\u6708",
632
+ "readout.weekday.2": "\u706B",
633
+ "readout.weekday.3": "\u6C34",
634
+ "readout.weekday.4": "\u6728",
635
+ "readout.weekday.5": "\u91D1",
636
+ "readout.weekday.6": "\u571F",
637
+ "readout.ratingThumb.summary": "\u8CDB\u6210 {pct}% \xB7 {total} \u7968",
638
+ "readout.kpiTrend.prev": "\u524D\u56DE {v}",
639
+ "readout.poll.total": "\u5408\u8A08 {n}",
640
+ "readout.thread.participants": "{n} \u4EBA",
641
+ "readout.thread.last": "\u6700\u5F8C: {name}",
642
+ "readout.readReceipt.sent": "\u9001\u4FE1\u6E08\u307F",
643
+ "readout.readReceipt.delivered": "\u914D\u4FE1\u6E08\u307F",
644
+ "readout.readReceipt.read": "\u65E2\u8AAD",
645
+ "readout.password.0": "\u5F31\u3059\u304E\u308B",
646
+ "readout.password.1": "\u5F31\u3044",
647
+ "readout.password.2": "\u666E\u901A",
648
+ "readout.password.3": "\u826F\u3044",
649
+ "readout.password.4": "\u5F37\u3044",
650
+ "readout.dropzone.uploaded": "\u53D6\u308A\u8FBC\u307F\u6E08\u307F",
651
+ "readout.dropzone.drop": "\u2B06 \u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F",
652
+ "readout.dropzone.browse": "\u307E\u305F\u306F\u62BC\u3057\u3066\u9078\u3076",
653
+ "readout.log.0": "\u8A73\u7D30",
654
+ "readout.log.1": "\u60C5\u5831",
655
+ "readout.log.2": "\u8B66\u544A",
656
+ "readout.log.3": "\u7570\u5E38",
657
+ "readout.cart.items": "\u70B9\u6570",
658
+ "readout.cart.subtotal": "\u5C0F\u8A08",
659
+ "readout.cart.shipping": "\u9001\u6599",
660
+ "readout.cart.total": "\u5408\u8A08",
661
+ "readout.pricing.plan": "\u30D7\u30E9\u30F3",
662
+ "readout.pricing.perMonth": "\u6708\u984D",
663
+ "readout.pricing.get": "{name}\u3092\u9078\u3076",
664
+ "readout.coupon.placeholder": "\u30B3\u30FC\u30C9\u3092\u5165\u529B",
665
+ "readout.coupon.off": "-{pct}% \u5F15\u304D",
666
+ "readout.coupon.apply": "\u9069\u7528",
667
+ "readout.article.by": "\u6587: {author}",
668
+ "readout.priority.high": "\u9AD8",
669
+ "readout.priority.med": "\u4E2D",
670
+ "readout.priority.low": "\u4F4E",
671
+ "readout.kanban.todo": "\u672A\u7740\u624B",
672
+ "readout.kanban.inprogress": "\u9032\u884C\u4E2D",
673
+ "readout.kanban.done": "\u5B8C\u4E86",
674
+ "readout.trafficLight.red": "\u8D64",
675
+ "readout.trafficLight.yellow": "\u9EC4",
676
+ "readout.trafficLight.green": "\u7DD1"
468
677
  };
469
678
  var CDL_TEXT = { en, ja };
470
679
  function \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang) {
471
680
  const \u8A00\u8A9E = lang ?? "en";
472
681
  return (key) => CDL_TEXT[\u8A00\u8A9E][key];
473
682
  }
683
+ function \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(template, values) {
684
+ return template.replace(/\{(\w+)\}/g, (whole, name) => name in values ? String(values[name]) : whole);
685
+ }
474
686
 
475
687
  // src/layout/clearance-constants.ts
476
688
  var CLEARANCE_NODE_LABEL = 32;
@@ -9330,6 +9542,22 @@ function displayWidth(text) {
9330
9542
  }
9331
9543
  return w;
9332
9544
  }
9545
+ function \u6841\u3067\u5272\u308B(text, \u6841) {
9546
+ let w = 0;
9547
+ let \u53D6\u3063\u305F = "";
9548
+ for (const ch of text) {
9549
+ const code = ch.codePointAt(0) ?? 0;
9550
+ const \u5B57\u306E\u6841 = code >= 32 && code <= 126 ? 1 : 2;
9551
+ if (w + \u5B57\u306E\u6841 > \u6841) break;
9552
+ w += \u5B57\u306E\u6841;
9553
+ \u53D6\u3063\u305F += ch;
9554
+ }
9555
+ return [\u53D6\u3063\u305F, text.slice(\u53D6\u3063\u305F.length)];
9556
+ }
9557
+ function \u6841\u3067\u7701\u304F(text, \u4E0A\u9650) {
9558
+ if (displayWidth(text) <= \u4E0A\u9650) return text;
9559
+ return `${\u6841\u3067\u5272\u308B(text, \u4E0A\u9650 - 1)[0]}\u2026`;
9560
+ }
9333
9561
  function requiredRowsWidth(rows, kind) {
9334
9562
  if (!rows || rows.length === 0) return 0;
9335
9563
  const splits = rows.map(splitRow);
@@ -11022,12 +11250,12 @@ function \u5272\u308B\u5019\u88DC(text) {
11022
11250
  \u7A7A\u767D.push([text.slice(0, m.index).trim(), text.slice(m.index + m[0].length).trim()]);
11023
11251
  }
11024
11252
  if (\u7A7A\u767D.length > 0) return \u7A7A\u767D.filter(\u5165\u3063\u3066\u3044\u308B);
11025
- const \u5B57 = [];
11253
+ const \u5B572 = [];
11026
11254
  const \u4E26\u3073 = [...text];
11027
11255
  for (let i = 1; i < \u4E26\u3073.length; i += 1) {
11028
- \u5B57.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
11256
+ \u5B572.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
11029
11257
  }
11030
- return \u5B57.filter(\u5165\u3063\u3066\u3044\u308B);
11258
+ return \u5B572.filter(\u5165\u3063\u3066\u3044\u308B);
11031
11259
  }
11032
11260
  function \u5165\u3063\u3066\u3044\u308B([\u5DE6, \u53F3]) {
11033
11261
  return \u5DE6 !== "" && \u53F3 !== "";
@@ -13383,9 +13611,9 @@ function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u
13383
13611
  \u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })
13384
13612
  };
13385
13613
  }
13386
- function \u53CE\u3081\u308B\u7D1A(\u5B57, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
13614
+ function \u53CE\u3081\u308B\u7D1A(\u5B572, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
13387
13615
  let \u7D1A = \u521D\u671F;
13388
- while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B57, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
13616
+ while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B572, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
13389
13617
  return \u7D1A;
13390
13618
  }
13391
13619
  function \u5F27\u306E\u90533(cx, cy, r, \u5272\u5408) {
@@ -20008,6 +20236,23 @@ function warn(message) {
20008
20236
  console.warn(`[cdl event-handler] ${message}`);
20009
20237
  }
20010
20238
  }
20239
+ var \u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E = createContext("en");
20240
+ function use\u5B57\u5F15() {
20241
+ const lang = useContext(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E);
20242
+ return (key, values) => values ? \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(CDL_TEXT[lang][key], values) : CDL_TEXT[lang][key];
20243
+ }
20244
+ function \u5B57({ k, v }) {
20245
+ const \u5F15\u304F = use\u5B57\u5F15();
20246
+ return /* @__PURE__ */ jsx(Fragment, { children: \u5F15\u304F(k, v) });
20247
+ }
20248
+ function \u5B57\u306E\u898B\u51FA\u3057({
20249
+ k,
20250
+ v,
20251
+ \u524D = ""
20252
+ }) {
20253
+ const \u5F15\u304F = use\u5B57\u5F15();
20254
+ return /* @__PURE__ */ jsx("title", { children: k === void 0 ? "" : `${\u524D}${\u5F15\u304F(k, v)}` });
20255
+ }
20011
20256
  function createInteractiveSignalsAccessor(diagram, signals, formula, scroll) {
20012
20257
  const kindByInputId = /* @__PURE__ */ new Map();
20013
20258
  for (const inp of diagram.inputs ?? []) {
@@ -20322,20 +20567,23 @@ function useInteractiveIntegration(diagram, options = {}) {
20322
20567
  const readouts = diagram.readouts ?? [];
20323
20568
  if (inputs.length === 0 && scrolls.length === 0 && formulasList.length === 0 && readouts.length === 0)
20324
20569
  return null;
20325
- return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
20326
- inputs.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
20327
- formulasList.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsx(
20328
- FormulaReadout,
20329
- {
20330
- id: f.id,
20331
- expression: f.expression,
20332
- value: stateOverrides[f.id]
20333
- },
20334
- f.id
20335
- )) }),
20336
- scrolls.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
20337
- readouts.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
20338
- ] });
20570
+ return (
20571
+ // 操作部の中の読み出しと入力欄へ、図の言語を届ける (#849)。 型の外の値は英語に落ちる
20572
+ /* @__PURE__ */ jsx(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E.Provider, { value: resolveLang(diagram.lang), children: /* @__PURE__ */ jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
20573
+ inputs.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
20574
+ formulasList.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsx(
20575
+ FormulaReadout,
20576
+ {
20577
+ id: f.id,
20578
+ expression: f.expression,
20579
+ value: stateOverrides[f.id]
20580
+ },
20581
+ f.id
20582
+ )) }),
20583
+ scrolls.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
20584
+ readouts.length > 0 && /* @__PURE__ */ jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
20585
+ ] }) })
20586
+ );
20339
20587
  }, [diagram, signals, stateOverrides, mergedStateValues]);
20340
20588
  return { stateOverrides, panel, svgRef, containerRef };
20341
20589
  }
@@ -22196,7 +22444,7 @@ function SparklineReadout({
22196
22444
  if (points.length < 2) {
22197
22445
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sparkline", "data-cdl-readout": id, children: [
22198
22446
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
22199
- /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? "waiting" : "\u2014" }),
22447
+ /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? /* @__PURE__ */ jsx(\u5B57, { k: "readout.sparkline.waiting" }) : "\u2014" }),
22200
22448
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-sparkline-value", children: Number.isFinite(value) ? value : "\u2014" })
22201
22449
  ] });
22202
22450
  }
@@ -22459,27 +22707,24 @@ function TimelineWidget({
22459
22707
  className: "cdl-ip-timeline-scrubber"
22460
22708
  }
22461
22709
  ),
22462
- /* @__PURE__ */ jsxs(
22710
+ /* @__PURE__ */ jsx(
22463
22711
  "button",
22464
22712
  {
22465
22713
  type: "button",
22466
22714
  className: "cdl-ip-timeline-btn cdl-ip-timeline-speed",
22467
22715
  onClick: cycleSpeed,
22468
22716
  "aria-label": "speed",
22469
- children: [
22470
- speed,
22471
- "x"
22472
- ]
22717
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "input.timeline.speed", v: { speed } })
22473
22718
  }
22474
22719
  )
22475
22720
  ] }),
22476
- /* @__PURE__ */ jsxs("span", { className: "cdl-ip-timeline-time", children: [
22477
- (progress * (input.duration / 1e3)).toFixed(1),
22478
- "s /",
22479
- " ",
22480
- (input.duration / 1e3).toFixed(1),
22481
- "s"
22482
- ] })
22721
+ /* @__PURE__ */ jsx("span", { className: "cdl-ip-timeline-time", children: /* @__PURE__ */ jsx(
22722
+ \u5B57,
22723
+ {
22724
+ k: "input.timeline.time",
22725
+ v: { t: (progress * (input.duration / 1e3)).toFixed(1), d: (input.duration / 1e3).toFixed(1) }
22726
+ }
22727
+ ) })
22483
22728
  ] });
22484
22729
  }
22485
22730
  function RangeWidget({
@@ -22717,7 +22962,7 @@ function ArrayBarReadout({
22717
22962
  const range = max - min || 1;
22718
22963
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-array-bar", "data-cdl-readout": id, children: [
22719
22964
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
22720
- /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : arr.map((v, i) => {
22965
+ /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : arr.map((v, i) => {
22721
22966
  const h = Math.max(0, Math.min(1, (v - min) / range));
22722
22967
  return /* @__PURE__ */ jsx(
22723
22968
  "span",
@@ -22794,7 +23039,7 @@ function StackedBarReadout({
22794
23039
  const range = max - min || 1;
22795
23040
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-stacked-bar", "data-cdl-readout": id, children: [
22796
23041
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
22797
- /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : Array.from({ length: n }).map((_, i) => {
23042
+ /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : Array.from({ length: n }).map((_, i) => {
22798
23043
  const va = arrA[i] ?? 0;
22799
23044
  const vb = arrB[i] ?? 0;
22800
23045
  const hA = Math.max(0, Math.min(1, (va - min) / range));
@@ -22889,7 +23134,7 @@ function MatrixReadout({
22889
23134
  };
22890
23135
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-matrix", "data-cdl-readout": id, children: [
22891
23136
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
22892
- rows === 0 || cols === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx(
23137
+ rows === 0 || cols === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx(
22893
23138
  "svg",
22894
23139
  {
22895
23140
  className: "cdl-ip-readout-matrix-svg",
@@ -22947,7 +23192,7 @@ function ProgressGroupReadout({
22947
23192
  const labelArr = labels ? safeParseArray(labels).map(String) : [];
22948
23193
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-progress-group", "data-cdl-readout": id, children: [
22949
23194
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
22950
- arr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
23195
+ arr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
22951
23196
  const pct = Math.max(0, Math.min(100, v / (max || 1) * 100));
22952
23197
  const rowLabel = labelArr[i] ?? String(i + 1);
22953
23198
  return /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-progress-group-row", children: [
@@ -23009,7 +23254,7 @@ function SequenceTimelineReadout({
23009
23254
  const xFor = (t) => pad + (Math.max(min, Math.min(max, t)) - min) / range * (viewW - pad * 2);
23010
23255
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sequence-timeline", "data-cdl-readout": id, children: [
23011
23256
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23012
- events.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs(
23257
+ events.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs(
23013
23258
  "svg",
23014
23259
  {
23015
23260
  className: "cdl-ip-readout-sequence-timeline-svg",
@@ -23023,7 +23268,7 @@ function SequenceTimelineReadout({
23023
23268
  events.map((e, i) => {
23024
23269
  const x = xFor(e.t);
23025
23270
  return /* @__PURE__ */ jsxs("g", { "data-cdl-event-marker": e.name, children: [
23026
- /* @__PURE__ */ jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("title", { children: `${e.name}: t=${e.t}` }) }),
23271
+ /* @__PURE__ */ jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.sequenceTimeline.title", v: { name: e.name, t: e.t } }) }),
23027
23272
  /* @__PURE__ */ jsx("text", { x, y: trackY - 12, textAnchor: sequenceLabelAnchor(x, e.name, 10, viewW), fontSize: 10, fill: "var(--v4-ink, #1a1f2a)", children: e.name }),
23028
23273
  /* @__PURE__ */ jsx("text", { x, y: trackY + 18, textAnchor: "middle", fontSize: 9, fill: "var(--v4-mute, #64748b)", children: e.t })
23029
23274
  ] }, i);
@@ -23066,7 +23311,7 @@ function RadarReadout({
23066
23311
  const polygon = points.length ? points.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(" ") : "";
23067
23312
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-radar", "data-cdl-readout": id, children: [
23068
23313
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23069
- n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23314
+ n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23070
23315
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsx(
23071
23316
  "polygon",
23072
23317
  {
@@ -23128,14 +23373,14 @@ function BubbleChartReadout({
23128
23373
  const maxCircleR = 18;
23129
23374
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-bubble-chart", "data-cdl-readout": id, children: [
23130
23375
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23131
- bubbles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23376
+ bubbles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23132
23377
  /* @__PURE__ */ jsx("line", { x1: pad, x2: viewW - pad, y1: viewH - pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
23133
23378
  /* @__PURE__ */ jsx("line", { x1: pad, x2: pad, y1: pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
23134
23379
  bubbles.map((b, i) => {
23135
23380
  const cx = pad + (Math.max(xMin, Math.min(xMax, b.x)) - xMin) / xRange * w;
23136
23381
  const cy = viewH - pad - (Math.max(yMin, Math.min(yMax, b.y)) - yMin) / yRange * h;
23137
23382
  const r = 4 + (Math.max(rMin, Math.min(rMax, b.r)) - rMin) / rRange * (maxCircleR - 4);
23138
- return /* @__PURE__ */ jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsx("title", { children: `(${b.x}, ${b.y}) r=${b.r}` }) }, i);
23383
+ return /* @__PURE__ */ jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bubbleChart.title", v: { x: b.x, y: b.y, r: b.r } }) }, i);
23139
23384
  })
23140
23385
  ] })
23141
23386
  ] });
@@ -23158,7 +23403,7 @@ function DonutReadout({
23158
23403
  let acc = 0;
23159
23404
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-donut", "data-cdl-readout": id, children: [
23160
23405
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23161
- arr.length === 0 || total === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
23406
+ arr.length === 0 || total === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
23162
23407
  const from = acc;
23163
23408
  const to = acc + v / total;
23164
23409
  acc = to;
@@ -23219,7 +23464,7 @@ function CalendarHeatmapReadout({
23219
23464
  height: cellSize,
23220
23465
  rx: 2,
23221
23466
  fill,
23222
- children: /* @__PURE__ */ jsx("title", { children: `day ${i}: ${v}` })
23467
+ children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.calendarHeatmap.title", v: { i, v } })
23223
23468
  },
23224
23469
  i
23225
23470
  );
@@ -23339,7 +23584,7 @@ function CandlestickReadout({
23339
23584
  const candleW = candles.length === 0 ? 0 : Math.max(3, (w - (candles.length - 1) * 3) / candles.length);
23340
23585
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-candlestick", "data-cdl-readout": id, children: [
23341
23586
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23342
- candles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
23587
+ candles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
23343
23588
  const cx = pad + i * (candleW + 3) + candleW / 2;
23344
23589
  const yHigh = yFor(cd.h);
23345
23590
  const yLow = yFor(cd.l);
@@ -23360,7 +23605,7 @@ function CandlestickReadout({
23360
23605
  height: bodyH,
23361
23606
  fill: isUp ? color : color,
23362
23607
  fillOpacity: isUp ? 1 : 0.85,
23363
- children: /* @__PURE__ */ jsx("title", { children: `O:${cd.o} H:${cd.h} L:${cd.l} C:${cd.c}` })
23608
+ children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.candlestick.title", v: { o: cd.o, h: cd.h, l: cd.l, c: cd.c } })
23364
23609
  }
23365
23610
  )
23366
23611
  ] }, i);
@@ -23394,7 +23639,7 @@ function VennReadout({
23394
23639
  const cxB = viewW / 2 + gap / 2;
23395
23640
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-venn", "data-cdl-readout": id, children: [
23396
23641
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23397
- sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23642
+ sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23398
23643
  /* @__PURE__ */ jsx("circle", { cx: cxA, cy, r: rA, fill: colorA, fillOpacity: 0.4, stroke: colorA, strokeWidth: 1.5 }),
23399
23644
  /* @__PURE__ */ jsx("circle", { cx: cxB, cy, r: rB, fill: colorB, fillOpacity: 0.4, stroke: colorB, strokeWidth: 1.5 }),
23400
23645
  /* @__PURE__ */ jsx("text", { x: cxA - rA + 8, y: cy - 4, fontSize: 11, fill: "var(--v4-ink, #1a1f2a)", fontWeight: 600, children: labelA }),
@@ -23445,11 +23690,11 @@ function SlopeReadout({
23445
23690
  const yFor = (v) => pad + (1 - (Math.max(min, Math.min(max, v)) - min) / range) * h;
23446
23691
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-slope", "data-cdl-readout": id, children: [
23447
23692
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23448
- slopes.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23693
+ slopes.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23449
23694
  /* @__PURE__ */ jsx("line", { x1: xL, x2: xL, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
23450
23695
  /* @__PURE__ */ jsx("line", { x1: xR, x2: xR, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
23451
- /* @__PURE__ */ jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "before" }),
23452
- /* @__PURE__ */ jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "after" }),
23696
+ /* @__PURE__ */ jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.slope.before" }) }),
23697
+ /* @__PURE__ */ jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.slope.after" }) }),
23453
23698
  slopes.map((s, i) => {
23454
23699
  const yB = yFor(s.before);
23455
23700
  const yA = yFor(s.after);
@@ -23496,7 +23741,7 @@ function FunnelReadout({
23496
23741
  const [bR, bG, bB] = hexToRgb2(colorBottom);
23497
23742
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-funnel", "data-cdl-readout": id, children: [
23498
23743
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23499
- stages.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
23744
+ stages.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
23500
23745
  const ratio = i / Math.max(1, stages.length - 1);
23501
23746
  const w = maxCount > 0 ? s.count / maxCount * (viewW - 12) : 0;
23502
23747
  const yTop = i * stageH + 2;
@@ -23558,7 +23803,7 @@ function GanttReadout({
23558
23803
  const xFor = (v) => labelW + (Math.max(min, Math.min(max, v)) - min) / range * (viewW - labelW - pad);
23559
23804
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-gantt", "data-cdl-readout": id, children: [
23560
23805
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23561
- tasks.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
23806
+ tasks.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
23562
23807
  const y = pad + i * rowH;
23563
23808
  const x1 = xFor(t.start);
23564
23809
  const x2 = xFor(t.start + t.duration);
@@ -23649,7 +23894,7 @@ function TreemapReadout({
23649
23894
  }
23650
23895
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-treemap", "data-cdl-readout": id, children: [
23651
23896
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23652
- rects.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxs("g", { children: [
23897
+ rects.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxs("g", { children: [
23653
23898
  /* @__PURE__ */ jsx("rect", { x: r.x + 1, y: r.y + 1, width: Math.max(0, r.w - 2), height: Math.max(0, r.h - 2), fill: colors[i % colors.length] ?? "#94a3b8", rx: 2, children: /* @__PURE__ */ jsx("title", { children: `${r.name}: ${r.size}` }) }),
23654
23899
  r.w > 40 && r.h > 20 ? /* @__PURE__ */ jsx("text", { x: r.x + 6, y: r.y + 14, fontSize: 10, fill: "#fff", fontWeight: 600, children: r.name }) : null
23655
23900
  ] }, i)) })
@@ -23715,7 +23960,7 @@ function SankeyReadout({
23715
23960
  const rightUsed = {};
23716
23961
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sankey", "data-cdl-readout": id, children: [
23717
23962
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23718
- flows.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23963
+ flows.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23719
23964
  leftNodes.map((n, i) => {
23720
23965
  const p = leftPos[n.name];
23721
23966
  return /* @__PURE__ */ jsxs("g", { children: [
@@ -23777,7 +24022,7 @@ function PolarAreaReadout({
23777
24022
  const maxR = Math.min(cx, cy) - 20;
23778
24023
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-polar-area", "data-cdl-readout": id, children: [
23779
24024
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23780
- n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24025
+ n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23781
24026
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsx("circle", { cx, cy, r: maxR * t, fill: "none", stroke: "rgba(148,163,184,0.2)", strokeWidth: 1 }, t)),
23782
24027
  arr.map((v, i) => {
23783
24028
  const ratio = Math.sqrt(Math.max(0, Math.min(max, v)) / (max || 1));
@@ -23823,7 +24068,7 @@ function StepIndicatorReadout({
23823
24068
  const cy = viewH / 2 - 2;
23824
24069
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-step-indicator", "data-cdl-readout": id, children: [
23825
24070
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23826
- n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24071
+ n === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23827
24072
  n > 1 ? Array.from({ length: n - 1 }).map((_, i) => {
23828
24073
  const x1 = pad + i * step;
23829
24074
  const x2 = pad + (i + 1) * step;
@@ -23913,8 +24158,8 @@ function BulletChartReadout({
23913
24158
  /* @__PURE__ */ jsx("rect", { x: pad, y: pad, width: badX - pad, height: trackH, fill: "rgba(239,68,68,0.25)", rx: 2 }),
23914
24159
  /* @__PURE__ */ jsx("rect", { x: badX, y: pad, width: avgX - badX, height: trackH, fill: "rgba(234,179,8,0.25)" }),
23915
24160
  /* @__PURE__ */ jsx("rect", { x: avgX, y: pad, width: pad + w - avgX, height: trackH, fill: "rgba(34,197,94,0.25)" }),
23916
- /* @__PURE__ */ jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsx("title", { children: `actual: ${safeActual}` }) }),
23917
- /* @__PURE__ */ jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsx("title", { children: `target: ${safeTarget}` }) })
24161
+ /* @__PURE__ */ jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.actual", v: { v: safeActual } }) }),
24162
+ /* @__PURE__ */ jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.target", v: { v: safeTarget } }) })
23918
24163
  ] })
23919
24164
  ] });
23920
24165
  }
@@ -23969,7 +24214,7 @@ function LeaderboardReadout({
23969
24214
  const medals = ["#eab308", "#94a3b8", "#c2410c"];
23970
24215
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-leaderboard", "data-cdl-readout": id, children: [
23971
24216
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
23972
- sorted.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
24217
+ sorted.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
23973
24218
  const pct = topMax > 0 ? it.value / topMax * 100 : 0;
23974
24219
  const rankColor = i < medals.length ? medals[i] : "#cbd5e1";
23975
24220
  return /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-leaderboard-row", children: [
@@ -24020,7 +24265,7 @@ function TrafficLightReadout({
24020
24265
  style: {
24021
24266
  filter: isActive ? `drop-shadow(0 0 6px ${colors[i]})` : void 0
24022
24267
  },
24023
- children: /* @__PURE__ */ jsx("title", { children: isActive ? ["red", "yellow", "green"][i] : "" })
24268
+ children: /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: isActive ? ["readout.trafficLight.red", "readout.trafficLight.yellow", "readout.trafficLight.green"][i] : void 0 })
24024
24269
  },
24025
24270
  i
24026
24271
  );
@@ -24059,7 +24304,7 @@ function TagCloudReadout({
24059
24304
  const sizeFor = (w) => minSize + (w - minW) / range * (maxSize - minSize);
24060
24305
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-tag-cloud", "data-cdl-readout": id, children: [
24061
24306
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24062
- tags.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsx(
24307
+ tags.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsx(
24063
24308
  "span",
24064
24309
  {
24065
24310
  className: "cdl-ip-readout-tag-cloud-tag",
@@ -24096,7 +24341,7 @@ function ActivityFeedReadout({
24096
24341
  const shown = events.slice(0, max);
24097
24342
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-activity-feed", "data-cdl-readout": id, children: [
24098
24343
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24099
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
24344
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
24100
24345
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-activity-feed-bullet", style: { background: color } }),
24101
24346
  /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-activity-feed-content", children: [
24102
24347
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-activity-feed-actor", children: e.actor }),
@@ -24147,7 +24392,7 @@ function RatingReadout({
24147
24392
  strokeWidth: 1
24148
24393
  }
24149
24394
  ),
24150
- isEmpty ? /* @__PURE__ */ jsx("title", { children: `${i + 1}: empty` }) : /* @__PURE__ */ jsx("title", { children: `${i + 1}: ${isFull ? "full" : "half"}` })
24395
+ isEmpty ? /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: "readout.rating.empty" }) : /* @__PURE__ */ jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: isFull ? "readout.rating.full" : "readout.rating.half" })
24151
24396
  ]
24152
24397
  },
24153
24398
  i
@@ -24243,7 +24488,7 @@ function ChatBubbleReadout({
24243
24488
  const shown = messages.slice(0, max);
24244
24489
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-chat-bubble", "data-cdl-readout": id, children: [
24245
24490
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24246
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsx(
24491
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsx(
24247
24492
  "li",
24248
24493
  {
24249
24494
  className: `cdl-ip-readout-chat-bubble-row ${m.isSelf ? "self" : "other"}`,
@@ -24335,7 +24580,7 @@ function ChecklistReadout({
24335
24580
  const pct = items.length === 0 ? 0 : Math.round(done / items.length * 100);
24336
24581
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-checklist", "data-cdl-readout": id, children: [
24337
24582
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24338
- items.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
24583
+ items.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
24339
24584
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-checklist-progress", children: [
24340
24585
  /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-checklist-progress-text", children: [
24341
24586
  done,
@@ -24446,11 +24691,7 @@ function PriceTagReadout({
24446
24691
  "%"
24447
24692
  ] }) : null
24448
24693
  ] }),
24449
- savings > 0 ? /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-price-tag-savings", children: [
24450
- "You save ",
24451
- currency,
24452
- savings
24453
- ] }) : null
24694
+ savings > 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-price-tag-savings", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.priceTag.save", v: { amount: `${currency}${savings}` } }) }) : null
24454
24695
  ] });
24455
24696
  }
24456
24697
  function SpinnerReadout({
@@ -24587,6 +24828,11 @@ function StopwatchReadout({
24587
24828
  }
24588
24829
  );
24589
24830
  }
24831
+ var \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57 = {
24832
+ low: "readout.confidence.low",
24833
+ mid: "readout.confidence.mid",
24834
+ high: "readout.confidence.high"
24835
+ };
24590
24836
  function ConfidenceMeterReadout({
24591
24837
  id,
24592
24838
  label,
@@ -24619,7 +24865,7 @@ function ConfidenceMeterReadout({
24619
24865
  Math.round(safeValue),
24620
24866
  "%"
24621
24867
  ] }),
24622
- /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: bandLabel })
24868
+ /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: /* @__PURE__ */ jsx(\u5B57, { k: \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57[bandLabel] }) })
24623
24869
  ] }),
24624
24870
  /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-confidence-meter-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24625
24871
  /* @__PURE__ */ jsx("rect", { x: pad, y: pad, width: lowX - pad, height: h, fill: "rgba(239,68,68,0.2)", rx: 2 }),
@@ -24654,7 +24900,7 @@ function ReactionBarReadout({
24654
24900
  }
24655
24901
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-reaction-bar", "data-cdl-readout": id, children: [
24656
24902
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24657
- reactions.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
24903
+ reactions.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
24658
24904
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-reaction-bar-emoji", children: r.emoji }),
24659
24905
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-reaction-bar-count", style: { color }, children: r.count })
24660
24906
  ] }, i)) })
@@ -24687,7 +24933,7 @@ function PillGroupReadout({
24687
24933
  }
24688
24934
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pill-group", "data-cdl-readout": id, children: [
24689
24935
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24690
- pills.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsx(
24936
+ pills.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsx(
24691
24937
  "span",
24692
24938
  {
24693
24939
  className: "cdl-ip-readout-pill-group-pill",
@@ -24775,7 +25021,7 @@ function MetricsGridReadout({
24775
25021
  }
24776
25022
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-metrics-grid", "data-cdl-readout": id, children: [
24777
25023
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24778
- items.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
25024
+ items.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
24779
25025
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-metrics-grid-value", style: { color }, children: [
24780
25026
  m.value,
24781
25027
  m.unit ? /* @__PURE__ */ jsxs("span", { className: "cdl-ip-readout-metrics-grid-unit", children: [
@@ -24862,7 +25108,7 @@ function IconTileReadout({
24862
25108
  }
24863
25109
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-icon-tile", "data-cdl-readout": id, children: [
24864
25110
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24865
- tiles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
25111
+ tiles.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
24866
25112
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-icon-tile-icon", style: { background: color }, children: t.icon }),
24867
25113
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-icon-tile-content", children: [
24868
25114
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-icon-tile-value", children: t.value }),
@@ -24903,7 +25149,7 @@ function TokenListReadout({
24903
25149
  }
24904
25150
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-token-list", "data-cdl-readout": id, children: [
24905
25151
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24906
- tokens.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
25152
+ tokens.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
24907
25153
  const isUp = t.delta >= 0;
24908
25154
  const deltaColor = isUp ? colorUp : colorDown;
24909
25155
  const arrow = isUp ? "\u25B2" : "\u25BC";
@@ -24957,7 +25203,7 @@ function MapPinReadout({
24957
25203
  const yFor = (v) => pad + (Math.max(yMin, Math.min(yMax, v)) - yMin) / yRange * (viewH - pad * 2);
24958
25204
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-map-pin", "data-cdl-readout": id, children: [
24959
25205
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
24960
- pins.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
25206
+ pins.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24961
25207
  /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: viewW, height: viewH, fill: "rgba(148,163,184,0.08)", stroke: "rgba(148,163,184,0.3)", strokeWidth: 1, rx: 4 }),
24962
25208
  [0.25, 0.5, 0.75].map((t) => /* @__PURE__ */ jsxs("g", { children: [
24963
25209
  /* @__PURE__ */ jsx("line", { x1: pad + (viewW - pad * 2) * t, x2: pad + (viewW - pad * 2) * t, y1: pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.15)" }),
@@ -24985,9 +25231,9 @@ function PriorityBadgeReadout({
24985
25231
  if (p === "high" || p === "2") level = "high";
24986
25232
  else if (p === "low" || p === "0") level = "low";
24987
25233
  const spec = {
24988
- high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "HIGH" },
24989
- med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "MED" },
24990
- low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "LOW" }
25234
+ high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "readout.priority.high" },
25235
+ med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "readout.priority.med" },
25236
+ low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "readout.priority.low" }
24991
25237
  };
24992
25238
  const cur = spec[level];
24993
25239
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-priority-badge", "data-cdl-readout": id, "data-cdl-priority": level, children: [
@@ -25000,7 +25246,7 @@ function PriorityBadgeReadout({
25000
25246
  style: { background: cur.bg, borderColor: cur.color, color: cur.color },
25001
25247
  children: [
25002
25248
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-priority-badge-icon", children: cur.icon }),
25003
- /* @__PURE__ */ jsx("span", { children: cur.text })
25249
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(\u5B57, { k: cur.text }) })
25004
25250
  ]
25005
25251
  }
25006
25252
  ),
@@ -25039,7 +25285,7 @@ function PodiumReadout({
25039
25285
  const order = [1, 0, 2];
25040
25286
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-podium", "data-cdl-readout": id, children: [
25041
25287
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25042
- podium.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
25288
+ podium.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
25043
25289
  const w = podium[rankIdx];
25044
25290
  if (!w) return null;
25045
25291
  const x = pad + colIdx * (colW + pad);
@@ -25082,7 +25328,7 @@ function PollBarReadout({
25082
25328
  const maxCount = options.length ? Math.max(...options.map((o) => o.count)) : 0;
25083
25329
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-poll-bar", "data-cdl-readout": id, children: [
25084
25330
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25085
- options.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
25331
+ options.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
25086
25332
  const pct = Math.round(o.count / total * 100);
25087
25333
  const isWinner = o.count === maxCount && maxCount > 0;
25088
25334
  const fillColor = isWinner ? colorWinner : color;
@@ -25117,6 +25363,7 @@ function UserStackReadout({
25117
25363
  max,
25118
25364
  size
25119
25365
  }) {
25366
+ const \u5F15\u304F = use\u5B57\u5F15();
25120
25367
  const names = safeParseArray(value).map(String);
25121
25368
  const shown = names.slice(0, max);
25122
25369
  const overflow = names.length > max;
@@ -25125,7 +25372,7 @@ function UserStackReadout({
25125
25372
  const initialsOf = (name) => name.split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0]?.toUpperCase() ?? "").join("") || "?";
25126
25373
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-user-stack", "data-cdl-readout": id, children: [
25127
25374
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25128
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
25375
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
25129
25376
  shown.map((name, i) => /* @__PURE__ */ jsx(
25130
25377
  "span",
25131
25378
  {
@@ -25153,7 +25400,7 @@ function UserStackReadout({
25153
25400
  fontSize: `${Math.round(size * 0.35)}px`,
25154
25401
  marginLeft: `-${size * 0.3}px`
25155
25402
  },
25156
- title: `+${overflowCount} more`,
25403
+ title: \u5F15\u304F("readout.more", { n: overflowCount }),
25157
25404
  children: [
25158
25405
  "+",
25159
25406
  overflowCount
@@ -25188,7 +25435,7 @@ function CommitListReadout({
25188
25435
  const shown = commits.slice(0, max);
25189
25436
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-commit-list", "data-cdl-readout": id, children: [
25190
25437
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25191
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
25438
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
25192
25439
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-commit-list-sha", style: { color }, children: c.sha }),
25193
25440
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-commit-list-msg", children: c.msg }),
25194
25441
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-commit-list-author", children: c.author })
@@ -25268,7 +25515,7 @@ function EventLogReadout({
25268
25515
  };
25269
25516
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-event-log", "data-cdl-readout": id, children: [
25270
25517
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25271
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
25518
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
25272
25519
  const spec = severitySpec[e.severity] ?? severitySpec.info;
25273
25520
  return /* @__PURE__ */ jsxs(
25274
25521
  "li",
@@ -25311,7 +25558,7 @@ function SearchResultReadout({
25311
25558
  const shown = hits.slice(0, max);
25312
25559
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-search-result", "data-cdl-readout": id, children: [
25313
25560
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25314
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
25561
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
25315
25562
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-search-result-title", style: { color }, children: h.title }),
25316
25563
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-search-result-snippet", children: h.snippet }),
25317
25564
  h.url ? /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-search-result-url", children: h.url }) : null
@@ -25344,7 +25591,7 @@ function RoadmapReadout({
25344
25591
  const colors = ["#2563eb", "#22c55e", "#eab308", "#a855f7"];
25345
25592
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-roadmap", "data-cdl-readout": id, style: { minWidth: `${viewW}px` }, children: [
25346
25593
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25347
- quarters.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
25594
+ quarters.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
25348
25595
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-roadmap-header", style: { background: colors[i % colors.length] }, children: q.quarter }),
25349
25596
  /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-roadmap-items", children: q.items.map((it, j) => /* @__PURE__ */ jsx("li", { className: "cdl-ip-readout-roadmap-item", children: it }, j)) })
25350
25597
  ] }, i)) })
@@ -25376,7 +25623,7 @@ function WeatherForecastReadout({
25376
25623
  }
25377
25624
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-weather-forecast", "data-cdl-readout": id, children: [
25378
25625
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25379
- days.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
25626
+ days.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
25380
25627
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-weather-forecast-name", children: d.day }),
25381
25628
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-weather-forecast-icon", children: d.icon }),
25382
25629
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-weather-forecast-high", children: [
@@ -25420,17 +25667,14 @@ function VideoCardReadout({
25420
25667
  const shown = videos.slice(0, max);
25421
25668
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-video-card", "data-cdl-readout": id, children: [
25422
25669
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25423
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
25670
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
25424
25671
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-video-card-thumb", style: { background: color }, children: [
25425
25672
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-video-card-thumb-icon", children: v.emoji }),
25426
25673
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-video-card-duration", children: v.duration })
25427
25674
  ] }),
25428
25675
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-video-card-info", children: [
25429
25676
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-video-card-title", children: v.title }),
25430
- /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-video-card-views", children: [
25431
- v.views,
25432
- " views"
25433
- ] })
25677
+ /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-video-card-views", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.videoCard.views", v: { v: v.views } }) })
25434
25678
  ] })
25435
25679
  ] }, i)) })
25436
25680
  ] });
@@ -25447,7 +25691,7 @@ function OrderStatusReadout({
25447
25691
  const safeCurrent = Number.isFinite(current) ? Math.max(0, Math.min(stepArr.length - 1, Math.round(current))) : 0;
25448
25692
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-order-status", "data-cdl-readout": id, "data-cdl-step": safeCurrent, children: [
25449
25693
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25450
- stepArr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
25694
+ stepArr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
25451
25695
  const isDone = i < safeCurrent;
25452
25696
  const isCurrent = i === safeCurrent;
25453
25697
  const isPending = i > safeCurrent;
@@ -25497,9 +25741,9 @@ function AttendanceGridReadout({
25497
25741
  const memberArr = safeParseArray(members).map(String);
25498
25742
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-attendance-grid", "data-cdl-readout": id, children: [
25499
25743
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25500
- rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
25744
+ rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
25501
25745
  /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
25502
- /* @__PURE__ */ jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: "day" }),
25746
+ /* @__PURE__ */ jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.attendance.corner" }) }),
25503
25747
  memberArr.map((m, i) => /* @__PURE__ */ jsx("th", { className: "cdl-ip-readout-attendance-grid-member", children: m }, i))
25504
25748
  ] }) }),
25505
25749
  /* @__PURE__ */ jsx("tbody", { children: rows.map((r, i) => /* @__PURE__ */ jsxs("tr", { children: [
@@ -25553,7 +25797,7 @@ function TimezoneClockReadout({
25553
25797
  }
25554
25798
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-timezone-clock", "data-cdl-readout": id, children: [
25555
25799
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25556
- clocks.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
25800
+ clocks.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
25557
25801
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-timezone-clock-city", children: c.city }),
25558
25802
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-timezone-clock-time", style: { color }, children: c.time }),
25559
25803
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-timezone-clock-offset", children: [
@@ -25587,7 +25831,7 @@ function FormSummaryReadout({
25587
25831
  }
25588
25832
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-form-summary", "data-cdl-readout": id, children: [
25589
25833
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25590
- fields.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
25834
+ fields.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
25591
25835
  /* @__PURE__ */ jsx("dt", { className: "cdl-ip-readout-form-summary-key", children: f.name }),
25592
25836
  /* @__PURE__ */ jsx("dd", { className: "cdl-ip-readout-form-summary-value", style: { color }, children: f.value })
25593
25837
  ] }, i)) })
@@ -25620,7 +25864,7 @@ function SongQueueReadout({
25620
25864
  const safeCurrent = Number.isFinite(current) ? Math.round(current) : -1;
25621
25865
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-song-queue", "data-cdl-readout": id, "data-cdl-current": safeCurrent, children: [
25622
25866
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25623
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
25867
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
25624
25868
  const isCurrent = i === safeCurrent;
25625
25869
  return /* @__PURE__ */ jsxs(
25626
25870
  "li",
@@ -25665,12 +25909,20 @@ function CalendarMonthReadout({
25665
25909
  } catch {
25666
25910
  }
25667
25911
  }
25668
- const weekDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
25912
+ const weekDays = [
25913
+ "readout.weekday.0",
25914
+ "readout.weekday.1",
25915
+ "readout.weekday.2",
25916
+ "readout.weekday.3",
25917
+ "readout.weekday.4",
25918
+ "readout.weekday.5",
25919
+ "readout.weekday.6"
25920
+ ];
25669
25921
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-calendar-month", "data-cdl-readout": id, children: [
25670
25922
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25671
- days.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
25923
+ days.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
25672
25924
  monthName ? /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-calendar-month-header", children: monthName }) : null,
25673
- /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: w }, w)) }),
25925
+ /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: /* @__PURE__ */ jsx(\u5B57, { k: w }) }, w)) }),
25674
25926
  /* @__PURE__ */ jsx("div", { className: "cdl-ip-readout-calendar-month-grid", children: days.map((d, i) => /* @__PURE__ */ jsxs(
25675
25927
  "div",
25676
25928
  {
@@ -25713,7 +25965,7 @@ function TerminalReadout({
25713
25965
  const shown = lines.slice(0, max);
25714
25966
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-terminal", "data-cdl-readout": id, children: [
25715
25967
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
25716
- shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
25968
+ shown.length === 0 ? /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
25717
25969
  /* @__PURE__ */ jsxs("div", { className: "cdl-ip-readout-terminal-titlebar", children: [
25718
25970
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#ef4444" } }),
25719
25971
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#eab308" } }),
@@ -25812,10 +26064,11 @@ function KanbanBoardReadout({
25812
26064
  columnWidth,
25813
26065
  max
25814
26066
  }) {
26067
+ const \u5F15\u304F = use\u5B57\u5F15();
25815
26068
  const buckets = {
25816
- todo: { key: "todo", label: "Todo", color: "#94a3b8", tasks: [] },
25817
- inprogress: { key: "inprogress", label: "In Progress", color: "#2563eb", tasks: [] },
25818
- done: { key: "done", label: "Done", color: "#22c55e", tasks: [] }
26069
+ todo: { key: "todo", label: \u5F15\u304F("readout.kanban.todo"), color: "#94a3b8", tasks: [] },
26070
+ inprogress: { key: "inprogress", label: \u5F15\u304F("readout.kanban.inprogress"), color: "#2563eb", tasks: [] },
26071
+ done: { key: "done", label: \u5F15\u304F("readout.kanban.done"), color: "#22c55e", tasks: [] }
25819
26072
  };
25820
26073
  const trimmed = value.trim();
25821
26074
  if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
@@ -25926,13 +26179,13 @@ function KanbanBoardReadout({
25926
26179
  style: { userSelect: "none" },
25927
26180
  children: [
25928
26181
  /* @__PURE__ */ jsx("title", { children: task.title }),
25929
- task.title.length > 18 ? `${task.title.slice(0, 17)}\u2026` : task.title
26182
+ \u6841\u3067\u7701\u304F(task.title, 18)
25930
26183
  ]
25931
26184
  }
25932
26185
  )
25933
26186
  ] }, ti);
25934
26187
  }),
25935
- overflow > 0 ? /* @__PURE__ */ jsxs(
26188
+ overflow > 0 ? /* @__PURE__ */ jsx(
25936
26189
  "text",
25937
26190
  {
25938
26191
  x: x + columnWidth / 2,
@@ -25941,11 +26194,7 @@ function KanbanBoardReadout({
25941
26194
  textAnchor: "middle",
25942
26195
  fill: "#64748b",
25943
26196
  style: { userSelect: "none" },
25944
- children: [
25945
- "+",
25946
- overflow,
25947
- " more"
25948
- ]
26197
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
25949
26198
  }
25950
26199
  ) : null
25951
26200
  ] }, k);
@@ -26067,7 +26316,7 @@ function TimelineVerticalReadout({
26067
26316
  style: { userSelect: "none" },
26068
26317
  children: [
26069
26318
  /* @__PURE__ */ jsx("title", { children: ev.title }),
26070
- ev.title.length > 38 ? `${ev.title.slice(0, 37)}\u2026` : ev.title
26319
+ \u6841\u3067\u7701\u304F(ev.title, 38)
26071
26320
  ]
26072
26321
  }
26073
26322
  ),
@@ -26081,7 +26330,7 @@ function TimelineVerticalReadout({
26081
26330
  style: { userSelect: "none" },
26082
26331
  children: [
26083
26332
  /* @__PURE__ */ jsx("title", { children: ev.description }),
26084
- ev.description.length > 44 ? `${ev.description.slice(0, 43)}\u2026` : ev.description
26333
+ \u6841\u3067\u7701\u304F(ev.description, 44)
26085
26334
  ]
26086
26335
  }
26087
26336
  ) : null
@@ -26424,7 +26673,7 @@ function StepProgressReadout({
26424
26673
  style: { userSelect: "none" },
26425
26674
  children: [
26426
26675
  /* @__PURE__ */ jsx("title", { children: s }),
26427
- s.length > 10 ? `${s.slice(0, 9)}\u2026` : s
26676
+ \u6841\u3067\u7701\u304F(s, 10)
26428
26677
  ]
26429
26678
  }
26430
26679
  )
@@ -26485,7 +26734,7 @@ function UserPresenceReadout({
26485
26734
  fontWeight: 500,
26486
26735
  fill: "#0f172a",
26487
26736
  style: { userSelect: "none" },
26488
- children: u.name.length > 24 ? `${u.name.slice(0, 23)}\u2026` : u.name
26737
+ children: \u6841\u3067\u7701\u304F(u.name, 24)
26489
26738
  }
26490
26739
  ),
26491
26740
  /* @__PURE__ */ jsx(
@@ -26502,7 +26751,7 @@ function UserPresenceReadout({
26502
26751
  )
26503
26752
  ] }, i);
26504
26753
  }),
26505
- overflow > 0 ? /* @__PURE__ */ jsxs(
26754
+ overflow > 0 ? /* @__PURE__ */ jsx(
26506
26755
  "text",
26507
26756
  {
26508
26757
  x: width / 2,
@@ -26511,11 +26760,7 @@ function UserPresenceReadout({
26511
26760
  textAnchor: "middle",
26512
26761
  fill: "#64748b",
26513
26762
  style: { userSelect: "none" },
26514
- children: [
26515
- "+",
26516
- overflow,
26517
- " more"
26518
- ]
26763
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
26519
26764
  }
26520
26765
  ) : null
26521
26766
  ]
@@ -26566,12 +26811,7 @@ function RatingThumbReadout({
26566
26811
  "\u25B2 ",
26567
26812
  upCount
26568
26813
  ] }),
26569
- /* @__PURE__ */ jsxs("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: [
26570
- upPct,
26571
- "% up \xB7 ",
26572
- total,
26573
- " votes"
26574
- ] }),
26814
+ /* @__PURE__ */ jsx("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.ratingThumb.summary", v: { pct: upPct, total } }) }),
26575
26815
  /* @__PURE__ */ jsxs(
26576
26816
  "text",
26577
26817
  {
@@ -26656,7 +26896,7 @@ function OrgChartMiniReadout({
26656
26896
  style: { userSelect: "none" },
26657
26897
  children: [
26658
26898
  /* @__PURE__ */ jsx("title", { children: n.name }),
26659
- n.name.length > 10 ? `${n.name.slice(0, 9)}\u2026` : n.name
26899
+ \u6841\u3067\u7701\u304F(n.name, 10)
26660
26900
  ]
26661
26901
  }
26662
26902
  ),
@@ -26746,11 +26986,7 @@ function KpiTrendTileReadout({
26746
26986
  deltaPct.toFixed(1),
26747
26987
  "%)"
26748
26988
  ] }),
26749
- /* @__PURE__ */ jsxs("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: [
26750
- "prev ",
26751
- prev,
26752
- unit
26753
- ] }),
26989
+ /* @__PURE__ */ jsx("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.kpiTrend.prev", v: { v: `${prev}${unit}` } }) }),
26754
26990
  history.length > 1 ? /* @__PURE__ */ jsx("polyline", { points, fill: "none", stroke: arrowColor, strokeWidth: 2 }) : null
26755
26991
  ]
26756
26992
  }
@@ -26838,7 +27074,7 @@ function QuickPollEmojiReadout({
26838
27074
  )
26839
27075
  ] }, i);
26840
27076
  }),
26841
- /* @__PURE__ */ jsxs(
27077
+ /* @__PURE__ */ jsx(
26842
27078
  "text",
26843
27079
  {
26844
27080
  x: width - 8,
@@ -26847,10 +27083,7 @@ function QuickPollEmojiReadout({
26847
27083
  textAnchor: "end",
26848
27084
  fill: "#64748b",
26849
27085
  style: { userSelect: "none" },
26850
- children: [
26851
- "total ",
26852
- total
26853
- ]
27086
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.poll.total", v: { n: total } })
26854
27087
  }
26855
27088
  )
26856
27089
  ]
@@ -26985,14 +27218,8 @@ function ThreadSummaryReadout({
26985
27218
  height,
26986
27219
  children: [
26987
27220
  /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width, height, fill: "#f8fafc", rx: 6 }),
26988
- /* @__PURE__ */ jsxs("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: [
26989
- participants,
26990
- " participants"
26991
- ] }),
26992
- /* @__PURE__ */ jsxs("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: [
26993
- "last: ",
26994
- lastAuthor
26995
- ] }),
27221
+ /* @__PURE__ */ jsx("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.thread.participants", v: { n: participants } }) }),
27222
+ /* @__PURE__ */ jsx("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.thread.last", v: { name: lastAuthor } }) }),
26996
27223
  /* @__PURE__ */ jsx("text", { x: 12, y: 60, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: timeAgo }),
26997
27224
  unread > 0 ? /* @__PURE__ */ jsxs("g", { "data-cdl-thread-unread": "1", children: [
26998
27225
  /* @__PURE__ */ jsx("circle", { cx: width - 24, cy: 26, r: 14, fill: colorUnread }),
@@ -27023,7 +27250,7 @@ function ReadReceiptReadout({
27023
27250
  colorPending
27024
27251
  }) {
27025
27252
  const status = Number.isFinite(value) ? Math.max(0, Math.min(2, Math.floor(value))) : 0;
27026
- const labelText = status === 0 ? "sent" : status === 1 ? "delivered" : "read";
27253
+ const labelKey = status === 0 ? "readout.readReceipt.sent" : status === 1 ? "readout.readReceipt.delivered" : "readout.readReceipt.read";
27027
27254
  const iconColor = status === 2 ? colorRead : colorPending;
27028
27255
  const width = 180;
27029
27256
  const height = 32;
@@ -27058,7 +27285,7 @@ function ReadReceiptReadout({
27058
27285
  }
27059
27286
  ) : null
27060
27287
  ] }),
27061
- /* @__PURE__ */ jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: labelText })
27288
+ /* @__PURE__ */ jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: labelKey }) })
27062
27289
  ]
27063
27290
  }
27064
27291
  )
@@ -27072,7 +27299,7 @@ function PasswordStrengthReadout({
27072
27299
  colorWeak
27073
27300
  }) {
27074
27301
  const level = Number.isFinite(value) ? Math.max(0, Math.min(4, Math.floor(value))) : 0;
27075
- const labels = ["too weak", "weak", "fair", "good", "strong"];
27302
+ const labels = ["readout.password.0", "readout.password.1", "readout.password.2", "readout.password.3", "readout.password.4"];
27076
27303
  const colors = [colorWeak, "#f97316", "#eab308", "#84cc16", colorStrong];
27077
27304
  const barW = 46;
27078
27305
  const gap = 6;
@@ -27116,7 +27343,7 @@ function PasswordStrengthReadout({
27116
27343
  textAnchor: "end",
27117
27344
  fill: level > 0 ? colors[level] ?? colorStrong : "#94a3b8",
27118
27345
  style: { userSelect: "none" },
27119
- children: labels[level]
27346
+ children: /* @__PURE__ */ jsx(\u5B57, { k: labels[level] })
27120
27347
  }
27121
27348
  )
27122
27349
  ]
@@ -27249,9 +27476,9 @@ function FileDropzoneReadout({
27249
27476
  ),
27250
27477
  /* @__PURE__ */ jsxs("text", { x: 54, y: 34, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: [
27251
27478
  /* @__PURE__ */ jsx("title", { children: filename }),
27252
- filename.length > 26 ? `${filename.slice(0, 25)}\u2026` : filename
27479
+ \u6841\u3067\u7701\u304F(filename, 26)
27253
27480
  ] }),
27254
- /* @__PURE__ */ jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: "uploaded" })
27481
+ /* @__PURE__ */ jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.dropzone.uploaded" }) })
27255
27482
  ] }) : /* @__PURE__ */ jsxs("g", { "data-cdl-dropzone-empty": "1", children: [
27256
27483
  /* @__PURE__ */ jsx(
27257
27484
  "text",
@@ -27263,7 +27490,7 @@ function FileDropzoneReadout({
27263
27490
  textAnchor: "middle",
27264
27491
  fill: "#64748b",
27265
27492
  style: { userSelect: "none" },
27266
- children: "\u2B06 Drop file here"
27493
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.dropzone.drop" })
27267
27494
  }
27268
27495
  ),
27269
27496
  /* @__PURE__ */ jsx(
@@ -27275,7 +27502,7 @@ function FileDropzoneReadout({
27275
27502
  textAnchor: "middle",
27276
27503
  fill: "#94a3b8",
27277
27504
  style: { userSelect: "none" },
27278
- children: "or click to browse"
27505
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.dropzone.browse" })
27279
27506
  }
27280
27507
  )
27281
27508
  ] })
@@ -27310,7 +27537,7 @@ function LogStreamReadout({
27310
27537
  }
27311
27538
  }
27312
27539
  const shown = rows.slice(-5);
27313
- const levelLabels = ["DBG", "INF", "WRN", "ERR"];
27540
+ const levelLabels = ["readout.log.0", "readout.log.1", "readout.log.2", "readout.log.3"];
27314
27541
  const levelColors = ["#94a3b8", "#2563eb", "#f97316", "#ef4444"];
27315
27542
  const width = 300;
27316
27543
  const rowH = 18;
@@ -27328,7 +27555,7 @@ function LogStreamReadout({
27328
27555
  /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width, height, fill: "#0f172a", rx: 4 }),
27329
27556
  shown.map((r, i) => {
27330
27557
  const y = 4 + i * rowH;
27331
- const displayMsg = r.msg.length > 24 ? `${r.msg.slice(0, 23)}\u2026` : r.msg;
27558
+ const displayMsg = \u6841\u3067\u7701\u304F(r.msg, 24);
27332
27559
  return /* @__PURE__ */ jsxs("g", { "data-cdl-log-row": i, children: [
27333
27560
  /* @__PURE__ */ jsx("text", { x: 6, y: y + 12, fontSize: 9, fill: "#94a3b8", fontFamily: "monospace", style: { userSelect: "none" }, children: r.ts }),
27334
27561
  /* @__PURE__ */ jsx("rect", { x: 62, y: y + 3, width: 26, height: 12, fill: levelColors[r.level] ?? "#94a3b8", rx: 2 }),
@@ -27343,7 +27570,7 @@ function LogStreamReadout({
27343
27570
  fill: "#ffffff",
27344
27571
  fontFamily: "monospace",
27345
27572
  style: { userSelect: "none" },
27346
- children: levelLabels[r.level] ?? "INF"
27573
+ children: /* @__PURE__ */ jsx(\u5B57, { k: levelLabels[r.level] ?? "readout.log.1" })
27347
27574
  }
27348
27575
  ),
27349
27576
  /* @__PURE__ */ jsxs("text", { x: 94, y: y + 12, fontSize: 10, fill: "#e2e8f0", fontFamily: "monospace", style: { userSelect: "none" }, children: [
@@ -27428,7 +27655,7 @@ function AlertBannerReadout({
27428
27655
  style: { userSelect: "none" },
27429
27656
  children: [
27430
27657
  /* @__PURE__ */ jsx("title", { children: message }),
27431
- message.length > 32 ? `${message.slice(0, 31)}\u2026` : message
27658
+ \u6841\u3067\u7701\u304F(message, 32)
27432
27659
  ]
27433
27660
  }
27434
27661
  )
@@ -27498,7 +27725,7 @@ function ServiceHealthReadout({
27498
27725
  style: { userSelect: "none" },
27499
27726
  children: [
27500
27727
  /* @__PURE__ */ jsx("title", { children: s.name }),
27501
- s.name.length > 10 ? `${s.name.slice(0, 9)}\u2026` : s.name
27728
+ \u6841\u3067\u7701\u304F(s.name, 10)
27502
27729
  ]
27503
27730
  }
27504
27731
  )
@@ -27537,10 +27764,10 @@ function CartSummaryReadout({
27537
27764
  if (!Number.isFinite(shipping)) shipping = 0;
27538
27765
  if (!Number.isFinite(total)) total = 0;
27539
27766
  const rows = [
27540
- { l: "Items", v: `${items}`, bold: false },
27541
- { l: "Subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
27542
- { l: "Shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
27543
- { l: "Total", v: `${currency}${total.toFixed(2)}`, bold: true }
27767
+ { l: "readout.cart.items", v: `${items}`, bold: false },
27768
+ { l: "readout.cart.subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
27769
+ { l: "readout.cart.shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
27770
+ { l: "readout.cart.total", v: `${currency}${total.toFixed(2)}`, bold: true }
27544
27771
  ];
27545
27772
  const width = 260;
27546
27773
  const rowH = 20;
@@ -27570,7 +27797,7 @@ function CartSummaryReadout({
27570
27797
  fontWeight: isTotal ? 700 : 500,
27571
27798
  fill: isTotal ? colorTotal : "#334155",
27572
27799
  style: { userSelect: "none" },
27573
- children: r.l
27800
+ children: /* @__PURE__ */ jsx(\u5B57, { k: r.l })
27574
27801
  }
27575
27802
  ),
27576
27803
  /* @__PURE__ */ jsx(
@@ -27618,6 +27845,8 @@ function PricingTierReadout({
27618
27845
  }
27619
27846
  }
27620
27847
  if (!Number.isFinite(price)) price = 0;
27848
+ const \u5F15\u304F = use\u5B57\u5F15();
27849
+ const \u898B\u305B\u308B\u540D\u524D = planName || \u5F15\u304F("readout.pricing.plan");
27621
27850
  const width = 240;
27622
27851
  const height = 176;
27623
27852
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pricing-tier", "data-cdl-readout": id, children: [
@@ -27642,7 +27871,7 @@ function PricingTierReadout({
27642
27871
  textAnchor: "middle",
27643
27872
  fill: "#ffffff",
27644
27873
  style: { userSelect: "none" },
27645
- children: planName || "Plan"
27874
+ children: \u898B\u305B\u308B\u540D\u524D
27646
27875
  }
27647
27876
  ),
27648
27877
  /* @__PURE__ */ jsxs(
@@ -27670,12 +27899,12 @@ function PricingTierReadout({
27670
27899
  textAnchor: "middle",
27671
27900
  fill: "#64748b",
27672
27901
  style: { userSelect: "none" },
27673
- children: "per month"
27902
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.pricing.perMonth" })
27674
27903
  }
27675
27904
  ),
27676
27905
  features.slice(0, 3).map((f, i) => {
27677
27906
  const y = 96 + i * 18;
27678
- const displayF = f.length > 24 ? `${f.slice(0, 23)}\u2026` : f;
27907
+ const displayF = \u6841\u3067\u7701\u304F(f, 24);
27679
27908
  return /* @__PURE__ */ jsxs("g", { "data-cdl-tier-feature": i, children: [
27680
27909
  /* @__PURE__ */ jsx("text", { x: 16, y, fontSize: 11, fill: colorAccent, style: { userSelect: "none" }, children: "\u2713" }),
27681
27910
  /* @__PURE__ */ jsxs("text", { x: 30, y, fontSize: 11, fill: "#0f172a", style: { userSelect: "none" }, children: [
@@ -27685,7 +27914,7 @@ function PricingTierReadout({
27685
27914
  ] }, i);
27686
27915
  }),
27687
27916
  /* @__PURE__ */ jsx("rect", { x: 16, y: 150, width: width - 32, height: 20, fill: colorAccent, rx: 4 }),
27688
- /* @__PURE__ */ jsxs(
27917
+ /* @__PURE__ */ jsx(
27689
27918
  "text",
27690
27919
  {
27691
27920
  x: width / 2,
@@ -27695,10 +27924,7 @@ function PricingTierReadout({
27695
27924
  textAnchor: "middle",
27696
27925
  fill: "#ffffff",
27697
27926
  style: { userSelect: "none" },
27698
- children: [
27699
- "Get ",
27700
- planName || "Plan"
27701
- ]
27927
+ children: \u5F15\u304F("readout.pricing.get", { name: \u898B\u305B\u308B\u540D\u524D })
27702
27928
  }
27703
27929
  )
27704
27930
  ]
@@ -27764,12 +27990,12 @@ function CouponCodeReadout({
27764
27990
  fill: applied ? colorApplied : "#94a3b8",
27765
27991
  fontFamily: "monospace",
27766
27992
  style: { userSelect: "none" },
27767
- children: code || "ENTER CODE"
27993
+ children: code || /* @__PURE__ */ jsx(\u5B57, { k: "readout.coupon.placeholder" })
27768
27994
  }
27769
27995
  ),
27770
27996
  applied ? /* @__PURE__ */ jsxs("g", { "data-cdl-coupon-applied": "1", children: [
27771
27997
  /* @__PURE__ */ jsx("rect", { x: boxW + 12, y: 10, width: 90, height: height - 20, fill: colorApplied, rx: 4 }),
27772
- /* @__PURE__ */ jsxs(
27998
+ /* @__PURE__ */ jsx(
27773
27999
  "text",
27774
28000
  {
27775
28001
  x: boxW + 57,
@@ -27779,11 +28005,7 @@ function CouponCodeReadout({
27779
28005
  textAnchor: "middle",
27780
28006
  fill: "#ffffff",
27781
28007
  style: { userSelect: "none" },
27782
- children: [
27783
- "-",
27784
- discountPct,
27785
- "% off"
27786
- ]
28008
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.coupon.off", v: { pct: discountPct } })
27787
28009
  }
27788
28010
  )
27789
28011
  ] }) : /* @__PURE__ */ jsxs("g", { "data-cdl-coupon-empty": "1", children: [
@@ -27798,7 +28020,7 @@ function CouponCodeReadout({
27798
28020
  textAnchor: "middle",
27799
28021
  fill: "#ffffff",
27800
28022
  style: { userSelect: "none" },
27801
- children: "Apply"
28023
+ children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.coupon.apply" })
27802
28024
  }
27803
28025
  )
27804
28026
  ] })
@@ -27833,6 +28055,7 @@ function ArticlePreviewReadout({
27833
28055
  const width = 300;
27834
28056
  const height = 116;
27835
28057
  const thumbW = 80;
28058
+ const [\u629C\u7C8B\u306E\u4E00\u884C\u76EE, \u629C\u7C8B\u306E\u6B8B\u308A] = \u6841\u3067\u5272\u308B(excerpt, 28);
27836
28059
  return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-article-preview", "data-cdl-readout": id, children: [
27837
28060
  /* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
27838
28061
  /* @__PURE__ */ jsxs(
@@ -27869,19 +28092,16 @@ function ArticlePreviewReadout({
27869
28092
  style: { userSelect: "none" },
27870
28093
  children: [
27871
28094
  /* @__PURE__ */ jsx("title", { children: title }),
27872
- title.length > 26 ? `${title.slice(0, 25)}\u2026` : title
28095
+ \u6841\u3067\u7701\u304F(title, 26)
27873
28096
  ]
27874
28097
  }
27875
28098
  ),
27876
28099
  /* @__PURE__ */ jsxs("text", { x: thumbW + 20, y: 44, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: [
27877
28100
  /* @__PURE__ */ jsx("title", { children: excerpt }),
27878
- excerpt.length > 28 ? `${excerpt.slice(0, 27)}\u2026` : excerpt
27879
- ] }),
27880
- /* @__PURE__ */ jsx("text", { x: thumbW + 20, y: 60, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: excerpt.length > 56 ? `${excerpt.slice(28, 55)}\u2026` : excerpt.slice(28, 56) }),
27881
- /* @__PURE__ */ jsxs("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: [
27882
- "by ",
27883
- author
28101
+ \u629C\u7C8B\u306E\u4E00\u884C\u76EE
27884
28102
  ] }),
28103
+ /* @__PURE__ */ jsx("text", { x: thumbW + 20, y: 60, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: \u6841\u3067\u7701\u304F(\u629C\u7C8B\u306E\u6B8B\u308A, 28) }),
28104
+ /* @__PURE__ */ jsx("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsx(\u5B57, { k: "readout.article.by", v: { author } }) }),
27885
28105
  /* @__PURE__ */ jsx("text", { x: width - 8, y: height - 14, fontSize: 10, textAnchor: "end", fill: "#94a3b8", style: { userSelect: "none" }, children: timeAgo })
27886
28106
  ]
27887
28107
  }
@@ -27932,7 +28152,7 @@ function TocNavReadout({
27932
28152
  shown.map((it, i) => {
27933
28153
  const y = 4 + i * rowH;
27934
28154
  const indent = 12 + it.level * 16;
27935
- const displayT = it.title.length > 30 ? `${it.title.slice(0, 29)}\u2026` : it.title;
28155
+ const displayT = \u6841\u3067\u7701\u304F(it.title, 30);
27936
28156
  return /* @__PURE__ */ jsxs("g", { "data-cdl-toc-item": i, children: [
27937
28157
  it.active ? /* @__PURE__ */ jsx("rect", { x: 4, y, width: 3, height: rowH - 4, fill: colorActive, rx: 1 }) : null,
27938
28158
  /* @__PURE__ */ jsxs(