@cardenelabs/cdl 0.58.0 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.cjs CHANGED
@@ -430,7 +430,147 @@ var en = {
430
430
  /** `shape-api-gateway` の 2 行目の宛先 */
431
431
  "apiGateway.orders": "/orders",
432
432
  /** `shape-api-gateway` の 3 行目の宛先 */
433
- "apiGateway.session": "/session"
433
+ "apiGateway.session": "/session",
434
+ // 読み出し (`readout.*`) と入力欄の固定の字 (#849)。
435
+ // `{名前}` は描く時に値を差し込む位置 (`字を差し込む`)。 語順が言語で変わるので、位置ごと辞書に持つ
436
+ /** 配列を描く読み出しで、値が空の時の字 */
437
+ "readout.empty": "empty",
438
+ /** `sparkline` で点がまだ無い時の字 */
439
+ "readout.sparkline.waiting": "waiting",
440
+ /** 時の流れの入力欄の速さ */
441
+ "input.timeline.speed": "{speed}x",
442
+ /** 時の流れの入力欄の経過と長さ (秒) */
443
+ "input.timeline.time": "{t}s / {d}s",
444
+ /** `sequence-timeline` の点の見出し */
445
+ "readout.sequenceTimeline.title": "{name}: t={t}",
446
+ /** `bubble-chart` の泡の見出し */
447
+ "readout.bubbleChart.title": "({x}, {y}) r={r}",
448
+ /** `calendar-heatmap` の升目の見出し (`i` は 0 から) */
449
+ "readout.calendarHeatmap.title": "day {i}: {v}",
450
+ /** `candlestick` の足の見出し (始値 / 高値 / 安値 / 終値) */
451
+ "readout.candlestick.title": "O:{o} H:{h} L:{l} C:{c}",
452
+ /** `slope` の左の目盛 */
453
+ "readout.slope.before": "before",
454
+ /** `slope` の右の目盛 */
455
+ "readout.slope.after": "after",
456
+ /** `bullet-chart` の実績の見出し */
457
+ "readout.bulletChart.actual": "actual: {v}",
458
+ /** `bullet-chart` の目標の見出し */
459
+ "readout.bulletChart.target": "target: {v}",
460
+ /** `rating` の塗った星の見出し */
461
+ "readout.rating.full": "full",
462
+ /** `rating` の半分塗った星の見出し */
463
+ "readout.rating.half": "half",
464
+ /** `rating` の塗っていない星の見出し */
465
+ "readout.rating.empty": "empty",
466
+ /** `price-tag` の割引額 */
467
+ "readout.priceTag.save": "You save {amount}",
468
+ /** `confidence-meter` の低い帯の名前 */
469
+ "readout.confidence.low": "low",
470
+ /** `confidence-meter` の中ほどの帯の名前 */
471
+ "readout.confidence.mid": "mid",
472
+ /** `confidence-meter` の高い帯の名前 */
473
+ "readout.confidence.high": "high",
474
+ /** 並べきれなかった件数 (`user-stack` / `kanban-board` / `user-presence`) */
475
+ "readout.more": "+{n} more",
476
+ /** `video-card` の再生数 */
477
+ "readout.videoCard.views": "{v} views",
478
+ /** `attendance-grid` の角の見出し */
479
+ "readout.attendance.corner": "day",
480
+ /** `calendar-month` の曜日 (日曜) */
481
+ "readout.weekday.0": "Sun",
482
+ /** `calendar-month` の曜日 (月曜) */
483
+ "readout.weekday.1": "Mon",
484
+ /** `calendar-month` の曜日 (火曜) */
485
+ "readout.weekday.2": "Tue",
486
+ /** `calendar-month` の曜日 (水曜) */
487
+ "readout.weekday.3": "Wed",
488
+ /** `calendar-month` の曜日 (木曜) */
489
+ "readout.weekday.4": "Thu",
490
+ /** `calendar-month` の曜日 (金曜) */
491
+ "readout.weekday.5": "Fri",
492
+ /** `calendar-month` の曜日 (土曜) */
493
+ "readout.weekday.6": "Sat",
494
+ /** `rating-thumb` の賛成の割合と票数 */
495
+ "readout.ratingThumb.summary": "{pct}% up \xB7 {total} votes",
496
+ /** `kpi-trend-tile` の前の期間の値 */
497
+ "readout.kpiTrend.prev": "prev {v}",
498
+ /** `quick-poll-emoji` の票の合計 */
499
+ "readout.poll.total": "total {n}",
500
+ /** `thread-summary` の参加者の数 */
501
+ "readout.thread.participants": "{n} participants",
502
+ /** `thread-summary` の最後に書いた人 */
503
+ "readout.thread.last": "last: {name}",
504
+ /** `read-receipt` の送信した段 */
505
+ "readout.readReceipt.sent": "sent",
506
+ /** `read-receipt` の相手に届いた段 */
507
+ "readout.readReceipt.delivered": "delivered",
508
+ /** `read-receipt` の読まれた段 */
509
+ "readout.readReceipt.read": "read",
510
+ /** `password-strength` の段階 0 */
511
+ "readout.password.0": "too weak",
512
+ /** `password-strength` の段階 1 */
513
+ "readout.password.1": "weak",
514
+ /** `password-strength` の段階 2 */
515
+ "readout.password.2": "fair",
516
+ /** `password-strength` の段階 3 */
517
+ "readout.password.3": "good",
518
+ /** `password-strength` の段階 4 */
519
+ "readout.password.4": "strong",
520
+ /** `file-dropzone` で取り込んだ後の字 */
521
+ "readout.dropzone.uploaded": "uploaded",
522
+ /** `file-dropzone` の空の時の 1 行目 */
523
+ "readout.dropzone.drop": "\u2B06 Drop file here",
524
+ /** `file-dropzone` の空の時の 2 行目 */
525
+ "readout.dropzone.browse": "or click to browse",
526
+ /** `log-stream` の重さ 0 (調べるための詳細) */
527
+ "readout.log.0": "DBG",
528
+ /** `log-stream` の重さ 1 (知らせ) */
529
+ "readout.log.1": "INF",
530
+ /** `log-stream` の重さ 2 (警告) */
531
+ "readout.log.2": "WRN",
532
+ /** `log-stream` の重さ 3 (異常) */
533
+ "readout.log.3": "ERR",
534
+ /** `cart-summary` の点数 */
535
+ "readout.cart.items": "Items",
536
+ /** `cart-summary` の小計 */
537
+ "readout.cart.subtotal": "Subtotal",
538
+ /** `cart-summary` の送料 */
539
+ "readout.cart.shipping": "Shipping",
540
+ /** `cart-summary` の合計 */
541
+ "readout.cart.total": "Total",
542
+ /** `pricing-tier` で名前が空の時の名前 */
543
+ "readout.pricing.plan": "Plan",
544
+ /** `pricing-tier` の価格の後ろ */
545
+ "readout.pricing.perMonth": "per month",
546
+ /** `pricing-tier` の押す札 */
547
+ "readout.pricing.get": "Get {name}",
548
+ /** `coupon-code` で番号が空の時の字 */
549
+ "readout.coupon.placeholder": "ENTER CODE",
550
+ /** `coupon-code` の割引の割合 */
551
+ "readout.coupon.off": "-{pct}% off",
552
+ /** `coupon-code` の押す札 */
553
+ "readout.coupon.apply": "Apply",
554
+ /** `article-preview` の書いた人 */
555
+ "readout.article.by": "by {author}",
556
+ /** `priority-badge` の高い優先度の表示 (値は `high` / `2` で読む) */
557
+ "readout.priority.high": "HIGH",
558
+ /** `priority-badge` の中ほどの優先度の表示 */
559
+ "readout.priority.med": "MED",
560
+ /** `priority-badge` の低い優先度の表示 (値は `low` / `0` で読む) */
561
+ "readout.priority.low": "LOW",
562
+ /** `kanban-board` の列の見出し (値は `todo` で読む) */
563
+ "readout.kanban.todo": "Todo",
564
+ /** `kanban-board` の列の見出し (値は `inprogress` で読む) */
565
+ "readout.kanban.inprogress": "In Progress",
566
+ /** `kanban-board` の列の見出し (値は `done` で読む) */
567
+ "readout.kanban.done": "Done",
568
+ /** `traffic-light` の赤の灯の見出し (値は `red` で読む) */
569
+ "readout.trafficLight.red": "red",
570
+ /** `traffic-light` の黄の灯の見出し (値は `yellow` / `amber` で読む) */
571
+ "readout.trafficLight.yellow": "yellow",
572
+ /** `traffic-light` の緑の灯の見出し (値は `green` で読む) */
573
+ "readout.trafficLight.green": "green"
434
574
  };
