@suzumiyaaoba/mdxr 0.1.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.
Files changed (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +56 -0
  3. package/dist/cli.d.mts +1 -0
  4. package/dist/cli.mjs +2902 -0
  5. package/dist/components.d.mts +791 -0
  6. package/dist/components.mjs +2 -0
  7. package/dist/config-SI9IyFiC.mjs +184 -0
  8. package/dist/doc-context-CEqzMYKv.d.mts +568 -0
  9. package/dist/index.d.mts +20 -0
  10. package/dist/index.mjs +4 -0
  11. package/dist/ui-GKFD0mx5.mjs +15986 -0
  12. package/package.json +131 -0
  13. package/skill/SKILL.md +49 -0
  14. package/skill/references/components/charts.md +172 -0
  15. package/skill/references/components/document.md +98 -0
  16. package/skill/references/components/forms.md +35 -0
  17. package/skill/references/components/investigation.md +198 -0
  18. package/skill/references/components/layout.md +68 -0
  19. package/skill/references/components/output.md +158 -0
  20. package/skill/references/components/planning.md +155 -0
  21. package/skill/references/components/reports.md +252 -0
  22. package/skill/references/components/shadcn.md +19 -0
  23. package/skill/references/components.md +186 -0
  24. package/skill/references/extending.md +48 -0
  25. package/src/ask-sheet.ts +40 -0
  26. package/src/assets/css.ts +392 -0
  27. package/src/assets/scripts.ts +78 -0
  28. package/src/catalog.ts +287 -0
  29. package/src/cli.ts +178 -0
  30. package/src/client/doc-events.ts +1108 -0
  31. package/src/client/entry.ts +27 -0
  32. package/src/client-js.ts +47 -0
  33. package/src/component-map.ts +47 -0
  34. package/src/components/ui/accordion.tsx +77 -0
  35. package/src/components/ui/alert-dialog.tsx +185 -0
  36. package/src/components/ui/alert.tsx +76 -0
  37. package/src/components/ui/aspect-ratio.tsx +22 -0
  38. package/src/components/ui/attachment.tsx +208 -0
  39. package/src/components/ui/avatar.tsx +106 -0
  40. package/src/components/ui/badge.tsx +52 -0
  41. package/src/components/ui/breadcrumb.tsx +121 -0
  42. package/src/components/ui/bubble.tsx +128 -0
  43. package/src/components/ui/button-group.tsx +88 -0
  44. package/src/components/ui/button.tsx +58 -0
  45. package/src/components/ui/calendar.tsx +226 -0
  46. package/src/components/ui/card.tsx +102 -0
  47. package/src/components/ui/carousel.tsx +246 -0
  48. package/src/components/ui/chart.tsx +379 -0
  49. package/src/components/ui/checkbox.tsx +27 -0
  50. package/src/components/ui/collapsible.tsx +19 -0
  51. package/src/components/ui/combobox.tsx +298 -0
  52. package/src/components/ui/command.tsx +193 -0
  53. package/src/components/ui/context-menu.tsx +271 -0
  54. package/src/components/ui/dialog.tsx +159 -0
  55. package/src/components/ui/direction.tsx +4 -0
  56. package/src/components/ui/drawer.tsx +227 -0
  57. package/src/components/ui/dropdown-menu.tsx +269 -0
  58. package/src/components/ui/empty.tsx +104 -0
  59. package/src/components/ui/field.tsx +237 -0
  60. package/src/components/ui/fieldset.tsx +32 -0
  61. package/src/components/ui/frame.tsx +87 -0
  62. package/src/components/ui/hover-card.tsx +50 -0
  63. package/src/components/ui/input-group.tsx +159 -0
  64. package/src/components/ui/input-otp.tsx +83 -0
  65. package/src/components/ui/input.tsx +19 -0
  66. package/src/components/ui/item.tsx +202 -0
  67. package/src/components/ui/kbd.tsx +26 -0
  68. package/src/components/ui/label.tsx +19 -0
  69. package/src/components/ui/marker.tsx +71 -0
  70. package/src/components/ui/menubar.tsx +284 -0
  71. package/src/components/ui/message-scroller.tsx +128 -0
  72. package/src/components/ui/message.tsx +91 -0
  73. package/src/components/ui/meter.tsx +80 -0
  74. package/src/components/ui/native-select.tsx +64 -0
  75. package/src/components/ui/navigation-menu.tsx +170 -0
  76. package/src/components/ui/pagination.tsx +133 -0
  77. package/src/components/ui/popover.tsx +87 -0
  78. package/src/components/ui/progress.tsx +82 -0
  79. package/src/components/ui/questionnaire.tsx +328 -0
  80. package/src/components/ui/radio-group.tsx +35 -0
  81. package/src/components/ui/resizable.tsx +49 -0
  82. package/src/components/ui/scroll-area.tsx +50 -0
  83. package/src/components/ui/select.tsx +201 -0
  84. package/src/components/ui/separator.tsx +22 -0
  85. package/src/components/ui/sheet.tsx +135 -0
  86. package/src/components/ui/sidebar.tsx +730 -0
  87. package/src/components/ui/skeleton.tsx +13 -0
  88. package/src/components/ui/slider.tsx +51 -0
  89. package/src/components/ui/spinner.tsx +16 -0
  90. package/src/components/ui/switch.tsx +31 -0
  91. package/src/components/ui/table.tsx +113 -0
  92. package/src/components/ui/tabs.tsx +82 -0
  93. package/src/components/ui/textarea.tsx +17 -0
  94. package/src/components/ui/toast.tsx +229 -0
  95. package/src/components/ui/toggle-group.tsx +87 -0
  96. package/src/components/ui/toggle.tsx +43 -0
  97. package/src/components/ui/tooltip.tsx +65 -0
  98. package/src/components.ts +78 -0
  99. package/src/config.ts +56 -0
  100. package/src/define.ts +122 -0
  101. package/src/doc-context.ts +20 -0
  102. package/src/editor.ts +94 -0
  103. package/src/format-error.ts +78 -0
  104. package/src/guards.ts +84 -0
  105. package/src/hooks/use-mobile.ts +21 -0
  106. package/src/html.ts +91 -0
  107. package/src/hydrate/export-index.ts +232 -0
  108. package/src/hydrate/import-scan.ts +169 -0
  109. package/src/hydrate/plugins.ts +118 -0
  110. package/src/hydrate/runtime-module.ts +145 -0
  111. package/src/hydrate-runtime.ts +67 -0
  112. package/src/hydrate.ts +147 -0
  113. package/src/index.ts +16 -0
  114. package/src/init.ts +57 -0
  115. package/src/langs.ts +148 -0
  116. package/src/lines.ts +53 -0
  117. package/src/load-user-module.ts +191 -0
  118. package/src/mdx.ts +248 -0
  119. package/src/paths.ts +36 -0
  120. package/src/rehype/shiki.ts +533 -0
  121. package/src/remark/alerts.ts +53 -0
  122. package/src/remark/ast.ts +96 -0
  123. package/src/remark/callouts.ts +25 -0
  124. package/src/remark/code-file.ts +85 -0
  125. package/src/remark/code-meta.ts +21 -0
  126. package/src/remark/directives.ts +170 -0
  127. package/src/remark/file-paths.ts +64 -0
  128. package/src/remark/headings.ts +131 -0
  129. package/src/remark/no-js.ts +40 -0
  130. package/src/render.ts +337 -0
  131. package/src/serve.ts +322 -0
  132. package/src/styles/globals.css +134 -0
  133. package/src/styles/shadcn.css +641 -0
  134. package/src/tailwind.ts +119 -0
  135. package/src/ui/approvals.tsx +76 -0
  136. package/src/ui/ask-question.tsx +386 -0
  137. package/src/ui/ask.tsx +206 -0
  138. package/src/ui/attrs.ts +51 -0
  139. package/src/ui/audit.tsx +139 -0
  140. package/src/ui/bar-chart.tsx +334 -0
  141. package/src/ui/benchmarks.tsx +143 -0
  142. package/src/ui/bits.tsx +537 -0
  143. package/src/ui/board.tsx +173 -0
  144. package/src/ui/bridge.tsx +207 -0
  145. package/src/ui/bumps.tsx +178 -0
  146. package/src/ui/callout.tsx +106 -0
  147. package/src/ui/changes.tsx +89 -0
  148. package/src/ui/chart-bits.tsx +52 -0
  149. package/src/ui/chart.ts +577 -0
  150. package/src/ui/checks.tsx +203 -0
  151. package/src/ui/child-index.tsx +44 -0
  152. package/src/ui/children.ts +43 -0
  153. package/src/ui/chips.tsx +49 -0
  154. package/src/ui/cmd.tsx +27 -0
  155. package/src/ui/columns.tsx +31 -0
  156. package/src/ui/comments.tsx +544 -0
  157. package/src/ui/compare.tsx +67 -0
  158. package/src/ui/decision.tsx +79 -0
  159. package/src/ui/deps.tsx +78 -0
  160. package/src/ui/details.tsx +43 -0
  161. package/src/ui/diff-parse.ts +307 -0
  162. package/src/ui/diff.tsx +458 -0
  163. package/src/ui/diffstat.tsx +58 -0
  164. package/src/ui/due.tsx +65 -0
  165. package/src/ui/effort.tsx +29 -0
  166. package/src/ui/endpoints.tsx +118 -0
  167. package/src/ui/envvars.tsx +96 -0
  168. package/src/ui/figure.tsx +37 -0
  169. package/src/ui/file-icon.ts +1020 -0
  170. package/src/ui/file-link.ts +32 -0
  171. package/src/ui/file-ref.tsx +39 -0
  172. package/src/ui/files.tsx +112 -0
  173. package/src/ui/findings.tsx +85 -0
  174. package/src/ui/flow.tsx +73 -0
  175. package/src/ui/funnel.tsx +121 -0
  176. package/src/ui/gantt.tsx +443 -0
  177. package/src/ui/gauges.tsx +135 -0
  178. package/src/ui/glossary.tsx +29 -0
  179. package/src/ui/graph-layout.ts +149 -0
  180. package/src/ui/graph-specs.tsx +102 -0
  181. package/src/ui/graph.tsx +278 -0
  182. package/src/ui/grid.tsx +119 -0
  183. package/src/ui/hypothesis.tsx +94 -0
  184. package/src/ui/icon.tsx +80 -0
  185. package/src/ui/incident.tsx +130 -0
  186. package/src/ui/index.ts +342 -0
  187. package/src/ui/ins-del.tsx +41 -0
  188. package/src/ui/json.tsx +190 -0
  189. package/src/ui/layout.ts +9 -0
  190. package/src/ui/line-chart.tsx +251 -0
  191. package/src/ui/matrix.tsx +208 -0
  192. package/src/ui/meta.tsx +73 -0
  193. package/src/ui/option.tsx +64 -0
  194. package/src/ui/owner.tsx +40 -0
  195. package/src/ui/packages.tsx +104 -0
  196. package/src/ui/pathway.tsx +96 -0
  197. package/src/ui/phase.tsx +41 -0
  198. package/src/ui/pie-chart.tsx +170 -0
  199. package/src/ui/plan.tsx +77 -0
  200. package/src/ui/pre.tsx +175 -0
  201. package/src/ui/priority.tsx +51 -0
  202. package/src/ui/props.tsx +77 -0
  203. package/src/ui/quadrant.tsx +172 -0
  204. package/src/ui/radar.tsx +200 -0
  205. package/src/ui/ref.tsx +160 -0
  206. package/src/ui/release.tsx +178 -0
  207. package/src/ui/req.tsx +42 -0
  208. package/src/ui/review.tsx +133 -0
  209. package/src/ui/risk.tsx +67 -0
  210. package/src/ui/sankey.tsx +287 -0
  211. package/src/ui/scatter.tsx +237 -0
  212. package/src/ui/schema.tsx +113 -0
  213. package/src/ui/score.tsx +105 -0
  214. package/src/ui/search.tsx +120 -0
  215. package/src/ui/series.tsx +38 -0
  216. package/src/ui/severity.tsx +69 -0
  217. package/src/ui/shadcn.tsx +216 -0
  218. package/src/ui/spark.tsx +86 -0
  219. package/src/ui/stack.tsx +57 -0
  220. package/src/ui/stats.tsx +63 -0
  221. package/src/ui/status-badge.tsx +66 -0
  222. package/src/ui/statuspage.tsx +238 -0
  223. package/src/ui/steps.tsx +74 -0
  224. package/src/ui/summary.tsx +41 -0
  225. package/src/ui/symbol-ref.tsx +73 -0
  226. package/src/ui/terminal.tsx +117 -0
  227. package/src/ui/tests.tsx +218 -0
  228. package/src/ui/timeline.tsx +63 -0
  229. package/src/ui/toc.tsx +56 -0
  230. package/src/ui/tones.ts +187 -0
  231. package/src/ui/trace.tsx +69 -0
  232. package/src/ui/tree.tsx +281 -0
  233. package/src/ui/treemap.tsx +128 -0
  234. package/src/ui/venn.tsx +258 -0
  235. package/src/ui/verdict.tsx +78 -0
  236. package/src/ui/waterfall.tsx +142 -0
@@ -0,0 +1,94 @@
1
+ import * as v from "valibot";
2
+
3
+ import { defineComponent } from "../define.js";
4
+ import { isOneOf } from "../guards.js";
5
+ import { TITLE_PROP } from "./attrs.js";
6
+ import { CountedList, IndexedCard, Pill } from "./bits.js";
7
+ import { useChildIndex } from "./child-index.js";
8
+ import { countByProp } from "./children.js";
9
+ import { TONE } from "./tones.js";
10
+
11
+ export const HYPOTHESIS_STATUSES = [
12
+ "supported",
13
+ "refuted",
14
+ "untested",
15
+ ] as const;
16
+ export type HypothesisStatus = (typeof HYPOTHESIS_STATUSES)[number];
17
+
18
+ export const isHypothesisStatus = isOneOf(HYPOTHESIS_STATUSES);
19
+
20
+ const STYLES: Record<
21
+ HypothesisStatus,
22
+ { cls: string; icon: string; label: string }
23
+ > = {
24
+ refuted: {
25
+ cls: TONE.red,
26
+ icon: "lucide:circle-x",
27
+ label: "Refuted",
28
+ },
29
+ supported: {
30
+ cls: TONE.emerald,
31
+ icon: "lucide:circle-check",
32
+ label: "Supported",
33
+ },
34
+ untested: {
35
+ cls: TONE.neutral,
36
+ icon: "lucide:flask-conical",
37
+ label: "Untested",
38
+ },
39
+ };
40
+
41
+ export const Hypothesis = defineComponent(
42
+ {
43
+ description:
44
+ "検証対象の仮説。status は supported|refuted|untested(支持された/棄却された/未検証)。title と children(検証内容・証拠)",
45
+ schema: v.looseObject({
46
+ status: v.optional(v.picklist(HYPOTHESIS_STATUSES), "untested"),
47
+ title: v.optional(v.string()),
48
+ }),
49
+ },
50
+ ({ status, title, children }) => {
51
+ const { n } = useChildIndex();
52
+ const s = STYLES[status];
53
+ return (
54
+ <IndexedCard
55
+ n={n}
56
+ pill={
57
+ <Pill className={s.cls} icon={s.icon}>
58
+ {s.label}
59
+ </Pill>
60
+ }
61
+ title={title}
62
+ >
63
+ {children}
64
+ </IndexedCard>
65
+ );
66
+ }
67
+ );
68
+
69
+ export const Hypotheses = defineComponent(
70
+ {
71
+ description:
72
+ "仮説リストのコンテナ。<Hypothesis> を並べ、status 別の件数サマリを上部に表示",
73
+ schema: v.looseObject(TITLE_PROP),
74
+ },
75
+ ({ title, children }) => (
76
+ <CountedList
77
+ counts={countByProp(
78
+ children,
79
+ Hypothesis,
80
+ "status",
81
+ isHypothesisStatus,
82
+ "untested"
83
+ )}
84
+ labelOf={(k) =>
85
+ isHypothesisStatus(k) ? STYLES[k].label.toLowerCase() : k
86
+ }
87
+ noun={["hypothesis", "hypotheses"]}
88
+ order={HYPOTHESIS_STATUSES}
89
+ title={title}
90
+ >
91
+ {children}
92
+ </CountedList>
93
+ )
94
+ );
@@ -0,0 +1,80 @@
1
+ import { icons as lucide } from "@iconify-json/lucide";
2
+ import { icons as vscodeIcons } from "@iconify-json/vscode-icons";
3
+ import { addCollection, Icon as IconifyIcon, iconLoaded } from "@iconify/react";
4
+ import * as v from "valibot";
5
+
6
+ import { defineComponent } from "../define.js";
7
+ import { nonEmpty } from "../guards.js";
8
+
9
+ // Bundled icon sets, registered once so names resolve synchronously during
10
+ // static rendering (no runtime fetch — the Iconify API is never used).
11
+ addCollection(lucide);
12
+ addCollection(vscodeIcons);
13
+
14
+ /**
15
+ * Every icon name resolved while a document renders. The renderer drains this
16
+ * around each render so the hydration bundle can register exactly the used
17
+ * subset — the full sets are several MB. On the client the set fills but is
18
+ * never read.
19
+ */
20
+ const usedIcons = new Set<string>();
21
+
22
+ /** Drain the recorded icon names (returns them and resets for the next render). */
23
+ export const takeUsedIcons = (): string[] => {
24
+ const names = [...usedIcons];
25
+ usedIcons.clear();
26
+ return names;
27
+ };
28
+
29
+ const DEFAULT_PREFIX = "lucide";
30
+
31
+ /** Normalize `name` to `prefix:name`; bare names use the lucide set. */
32
+ export const normalizeIconName = (name: string): string =>
33
+ name.includes(":") ? name : `${DEFAULT_PREFIX}:${name}`;
34
+
35
+ /** True when `name` resolves to a registered icon. */
36
+ export const hasIcon = (name: unknown): name is string => {
37
+ if (typeof name !== "string") {
38
+ return false;
39
+ }
40
+ const normalized = normalizeIconName(name);
41
+ const loaded = iconLoaded(normalized);
42
+ // Record successful probes too: a false on the client must match a false
43
+ // here, and a true result typically ends up rendered via <Icon>.
44
+ if (loaded) {
45
+ usedIcons.add(normalized);
46
+ }
47
+ return loaded;
48
+ };
49
+
50
+ export const Icon = defineComponent(
51
+ {
52
+ description:
53
+ 'Iconify アイコン (lucide と vscode-icons 同梱)。name="lucide:rocket"("rocket" でも可)や "vscode-icons:file-type-typescript"。label で意味を持つ画像、省略時は装飾 (aria-hidden)。className でサイズ/色を指定',
54
+ schema: v.looseObject({
55
+ className: v.optional(v.string()),
56
+ label: v.optional(v.string()),
57
+ name: v.pipe(
58
+ v.string(),
59
+ v.check(
60
+ (n) => iconLoaded(normalizeIconName(n)),
61
+ (i) => `unknown icon: ${i.input}`
62
+ )
63
+ ),
64
+ }),
65
+ },
66
+ ({ name, label, className }) => {
67
+ const normalized = normalizeIconName(name);
68
+ usedIcons.add(normalized);
69
+ return (
70
+ <IconifyIcon
71
+ ssr
72
+ aria-hidden={!nonEmpty(label)}
73
+ aria-label={nonEmpty(label) ? label : undefined}
74
+ className={className}
75
+ icon={normalized}
76
+ inline
77
+ />
78
+ );
79
+ }
80
+ );
@@ -0,0 +1,130 @@
1
+ import type { ReactElement } from "react";
2
+ import * as v from "valibot";
3
+
4
+ import { defineComponent } from "../define.js";
5
+ import { isOneOf, nonEmpty } from "../guards.js";
6
+ import { Panel, Pill, TrimBody } from "./bits.js";
7
+ import { Icon } from "./icon.js";
8
+ import { SEVERITY_LEVELS, Severity } from "./severity.js";
9
+ import { BORDER_CLS, TEXT, TEXT_SUB, TONE, TONE_TEXT } from "./tones.js";
10
+
11
+ export const INCIDENT_STATUSES = [
12
+ "investigating",
13
+ "identified",
14
+ "monitoring",
15
+ "resolved",
16
+ ] as const;
17
+ export type IncidentStatus = (typeof INCIDENT_STATUSES)[number];
18
+
19
+ const isIncidentStatus = isOneOf(INCIDENT_STATUSES);
20
+
21
+ const INCIDENT_STYLES: Record<
22
+ IncidentStatus,
23
+ { cls: string; icon: string; label: string }
24
+ > = {
25
+ identified: {
26
+ cls: TONE.amber,
27
+ icon: "lucide:crosshair",
28
+ label: "Identified",
29
+ },
30
+ investigating: {
31
+ cls: TONE.orange,
32
+ icon: "lucide:search",
33
+ label: "Investigating",
34
+ },
35
+ monitoring: {
36
+ cls: TONE.sky,
37
+ icon: "lucide:activity",
38
+ label: "Monitoring",
39
+ },
40
+ resolved: {
41
+ cls: TONE.emerald,
42
+ icon: "lucide:circle-check",
43
+ label: "Resolved",
44
+ },
45
+ };
46
+
47
+ const MetaRow = (props: {
48
+ label: string;
49
+ value: string | undefined;
50
+ }): ReactElement | null =>
51
+ nonEmpty(props.value) ? (
52
+ <div className="flex items-baseline gap-2">
53
+ <span className={`w-20 shrink-0 ${TEXT_SUB} ${TEXT.faint}`}>
54
+ {props.label}
55
+ </span>
56
+ <span className="text-sm">{props.value}</span>
57
+ </div>
58
+ ) : null;
59
+
60
+ export const Incident = defineComponent(
61
+ {
62
+ description:
63
+ "インシデント/ポストモーテムのヘッダブロック。title は必須、severity (critical|high|medium|low|info) と status (investigating|identified|monitoring|resolved) のピル、started/detected/resolved/duration/impact をメタ行に表示。children は概要文",
64
+ schema: v.looseObject({
65
+ detected: v.optional(v.string()),
66
+ duration: v.optional(v.string()),
67
+ impact: v.optional(v.string()),
68
+ resolved: v.optional(v.string()),
69
+ severity: v.optional(v.picklist(SEVERITY_LEVELS)),
70
+ started: v.optional(v.string()),
71
+ status: v.optional(v.picklist(INCIDENT_STATUSES)),
72
+ title: v.string(),
73
+ }),
74
+ },
75
+ ({
76
+ title,
77
+ severity,
78
+ status,
79
+ started,
80
+ detected,
81
+ resolved,
82
+ duration,
83
+ impact,
84
+ children,
85
+ }) => {
86
+ const st = isIncidentStatus(status) ? INCIDENT_STYLES[status] : undefined;
87
+ const meta = [
88
+ ["Started", started],
89
+ ["Detected", detected],
90
+ ["Resolved", resolved],
91
+ ["Duration", duration],
92
+ ] as const;
93
+ const hasMeta = meta.some(([, val]) => nonEmpty(val)) || nonEmpty(impact);
94
+ return (
95
+ <Panel className="px-4 py-3">
96
+ <div className="flex flex-wrap items-center gap-2">
97
+ {severity === undefined ? null : <Severity level={severity} />}
98
+ {st === undefined ? null : (
99
+ <Pill className={st.cls} icon={st.icon}>
100
+ {st.label}
101
+ </Pill>
102
+ )}
103
+ <span className="font-semibold">{title}</span>
104
+ </div>
105
+ {hasMeta ? (
106
+ <div className={`mt-2 space-y-1 border-t pt-2 ${BORDER_CLS}`}>
107
+ {meta.map(([label, val]) => (
108
+ <MetaRow key={label} label={label} value={val} />
109
+ ))}
110
+ {nonEmpty(impact) ? (
111
+ <div className="flex items-baseline gap-2">
112
+ <span className={`w-20 shrink-0 ${TEXT_SUB} ${TEXT.faint}`}>
113
+ Impact
114
+ </span>
115
+ <span className={`text-sm font-medium ${TONE_TEXT.red}`}>
116
+ <Icon
117
+ className="mr-1 inline h-3.5 w-3.5 align-[-2px]"
118
+ name="lucide:zap"
119
+ />
120
+ {impact}
121
+ </span>
122
+ </div>
123
+ ) : null}
124
+ </div>
125
+ ) : null}
126
+ <TrimBody className="mt-2 text-sm">{children}</TrimBody>
127
+ </Panel>
128
+ );
129
+ }
130
+ );
@@ -0,0 +1,342 @@
1
+ import type { ComponentMap } from "../define.js";
2
+ import { Approval, Approvals } from "./approvals.js";
3
+ import { Ask, Choice, Question } from "./ask.js";
4
+ import { Audit, Vuln } from "./audit.js";
5
+ import { Bar, BarChart } from "./bar-chart.js";
6
+ import { Bench, Benchmarks } from "./benchmarks.js";
7
+ import { Board, BoardCard, Lane } from "./board.js";
8
+ import { Bridge, Delta } from "./bridge.js";
9
+ import { Bump, Bumps } from "./bumps.js";
10
+ import { Callout } from "./callout.js";
11
+ import { Change, Changes } from "./changes.js";
12
+ import { Check, Checks } from "./checks.js";
13
+ import { Cmd } from "./cmd.js";
14
+ import { Column, Columns } from "./columns.js";
15
+ import { Comments } from "./comments.js";
16
+ import { After, Before } from "./compare.js";
17
+ import { Decision } from "./decision.js";
18
+ import { Dep, Deps } from "./deps.js";
19
+ import { Details } from "./details.js";
20
+ import { DiffStat } from "./diffstat.js";
21
+ import { Due } from "./due.js";
22
+ import { Effort } from "./effort.js";
23
+ import { Endpoint, Endpoints } from "./endpoints.js";
24
+ import { EnvVar, EnvVars } from "./envvars.js";
25
+ import { Figure } from "./figure.js";
26
+ import { FileRef } from "./file-ref.js";
27
+ import { File, Files } from "./files.js";
28
+ import { Finding, Findings } from "./findings.js";
29
+ import { Flow, FlowStep } from "./flow.js";
30
+ import { Funnel, Stage } from "./funnel.js";
31
+ import { Gantt, Milestone, Task } from "./gantt.js";
32
+ import { Gauge, Gauges } from "./gauges.js";
33
+ import { Glossary, Term } from "./glossary.js";
34
+ import { Edge, Graph, Node } from "./graph.js";
35
+ import { Cell, Grid } from "./grid.js";
36
+ import { Hypotheses, Hypothesis } from "./hypothesis.js";
37
+ import { Icon } from "./icon.js";
38
+ import { Incident } from "./incident.js";
39
+ import { Del, Ins } from "./ins-del.js";
40
+ import { Json } from "./json.js";
41
+ import { LineChart } from "./line-chart.js";
42
+ import { Matrix } from "./matrix.js";
43
+ import { Meta, MetaItem } from "./meta.js";
44
+ import { Option } from "./option.js";
45
+ import { Owner } from "./owner.js";
46
+ import { Package, Packages } from "./packages.js";
47
+ import { Pathway, Stop } from "./pathway.js";
48
+ import { Phase } from "./phase.js";
49
+ import { PieChart, Slice } from "./pie-chart.js";
50
+ import { Plan } from "./plan.js";
51
+ import { Pre } from "./pre.js";
52
+ import { Priority } from "./priority.js";
53
+ import { Prop, Props } from "./props.js";
54
+ import { Pin, Quadrant } from "./quadrant.js";
55
+ import { Radar } from "./radar.js";
56
+ import { Commit, Issue, PR, Ref } from "./ref.js";
57
+ import { Entry, Release } from "./release.js";
58
+ import { Req, Reqs } from "./req.js";
59
+ import { Comment, Review } from "./review.js";
60
+ import { Risk } from "./risk.js";
61
+ import { Link, Sankey } from "./sankey.js";
62
+ import { Point, Scatter } from "./scatter.js";
63
+ import { DbField, DbTable, Schema } from "./schema.js";
64
+ import { Score } from "./score.js";
65
+ import { Search, Searches } from "./search.js";
66
+ import { Series } from "./series.js";
67
+ import { Severity } from "./severity.js";
68
+ import { shadcnComponents } from "./shadcn.js";
69
+ import { Spark } from "./spark.js";
70
+ import { Row, Stack } from "./stack.js";
71
+ import { Stat, Stats } from "./stats.js";
72
+ import { StatusBadge } from "./status-badge.js";
73
+ import { Day, Service, StatusPage, Uptime } from "./statuspage.js";
74
+ import { Step, Steps } from "./steps.js";
75
+ import { Summary } from "./summary.js";
76
+ import { SymbolRef } from "./symbol-ref.js";
77
+ import { Terminal } from "./terminal.js";
78
+ import { Test, Tests } from "./tests.js";
79
+ import { Event, Timeline } from "./timeline.js";
80
+ import { Toc } from "./toc.js";
81
+ import { Trace, TraceFrame } from "./trace.js";
82
+ import { Tree } from "./tree.js";
83
+ import { Tile, Treemap } from "./treemap.js";
84
+ import { Overlap, Set, Venn } from "./venn.js";
85
+ import { Verdict } from "./verdict.js";
86
+ import { Span, Waterfall } from "./waterfall.js";
87
+
88
+ export { Approval, Approvals } from "./approvals.js";
89
+ export { Ask, Choice, Question, QUESTION_TYPES } from "./ask.js";
90
+ export { Audit, Vuln } from "./audit.js";
91
+ export { Bar, BarChart } from "./bar-chart.js";
92
+ export { Bench, BENCH_BETTER, Benchmarks } from "./benchmarks.js";
93
+ export { Bridge, Delta } from "./bridge.js";
94
+ export { Bump, BUMP_KINDS, Bumps } from "./bumps.js";
95
+ export { Callout, CALLOUT_KINDS } from "./callout.js";
96
+ export { Change, CHANGE_KINDS, Changes } from "./changes.js";
97
+ export { Check, CHECK_STATUSES, Checks } from "./checks.js";
98
+ export { Cmd } from "./cmd.js";
99
+ export { Column, Columns } from "./columns.js";
100
+ export { Comments } from "./comments.js";
101
+ export { Board, BoardCard, Lane } from "./board.js";
102
+ export { After, Before } from "./compare.js";
103
+ export { Decision, DECISION_STATUSES } from "./decision.js";
104
+ export { Dep, DEP_KINDS, Deps } from "./deps.js";
105
+ export { Details } from "./details.js";
106
+ export { DiffView, parseDiff } from "./diff.js";
107
+ export type { DiffCommentSpec, FileDiff } from "./diff.js";
108
+ export { DiffStat } from "./diffstat.js";
109
+ export { Due } from "./due.js";
110
+ export { Effort, EFFORT_SIZES } from "./effort.js";
111
+ export { Endpoint, Endpoints, HTTP_METHODS } from "./endpoints.js";
112
+ export { EnvVar, EnvVars } from "./envvars.js";
113
+ export { Figure } from "./figure.js";
114
+ export { FileRef } from "./file-ref.js";
115
+ export { File, FILE_KINDS, Files } from "./files.js";
116
+ export { CONFIDENCES, Finding, Findings } from "./findings.js";
117
+ export { Flow, FlowStep } from "./flow.js";
118
+ export { Funnel, Stage } from "./funnel.js";
119
+ export { Gantt, Milestone, Task } from "./gantt.js";
120
+ export { Gauge, GAUGE_TONES, Gauges } from "./gauges.js";
121
+ export { Glossary, Term } from "./glossary.js";
122
+ export { Edge, Graph, Node } from "./graph.js";
123
+ export { Cell, Grid } from "./grid.js";
124
+ export { Hypotheses, Hypothesis, HYPOTHESIS_STATUSES } from "./hypothesis.js";
125
+ export { hasIcon, Icon, normalizeIconName } from "./icon.js";
126
+ export { Incident, INCIDENT_STATUSES } from "./incident.js";
127
+ export { Del, Ins } from "./ins-del.js";
128
+ export { Json } from "./json.js";
129
+ export { LineChart } from "./line-chart.js";
130
+ export { Matrix } from "./matrix.js";
131
+ export { Meta, MetaItem } from "./meta.js";
132
+ export { Option, OPTION_STATUSES } from "./option.js";
133
+ export { Owner } from "./owner.js";
134
+ export { Package, PACKAGE_KINDS, Packages } from "./packages.js";
135
+ export { Pathway, Stop } from "./pathway.js";
136
+ export { Phase } from "./phase.js";
137
+ export { PieChart, Slice } from "./pie-chart.js";
138
+ export { Pin, Quadrant } from "./quadrant.js";
139
+ export { Plan, PlanHeader } from "./plan.js";
140
+ export { Pre } from "./pre.js";
141
+ export { Priority, PRIORITY_LEVELS } from "./priority.js";
142
+ export { Prop, Props } from "./props.js";
143
+ export { Radar } from "./radar.js";
144
+ export { Commit, Issue, PR, Ref } from "./ref.js";
145
+ export { Entry, ENTRY_KINDS, Release } from "./release.js";
146
+ export { Req, Reqs } from "./req.js";
147
+ export { Comment, Review, REVIEW_VERDICTS } from "./review.js";
148
+ export { Risk, RISK_LEVELS } from "./risk.js";
149
+ export { Link, Sankey } from "./sankey.js";
150
+ export { Point, Scatter } from "./scatter.js";
151
+ export { DbField, DbTable, Schema } from "./schema.js";
152
+ export { Score } from "./score.js";
153
+ export { Search, Searches } from "./search.js";
154
+ export { Series } from "./series.js";
155
+ export { isSeverity, Severity, SEVERITY_LEVELS } from "./severity.js";
156
+ export { Row, Stack } from "./stack.js";
157
+ export { Spark, SPARK_TONES } from "./spark.js";
158
+ export { Stat, Stats } from "./stats.js";
159
+ export { StatusBadge, STATUSES } from "./status-badge.js";
160
+ export {
161
+ Day,
162
+ DAY_STATUSES,
163
+ Service,
164
+ SERVICE_STATUSES,
165
+ StatusPage,
166
+ Uptime,
167
+ } from "./statuspage.js";
168
+ export { Step, Steps } from "./steps.js";
169
+ export { Summary } from "./summary.js";
170
+ export { SYMBOL_KINDS, SymbolRef } from "./symbol-ref.js";
171
+ export { TERMINAL_LANGS, Terminal } from "./terminal.js";
172
+ export {
173
+ formatDuration,
174
+ parseDuration,
175
+ Test,
176
+ TEST_STATUSES,
177
+ Tests,
178
+ } from "./tests.js";
179
+ export { Event, Timeline } from "./timeline.js";
180
+ export { Toc } from "./toc.js";
181
+ export { FRAME_KINDS, Trace, TraceFrame } from "./trace.js";
182
+ export { Tree } from "./tree.js";
183
+ export { Tile, Treemap } from "./treemap.js";
184
+ export { Overlap, Set, Venn } from "./venn.js";
185
+ export { Verdict, VERDICTS } from "./verdict.js";
186
+ export { Span, Waterfall } from "./waterfall.js";
187
+
188
+ /**
189
+ * The built-in component catalog available inside mdxr documents.
190
+ * `pre` overrides fenced code blocks; the rest are usable as MDX JSX elements.
191
+ * shadcn/ui (Base UI) primitives are included — rendered documents carry a
192
+ * hydration bundle, so interactive parts work in the browser.
193
+ * `Toc` and `CodeFile` are remark-level features (injected/expanded before
194
+ * render); `Toc` still needs this entry so MDX accepts the element.
195
+ */
196
+ export const builtinComponents: ComponentMap = {
197
+ After,
198
+ Approval,
199
+ Approvals,
200
+ Ask,
201
+ Audit,
202
+ Bar,
203
+ BarChart,
204
+ Before,
205
+ Bench,
206
+ Benchmarks,
207
+ Board,
208
+ BoardCard,
209
+ Bridge,
210
+ Bump,
211
+ Bumps,
212
+ Callout,
213
+ Cell,
214
+ Change,
215
+ Changes,
216
+ Check,
217
+ Checks,
218
+ Choice,
219
+ Cmd,
220
+ Column,
221
+ Columns,
222
+ Comment,
223
+ Comments,
224
+ Commit,
225
+ Day,
226
+ DbField,
227
+ DbTable,
228
+ Decision,
229
+ Del,
230
+ Delta,
231
+ Dep,
232
+ Deps,
233
+ Details,
234
+ DiffStat,
235
+ Due,
236
+ Edge,
237
+ Effort,
238
+ Endpoint,
239
+ Endpoints,
240
+ Entry,
241
+ EnvVar,
242
+ EnvVars,
243
+ Event,
244
+ Figure,
245
+ File,
246
+ FileRef,
247
+ Files,
248
+ Finding,
249
+ Findings,
250
+ Flow,
251
+ FlowStep,
252
+ Funnel,
253
+ Gantt,
254
+ Gauge,
255
+ Gauges,
256
+ Glossary,
257
+ Graph,
258
+ Grid,
259
+ Hypotheses,
260
+ Hypothesis,
261
+ Icon,
262
+ Incident,
263
+ Ins,
264
+ Issue,
265
+ Json,
266
+ Lane,
267
+ LineChart,
268
+ Link,
269
+ Matrix,
270
+ Meta,
271
+ MetaItem,
272
+ Milestone,
273
+ Node,
274
+ Option,
275
+ Overlap,
276
+ Owner,
277
+ PR,
278
+ Package,
279
+ Packages,
280
+ Pathway,
281
+ Phase,
282
+ PieChart,
283
+ Pin,
284
+ Plan,
285
+ Point,
286
+ Priority,
287
+ Prop,
288
+ Props,
289
+ Quadrant,
290
+ Question,
291
+ Radar,
292
+ Ref,
293
+ Release,
294
+ Req,
295
+ Reqs,
296
+ Review,
297
+ Risk,
298
+ Row,
299
+ Sankey,
300
+ Scatter,
301
+ Schema,
302
+ Score,
303
+ Search,
304
+ Searches,
305
+ Series,
306
+ Service,
307
+ Set,
308
+ Severity,
309
+ Slice,
310
+ Span,
311
+ Spark,
312
+ Stack,
313
+ Stage,
314
+ Stat,
315
+ Stats,
316
+ StatusBadge,
317
+ StatusPage,
318
+ Step,
319
+ Steps,
320
+ Stop,
321
+ Summary,
322
+ SymbolRef,
323
+ Task,
324
+ Term,
325
+ Terminal,
326
+ Test,
327
+ Tests,
328
+ Tile,
329
+ Timeline,
330
+ Toc,
331
+ Trace,
332
+ TraceFrame,
333
+ Tree,
334
+ Treemap,
335
+ Uptime,
336
+ Venn,
337
+ Verdict,
338
+ Vuln,
339
+ Waterfall,
340
+ pre: Pre,
341
+ ...shadcnComponents,
342
+ };
@@ -0,0 +1,41 @@
1
+ import * as v from "valibot";
2
+
3
+ import { defineComponent } from "../define.js";
4
+ import { nonEmpty } from "../guards.js";
5
+ import { TITLE_PROP } from "./attrs.js";
6
+
7
+ /**
8
+ * Inline word-level edits for prose/config changes — the inline counterpart
9
+ * of Before/After blocks and ```diff fences. Renders semantic <ins>/<del>.
10
+ */
11
+ export const Ins = defineComponent(
12
+ {
13
+ description:
14
+ "挿入テキスト (インライン、緑+下線)。<Del> と対で before/after の差分を文やコード片に示す",
15
+ schema: v.looseObject(TITLE_PROP),
16
+ },
17
+ ({ title, children }) => (
18
+ <ins
19
+ className="rounded bg-emerald-500/15 px-0.5 py-px text-emerald-800 underline decoration-emerald-600/50 decoration-1 underline-offset-2 dark:text-emerald-300 dark:decoration-emerald-400/50"
20
+ title={nonEmpty(title) ? title : "inserted"}
21
+ >
22
+ {children}
23
+ </ins>
24
+ )
25
+ );
26
+
27
+ export const Del = defineComponent(
28
+ {
29
+ description:
30
+ "削除テキスト (インライン、赤+取り消し線)。<Ins> と対で before/after の差分を文やコード片に示す",
31
+ schema: v.looseObject(TITLE_PROP),
32
+ },
33
+ ({ title, children }) => (
34
+ <del
35
+ className="rounded bg-red-500/15 px-0.5 py-px text-red-800 decoration-red-500/70 decoration-1 dark:text-red-300"
36
+ title={nonEmpty(title) ? title : "deleted"}
37
+ >
38
+ {children}
39
+ </del>
40
+ )
41
+ );