@squadbase/vantage 0.6.1-dev2.5f947f1 → 0.6.2-dev1.31accb1

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.
Files changed (178) hide show
  1. package/dist/add-DY4AXANK.js +6 -0
  2. package/dist/add-DY4AXANK.js.map +1 -0
  3. package/dist/{build-O5TVNH4E.js → build-TVKFIVFQ.js} +8 -8
  4. package/dist/{build-O5TVNH4E.js.map → build-TVKFIVFQ.js.map} +1 -1
  5. package/dist/{check-WFBEDHDR.js → check-3KHZXZMQ.js} +6 -6
  6. package/dist/{check-WFBEDHDR.js.map → check-3KHZXZMQ.js.map} +1 -1
  7. package/dist/{chunk-LSRMRIXA.js → chunk-AG6RZ2RR.js} +1004 -23
  8. package/dist/chunk-AG6RZ2RR.js.map +1 -0
  9. package/dist/{chunk-KLEIVDUV.js → chunk-CEXAQQ5W.js} +150 -11
  10. package/dist/chunk-CEXAQQ5W.js.map +1 -0
  11. package/dist/{chunk-JGRMRXXZ.js → chunk-JKLLFVEU.js} +3 -3
  12. package/dist/{chunk-JGRMRXXZ.js.map → chunk-JKLLFVEU.js.map} +1 -1
  13. package/dist/{chunk-EP6JHXSR.js → chunk-LMUACBMA.js} +3 -3
  14. package/dist/{chunk-EP6JHXSR.js.map → chunk-LMUACBMA.js.map} +1 -1
  15. package/dist/{chunk-RPZAALCX.js → chunk-OB6UBJXF.js} +153 -153
  16. package/dist/{chunk-RPZAALCX.js.map → chunk-OB6UBJXF.js.map} +1 -1
  17. package/dist/{chunk-BCE22JSM.js → chunk-P7W4LR3Z.js} +32 -13
  18. package/dist/chunk-P7W4LR3Z.js.map +1 -0
  19. package/dist/{chunk-3G43C6OL.js → chunk-QI3XQKHS.js} +39 -3
  20. package/dist/chunk-QI3XQKHS.js.map +1 -0
  21. package/dist/{chunk-QDZA5JSL.js → chunk-U2M6HGKQ.js} +3 -3
  22. package/dist/{chunk-QDZA5JSL.js.map → chunk-U2M6HGKQ.js.map} +1 -1
  23. package/dist/{chunk-T3FLAGI6.js → chunk-VA776YE5.js} +3 -3
  24. package/dist/{chunk-T3FLAGI6.js.map → chunk-VA776YE5.js.map} +1 -1
  25. package/dist/cli.js +14 -11
  26. package/dist/cli.js.map +1 -1
  27. package/dist/components/index.d.ts +223 -1
  28. package/dist/components/index.js +2 -2
  29. package/dist/{dev-NZRLOQCL.js → dev-GDKATCC7.js} +22 -11
  30. package/dist/dev-GDKATCC7.js.map +1 -0
  31. package/dist/doc/index.js +2 -0
  32. package/dist/doc/index.js.map +1 -1
  33. package/dist/{docs-ZGDJUHJI.js → docs-EJJ3BECT.js} +3 -3
  34. package/dist/{docs-ZGDJUHJI.js.map → docs-EJJ3BECT.js.map} +1 -1
  35. package/dist/{doctor-VFKEMR54.js → doctor-WQXPXP6K.js} +7 -7
  36. package/dist/doctor-WQXPXP6K.js.map +1 -0
  37. package/dist/{preview-QDCIVVSR.js → preview-OGMCNQUO.js} +12 -4
  38. package/dist/preview-OGMCNQUO.js.map +1 -0
  39. package/dist/{routes-RHP5FVGD.js → routes-MWBWWOJ2.js} +5 -5
  40. package/dist/{routes-RHP5FVGD.js.map → routes-MWBWWOJ2.js.map} +1 -1
  41. package/dist/{search-RFBELGY7.js → search-6Y422SV6.js} +3 -3
  42. package/dist/{search-RFBELGY7.js.map → search-6Y422SV6.js.map} +1 -1
  43. package/dist/slide/index.js +61 -15
  44. package/dist/slide/index.js.map +1 -1
  45. package/dist/table/index.js +6 -5
  46. package/dist/table/index.js.map +1 -1
  47. package/dist/ui/index.d.ts +140 -10
  48. package/dist/ui/index.js +1405 -63
  49. package/dist/ui/index.js.map +1 -1
  50. package/dist/{upgrade-GF2P67M6.js → upgrade-HCANX4GQ.js} +6 -6
  51. package/dist/{upgrade-GF2P67M6.js.map → upgrade-HCANX4GQ.js.map} +1 -1
  52. package/dist/vite/index.js +3 -3
  53. package/docs/en/changelog.md +24 -0
  54. package/docs/en/cli-reference.md +30 -0
  55. package/docs/en/parts/page-shell.md +1 -1
  56. package/docs/index.json +291 -61
  57. package/docs/ja/changelog.md +50 -0
  58. package/docs/ja/cli-reference.md +29 -0
  59. package/docs/ja/components.md +33 -89
  60. package/docs/ja/page-types/csv.md +83 -0
  61. package/docs/ja/page-types/doc.md +83 -0
  62. package/docs/ja/page-types/excel.md +82 -0
  63. package/docs/ja/page-types/slide.md +132 -0
  64. package/docs/ja/page-types.md +47 -0
  65. package/docs/ja/parts/area-chart.md +61 -0
  66. package/docs/ja/parts/bar-chart.md +69 -0
  67. package/docs/ja/parts/bar-list.md +35 -0
  68. package/docs/ja/parts/category-bar.md +36 -0
  69. package/docs/ja/parts/donut-chart.md +47 -0
  70. package/docs/ja/parts/echart.md +3 -0
  71. package/docs/ja/parts/line-chart.md +58 -0
  72. package/docs/ja/parts/page-shell.md +1 -1
  73. package/docs/ja/parts/progress-circle.md +34 -0
  74. package/docs/ja/parts/sparkline.md +1 -1
  75. package/docs/ja/parts/tracker.md +32 -0
  76. package/docs/ja/routing.md +8 -86
  77. package/docs/ja/ui/alert-dialog.md +41 -0
  78. package/docs/ja/ui/avatar.md +31 -0
  79. package/docs/ja/ui/combobox.md +74 -0
  80. package/docs/ja/ui/drawer.md +41 -0
  81. package/docs/ja/ui/field.md +42 -0
  82. package/docs/ja/ui/hover-card.md +21 -0
  83. package/docs/ja/ui/kbd.md +16 -0
  84. package/docs/ja/ui/pagination.md +36 -0
  85. package/docs/ja/ui/radio-group.md +21 -0
  86. package/docs/ja/ui/toast.md +46 -0
  87. package/docs/ja/ui-and-theming.md +14 -7
  88. package/package.json +18 -12
  89. package/registry/ui/accordion.tsx +74 -0
  90. package/registry/ui/alert-dialog.tsx +189 -0
  91. package/registry/ui/alert.tsx +78 -0
  92. package/registry/ui/app-shell.tsx +281 -0
  93. package/registry/ui/area-chart.tsx +1015 -0
  94. package/registry/ui/avatar.tsx +110 -0
  95. package/registry/ui/badge.tsx +54 -0
  96. package/registry/ui/bar-chart.tsx +1013 -0
  97. package/registry/ui/bar-list.tsx +302 -0
  98. package/registry/ui/breadcrumb.tsx +126 -0
  99. package/registry/ui/button.tsx +60 -0
  100. package/registry/ui/calendar.tsx +221 -0
  101. package/registry/ui/card.tsx +105 -0
  102. package/registry/ui/category-bar.tsx +281 -0
  103. package/registry/ui/checkbox.tsx +28 -0
  104. package/registry/ui/collapsible.tsx +21 -0
  105. package/registry/ui/combobox.tsx +310 -0
  106. package/registry/ui/command.tsx +196 -0
  107. package/registry/ui/dashboard-card.tsx +174 -0
  108. package/registry/ui/data-table.tsx +16 -91
  109. package/registry/ui/date-range-picker.tsx +209 -0
  110. package/registry/ui/dialog.tsx +159 -0
  111. package/registry/ui/donut-chart.tsx +1004 -0
  112. package/registry/ui/drawer.tsx +229 -0
  113. package/registry/ui/dropdown-menu.tsx +272 -0
  114. package/registry/ui/echart.tsx +486 -0
  115. package/registry/ui/field.tsx +240 -0
  116. package/registry/ui/filter-bar.tsx +365 -0
  117. package/registry/ui/funnel-steps.tsx +274 -0
  118. package/registry/ui/hover-card.tsx +52 -0
  119. package/registry/ui/input-group.tsx +158 -0
  120. package/registry/ui/input.tsx +22 -0
  121. package/registry/ui/kbd.tsx +28 -0
  122. package/registry/ui/label.tsx +20 -0
  123. package/registry/ui/line-chart.tsx +1007 -0
  124. package/registry/ui/metric-value.tsx +54 -0
  125. package/registry/ui/multi-select.tsx +226 -0
  126. package/registry/ui/page-shell.tsx +227 -0
  127. package/registry/ui/pagination.tsx +138 -0
  128. package/registry/ui/placeholder.tsx +30 -0
  129. package/registry/ui/popover.tsx +90 -0
  130. package/registry/ui/progress-circle.tsx +272 -0
  131. package/registry/ui/progress.tsx +83 -0
  132. package/registry/ui/radio-group.tsx +39 -0
  133. package/registry/ui/scroll-area.tsx +55 -0
  134. package/registry/ui/searchable-select.tsx +209 -0
  135. package/registry/ui/section-header.tsx +41 -0
  136. package/registry/ui/segmented-control.tsx +71 -0
  137. package/registry/ui/select.tsx +253 -0
  138. package/registry/ui/separator.tsx +25 -0
  139. package/registry/ui/sheet.tsx +137 -0
  140. package/registry/ui/sidebar.tsx +723 -0
  141. package/registry/ui/skeleton.tsx +15 -0
  142. package/registry/ui/slider.tsx +54 -0
  143. package/registry/ui/sparkline.tsx +155 -0
  144. package/registry/ui/spinner.tsx +12 -0
  145. package/registry/ui/states.tsx +61 -0
  146. package/registry/ui/status-badge.tsx +79 -0
  147. package/registry/ui/switch.tsx +32 -0
  148. package/registry/ui/table.tsx +116 -0
  149. package/registry/ui/tabs.tsx +82 -0
  150. package/registry/ui/textarea.tsx +20 -0
  151. package/registry/ui/toast.tsx +250 -0
  152. package/registry/ui/toggle-group.tsx +89 -0
  153. package/registry/ui/toggle.tsx +45 -0
  154. package/registry/ui/tooltip.tsx +66 -0
  155. package/registry/ui/tracker.tsx +236 -0
  156. package/registry/ui/trend-indicator.tsx +62 -0
  157. package/skills/vantage-add-feature/SKILL.md +9 -7
  158. package/skills/vantage-design/SKILL.md +3 -1
  159. package/skills/vantage-design/references/format.md +1 -1
  160. package/skills/vantage-pitfalls/SKILL.md +5 -1
  161. package/skills/vantage-slide/SKILL.md +17 -0
  162. package/templates/AGENTS.md +10 -1
  163. package/templates/agents/api.md +29 -0
  164. package/templates/agents/csv.md +2 -1
  165. package/templates/agents/doc.md +4 -3
  166. package/templates/agents/page.md +22 -8
  167. package/templates/agents/slide.md +13 -1
  168. package/templates/agents/xlsx.md +2 -1
  169. package/theme.css +15 -1
  170. package/dist/add-EISGSZAH.js +0 -6
  171. package/dist/add-EISGSZAH.js.map +0 -1
  172. package/dist/chunk-3G43C6OL.js.map +0 -1
  173. package/dist/chunk-BCE22JSM.js.map +0 -1
  174. package/dist/chunk-KLEIVDUV.js.map +0 -1
  175. package/dist/chunk-LSRMRIXA.js.map +0 -1
  176. package/dist/dev-NZRLOQCL.js.map +0 -1
  177. package/dist/doctor-VFKEMR54.js.map +0 -1
  178. package/dist/preview-QDCIVVSR.js.map +0 -1