435
575
  var ja = {
436
576
  "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
@@ -466,13 +606,85 @@ var ja = {
466
606
  "apiGateway.delete": "DELETE",
467
607
  "apiGateway.users": "/\u5229\u7528\u8005",
468
608
  "apiGateway.orders": "/\u6CE8\u6587",
469
- "apiGateway.session": "/\u63A5\u7D9A"
609
+ "apiGateway.session": "/\u63A5\u7D9A",
610
+ "readout.empty": "\u306A\u3057",
611
+ "readout.sparkline.waiting": "\u5F85\u6A5F\u4E2D",
612
+ "input.timeline.speed": "{speed}\u500D",
613
+ "input.timeline.time": "{t}\u79D2 / {d}\u79D2",
614
+ "readout.sequenceTimeline.title": "{name}: \u6642\u523B {t}",
615
+ "readout.bubbleChart.title": "({x}, {y}) \u534A\u5F84 {r}",
616
+ "readout.calendarHeatmap.title": "{i} \u65E5\u76EE: {v}",
617
+ "readout.candlestick.title": "\u59CB {o} \u9AD8 {h} \u5B89 {l} \u7D42 {c}",
618
+ "readout.slope.before": "\u524D",
619
+ "readout.slope.after": "\u5F8C",
620
+ "readout.bulletChart.actual": "\u5B9F\u7E3E: {v}",
621
+ "readout.bulletChart.target": "\u76EE\u6A19: {v}",
622
+ "readout.rating.full": "\u6E80",
623
+ "readout.rating.half": "\u534A\u5206",
624
+ "readout.rating.empty": "\u7A7A",
625
+ "readout.priceTag.save": "{amount} \u304A\u5F97",
626
+ "readout.confidence.low": "\u4F4E",
627
+ "readout.confidence.mid": "\u4E2D",
628
+ "readout.confidence.high": "\u9AD8",
629
+ "readout.more": "\u307B\u304B {n}",
630
+ "readout.videoCard.views": "{v} \u56DE\u8996\u8074",
631
+ "readout.attendance.corner": "\u65E5",
632
+ "readout.weekday.0": "\u65E5",
633
+ "readout.weekday.1": "\u6708",
634
+ "readout.weekday.2": "\u706B",
635
+ "readout.weekday.3": "\u6C34",
636
+ "readout.weekday.4": "\u6728",
637
+ "readout.weekday.5": "\u91D1",
638
+ "readout.weekday.6": "\u571F",
639
+ "readout.ratingThumb.summary": "\u8CDB\u6210 {pct}% \xB7 {total} \u7968",
640
+ "readout.kpiTrend.prev": "\u524D\u56DE {v}",
641
+ "readout.poll.total": "\u5408\u8A08 {n}",
642
+ "readout.thread.participants": "{n} \u4EBA",
643
+ "readout.thread.last": "\u6700\u5F8C: {name}",
644
+ "readout.readReceipt.sent": "\u9001\u4FE1\u6E08\u307F",
645
+ "readout.readReceipt.delivered": "\u914D\u4FE1\u6E08\u307F",
646
+ "readout.readReceipt.read": "\u65E2\u8AAD",
647
+ "readout.password.0": "\u5F31\u3059\u304E\u308B",
648
+ "readout.password.1": "\u5F31\u3044",
649
+ "readout.password.2": "\u666E\u901A",
650
+ "readout.password.3": "\u826F\u3044",
651
+ "readout.password.4": "\u5F37\u3044",
652
+ "readout.dropzone.uploaded": "\u53D6\u308A\u8FBC\u307F\u6E08\u307F",
653
+ "readout.dropzone.drop": "\u2B06 \u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F",
654
+ "readout.dropzone.browse": "\u307E\u305F\u306F\u62BC\u3057\u3066\u9078\u3076",
655
+ "readout.log.0": "\u8A73\u7D30",
656
+ "readout.log.1": "\u60C5\u5831",
657
+ "readout.log.2": "\u8B66\u544A",
658
+ "readout.log.3": "\u7570\u5E38",
659
+ "readout.cart.items": "\u70B9\u6570",
660
+ "readout.cart.subtotal": "\u5C0F\u8A08",
661
+ "readout.cart.shipping": "\u9001\u6599",
662
+ "readout.cart.total": "\u5408\u8A08",
663
+ "readout.pricing.plan": "\u30D7\u30E9\u30F3",
664
+ "readout.pricing.perMonth": "\u6708\u984D",
665
+ "readout.pricing.get": "{name}\u3092\u9078\u3076",
666
+ "readout.coupon.placeholder": "\u30B3\u30FC\u30C9\u3092\u5165\u529B",
667
+ "readout.coupon.off": "-{pct}% \u5F15\u304D",
668
+ "readout.coupon.apply": "\u9069\u7528",
669
+ "readout.article.by": "\u6587: {author}",
670
+ "readout.priority.high": "\u9AD8",
671
+ "readout.priority.med": "\u4E2D",
672
+ "readout.priority.low": "\u4F4E",
673
+ "readout.kanban.todo": "\u672A\u7740\u624B",
674
+ "readout.kanban.inprogress": "\u9032\u884C\u4E2D",
675
+ "readout.kanban.done": "\u5B8C\u4E86",
676
+ "readout.trafficLight.red": "\u8D64",
677
+ "readout.trafficLight.yellow": "\u9EC4",
678
+ "readout.trafficLight.green": "\u7DD1"
470
679
  };
471
680
  var CDL_TEXT = { en, ja };
472
681
  function \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang) {
473
682
  const \u8A00\u8A9E = lang ?? "en";
474
683
  return (key) => CDL_TEXT[\u8A00\u8A9E][key];
475
684
  }
685
+ function \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(template, values) {
686
+ return template.replace(/\{(\w+)\}/g, (whole, name) => name in values ? String(values[name]) : whole);
687
+ }
476
688
 
477
689
  // src/layout/clearance-constants.ts
478
690
  var CLEARANCE_NODE_LABEL = 32;
@@ -11024,12 +11236,12 @@ function \u5272\u308B\u5019\u88DC(text) {
11024
11236
  \u7A7A\u767D.push([text.slice(0, m.index).trim(), text.slice(m.index + m[0].length).trim()]);
11025
11237
  }
11026
11238
  if (\u7A7A\u767D.length > 0) return \u7A7A\u767D.filter(\u5165\u3063\u3066\u3044\u308B);
11027
- const \u5B57 = [];
11239
+ const \u5B572 = [];
11028
11240
  const \u4E26\u3073 = [...text];
11029
11241
  for (let i = 1; i < \u4E26\u3073.length; i += 1) {
11030
- \u5B57.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
11242
+ \u5B572.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
11031
11243
  }
11032
- return \u5B57.filter(\u5165\u3063\u3066\u3044\u308B);
11244
+ return \u5B572.filter(\u5165\u3063\u3066\u3044\u308B);
11033
11245
  }
11034
11246
  function \u5165\u3063\u3066\u3044\u308B([\u5DE6, \u53F3]) {
11035
11247
  return \u5DE6 !== "" && \u53F3 !== "";
@@ -13385,9 +13597,9 @@ function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u
13385
13597
  \u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })
13386
13598
  };
13387
13599
  }
13388
- function \u53CE\u3081\u308B\u7D1A(\u5B57, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
13600
+ function \u53CE\u3081\u308B\u7D1A(\u5B572, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
13389
13601
  let \u7D1A = \u521D\u671F;
13390
- while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B57, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
13602
+ while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B572, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
13391
13603
  return \u7D1A;
13392
13604
  }
13393
13605
  function \u5F27\u306E\u90533(cx, cy, r, \u5272\u5408) {
@@ -20010,6 +20222,23 @@ function warn(message) {
20010
20222
  console.warn(`[cdl event-handler] ${message}`);
20011
20223
  }
20012
20224
  }
20225
+ var \u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E = react.createContext("en");
20226
+ function use\u5B57\u5F15() {
20227
+ const lang = react.useContext(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E);
20228
+ return (key, values) => values ? \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(CDL_TEXT[lang][key], values) : CDL_TEXT[lang][key];
20229
+ }
20230
+ function \u5B57({ k, v }) {
20231
+ const \u5F15\u304F = use\u5B57\u5F15();
20232
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: \u5F15\u304F(k, v) });
20233
+ }
20234
+ function \u5B57\u306E\u898B\u51FA\u3057({
20235
+ k,
20236
+ v,
20237
+ \u524D = ""
20238
+ }) {
20239
+ const \u5F15\u304F = use\u5B57\u5F15();
20240
+ return /* @__PURE__ */ jsxRuntime.jsx("title", { children: k === void 0 ? "" : `${\u524D}${\u5F15\u304F(k, v)}` });
20241
+ }
20013
20242
  function createInteractiveSignalsAccessor(diagram, signals, formula, scroll) {
20014
20243
  const kindByInputId = /* @__PURE__ */ new Map();
20015
20244
  for (const inp of diagram.inputs ?? []) {
@@ -20324,20 +20553,23 @@ function useInteractiveIntegration(diagram, options = {}) {
20324
20553
  const readouts = diagram.readouts ?? [];
20325
20554
  if (inputs.length === 0 && scrolls.length === 0 && formulasList.length === 0 && readouts.length === 0)
20326
20555
  return null;
20327
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
20328
- inputs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
20329
- formulasList.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
20330
- FormulaReadout,
20331
- {
20332
- id: f.id,
20333
- expression: f.expression,
20334
- value: stateOverrides[f.id]
20335
- },
20336
- f.id
20337
- )) }),
20338
- scrolls.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsxRuntime.jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
20339
- readouts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
20340
- ] });
20556
+ return (
20557
+ // 操作部の中の読み出しと入力欄へ、図の言語を届ける (#849)。 型の外の値は英語に落ちる
20558
+ /* @__PURE__ */ jsxRuntime.jsx(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E.Provider, { value: resolveLang(diagram.lang), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
20559
+ inputs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
20560
+ formulasList.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
20561
+ FormulaReadout,
20562
+ {
20563
+ id: f.id,
20564
+ expression: f.expression,
20565
+ value: stateOverrides[f.id]
20566
+ },
20567
+ f.id
20568
+ )) }),
20569
+ scrolls.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsxRuntime.jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
20570
+ readouts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
20571
+ ] }) })
20572
+ );
20341
20573
  }, [diagram, signals, stateOverrides, mergedStateValues]);
20342
20574
  return { stateOverrides, panel, svgRef, containerRef };
20343
20575
  }
@@ -22198,7 +22430,7 @@ function SparklineReadout({
22198
22430
  if (points.length < 2) {
22199
22431
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sparkline", "data-cdl-readout": id, children: [
22200
22432
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
22201
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? "waiting" : "\u2014" }),
22433
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.sparkline.waiting" }) : "\u2014" }),
22202
22434
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-sparkline-value", children: Number.isFinite(value) ? value : "\u2014" })
22203
22435
  ] });
22204
22436
  }
@@ -22461,27 +22693,24 @@ function TimelineWidget({
22461
22693
  className: "cdl-ip-timeline-scrubber"
22462
22694
  }
22463
22695
  ),
22464
- /* @__PURE__ */ jsxRuntime.jsxs(
22696
+ /* @__PURE__ */ jsxRuntime.jsx(
22465
22697
  "button",
22466
22698
  {
22467
22699
  type: "button",
22468
22700
  className: "cdl-ip-timeline-btn cdl-ip-timeline-speed",
22469
22701
  onClick: cycleSpeed,
22470
22702
  "aria-label": "speed",
22471
- children: [
22472
- speed,
22473
- "x"
22474
- ]
22703
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "input.timeline.speed", v: { speed } })
22475
22704
  }
22476
22705
  )
22477
22706
  ] }),
22478
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-timeline-time", children: [
22479
- (progress * (input.duration / 1e3)).toFixed(1),
22480
- "s /",
22481
- " ",
22482
- (input.duration / 1e3).toFixed(1),
22483
- "s"
22484
- ] })
22707
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-timeline-time", children: /* @__PURE__ */ jsxRuntime.jsx(
22708
+ \u5B57,
22709
+ {
22710
+ k: "input.timeline.time",
22711
+ v: { t: (progress * (input.duration / 1e3)).toFixed(1), d: (input.duration / 1e3).toFixed(1) }
22712
+ }
22713
+ ) })
22485
22714
  ] });
22486
22715
  }