@@ -380,6 +380,41 @@ function isForwardKey(e) {
380
380
  function isBackwardKey(e) {
381
381
  return e.key === "ArrowLeft" || e.key === "ArrowUp" || e.key === "PageUp";
382
382
  }
383
+
384
+ // src/slide/messages.ts
385
+ var MESSAGES_JA = {
386
+ previousSlide: "\u524D\u306E\u30B9\u30E9\u30A4\u30C9",
387
+ nextSlide: "\u6B21\u306E\u30B9\u30E9\u30A4\u30C9",
388
+ slideList: "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7",
389
+ closeSlideList: "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u9589\u3058\u308B (L)",
390
+ openSlideList: "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u958B\u304F (L)",
391
+ fullscreen: "\u5168\u753B\u9762\u8868\u793A (F)",
392
+ exitFullscreen: "\u5168\u753B\u9762\u8868\u793A\u3092\u7D42\u4E86 (F)",
393
+ exportToPowerPoint: "PowerPoint \u3068\u3057\u3066\u66F8\u304D\u51FA\u3059",
394
+ slideNumber: (n) => `\u30B9\u30E9\u30A4\u30C9 ${n}`
395
+ };
396
+ var MESSAGES_EN = {
397
+ previousSlide: "Previous slide",
398
+ nextSlide: "Next slide",
399
+ slideList: "Slide list",
400
+ closeSlideList: "Close slide list (L)",
401
+ openSlideList: "Open slide list (L)",
402
+ fullscreen: "Fullscreen (F)",
403
+ exitFullscreen: "Exit fullscreen (F)",
404
+ exportToPowerPoint: "Export to PowerPoint",
405
+ slideNumber: (n) => `Slide ${n}`
406
+ };
407
+ function detectLanguage() {
408
+ if (typeof document === "undefined") return "ja";
409
+ const lang = document.documentElement.lang;
410
+ if (!lang) return "ja";
411
+ if (lang.toLowerCase().startsWith("en")) return "en";
412
+ return "ja";
413
+ }
414
+ function getSlideMessages() {
415
+ const lang = detectLanguage();
416
+ return lang === "en" ? MESSAGES_EN : MESSAGES_JA;
417
+ }
383
418
  var THUMB_WIDTH = 176;
384
419
  var THUMB_HEIGHT = Math.round(THUMB_WIDTH * CANVAS_HEIGHT / CANVAS_WIDTH);
385
420
  var NUMBER_COLUMN = 20;
@@ -400,6 +435,7 @@ var ITEM_BUTTON = {
400
435
  };
401
436
  function SlideRail({ slides, index, onSelect, themeVars }) {
402
437
  const listRef = useRef(null);
438
+ const messages = useMemo(() => getSlideMessages(), []);
403
439
  useEffect(() => {
404
440
  const item = listRef.current?.children[index];
405
441
  item?.scrollIntoView({ block: "nearest" });
@@ -408,7 +444,7 @@ function SlideRail({ slides, index, onSelect, themeVars }) {
408
444
  "div",
409
445
  {
410
446
  "data-slide-chrome": "",
411
- "aria-label": "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7",
447
+ "aria-label": messages.slideList,
412
448
  style: {
413
449
  flex: "0 0 auto",
414
450
  width: RAIL_WIDTH,
@@ -452,7 +488,7 @@ function SlideRail({ slides, index, onSelect, themeVars }) {
452
488
  style: ITEM_BUTTON,
453
489
  onClick: () => onSelect(i),
454
490
  "aria-current": active ? "true" : void 0,
455
- "aria-label": `\u30B9\u30E9\u30A4\u30C9 ${i + 1}`,
491
+ "aria-label": messages.slideNumber(i + 1),
456
492
  children: [
457
493
  /* @__PURE__ */ jsx(
458
494
  "span",
@@ -523,6 +559,7 @@ function SlideToolbar({
523
559
  onPrev,
524
560
  onNext,
525
561
  onFullscreen,
562
+ canFullscreen,
526
563
  onExport,
527
564
  exportProgress,
528
565
  railOpen,
@@ -531,6 +568,7 @@ function SlideToolbar({
531
568
  }) {
532
569
  const [hovered, setHovered] = useState(false);
533
570
  const busy = exportProgress !== null && exportProgress.phase !== "done";
571
+ const messages = useMemo(() => getSlideMessages(), []);
534
572
  return /* @__PURE__ */ jsxs(
535
573
  "div",
536
574
  {
@@ -556,36 +594,36 @@ function SlideToolbar({
556
594
  userSelect: "none"
557
595
  },
558
596
  children: [
559
- /* @__PURE__ */ jsx("button", { type: "button", style: BUTTON, onClick: onPrev, "aria-label": "\u524D\u306E\u30B9\u30E9\u30A4\u30C9", children: /* @__PURE__ */ jsx(ChevronLeftIcon, { size: 16, "aria-hidden": "true" }) }),
597
+ /* @__PURE__ */ jsx("button", { type: "button", style: BUTTON, onClick: onPrev, "aria-label": messages.previousSlide, children: /* @__PURE__ */ jsx(ChevronLeftIcon, { size: 16, "aria-hidden": "true" }) }),
560
598
  /* @__PURE__ */ jsxs("span", { style: { padding: "0 8px", fontSize: 13, fontVariantNumeric: "tabular-nums" }, children: [
561
599
  current,
562
600
  " / ",
563
601
  total
564
602
  ] }),
565
- /* @__PURE__ */ jsx("button", { type: "button", style: BUTTON, onClick: onNext, "aria-label": "\u6B21\u306E\u30B9\u30E9\u30A4\u30C9", children: /* @__PURE__ */ jsx(ChevronRightIcon, { size: 16, "aria-hidden": "true" }) }),
603
+ /* @__PURE__ */ jsx("button", { type: "button", style: BUTTON, onClick: onNext, "aria-label": messages.nextSlide, children: /* @__PURE__ */ jsx(ChevronRightIcon, { size: 16, "aria-hidden": "true" }) }),
566
604
  isFullscreen ? null : /* @__PURE__ */ jsx(
567
605
  "button",
568
606
  {
569
607
  type: "button",
570
608
  style: BUTTON,
571
609
  onClick: onToggleRail,
572
- "aria-label": railOpen ? "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u9589\u3058\u308B (L)" : "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u958B\u304F (L)",
573
- title: railOpen ? "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u9589\u3058\u308B (L)" : "\u30B9\u30E9\u30A4\u30C9\u4E00\u89A7\u3092\u958B\u304F (L)",
610
+ "aria-label": railOpen ? messages.closeSlideList : messages.openSlideList,
611
+ title: railOpen ? messages.closeSlideList : messages.openSlideList,
574
612
  "aria-pressed": railOpen,
575
613
  children: railOpen ? /* @__PURE__ */ jsx(PanelLeftCloseIcon, { size: 16, "aria-hidden": "true" }) : /* @__PURE__ */ jsx(PanelLeftOpenIcon, { size: 16, "aria-hidden": "true" })
576
614
  }
577
615
  ),
578
- /* @__PURE__ */ jsx(
616
+ canFullscreen ? /* @__PURE__ */ jsx(
579
617
  "button",
580
618
  {
581
619
  type: "button",
582
620
  style: BUTTON,
583
621
  onClick: onFullscreen,
584
- "aria-label": isFullscreen ? "\u5168\u753B\u9762\u8868\u793A\u3092\u7D42\u4E86 (F)" : "\u5168\u753B\u9762\u8868\u793A (F)",
585
- title: isFullscreen ? "\u5168\u753B\u9762\u8868\u793A\u3092\u7D42\u4E86 (F)" : "\u5168\u753B\u9762\u8868\u793A (F)",
622
+ "aria-label": isFullscreen ? messages.exitFullscreen : messages.fullscreen,
623
+ title: isFullscreen ? messages.exitFullscreen : messages.fullscreen,
586
624
  children: isFullscreen ? /* @__PURE__ */ jsx(MinimizeIcon, { size: 16, "aria-hidden": "true" }) : /* @__PURE__ */ jsx(MaximizeIcon, { size: 16, "aria-hidden": "true" })
587
625
  }
588
- ),
626
+ ) : null,
589
627
  /* @__PURE__ */ jsxs(
590
628
  "button",
591
629
  {
@@ -593,8 +631,8 @@ function SlideToolbar({
593
631
  style: { ...BUTTON, opacity: busy ? 0.6 : 1, cursor: busy ? "progress" : "pointer" },
594
632
  onClick: onExport,
595
633
  disabled: busy,
596
- "aria-label": "PowerPoint \u3068\u3057\u3066\u66F8\u304D\u51FA\u3059",
597
- title: "PowerPoint \u3068\u3057\u3066\u66F8\u304D\u51FA\u3059",
634
+ "aria-label": messages.exportToPowerPoint,
635
+ title: messages.exportToPowerPoint,
598
636
  children: [
599
637
  /* @__PURE__ */ jsx(DownloadIcon, { size: 16, "aria-hidden": "true" }),
600
638
  busy ? /* @__PURE__ */ jsxs("span", { children: [
@@ -1376,6 +1414,10 @@ function collectSlides(children) {
1376
1414
  }
1377
1415
  return { slides, transitions };
1378
1416
  }
1417
+ function fullscreenEnabled() {
1418
+ if (typeof document === "undefined") return false;
1419
+ return document.fullscreenEnabled === true;
1420
+ }
1379
1421
  function defaultExportName() {
1380
1422
  if (typeof window === "undefined") return "slides";
1381
1423
  const parts = window.location.pathname.split("/").filter(Boolean);
@@ -1396,6 +1438,7 @@ function SlideDeck({
1396
1438
  const index = Math.min(Math.max(Math.floor(page) - 1, 0), Math.max(total - 1, 0));
1397
1439
  const [railOpen, setRailOpen] = useSearchState("rail", rail);
1398
1440
  const [isFullscreen, setIsFullscreen] = useState(false);
1441
+ const [canFullscreen] = useState(fullscreenEnabled);
1399
1442
  const [entryDirection, setEntryDirection] = useState("jump");
1400
1443
  const [exporting, setExporting] = useState(null);
1401
1444
  const stepControllerRef = useRef(null);
@@ -1421,9 +1464,11 @@ function SlideDeck({
1421
1464
  const toggleRail = useCallback(() => setRailOpen((open) => !open), [setRailOpen]);
1422
1465
  const toggleFullscreen = useCallback(() => {
1423
1466
  const el = viewportRef.current;
1424
- if (!el) return;
1425
- if (document.fullscreenElement) void document.exitFullscreen();
1426
- else void el.requestFullscreen?.();
1467
+ if (!el || !fullscreenEnabled()) return;
1468
+ if (document.fullscreenElement) document.exitFullscreen().catch(() => {
1469
+ });
1470
+ else el.requestFullscreen?.().catch(() => {
1471
+ });
1427
1472
  }, []);
1428
1473
  useEffect(() => {
1429
1474
  const onChange = () => setIsFullscreen(document.fullscreenElement === viewportRef.current);
@@ -1541,6 +1586,7 @@ function SlideDeck({
1541
1586
  onPrev: goPrev,
1542
1587
  onNext: goNext,
1543
1588
  onFullscreen: toggleFullscreen,
1589
+ canFullscreen,
1544
1590
  onExport,
1545
1591
  exportProgress: exporting,
1546
1592
  railOpen,