22487
22716
  function RangeWidget({
@@ -22719,7 +22948,7 @@ function ArrayBarReadout({
22719
22948
  const range = max - min || 1;
22720
22949
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-array-bar", "data-cdl-readout": id, children: [
22721
22950
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
22722
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : arr.map((v, i) => {
22951
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : arr.map((v, i) => {
22723
22952
  const h = Math.max(0, Math.min(1, (v - min) / range));
22724
22953
  return /* @__PURE__ */ jsxRuntime.jsx(
22725
22954
  "span",
@@ -22796,7 +23025,7 @@ function StackedBarReadout({
22796
23025
  const range = max - min || 1;
22797
23026
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-stacked-bar", "data-cdl-readout": id, children: [
22798
23027
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
22799
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : Array.from({ length: n }).map((_, i) => {
23028
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : Array.from({ length: n }).map((_, i) => {
22800
23029
  const va = arrA[i] ?? 0;
22801
23030
  const vb = arrB[i] ?? 0;
22802
23031
  const hA = Math.max(0, Math.min(1, (va - min) / range));
@@ -22891,7 +23120,7 @@ function MatrixReadout({
22891
23120
  };
22892
23121
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-matrix", "data-cdl-readout": id, children: [
22893
23122
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
22894
- rows === 0 || cols === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx(
23123
+ rows === 0 || cols === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx(
22895
23124
  "svg",
22896
23125
  {
22897
23126
  className: "cdl-ip-readout-matrix-svg",
@@ -22949,7 +23178,7 @@ function ProgressGroupReadout({
22949
23178
  const labelArr = labels ? safeParseArray(labels).map(String) : [];
22950
23179
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-progress-group", "data-cdl-readout": id, children: [
22951
23180
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
22952
- arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
23181
+ arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
22953
23182
  const pct = Math.max(0, Math.min(100, v / (max || 1) * 100));
22954
23183
  const rowLabel = labelArr[i] ?? String(i + 1);
22955
23184
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-progress-group-row", children: [
@@ -23011,7 +23240,7 @@ function SequenceTimelineReadout({
23011
23240
  const xFor = (t) => pad + (Math.max(min, Math.min(max, t)) - min) / range * (viewW - pad * 2);
23012
23241
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sequence-timeline", "data-cdl-readout": id, children: [
23013
23242
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23014
- events.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs(
23243
+ events.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs(
23015
23244
  "svg",
23016
23245
  {
23017
23246
  className: "cdl-ip-readout-sequence-timeline-svg",
@@ -23025,7 +23254,7 @@ function SequenceTimelineReadout({
23025
23254
  events.map((e, i) => {
23026
23255
  const x = xFor(e.t);
23027
23256
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-event-marker": e.name, children: [
23028
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${e.name}: t=${e.t}` }) }),
23257
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.sequenceTimeline.title", v: { name: e.name, t: e.t } }) }),
23029
23258
  /* @__PURE__ */ jsxRuntime.jsx("text", { x, y: trackY - 12, textAnchor: sequenceLabelAnchor(x, e.name, 10, viewW), fontSize: 10, fill: "var(--v4-ink, #1a1f2a)", children: e.name }),
23030
23259
  /* @__PURE__ */ jsxRuntime.jsx("text", { x, y: trackY + 18, textAnchor: "middle", fontSize: 9, fill: "var(--v4-mute, #64748b)", children: e.t })
23031
23260
  ] }, i);
@@ -23068,7 +23297,7 @@ function RadarReadout({
23068
23297
  const polygon = points.length ? points.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(" ") : "";
23069
23298
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-radar", "data-cdl-readout": id, children: [
23070
23299
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23071
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23300
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23072
23301
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsxRuntime.jsx(
23073
23302
  "polygon",
23074
23303
  {
@@ -23130,14 +23359,14 @@ function BubbleChartReadout({
23130
23359
  const maxCircleR = 18;
23131
23360
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-bubble-chart", "data-cdl-readout": id, children: [
23132
23361
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23133
- bubbles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23362
+ bubbles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23134
23363
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: pad, x2: viewW - pad, y1: viewH - pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
23135
23364
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: pad, x2: pad, y1: pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
23136
23365
  bubbles.map((b, i) => {
23137
23366
  const cx = pad + (Math.max(xMin, Math.min(xMax, b.x)) - xMin) / xRange * w;
23138
23367
  const cy = viewH - pad - (Math.max(yMin, Math.min(yMax, b.y)) - yMin) / yRange * h;
23139
23368
  const r = 4 + (Math.max(rMin, Math.min(rMax, b.r)) - rMin) / rRange * (maxCircleR - 4);
23140
- return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `(${b.x}, ${b.y}) r=${b.r}` }) }, i);
23369
+ return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bubbleChart.title", v: { x: b.x, y: b.y, r: b.r } }) }, i);
23141
23370
  })
23142
23371
  ] })
23143
23372
  ] });
@@ -23160,7 +23389,7 @@ function DonutReadout({
23160
23389
  let acc = 0;
23161
23390
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-donut", "data-cdl-readout": id, children: [
23162
23391
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23163
- arr.length === 0 || total === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
23392
+ arr.length === 0 || total === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
23164
23393
  const from = acc;
23165
23394
  const to = acc + v / total;
23166
23395
  acc = to;
@@ -23221,7 +23450,7 @@ function CalendarHeatmapReadout({
23221
23450
  height: cellSize,
23222
23451
  rx: 2,
23223
23452
  fill,
23224
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `day ${i}: ${v}` })
23453
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.calendarHeatmap.title", v: { i, v } })
23225
23454
  },
23226
23455
  i
23227
23456
  );
@@ -23341,7 +23570,7 @@ function CandlestickReadout({
23341
23570
  const candleW = candles.length === 0 ? 0 : Math.max(3, (w - (candles.length - 1) * 3) / candles.length);
23342
23571
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-candlestick", "data-cdl-readout": id, children: [
23343
23572
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23344
- candles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
23573
+ candles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
23345
23574
  const cx = pad + i * (candleW + 3) + candleW / 2;
23346
23575
  const yHigh = yFor(cd.h);
23347
23576
  const yLow = yFor(cd.l);
@@ -23362,7 +23591,7 @@ function CandlestickReadout({
23362
23591
  height: bodyH,
23363
23592
  fill: isUp ? color : color,
23364
23593
  fillOpacity: isUp ? 1 : 0.85,
23365
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `O:${cd.o} H:${cd.h} L:${cd.l} C:${cd.c}` })
23594
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.candlestick.title", v: { o: cd.o, h: cd.h, l: cd.l, c: cd.c } })
23366
23595
  }
23367
23596
  )
23368
23597
  ] }, i);
@@ -23396,7 +23625,7 @@ function VennReadout({
23396
23625
  const cxB = viewW / 2 + gap / 2;
23397
23626
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-venn", "data-cdl-readout": id, children: [
23398
23627
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23399
- sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23628
+ sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23400
23629
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cxA, cy, r: rA, fill: colorA, fillOpacity: 0.4, stroke: colorA, strokeWidth: 1.5 }),
23401
23630
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cxB, cy, r: rB, fill: colorB, fillOpacity: 0.4, stroke: colorB, strokeWidth: 1.5 }),
23402
23631
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cxA - rA + 8, y: cy - 4, fontSize: 11, fill: "var(--v4-ink, #1a1f2a)", fontWeight: 600, children: labelA }),
@@ -23447,11 +23676,11 @@ function SlopeReadout({
23447
23676
  const yFor = (v) => pad + (1 - (Math.max(min, Math.min(max, v)) - min) / range) * h;
23448
23677
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-slope", "data-cdl-readout": id, children: [
23449
23678
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23450
- slopes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23679
+ slopes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23451
23680
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: xL, x2: xL, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
23452
23681
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: xR, x2: xR, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
23453
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "before" }),
23454
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "after" }),
23682
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.slope.before" }) }),
23683
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.slope.after" }) }),
23455
23684
  slopes.map((s, i) => {
23456
23685
  const yB = yFor(s.before);
23457
23686
  const yA = yFor(s.after);
@@ -23498,7 +23727,7 @@ function FunnelReadout({
23498
23727
  const [bR, bG, bB] = hexToRgb2(colorBottom);
23499
23728
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-funnel", "data-cdl-readout": id, children: [
23500
23729
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23501
- stages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
23730
+ stages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
23502
23731
  const ratio = i / Math.max(1, stages.length - 1);
23503
23732
  const w = maxCount > 0 ? s.count / maxCount * (viewW - 12) : 0;
23504
23733
  const yTop = i * stageH + 2;
@@ -23560,7 +23789,7 @@ function GanttReadout({
23560
23789
  const xFor = (v) => labelW + (Math.max(min, Math.min(max, v)) - min) / range * (viewW - labelW - pad);
23561
23790
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-gantt", "data-cdl-readout": id, children: [
23562
23791
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23563
- tasks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
23792
+ tasks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
23564
23793
  const y = pad + i * rowH;
23565
23794
  const x1 = xFor(t.start);
23566
23795
  const x2 = xFor(t.start + t.duration);
@@ -23651,7 +23880,7 @@ function TreemapReadout({
23651
23880
  }
23652
23881
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-treemap", "data-cdl-readout": id, children: [
23653
23882
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23654
- rects.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
23883
+ rects.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
23655
23884
  /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx("title", { children: `${r.name}: ${r.size}` }) }),
23656
23885
  r.w > 40 && r.h > 20 ? /* @__PURE__ */ jsxRuntime.jsx("text", { x: r.x + 6, y: r.y + 14, fontSize: 10, fill: "#fff", fontWeight: 600, children: r.name }) : null
23657
23886
  ] }, i)) })
@@ -23717,7 +23946,7 @@ function SankeyReadout({
23717
23946
  const rightUsed = {};
23718
23947
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sankey", "data-cdl-readout": id, children: [
23719
23948
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23720
- flows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23949
+ flows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23721
23950
  leftNodes.map((n, i) => {
23722
23951
  const p = leftPos[n.name];
23723
23952
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
@@ -23779,7 +24008,7 @@ function PolarAreaReadout({
23779
24008
  const maxR = Math.min(cx, cy) - 20;
23780
24009
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-polar-area", "data-cdl-readout": id, children: [
23781
24010
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23782
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24011
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23783
24012
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: maxR * t, fill: "none", stroke: "rgba(148,163,184,0.2)", strokeWidth: 1 }, t)),
23784
24013
  arr.map((v, i) => {
23785
24014
  const ratio = Math.sqrt(Math.max(0, Math.min(max, v)) / (max || 1));
@@ -23825,7 +24054,7 @@ function StepIndicatorReadout({
23825
24054
  const cy = viewH / 2 - 2;
23826
24055
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-step-indicator", "data-cdl-readout": id, children: [
23827
24056
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23828
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24057
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
23829
24058
  n > 1 ? Array.from({ length: n - 1 }).map((_, i) => {
23830
24059
  const x1 = pad + i * step;
23831
24060
  const x2 = pad + (i + 1) * step;
@@ -23915,8 +24144,8 @@ function BulletChartReadout({
23915
24144
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad, width: badX - pad, height: trackH, fill: "rgba(239,68,68,0.25)", rx: 2 }),
23916
24145
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: badX, y: pad, width: avgX - badX, height: trackH, fill: "rgba(234,179,8,0.25)" }),
23917
24146
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: avgX, y: pad, width: pad + w - avgX, height: trackH, fill: "rgba(34,197,94,0.25)" }),
23918
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `actual: ${safeActual}` }) }),
23919
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `target: ${safeTarget}` }) })
24147
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.actual", v: { v: safeActual } }) }),
24148
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.target", v: { v: safeTarget } }) })
23920
24149
  ] })
23921
24150
  ] });
23922
24151
  }
@@ -23971,7 +24200,7 @@ function LeaderboardReadout({
23971
24200
  const medals = ["#eab308", "#94a3b8", "#c2410c"];
23972
24201
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-leaderboard", "data-cdl-readout": id, children: [
23973
24202
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
23974
- sorted.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
24203
+ sorted.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
23975
24204
  const pct = topMax > 0 ? it.value / topMax * 100 : 0;
23976
24205
  const rankColor = i < medals.length ? medals[i] : "#cbd5e1";
23977
24206
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-leaderboard-row", children: [
@@ -24022,7 +24251,7 @@ function TrafficLightReadout({
24022
24251
  style: {
24023
24252
  filter: isActive ? `drop-shadow(0 0 6px ${colors[i]})` : void 0
24024
24253
  },
24025
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: isActive ? ["red", "yellow", "green"][i] : "" })
24254
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: isActive ? ["readout.trafficLight.red", "readout.trafficLight.yellow", "readout.trafficLight.green"][i] : void 0 })
24026
24255
  },
24027
24256
  i
24028
24257
  );
@@ -24061,7 +24290,7 @@ function TagCloudReadout({
24061
24290
  const sizeFor = (w) => minSize + (w - minW) / range * (maxSize - minSize);
24062
24291
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-tag-cloud", "data-cdl-readout": id, children: [
24063
24292
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24064
- tags.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
24293
+ tags.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
24065
24294
  "span",
24066
24295
  {
24067
24296
  className: "cdl-ip-readout-tag-cloud-tag",
@@ -24098,7 +24327,7 @@ function ActivityFeedReadout({
24098
24327
  const shown = events.slice(0, max);
24099
24328
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-activity-feed", "data-cdl-readout": id, children: [
24100
24329
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24101
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
24330
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
24102
24331
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-activity-feed-bullet", style: { background: color } }),
24103
24332
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-activity-feed-content", children: [
24104
24333
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-activity-feed-actor", children: e.actor }),
@@ -24149,7 +24378,7 @@ function RatingReadout({
24149
24378
  strokeWidth: 1
24150
24379
  }
24151
24380
  ),
24152
- isEmpty ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${i + 1}: empty` }) : /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${i + 1}: ${isFull ? "full" : "half"}` })
24381
+ isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: "readout.rating.empty" }) : /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: isFull ? "readout.rating.full" : "readout.rating.half" })
24153
24382
  ]
24154
24383
  },
24155
24384
  i
@@ -24245,7 +24474,7 @@ function ChatBubbleReadout({
24245
24474
  const shown = messages.slice(0, max);
24246
24475
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-chat-bubble", "data-cdl-readout": id, children: [
24247
24476
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24248
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
24477
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
24249
24478
  "li",
24250
24479
  {
24251
24480
  className: `cdl-ip-readout-chat-bubble-row ${m.isSelf ? "self" : "other"}`,
@@ -24337,7 +24566,7 @@ function ChecklistReadout({
24337
24566
  const pct = items.length === 0 ? 0 : Math.round(done / items.length * 100);
24338
24567
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-checklist", "data-cdl-readout": id, children: [
24339
24568
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24340
- items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24569
+ items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24341
24570
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-checklist-progress", children: [
24342
24571
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-checklist-progress-text", children: [
24343
24572
  done,
@@ -24448,11 +24677,7 @@ function PriceTagReadout({
24448
24677
  "%"
24449
24678
  ] }) : null
24450
24679
  ] }),
24451
- savings > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-price-tag-savings", children: [
24452
- "You save ",
24453
- currency,
24454
- savings
24455
- ] }) : null
24680
+ savings > 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-price-tag-savings", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.priceTag.save", v: { amount: `${currency}${savings}` } }) }) : null
24456
24681
  ] });
24457
24682
  }
24458
24683
  function SpinnerReadout({
@@ -24589,6 +24814,11 @@ function StopwatchReadout({
24589
24814
  }
24590
24815
  );
24591
24816
  }
24817
+ var \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57 = {
24818
+ low: "readout.confidence.low",
24819
+ mid: "readout.confidence.mid",
24820
+ high: "readout.confidence.high"
24821
+ };
24592
24822
  function ConfidenceMeterReadout({
24593
24823
  id,
24594
24824
  label,
@@ -24621,7 +24851,7 @@ function ConfidenceMeterReadout({
24621
24851
  Math.round(safeValue),
24622
24852
  "%"
24623
24853
  ] }),
24624
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: bandLabel })
24854
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57[bandLabel] }) })
24625
24855
  ] }),
24626
24856
  /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-confidence-meter-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24627
24857
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad, width: lowX - pad, height: h, fill: "rgba(239,68,68,0.2)", rx: 2 }),
@@ -24656,7 +24886,7 @@ function ReactionBarReadout({
24656
24886
  }
24657
24887
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-reaction-bar", "data-cdl-readout": id, children: [
24658
24888
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24659
- reactions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
24889
+ reactions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
24660
24890
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-reaction-bar-emoji", children: r.emoji }),
24661
24891
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-reaction-bar-count", style: { color }, children: r.count })
24662
24892
  ] }, i)) })
@@ -24689,7 +24919,7 @@ function PillGroupReadout({
24689
24919
  }
24690
24920
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pill-group", "data-cdl-readout": id, children: [
24691
24921
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24692
- pills.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx(
24922
+ pills.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx(
24693
24923
  "span",
24694
24924
  {
24695
24925
  className: "cdl-ip-readout-pill-group-pill",
@@ -24777,7 +25007,7 @@ function MetricsGridReadout({
24777
25007
  }
24778
25008
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-metrics-grid", "data-cdl-readout": id, children: [
24779
25009
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24780
- items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
25010
+ items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
24781
25011
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-value", style: { color }, children: [
24782
25012
  m.value,
24783
25013
  m.unit ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-metrics-grid-unit", children: [
@@ -24864,7 +25094,7 @@ function IconTileReadout({
24864
25094
  }
24865
25095
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-icon-tile", "data-cdl-readout": id, children: [
24866
25096
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24867
- tiles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
25097
+ tiles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
24868
25098
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-icon", style: { background: color }, children: t.icon }),
24869
25099
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-content", children: [
24870
25100
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-value", children: t.value }),
@@ -24905,7 +25135,7 @@ function TokenListReadout({
24905
25135
  }
24906
25136
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-token-list", "data-cdl-readout": id, children: [
24907
25137
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24908
- tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
25138
+ tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
24909
25139
  const isUp = t.delta >= 0;
24910
25140
  const deltaColor = isUp ? colorUp : colorDown;
24911
25141
  const arrow = isUp ? "\u25B2" : "\u25BC";
@@ -24959,7 +25189,7 @@ function MapPinReadout({
24959
25189
  const yFor = (v) => pad + (Math.max(yMin, Math.min(yMax, v)) - yMin) / yRange * (viewH - pad * 2);
24960
25190
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-map-pin", "data-cdl-readout": id, children: [
24961
25191
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
24962
- pins.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
25192
+ pins.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
24963
25193
  /* @__PURE__ */ jsxRuntime.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 }),
24964
25194
  [0.25, 0.5, 0.75].map((t) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
24965
25195
  /* @__PURE__ */ jsxRuntime.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)" }),
@@ -24987,9 +25217,9 @@ function PriorityBadgeReadout({
24987
25217
  if (p === "high" || p === "2") level = "high";
24988
25218
  else if (p === "low" || p === "0") level = "low";
24989
25219
  const spec = {
24990
- high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "HIGH" },
24991
- med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "MED" },
24992
- low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "LOW" }
25220
+ high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "readout.priority.high" },
25221
+ med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "readout.priority.med" },
25222
+ low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "readout.priority.low" }
24993
25223
  };
24994
25224
  const cur = spec[level];
24995
25225
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-priority-badge", "data-cdl-readout": id, "data-cdl-priority": level, children: [
@@ -25002,7 +25232,7 @@ function PriorityBadgeReadout({
25002
25232
  style: { background: cur.bg, borderColor: cur.color, color: cur.color },
25003
25233
  children: [
25004
25234
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-priority-badge-icon", children: cur.icon }),
25005
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: cur.text })
25235
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: cur.text }) })
25006
25236
  ]
25007
25237
  }
25008
25238
  ),
@@ -25041,7 +25271,7 @@ function PodiumReadout({
25041
25271
  const order = [1, 0, 2];
25042
25272
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-podium", "data-cdl-readout": id, children: [
25043
25273
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25044
- podium.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
25274
+ podium.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
25045
25275
  const w = podium[rankIdx];
25046
25276
  if (!w) return null;
25047
25277
  const x = pad + colIdx * (colW + pad);
@@ -25084,7 +25314,7 @@ function PollBarReadout({
25084
25314
  const maxCount = options.length ? Math.max(...options.map((o) => o.count)) : 0;
25085
25315
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-poll-bar", "data-cdl-readout": id, children: [
25086
25316
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25087
- options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
25317
+ options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
25088
25318
  const pct = Math.round(o.count / total * 100);
25089
25319
  const isWinner = o.count === maxCount && maxCount > 0;
25090
25320
  const fillColor = isWinner ? colorWinner : color;
@@ -25119,6 +25349,7 @@ function UserStackReadout({
25119
25349
  max,
25120
25350
  size
25121
25351
  }) {
25352
+ const \u5F15\u304F = use\u5B57\u5F15();
25122
25353
  const names = safeParseArray(value).map(String);
25123
25354
  const shown = names.slice(0, max);
25124
25355
  const overflow = names.length > max;
@@ -25127,7 +25358,7 @@ function UserStackReadout({
25127
25358
  const initialsOf = (name) => name.split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0]?.toUpperCase() ?? "").join("") || "?";
25128
25359
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-user-stack", "data-cdl-readout": id, children: [
25129
25360
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25130
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
25361
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
25131
25362
  shown.map((name, i) => /* @__PURE__ */ jsxRuntime.jsx(
25132
25363
  "span",
25133
25364
  {
@@ -25155,7 +25386,7 @@ function UserStackReadout({
25155
25386
  fontSize: `${Math.round(size * 0.35)}px`,
25156
25387
  marginLeft: `-${size * 0.3}px`
25157
25388
  },
25158
- title: `+${overflowCount} more`,
25389
+ title: \u5F15\u304F("readout.more", { n: overflowCount }),
25159
25390
  children: [
25160
25391
  "+",
25161
25392
  overflowCount
@@ -25190,7 +25421,7 @@ function CommitListReadout({
25190
25421
  const shown = commits.slice(0, max);
25191
25422
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-commit-list", "data-cdl-readout": id, children: [
25192
25423
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25193
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
25424
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
25194
25425
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-sha", style: { color }, children: c.sha }),
25195
25426
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-msg", children: c.msg }),
25196
25427
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-author", children: c.author })
@@ -25270,7 +25501,7 @@ function EventLogReadout({
25270
25501
  };
25271
25502
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-event-log", "data-cdl-readout": id, children: [
25272
25503
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25273
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
25504
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
25274
25505
  const spec = severitySpec[e.severity] ?? severitySpec.info;
25275
25506
  return /* @__PURE__ */ jsxRuntime.jsxs(
25276
25507
  "li",
@@ -25313,7 +25544,7 @@ function SearchResultReadout({
25313
25544
  const shown = hits.slice(0, max);
25314
25545
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-search-result", "data-cdl-readout": id, children: [
25315
25546
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25316
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
25547
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
25317
25548
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-title", style: { color }, children: h.title }),
25318
25549
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-snippet", children: h.snippet }),
25319
25550
  h.url ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-url", children: h.url }) : null
@@ -25346,7 +25577,7 @@ function RoadmapReadout({
25346
25577
  const colors = ["#2563eb", "#22c55e", "#eab308", "#a855f7"];
25347
25578
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-roadmap", "data-cdl-readout": id, style: { minWidth: `${viewW}px` }, children: [
25348
25579
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25349
- quarters.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
25580
+ quarters.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
25350
25581
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-header", style: { background: colors[i % colors.length] }, children: q.quarter }),
25351
25582
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-roadmap-items", children: q.items.map((it, j) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "cdl-ip-readout-roadmap-item", children: it }, j)) })
25352
25583
  ] }, i)) })
@@ -25378,7 +25609,7 @@ function WeatherForecastReadout({
25378
25609
  }
25379
25610
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-weather-forecast", "data-cdl-readout": id, children: [
25380
25611
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25381
- days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
25612
+ days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
25382
25613
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-name", children: d.day }),
25383
25614
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-icon", children: d.icon }),
25384
25615
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-high", children: [
@@ -25422,17 +25653,14 @@ function VideoCardReadout({
25422
25653
  const shown = videos.slice(0, max);
25423
25654
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-video-card", "data-cdl-readout": id, children: [
25424
25655
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25425
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
25656
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
25426
25657
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-thumb", style: { background: color }, children: [
25427
25658
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-video-card-thumb-icon", children: v.emoji }),
25428
25659
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-video-card-duration", children: v.duration })
25429
25660
  ] }),
25430
25661
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-info", children: [
25431
25662
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-video-card-title", children: v.title }),
25432
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-views", children: [
25433
- v.views,
25434
- " views"
25435
- ] })
25663
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-video-card-views", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.videoCard.views", v: { v: v.views } }) })
25436
25664
  ] })
25437
25665
  ] }, i)) })
25438
25666
  ] });
@@ -25449,7 +25677,7 @@ function OrderStatusReadout({
25449
25677
  const safeCurrent = Number.isFinite(current) ? Math.max(0, Math.min(stepArr.length - 1, Math.round(current))) : 0;
25450
25678
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-order-status", "data-cdl-readout": id, "data-cdl-step": safeCurrent, children: [
25451
25679
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25452
- stepArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
25680
+ stepArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
25453
25681
  const isDone = i < safeCurrent;
25454
25682
  const isCurrent = i === safeCurrent;
25455
25683
  const isPending = i > safeCurrent;
@@ -25499,9 +25727,9 @@ function AttendanceGridReadout({
25499
25727
  const memberArr = safeParseArray(members).map(String);
25500
25728
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-attendance-grid", "data-cdl-readout": id, children: [
25501
25729
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25502
- rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
25730
+ rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
25503
25731
  /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
25504
- /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: "day" }),
25732
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.attendance.corner" }) }),
25505
25733
  memberArr.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-member", children: m }, i))
25506
25734
  ] }) }),
25507
25735
  /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
@@ -25555,7 +25783,7 @@ function TimezoneClockReadout({
25555
25783
  }
25556
25784
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-timezone-clock", "data-cdl-readout": id, children: [
25557
25785
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25558
- clocks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
25786
+ clocks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
25559
25787
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-city", children: c.city }),
25560
25788
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-time", style: { color }, children: c.time }),
25561
25789
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-offset", children: [
@@ -25589,7 +25817,7 @@ function FormSummaryReadout({
25589
25817
  }
25590
25818
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-form-summary", "data-cdl-readout": id, children: [
25591
25819
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25592
- fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
25820
+ fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
25593
25821
  /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "cdl-ip-readout-form-summary-key", children: f.name }),
25594
25822
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "cdl-ip-readout-form-summary-value", style: { color }, children: f.value })
25595
25823
  ] }, i)) })
@@ -25622,7 +25850,7 @@ function SongQueueReadout({
25622
25850
  const safeCurrent = Number.isFinite(current) ? Math.round(current) : -1;
25623
25851
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-song-queue", "data-cdl-readout": id, "data-cdl-current": safeCurrent, children: [
25624
25852
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25625
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
25853
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
25626
25854
  const isCurrent = i === safeCurrent;
25627
25855
  return /* @__PURE__ */ jsxRuntime.jsxs(
25628
25856
  "li",
@@ -25667,12 +25895,20 @@ function CalendarMonthReadout({
25667
25895
  } catch {
25668
25896
  }
25669
25897
  }
25670
- const weekDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
25898
+ const weekDays = [
25899
+ "readout.weekday.0",
25900
+ "readout.weekday.1",
25901
+ "readout.weekday.2",
25902
+ "readout.weekday.3",
25903
+ "readout.weekday.4",
25904
+ "readout.weekday.5",
25905
+ "readout.weekday.6"
25906
+ ];
25671
25907
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-calendar-month", "data-cdl-readout": id, children: [
25672
25908
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25673
- days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
25909
+ days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
25674
25910
  monthName ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-header", children: monthName }) : null,
25675
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: w }, w)) }),
25911
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: w }) }, w)) }),
25676
25912
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-grid", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs(
25677
25913
  "div",
25678
25914
  {
@@ -25715,7 +25951,7 @@ function TerminalReadout({
25715
25951
  const shown = lines.slice(0, max);
25716
25952
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-terminal", "data-cdl-readout": id, children: [
25717
25953
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
25718
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
25954
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
25719
25955
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-titlebar", children: [
25720
25956
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#ef4444" } }),
25721
25957
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#eab308" } }),
@@ -25814,10 +26050,11 @@ function KanbanBoardReadout({
25814
26050
  columnWidth,
25815
26051
  max
25816
26052
  }) {
26053
+ const \u5F15\u304F = use\u5B57\u5F15();
25817
26054
  const buckets = {
25818
- todo: { key: "todo", label: "Todo", color: "#94a3b8", tasks: [] },
25819
- inprogress: { key: "inprogress", label: "In Progress", color: "#2563eb", tasks: [] },
25820
- done: { key: "done", label: "Done", color: "#22c55e", tasks: [] }
26055
+ todo: { key: "todo", label: \u5F15\u304F("readout.kanban.todo"), color: "#94a3b8", tasks: [] },
26056
+ inprogress: { key: "inprogress", label: \u5F15\u304F("readout.kanban.inprogress"), color: "#2563eb", tasks: [] },
26057
+ done: { key: "done", label: \u5F15\u304F("readout.kanban.done"), color: "#22c55e", tasks: [] }
25821
26058
  };
25822
26059
  const trimmed = value.trim();
25823
26060
  if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
@@ -25934,7 +26171,7 @@ function KanbanBoardReadout({
25934
26171
  )
25935
26172
  ] }, ti);
25936
26173
  }),
25937
- overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
26174
+ overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
25938
26175
  "text",
25939
26176
  {
25940
26177
  x: x + columnWidth / 2,
@@ -25943,11 +26180,7 @@ function KanbanBoardReadout({
25943
26180
  textAnchor: "middle",
25944
26181
  fill: "#64748b",
25945
26182
  style: { userSelect: "none" },
25946
- children: [
25947
- "+",
25948
- overflow,
25949
- " more"
25950
- ]
26183
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
25951
26184
  }
25952
26185
  ) : null
25953
26186
  ] }, k);
@@ -26504,7 +26737,7 @@ function UserPresenceReadout({
26504
26737
  )
26505
26738
  ] }, i);
26506
26739
  }),
26507
- overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
26740
+ overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
26508
26741
  "text",
26509
26742
  {
26510
26743
  x: width / 2,
@@ -26513,11 +26746,7 @@ function UserPresenceReadout({
26513
26746
  textAnchor: "middle",
26514
26747
  fill: "#64748b",
26515
26748
  style: { userSelect: "none" },
26516
- children: [
26517
- "+",
26518
- overflow,
26519
- " more"
26520
- ]
26749
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
26521
26750
  }
26522
26751
  ) : null
26523
26752
  ]
@@ -26568,12 +26797,7 @@ function RatingThumbReadout({
26568
26797
  "\u25B2 ",
26569
26798
  upCount
26570
26799
  ] }),
26571
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: [
26572
- upPct,
26573
- "% up \xB7 ",
26574
- total,
26575
- " votes"
26576
- ] }),
26800
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.ratingThumb.summary", v: { pct: upPct, total } }) }),
26577
26801
  /* @__PURE__ */ jsxRuntime.jsxs(
26578
26802
  "text",
26579
26803
  {
@@ -26748,11 +26972,7 @@ function KpiTrendTileReadout({
26748
26972
  deltaPct.toFixed(1),
26749
26973
  "%)"
26750
26974
  ] }),
26751
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: [
26752
- "prev ",
26753
- prev,
26754
- unit
26755
- ] }),
26975
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.kpiTrend.prev", v: { v: `${prev}${unit}` } }) }),
26756
26976
  history.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx("polyline", { points, fill: "none", stroke: arrowColor, strokeWidth: 2 }) : null
26757
26977
  ]
26758
26978
  }
@@ -26840,7 +27060,7 @@ function QuickPollEmojiReadout({
26840
27060
  )
26841
27061
  ] }, i);
26842
27062
  }),
26843
- /* @__PURE__ */ jsxRuntime.jsxs(
27063
+ /* @__PURE__ */ jsxRuntime.jsx(
26844
27064
  "text",
26845
27065
  {
26846
27066
  x: width - 8,
@@ -26849,10 +27069,7 @@ function QuickPollEmojiReadout({
26849
27069
  textAnchor: "end",
26850
27070
  fill: "#64748b",
26851
27071
  style: { userSelect: "none" },
26852
- children: [
26853
- "total ",
26854
- total
26855
- ]
27072
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.poll.total", v: { n: total } })
26856
27073
  }
26857
27074
  )
26858
27075
  ]
@@ -26987,14 +27204,8 @@ function ThreadSummaryReadout({
26987
27204
  height,
26988
27205
  children: [
26989
27206
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width, height, fill: "#f8fafc", rx: 6 }),
26990
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: [
26991
- participants,
26992
- " participants"
26993
- ] }),
26994
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: [
26995
- "last: ",
26996
- lastAuthor
26997
- ] }),
27207
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.thread.participants", v: { n: participants } }) }),
27208
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.thread.last", v: { name: lastAuthor } }) }),
26998
27209
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 60, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: timeAgo }),
26999
27210
  unread > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-thread-unread": "1", children: [
27000
27211
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: width - 24, cy: 26, r: 14, fill: colorUnread }),
@@ -27025,7 +27236,7 @@ function ReadReceiptReadout({
27025
27236
  colorPending
27026
27237
  }) {
27027
27238
  const status = Number.isFinite(value) ? Math.max(0, Math.min(2, Math.floor(value))) : 0;
27028
- const labelText = status === 0 ? "sent" : status === 1 ? "delivered" : "read";
27239
+ const labelKey = status === 0 ? "readout.readReceipt.sent" : status === 1 ? "readout.readReceipt.delivered" : "readout.readReceipt.read";
27029
27240
  const iconColor = status === 2 ? colorRead : colorPending;
27030
27241
  const width = 180;
27031
27242
  const height = 32;
@@ -27060,7 +27271,7 @@ function ReadReceiptReadout({
27060
27271
  }
27061
27272
  ) : null
27062
27273
  ] }),
27063
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: labelText })
27274
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: labelKey }) })
27064
27275
  ]
27065
27276
  }
27066
27277
  )
@@ -27074,7 +27285,7 @@ function PasswordStrengthReadout({
27074
27285
  colorWeak
27075
27286
  }) {
27076
27287
  const level = Number.isFinite(value) ? Math.max(0, Math.min(4, Math.floor(value))) : 0;
27077
- const labels = ["too weak", "weak", "fair", "good", "strong"];
27288
+ const labels = ["readout.password.0", "readout.password.1", "readout.password.2", "readout.password.3", "readout.password.4"];
27078
27289
  const colors = [colorWeak, "#f97316", "#eab308", "#84cc16", colorStrong];
27079
27290
  const barW = 46;
27080
27291
  const gap = 6;
@@ -27118,7 +27329,7 @@ function PasswordStrengthReadout({
27118
27329
  textAnchor: "end",
27119
27330
  fill: level > 0 ? colors[level] ?? colorStrong : "#94a3b8",
27120
27331
  style: { userSelect: "none" },
27121
- children: labels[level]
27332
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: labels[level] })
27122
27333
  }
27123
27334
  )
27124
27335
  ]
@@ -27253,7 +27464,7 @@ function FileDropzoneReadout({
27253
27464
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: filename }),
27254
27465
  filename.length > 26 ? `${filename.slice(0, 25)}\u2026` : filename
27255
27466
  ] }),
27256
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: "uploaded" })
27467
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.uploaded" }) })
27257
27468
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-dropzone-empty": "1", children: [
27258
27469
  /* @__PURE__ */ jsxRuntime.jsx(
27259
27470
  "text",
@@ -27265,7 +27476,7 @@ function FileDropzoneReadout({
27265
27476
  textAnchor: "middle",
27266
27477
  fill: "#64748b",
27267
27478
  style: { userSelect: "none" },
27268
- children: "\u2B06 Drop file here"
27479
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.drop" })
27269
27480
  }
27270
27481
  ),
27271
27482
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -27277,7 +27488,7 @@ function FileDropzoneReadout({
27277
27488
  textAnchor: "middle",
27278
27489
  fill: "#94a3b8",
27279
27490
  style: { userSelect: "none" },
27280
- children: "or click to browse"
27491
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.browse" })
27281
27492
  }
27282
27493
  )
27283
27494
  ] })
@@ -27312,7 +27523,7 @@ function LogStreamReadout({
27312
27523
  }
27313
27524
  }
27314
27525
  const shown = rows.slice(-5);
27315
- const levelLabels = ["DBG", "INF", "WRN", "ERR"];
27526
+ const levelLabels = ["readout.log.0", "readout.log.1", "readout.log.2", "readout.log.3"];
27316
27527
  const levelColors = ["#94a3b8", "#2563eb", "#f97316", "#ef4444"];
27317
27528
  const width = 300;
27318
27529
  const rowH = 18;
@@ -27345,7 +27556,7 @@ function LogStreamReadout({
27345
27556
  fill: "#ffffff",
27346
27557
  fontFamily: "monospace",
27347
27558
  style: { userSelect: "none" },
27348
- children: levelLabels[r.level] ?? "INF"
27559
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: levelLabels[r.level] ?? "readout.log.1" })
27349
27560
  }
27350
27561
  ),
27351
27562
  /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 94, y: y + 12, fontSize: 10, fill: "#e2e8f0", fontFamily: "monospace", style: { userSelect: "none" }, children: [
@@ -27539,10 +27750,10 @@ function CartSummaryReadout({
27539
27750
  if (!Number.isFinite(shipping)) shipping = 0;
27540
27751
  if (!Number.isFinite(total)) total = 0;
27541
27752
  const rows = [
27542
- { l: "Items", v: `${items}`, bold: false },
27543
- { l: "Subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
27544
- { l: "Shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
27545
- { l: "Total", v: `${currency}${total.toFixed(2)}`, bold: true }
27753
+ { l: "readout.cart.items", v: `${items}`, bold: false },
27754
+ { l: "readout.cart.subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
27755
+ { l: "readout.cart.shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
27756
+ { l: "readout.cart.total", v: `${currency}${total.toFixed(2)}`, bold: true }
27546
27757
  ];
27547
27758
  const width = 260;
27548
27759
  const rowH = 20;
@@ -27572,7 +27783,7 @@ function CartSummaryReadout({
27572
27783
  fontWeight: isTotal ? 700 : 500,
27573
27784
  fill: isTotal ? colorTotal : "#334155",
27574
27785
  style: { userSelect: "none" },
27575
- children: r.l
27786
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: r.l })
27576
27787
  }
27577
27788
  ),
27578
27789
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -27620,6 +27831,8 @@ function PricingTierReadout({
27620
27831
  }
27621
27832
  }
27622
27833
  if (!Number.isFinite(price)) price = 0;
27834
+ const \u5F15\u304F = use\u5B57\u5F15();
27835
+ const \u898B\u305B\u308B\u540D\u524D = planName || \u5F15\u304F("readout.pricing.plan");
27623
27836
  const width = 240;
27624
27837
  const height = 176;
27625
27838
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pricing-tier", "data-cdl-readout": id, children: [
@@ -27644,7 +27857,7 @@ function PricingTierReadout({
27644
27857
  textAnchor: "middle",
27645
27858
  fill: "#ffffff",
27646
27859
  style: { userSelect: "none" },
27647
- children: planName || "Plan"
27860
+ children: \u898B\u305B\u308B\u540D\u524D
27648
27861
  }
27649
27862
  ),
27650
27863
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -27672,7 +27885,7 @@ function PricingTierReadout({
27672
27885
  textAnchor: "middle",
27673
27886
  fill: "#64748b",
27674
27887
  style: { userSelect: "none" },
27675
- children: "per month"
27888
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.pricing.perMonth" })
27676
27889
  }
27677
27890
  ),
27678
27891
  features.slice(0, 3).map((f, i) => {
@@ -27687,7 +27900,7 @@ function PricingTierReadout({
27687
27900
  ] }, i);
27688
27901
  }),
27689
27902
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 16, y: 150, width: width - 32, height: 20, fill: colorAccent, rx: 4 }),
27690
- /* @__PURE__ */ jsxRuntime.jsxs(
27903
+ /* @__PURE__ */ jsxRuntime.jsx(
27691
27904
  "text",
27692
27905
  {
27693
27906
  x: width / 2,
@@ -27697,10 +27910,7 @@ function PricingTierReadout({
27697
27910
  textAnchor: "middle",
27698
27911
  fill: "#ffffff",
27699
27912
  style: { userSelect: "none" },
27700
- children: [
27701
- "Get ",
27702
- planName || "Plan"
27703
- ]
27913
+ children: \u5F15\u304F("readout.pricing.get", { name: \u898B\u305B\u308B\u540D\u524D })
27704
27914
  }
27705
27915
  )
27706
27916
  ]
@@ -27766,12 +27976,12 @@ function CouponCodeReadout({
27766
27976
  fill: applied ? colorApplied : "#94a3b8",
27767
27977
  fontFamily: "monospace",
27768
27978
  style: { userSelect: "none" },
27769
- children: code || "ENTER CODE"
27979
+ children: code || /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.placeholder" })
27770
27980
  }
27771
27981
  ),
27772
27982
  applied ? /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-coupon-applied": "1", children: [
27773
27983
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: boxW + 12, y: 10, width: 90, height: height - 20, fill: colorApplied, rx: 4 }),
27774
- /* @__PURE__ */ jsxRuntime.jsxs(
27984
+ /* @__PURE__ */ jsxRuntime.jsx(
27775
27985
  "text",
27776
27986
  {
27777
27987
  x: boxW + 57,
@@ -27781,11 +27991,7 @@ function CouponCodeReadout({
27781
27991
  textAnchor: "middle",
27782
27992
  fill: "#ffffff",
27783
27993
  style: { userSelect: "none" },
27784
- children: [
27785
- "-",
27786
- discountPct,
27787
- "% off"
27788
- ]
27994
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.off", v: { pct: discountPct } })
27789
27995
  }
27790
27996
  )
27791
27997
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-coupon-empty": "1", children: [
@@ -27800,7 +28006,7 @@ function CouponCodeReadout({
27800
28006
  textAnchor: "middle",
27801
28007
  fill: "#ffffff",
27802
28008
  style: { userSelect: "none" },
27803
- children: "Apply"
28009
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.apply" })
27804
28010
  }
27805
28011
  )
27806
28012
  ] })
@@ -27880,10 +28086,7 @@ function ArticlePreviewReadout({
27880
28086
  excerpt.length > 28 ? `${excerpt.slice(0, 27)}\u2026` : excerpt
27881
28087
  ] }),
27882
28088
  /* @__PURE__ */ jsxRuntime.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) }),
27883
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: [
27884
- "by ",
27885
- author
27886
- ] }),
28089
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.article.by", v: { author } }) }),
27887
28090
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: width - 8, y: height - 14, fontSize: 10, textAnchor: "end", fill: "#94a3b8", style: { userSelect: "none" }, children: timeAgo })
27888
28091
  ]
27889
28092
  }