docsui-cli 0.0.59

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 (49) hide show
  1. package/README.md +279 -0
  2. package/dist/commands/add.d.ts +5 -0
  3. package/dist/commands/add.js +254 -0
  4. package/dist/commands/doctor.d.ts +5 -0
  5. package/dist/commands/doctor.js +250 -0
  6. package/dist/commands/init.d.ts +5 -0
  7. package/dist/commands/init.js +548 -0
  8. package/dist/commands/list.d.ts +5 -0
  9. package/dist/commands/list.js +84 -0
  10. package/dist/commands/mcp.d.ts +3 -0
  11. package/dist/commands/mcp.js +1562 -0
  12. package/dist/commands/new.d.ts +5 -0
  13. package/dist/commands/new.js +113 -0
  14. package/dist/commands/remove.d.ts +5 -0
  15. package/dist/commands/remove.js +134 -0
  16. package/dist/commands/save.d.ts +5 -0
  17. package/dist/commands/save.js +60 -0
  18. package/dist/commands/update.d.ts +5 -0
  19. package/dist/commands/update.js +247 -0
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.js +88 -0
  22. package/dist/latex-to-primitives.d.ts +59 -0
  23. package/dist/latex-to-primitives.js +1019 -0
  24. package/dist/lib/component-registry.d.ts +33 -0
  25. package/dist/lib/component-registry.js +843 -0
  26. package/dist/lib/css-tokens.d.ts +8 -0
  27. package/dist/lib/css-tokens.js +294 -0
  28. package/dist/metadata.d.ts +1 -0
  29. package/dist/metadata.js +4 -0
  30. package/dist/symbol-map.d.ts +30 -0
  31. package/dist/symbol-map.js +1607 -0
  32. package/dist/utils/detect-structure.d.ts +16 -0
  33. package/dist/utils/detect-structure.js +58 -0
  34. package/dist/utils/fetch-component.d.ts +13 -0
  35. package/dist/utils/fetch-component.js +81 -0
  36. package/dist/utils/get-config.d.ts +14 -0
  37. package/dist/utils/get-config.js +19 -0
  38. package/dist/utils/install-deps.d.ts +3 -0
  39. package/dist/utils/install-deps.js +23 -0
  40. package/dist/utils/save-mdx-page.d.ts +35 -0
  41. package/dist/utils/save-mdx-page.js +44 -0
  42. package/dist/utils/scan-mdx.d.ts +20 -0
  43. package/dist/utils/scan-mdx.js +106 -0
  44. package/dist/utils/telemetry.d.ts +3 -0
  45. package/dist/utils/telemetry.js +42 -0
  46. package/dist/utils/write-component.d.ts +7 -0
  47. package/dist/utils/write-component.js +25 -0
  48. package/dist/webview-bundle.js +3478 -0
  49. package/package.json +94 -0
@@ -0,0 +1,8 @@
1
+ declare const CSS_VARS_BLOCK_V3 = "\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 142 71% 45%;\n --radius: 0.5rem;\n }\n .dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 142 71% 45%;\n }\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}\n\n/* Shiki syntax highlighting \u2014 light/dark dual theme */\n[data-code-block] code span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n font-weight: var(--shiki-light-font-weight);\n}\n.dark [data-code-block] code span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n font-weight: var(--shiki-dark-font-weight);\n}\n";
2
+ declare const CSS_VARS_BLOCK_V4 = "\n@theme inline {\n --color-background: hsl(var(--background));\n --color-foreground: hsl(var(--foreground));\n --color-card: hsl(var(--card));\n --color-card-foreground: hsl(var(--card-foreground));\n --color-popover: hsl(var(--popover));\n --color-popover-foreground: hsl(var(--popover-foreground));\n --color-primary: hsl(var(--primary));\n --color-primary-foreground: hsl(var(--primary-foreground));\n --color-secondary: hsl(var(--secondary));\n --color-secondary-foreground: hsl(var(--secondary-foreground));\n --color-muted: hsl(var(--muted));\n --color-muted-foreground: hsl(var(--muted-foreground));\n --color-accent: hsl(var(--accent));\n --color-accent-foreground: hsl(var(--accent-foreground));\n --color-destructive: hsl(var(--destructive));\n --color-destructive-foreground: hsl(var(--destructive-foreground));\n --color-border: hsl(var(--border));\n --color-input: hsl(var(--input));\n --color-ring: hsl(var(--ring));\n --radius-lg: var(--radius);\n --radius-md: calc(var(--radius) - 2px);\n --radius-sm: calc(var(--radius) - 4px);\n}\n\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 142 71% 45%;\n --radius: 0.5rem;\n }\n .dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 142 71% 45%;\n }\n\n*, *::before, *::after {\n border-color: hsl(var(--border));\n}\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n/* Shiki syntax highlighting \u2014 light/dark dual theme */\n[data-code-block] code span {\n color: var(--shiki-light);\n font-style: var(--shiki-light-font-style);\n font-weight: var(--shiki-light-font-weight);\n}\n.dark [data-code-block] code span {\n color: var(--shiki-dark);\n font-style: var(--shiki-dark-font-style);\n font-weight: var(--shiki-dark-font-weight);\n}\n";
3
+ declare const MDXUI_SEMANTIC_TOKENS = "\n@layer base {\n /* \u2500\u2500 MDX UI semantic tokens \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Override these variables to rebrand callout, alert, and badge colors.\n Light mode uses Tailwind palette hex values as defaults. */\n :root {\n --mdxui-info-border: #7dd3fc; /* sky-300 */\n --mdxui-info-bg: #f0f9ff; /* sky-50 */\n --mdxui-info-text: #0c4a6e; /* sky-900 */\n --mdxui-info-accent: #0369a1; /* sky-700 */\n --mdxui-info-badge-bg: #e0f2fe; /* sky-100 */\n --mdxui-info-badge-text: #075985; /* sky-800 */\n\n --mdxui-note-border: #cbd5e1; /* slate-300 */\n --mdxui-note-bg: #f8fafc; /* slate-50 */\n --mdxui-note-text: #0f172a; /* slate-900 */\n --mdxui-note-accent: #475569; /* slate-600 */\n --mdxui-note-badge-bg: #f1f5f9; /* slate-100 */\n --mdxui-note-badge-text: #334155; /* slate-700 */\n\n --mdxui-tip-border: #6ee7b7; /* emerald-300 */\n --mdxui-tip-bg: #ecfdf5; /* emerald-50 */\n --mdxui-tip-text: #064e3b; /* emerald-900 */\n --mdxui-tip-accent: #059669; /* emerald-600 */\n --mdxui-tip-badge-bg: #d1fae5; /* emerald-100 */\n --mdxui-tip-badge-text: #065f46; /* emerald-800 */\n\n --mdxui-warning-border: #fcd34d; /* amber-300 */\n --mdxui-warning-bg: #fffbeb; /* amber-50 */\n --mdxui-warning-text: #78350f; /* amber-900 */\n --mdxui-warning-accent: #d97706; /* amber-600 */\n --mdxui-warning-badge-bg: #fef3c7; /* amber-100 */\n --mdxui-warning-badge-text: #92400e; /* amber-800 */\n\n --mdxui-danger-border: #fca5a5; /* red-300 */\n --mdxui-danger-bg: #fef2f2; /* red-50 */\n --mdxui-danger-text: #7f1d1d; /* red-900 */\n --mdxui-danger-accent: #dc2626; /* red-600 */\n --mdxui-danger-badge-bg: #fee2e2; /* red-100 */\n --mdxui-danger-badge-text: #991b1b; /* red-800 */\n\n --mdxui-success-border: #6ee7b7; /* emerald-300 */\n --mdxui-success-bg: #ecfdf5; /* emerald-50 */\n --mdxui-success-text: #064e3b; /* emerald-900 */\n --mdxui-success-accent: #059669; /* emerald-600 */\n --mdxui-success-badge-bg: #d1fae5; /* emerald-100 */\n --mdxui-success-badge-text: #065f46; /* emerald-800 */\n }\n .dark {\n --mdxui-info-border: #0369a1;\n --mdxui-info-bg: rgb(8 47 73 / 0.45);\n --mdxui-info-text: #e0f2fe;\n --mdxui-info-accent: #7dd3fc;\n --mdxui-info-badge-bg: rgb(8 47 73 / 0.5);\n --mdxui-info-badge-text: #7dd3fc;\n\n --mdxui-note-border: #475569;\n --mdxui-note-bg: rgb(30 41 59 / 0.45);\n --mdxui-note-text: #f1f5f9;\n --mdxui-note-accent: #cbd5e1;\n --mdxui-note-badge-bg: rgb(30 41 59 / 0.5);\n --mdxui-note-badge-text: #cbd5e1;\n\n --mdxui-tip-border: #059669;\n --mdxui-tip-bg: rgb(2 44 34 / 0.45);\n --mdxui-tip-text: #d1fae5;\n --mdxui-tip-accent: #6ee7b7;\n --mdxui-tip-badge-bg: rgb(2 44 34 / 0.5);\n --mdxui-tip-badge-text: #6ee7b7;\n\n --mdxui-warning-border: #d97706;\n --mdxui-warning-bg: rgb(67 20 7 / 0.45);\n --mdxui-warning-text: #fef3c7;\n --mdxui-warning-accent: #fcd34d;\n --mdxui-warning-badge-bg: rgb(67 20 7 / 0.5);\n --mdxui-warning-badge-text: #fcd34d;\n\n --mdxui-danger-border: #dc2626;\n --mdxui-danger-bg: rgb(69 10 10 / 0.45);\n --mdxui-danger-text: #fee2e2;\n --mdxui-danger-accent: #fca5a5;\n --mdxui-danger-badge-bg: rgb(69 10 10 / 0.5);\n --mdxui-danger-badge-text: #fca5a5;\n\n --mdxui-success-border: #059669;\n --mdxui-success-bg: rgb(2 44 34 / 0.45);\n --mdxui-success-text: #d1fae5;\n --mdxui-success-accent: #6ee7b7;\n --mdxui-success-badge-bg: rgb(2 44 34 / 0.5);\n --mdxui-success-badge-text: #6ee7b7;\n }\n}\n";
4
+ declare const MDXUI_V4_THEME = "\n@theme inline {\n /* MDX UI semantic color scales */\n --color-info-border: var(--mdxui-info-border);\n --color-info-bg: var(--mdxui-info-bg);\n --color-info-text: var(--mdxui-info-text);\n --color-info-accent: var(--mdxui-info-accent);\n --color-info-badge-bg: var(--mdxui-info-badge-bg);\n --color-info-badge-text: var(--mdxui-info-badge-text);\n\n --color-note-border: var(--mdxui-note-border);\n --color-note-bg: var(--mdxui-note-bg);\n --color-note-text: var(--mdxui-note-text);\n --color-note-accent: var(--mdxui-note-accent);\n --color-note-badge-bg: var(--mdxui-note-badge-bg);\n --color-note-badge-text: var(--mdxui-note-badge-text);\n\n --color-tip-border: var(--mdxui-tip-border);\n --color-tip-bg: var(--mdxui-tip-bg);\n --color-tip-text: var(--mdxui-tip-text);\n --color-tip-accent: var(--mdxui-tip-accent);\n --color-tip-badge-bg: var(--mdxui-tip-badge-bg);\n --color-tip-badge-text: var(--mdxui-tip-badge-text);\n\n --color-warning-border: var(--mdxui-warning-border);\n --color-warning-bg: var(--mdxui-warning-bg);\n --color-warning-text: var(--mdxui-warning-text);\n --color-warning-accent: var(--mdxui-warning-accent);\n --color-warning-badge-bg: var(--mdxui-warning-badge-bg);\n --color-warning-badge-text: var(--mdxui-warning-badge-text);\n\n --color-danger-border: var(--mdxui-danger-border);\n --color-danger-bg: var(--mdxui-danger-bg);\n --color-danger-text: var(--mdxui-danger-text);\n --color-danger-accent: var(--mdxui-danger-accent);\n --color-danger-badge-bg: var(--mdxui-danger-badge-bg);\n --color-danger-badge-text: var(--mdxui-danger-badge-text);\n\n --color-success-border: var(--mdxui-success-border);\n --color-success-bg: var(--mdxui-success-bg);\n --color-success-text: var(--mdxui-success-text);\n --color-success-accent: var(--mdxui-success-accent);\n --color-success-badge-bg: var(--mdxui-success-badge-bg);\n --color-success-badge-text: var(--mdxui-success-badge-text);\n}\n";
5
+ declare const MDXUI_TAILWIND_COLOR_SCALES = " /* MDX UI semantic tokens */\n info: { border: \"var(--mdxui-info-border)\", bg: \"var(--mdxui-info-bg)\", text: \"var(--mdxui-info-text)\", accent: \"var(--mdxui-info-accent)\", \"badge-bg\": \"var(--mdxui-info-badge-bg)\", \"badge-text\": \"var(--mdxui-info-badge-text)\" },\n note: { border: \"var(--mdxui-note-border)\", bg: \"var(--mdxui-note-bg)\", text: \"var(--mdxui-note-text)\", accent: \"var(--mdxui-note-accent)\", \"badge-bg\": \"var(--mdxui-note-badge-bg)\", \"badge-text\": \"var(--mdxui-note-badge-text)\" },\n tip: { border: \"var(--mdxui-tip-border)\", bg: \"var(--mdxui-tip-bg)\", text: \"var(--mdxui-tip-text)\", accent: \"var(--mdxui-tip-accent)\", \"badge-bg\": \"var(--mdxui-tip-badge-bg)\", \"badge-text\": \"var(--mdxui-tip-badge-text)\" },\n warning: { border: \"var(--mdxui-warning-border)\", bg: \"var(--mdxui-warning-bg)\", text: \"var(--mdxui-warning-text)\", accent: \"var(--mdxui-warning-accent)\", \"badge-bg\": \"var(--mdxui-warning-badge-bg)\", \"badge-text\": \"var(--mdxui-warning-badge-text)\" },\n danger: { border: \"var(--mdxui-danger-border)\", bg: \"var(--mdxui-danger-bg)\", text: \"var(--mdxui-danger-text)\", accent: \"var(--mdxui-danger-accent)\", \"badge-bg\": \"var(--mdxui-danger-badge-bg)\", \"badge-text\": \"var(--mdxui-danger-badge-text)\" },\n success: { border: \"var(--mdxui-success-border)\", bg: \"var(--mdxui-success-bg)\", text: \"var(--mdxui-success-text)\", accent: \"var(--mdxui-success-accent)\", \"badge-bg\": \"var(--mdxui-success-badge-bg)\", \"badge-text\": \"var(--mdxui-success-badge-text)\" },";
6
+ declare const TAILWIND_V3_THEME_EXTENSIONS = "\n colors: {\n border: \"hsl(var(--border))\",\n input: \"hsl(var(--input))\",\n ring: \"hsl(var(--ring))\",\n background: \"hsl(var(--background))\",\n foreground: \"hsl(var(--foreground))\",\n primary: {\n DEFAULT: \"hsl(var(--primary))\",\n foreground: \"hsl(var(--primary-foreground))\",\n },\n secondary: {\n DEFAULT: \"hsl(var(--secondary))\",\n foreground: \"hsl(var(--secondary-foreground))\",\n },\n destructive: {\n DEFAULT: \"hsl(var(--destructive))\",\n foreground: \"hsl(var(--destructive-foreground))\",\n },\n muted: {\n DEFAULT: \"hsl(var(--muted))\",\n foreground: \"hsl(var(--muted-foreground))\",\n },\n accent: {\n DEFAULT: \"hsl(var(--accent))\",\n foreground: \"hsl(var(--accent-foreground))\",\n },\n card: {\n DEFAULT: \"hsl(var(--card))\",\n foreground: \"hsl(var(--card-foreground))\",\n },\n /* MDX UI semantic tokens */\n info: { border: \"var(--mdxui-info-border)\", bg: \"var(--mdxui-info-bg)\", text: \"var(--mdxui-info-text)\", accent: \"var(--mdxui-info-accent)\", \"badge-bg\": \"var(--mdxui-info-badge-bg)\", \"badge-text\": \"var(--mdxui-info-badge-text)\" },\n note: { border: \"var(--mdxui-note-border)\", bg: \"var(--mdxui-note-bg)\", text: \"var(--mdxui-note-text)\", accent: \"var(--mdxui-note-accent)\", \"badge-bg\": \"var(--mdxui-note-badge-bg)\", \"badge-text\": \"var(--mdxui-note-badge-text)\" },\n tip: { border: \"var(--mdxui-tip-border)\", bg: \"var(--mdxui-tip-bg)\", text: \"var(--mdxui-tip-text)\", accent: \"var(--mdxui-tip-accent)\", \"badge-bg\": \"var(--mdxui-tip-badge-bg)\", \"badge-text\": \"var(--mdxui-tip-badge-text)\" },\n warning: { border: \"var(--mdxui-warning-border)\", bg: \"var(--mdxui-warning-bg)\", text: \"var(--mdxui-warning-text)\", accent: \"var(--mdxui-warning-accent)\", \"badge-bg\": \"var(--mdxui-warning-badge-bg)\", \"badge-text\": \"var(--mdxui-warning-badge-text)\" },\n danger: { border: \"var(--mdxui-danger-border)\", bg: \"var(--mdxui-danger-bg)\", text: \"var(--mdxui-danger-text)\", accent: \"var(--mdxui-danger-accent)\", \"badge-bg\": \"var(--mdxui-danger-badge-bg)\", \"badge-text\": \"var(--mdxui-danger-badge-text)\" },\n success: { border: \"var(--mdxui-success-border)\", bg: \"var(--mdxui-success-bg)\", text: \"var(--mdxui-success-text)\", accent: \"var(--mdxui-success-accent)\", \"badge-bg\": \"var(--mdxui-success-badge-bg)\", \"badge-text\": \"var(--mdxui-success-badge-text)\" },\n },\n borderRadius: {\n lg: \"var(--radius)\",\n md: \"calc(var(--radius) - 2px)\",\n sm: \"calc(var(--radius) - 4px)\",\n },";
7
+
8
+ export { CSS_VARS_BLOCK_V3, CSS_VARS_BLOCK_V4, MDXUI_SEMANTIC_TOKENS, MDXUI_TAILWIND_COLOR_SCALES, MDXUI_V4_THEME, TAILWIND_V3_THEME_EXTENSIONS };
@@ -0,0 +1,294 @@
1
+ const SHIKI_CSS = `
2
+ /* Shiki syntax highlighting \u2014 light/dark dual theme */
3
+ [data-code-block] code span {
4
+ color: var(--shiki-light);
5
+ font-style: var(--shiki-light-font-style);
6
+ font-weight: var(--shiki-light-font-weight);
7
+ }
8
+ .dark [data-code-block] code span {
9
+ color: var(--shiki-dark);
10
+ font-style: var(--shiki-dark-font-style);
11
+ font-weight: var(--shiki-dark-font-weight);
12
+ }
13
+ `;
14
+ const CSS_VARS_ROOT = `
15
+ :root {
16
+ --background: 0 0% 100%;
17
+ --foreground: 240 10% 3.9%;
18
+ --card: 0 0% 100%;
19
+ --card-foreground: 240 10% 3.9%;
20
+ --popover: 0 0% 100%;
21
+ --popover-foreground: 240 10% 3.9%;
22
+ --primary: 240 5.9% 10%;
23
+ --primary-foreground: 0 0% 98%;
24
+ --secondary: 240 4.8% 95.9%;
25
+ --secondary-foreground: 240 5.9% 10%;
26
+ --muted: 240 4.8% 95.9%;
27
+ --muted-foreground: 240 3.8% 46.1%;
28
+ --accent: 240 4.8% 95.9%;
29
+ --accent-foreground: 240 5.9% 10%;
30
+ --destructive: 0 84.2% 60.2%;
31
+ --destructive-foreground: 0 0% 98%;
32
+ --border: 240 5.9% 90%;
33
+ --input: 240 5.9% 90%;
34
+ --ring: 142 71% 45%;
35
+ --radius: 0.5rem;
36
+ }
37
+ .dark {
38
+ --background: 240 10% 3.9%;
39
+ --foreground: 0 0% 98%;
40
+ --card: 240 10% 3.9%;
41
+ --card-foreground: 0 0% 98%;
42
+ --popover: 240 10% 3.9%;
43
+ --popover-foreground: 0 0% 98%;
44
+ --primary: 0 0% 98%;
45
+ --primary-foreground: 240 5.9% 10%;
46
+ --secondary: 240 3.7% 15.9%;
47
+ --secondary-foreground: 0 0% 98%;
48
+ --muted: 240 3.7% 15.9%;
49
+ --muted-foreground: 240 5% 64.9%;
50
+ --accent: 240 3.7% 15.9%;
51
+ --accent-foreground: 0 0% 98%;
52
+ --destructive: 0 62.8% 30.6%;
53
+ --destructive-foreground: 0 0% 98%;
54
+ --border: 240 3.7% 15.9%;
55
+ --input: 240 3.7% 15.9%;
56
+ --ring: 142 71% 45%;
57
+ }`;
58
+ const CSS_VARS_BLOCK_V3 = `
59
+ @layer base {${CSS_VARS_ROOT}
60
+ * {
61
+ @apply border-border;
62
+ }
63
+ body {
64
+ @apply bg-background text-foreground;
65
+ }
66
+ }
67
+ ${SHIKI_CSS}`;
68
+ const CSS_VARS_BLOCK_V4 = `
69
+ @theme inline {
70
+ --color-background: hsl(var(--background));
71
+ --color-foreground: hsl(var(--foreground));
72
+ --color-card: hsl(var(--card));
73
+ --color-card-foreground: hsl(var(--card-foreground));
74
+ --color-popover: hsl(var(--popover));
75
+ --color-popover-foreground: hsl(var(--popover-foreground));
76
+ --color-primary: hsl(var(--primary));
77
+ --color-primary-foreground: hsl(var(--primary-foreground));
78
+ --color-secondary: hsl(var(--secondary));
79
+ --color-secondary-foreground: hsl(var(--secondary-foreground));
80
+ --color-muted: hsl(var(--muted));
81
+ --color-muted-foreground: hsl(var(--muted-foreground));
82
+ --color-accent: hsl(var(--accent));
83
+ --color-accent-foreground: hsl(var(--accent-foreground));
84
+ --color-destructive: hsl(var(--destructive));
85
+ --color-destructive-foreground: hsl(var(--destructive-foreground));
86
+ --color-border: hsl(var(--border));
87
+ --color-input: hsl(var(--input));
88
+ --color-ring: hsl(var(--ring));
89
+ --radius-lg: var(--radius);
90
+ --radius-md: calc(var(--radius) - 2px);
91
+ --radius-sm: calc(var(--radius) - 4px);
92
+ }
93
+ ${CSS_VARS_ROOT}
94
+
95
+ *, *::before, *::after {
96
+ border-color: hsl(var(--border));
97
+ }
98
+ body {
99
+ background-color: hsl(var(--background));
100
+ color: hsl(var(--foreground));
101
+ }
102
+ ${SHIKI_CSS}`;
103
+ const MDXUI_SEMANTIC_TOKENS = `
104
+ @layer base {
105
+ /* \u2500\u2500 MDX UI semantic tokens \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
106
+ Override these variables to rebrand callout, alert, and badge colors.
107
+ Light mode uses Tailwind palette hex values as defaults. */
108
+ :root {
109
+ --mdxui-info-border: #7dd3fc; /* sky-300 */
110
+ --mdxui-info-bg: #f0f9ff; /* sky-50 */
111
+ --mdxui-info-text: #0c4a6e; /* sky-900 */
112
+ --mdxui-info-accent: #0369a1; /* sky-700 */
113
+ --mdxui-info-badge-bg: #e0f2fe; /* sky-100 */
114
+ --mdxui-info-badge-text: #075985; /* sky-800 */
115
+
116
+ --mdxui-note-border: #cbd5e1; /* slate-300 */
117
+ --mdxui-note-bg: #f8fafc; /* slate-50 */
118
+ --mdxui-note-text: #0f172a; /* slate-900 */
119
+ --mdxui-note-accent: #475569; /* slate-600 */
120
+ --mdxui-note-badge-bg: #f1f5f9; /* slate-100 */
121
+ --mdxui-note-badge-text: #334155; /* slate-700 */
122
+
123
+ --mdxui-tip-border: #6ee7b7; /* emerald-300 */
124
+ --mdxui-tip-bg: #ecfdf5; /* emerald-50 */
125
+ --mdxui-tip-text: #064e3b; /* emerald-900 */
126
+ --mdxui-tip-accent: #059669; /* emerald-600 */
127
+ --mdxui-tip-badge-bg: #d1fae5; /* emerald-100 */
128
+ --mdxui-tip-badge-text: #065f46; /* emerald-800 */
129
+
130
+ --mdxui-warning-border: #fcd34d; /* amber-300 */
131
+ --mdxui-warning-bg: #fffbeb; /* amber-50 */
132
+ --mdxui-warning-text: #78350f; /* amber-900 */
133
+ --mdxui-warning-accent: #d97706; /* amber-600 */
134
+ --mdxui-warning-badge-bg: #fef3c7; /* amber-100 */
135
+ --mdxui-warning-badge-text: #92400e; /* amber-800 */
136
+
137
+ --mdxui-danger-border: #fca5a5; /* red-300 */
138
+ --mdxui-danger-bg: #fef2f2; /* red-50 */
139
+ --mdxui-danger-text: #7f1d1d; /* red-900 */
140
+ --mdxui-danger-accent: #dc2626; /* red-600 */
141
+ --mdxui-danger-badge-bg: #fee2e2; /* red-100 */
142
+ --mdxui-danger-badge-text: #991b1b; /* red-800 */
143
+
144
+ --mdxui-success-border: #6ee7b7; /* emerald-300 */
145
+ --mdxui-success-bg: #ecfdf5; /* emerald-50 */
146
+ --mdxui-success-text: #064e3b; /* emerald-900 */
147
+ --mdxui-success-accent: #059669; /* emerald-600 */
148
+ --mdxui-success-badge-bg: #d1fae5; /* emerald-100 */
149
+ --mdxui-success-badge-text: #065f46; /* emerald-800 */
150
+ }
151
+ .dark {
152
+ --mdxui-info-border: #0369a1;
153
+ --mdxui-info-bg: rgb(8 47 73 / 0.45);
154
+ --mdxui-info-text: #e0f2fe;
155
+ --mdxui-info-accent: #7dd3fc;
156
+ --mdxui-info-badge-bg: rgb(8 47 73 / 0.5);
157
+ --mdxui-info-badge-text: #7dd3fc;
158
+
159
+ --mdxui-note-border: #475569;
160
+ --mdxui-note-bg: rgb(30 41 59 / 0.45);
161
+ --mdxui-note-text: #f1f5f9;
162
+ --mdxui-note-accent: #cbd5e1;
163
+ --mdxui-note-badge-bg: rgb(30 41 59 / 0.5);
164
+ --mdxui-note-badge-text: #cbd5e1;
165
+
166
+ --mdxui-tip-border: #059669;
167
+ --mdxui-tip-bg: rgb(2 44 34 / 0.45);
168
+ --mdxui-tip-text: #d1fae5;
169
+ --mdxui-tip-accent: #6ee7b7;
170
+ --mdxui-tip-badge-bg: rgb(2 44 34 / 0.5);
171
+ --mdxui-tip-badge-text: #6ee7b7;
172
+
173
+ --mdxui-warning-border: #d97706;
174
+ --mdxui-warning-bg: rgb(67 20 7 / 0.45);
175
+ --mdxui-warning-text: #fef3c7;
176
+ --mdxui-warning-accent: #fcd34d;
177
+ --mdxui-warning-badge-bg: rgb(67 20 7 / 0.5);
178
+ --mdxui-warning-badge-text: #fcd34d;
179
+
180
+ --mdxui-danger-border: #dc2626;
181
+ --mdxui-danger-bg: rgb(69 10 10 / 0.45);
182
+ --mdxui-danger-text: #fee2e2;
183
+ --mdxui-danger-accent: #fca5a5;
184
+ --mdxui-danger-badge-bg: rgb(69 10 10 / 0.5);
185
+ --mdxui-danger-badge-text: #fca5a5;
186
+
187
+ --mdxui-success-border: #059669;
188
+ --mdxui-success-bg: rgb(2 44 34 / 0.45);
189
+ --mdxui-success-text: #d1fae5;
190
+ --mdxui-success-accent: #6ee7b7;
191
+ --mdxui-success-badge-bg: rgb(2 44 34 / 0.5);
192
+ --mdxui-success-badge-text: #6ee7b7;
193
+ }
194
+ }
195
+ `;
196
+ const MDXUI_V4_THEME = `
197
+ @theme inline {
198
+ /* MDX UI semantic color scales */
199
+ --color-info-border: var(--mdxui-info-border);
200
+ --color-info-bg: var(--mdxui-info-bg);
201
+ --color-info-text: var(--mdxui-info-text);
202
+ --color-info-accent: var(--mdxui-info-accent);
203
+ --color-info-badge-bg: var(--mdxui-info-badge-bg);
204
+ --color-info-badge-text: var(--mdxui-info-badge-text);
205
+
206
+ --color-note-border: var(--mdxui-note-border);
207
+ --color-note-bg: var(--mdxui-note-bg);
208
+ --color-note-text: var(--mdxui-note-text);
209
+ --color-note-accent: var(--mdxui-note-accent);
210
+ --color-note-badge-bg: var(--mdxui-note-badge-bg);
211
+ --color-note-badge-text: var(--mdxui-note-badge-text);
212
+
213
+ --color-tip-border: var(--mdxui-tip-border);
214
+ --color-tip-bg: var(--mdxui-tip-bg);
215
+ --color-tip-text: var(--mdxui-tip-text);
216
+ --color-tip-accent: var(--mdxui-tip-accent);
217
+ --color-tip-badge-bg: var(--mdxui-tip-badge-bg);
218
+ --color-tip-badge-text: var(--mdxui-tip-badge-text);
219
+
220
+ --color-warning-border: var(--mdxui-warning-border);
221
+ --color-warning-bg: var(--mdxui-warning-bg);
222
+ --color-warning-text: var(--mdxui-warning-text);
223
+ --color-warning-accent: var(--mdxui-warning-accent);
224
+ --color-warning-badge-bg: var(--mdxui-warning-badge-bg);
225
+ --color-warning-badge-text: var(--mdxui-warning-badge-text);
226
+
227
+ --color-danger-border: var(--mdxui-danger-border);
228
+ --color-danger-bg: var(--mdxui-danger-bg);
229
+ --color-danger-text: var(--mdxui-danger-text);
230
+ --color-danger-accent: var(--mdxui-danger-accent);
231
+ --color-danger-badge-bg: var(--mdxui-danger-badge-bg);
232
+ --color-danger-badge-text: var(--mdxui-danger-badge-text);
233
+
234
+ --color-success-border: var(--mdxui-success-border);
235
+ --color-success-bg: var(--mdxui-success-bg);
236
+ --color-success-text: var(--mdxui-success-text);
237
+ --color-success-accent: var(--mdxui-success-accent);
238
+ --color-success-badge-bg: var(--mdxui-success-badge-bg);
239
+ --color-success-badge-text: var(--mdxui-success-badge-text);
240
+ }
241
+ `;
242
+ const MDXUI_TAILWIND_COLOR_SCALES = ` /* MDX UI semantic tokens */
243
+ info: { border: "var(--mdxui-info-border)", bg: "var(--mdxui-info-bg)", text: "var(--mdxui-info-text)", accent: "var(--mdxui-info-accent)", "badge-bg": "var(--mdxui-info-badge-bg)", "badge-text": "var(--mdxui-info-badge-text)" },
244
+ note: { border: "var(--mdxui-note-border)", bg: "var(--mdxui-note-bg)", text: "var(--mdxui-note-text)", accent: "var(--mdxui-note-accent)", "badge-bg": "var(--mdxui-note-badge-bg)", "badge-text": "var(--mdxui-note-badge-text)" },
245
+ tip: { border: "var(--mdxui-tip-border)", bg: "var(--mdxui-tip-bg)", text: "var(--mdxui-tip-text)", accent: "var(--mdxui-tip-accent)", "badge-bg": "var(--mdxui-tip-badge-bg)", "badge-text": "var(--mdxui-tip-badge-text)" },
246
+ warning: { border: "var(--mdxui-warning-border)", bg: "var(--mdxui-warning-bg)", text: "var(--mdxui-warning-text)", accent: "var(--mdxui-warning-accent)", "badge-bg": "var(--mdxui-warning-badge-bg)", "badge-text": "var(--mdxui-warning-badge-text)" },
247
+ danger: { border: "var(--mdxui-danger-border)", bg: "var(--mdxui-danger-bg)", text: "var(--mdxui-danger-text)", accent: "var(--mdxui-danger-accent)", "badge-bg": "var(--mdxui-danger-badge-bg)", "badge-text": "var(--mdxui-danger-badge-text)" },
248
+ success: { border: "var(--mdxui-success-border)", bg: "var(--mdxui-success-bg)", text: "var(--mdxui-success-text)", accent: "var(--mdxui-success-accent)", "badge-bg": "var(--mdxui-success-badge-bg)", "badge-text": "var(--mdxui-success-badge-text)" },`;
249
+ const TAILWIND_V3_THEME_EXTENSIONS = `
250
+ colors: {
251
+ border: "hsl(var(--border))",
252
+ input: "hsl(var(--input))",
253
+ ring: "hsl(var(--ring))",
254
+ background: "hsl(var(--background))",
255
+ foreground: "hsl(var(--foreground))",
256
+ primary: {
257
+ DEFAULT: "hsl(var(--primary))",
258
+ foreground: "hsl(var(--primary-foreground))",
259
+ },
260
+ secondary: {
261
+ DEFAULT: "hsl(var(--secondary))",
262
+ foreground: "hsl(var(--secondary-foreground))",
263
+ },
264
+ destructive: {
265
+ DEFAULT: "hsl(var(--destructive))",
266
+ foreground: "hsl(var(--destructive-foreground))",
267
+ },
268
+ muted: {
269
+ DEFAULT: "hsl(var(--muted))",
270
+ foreground: "hsl(var(--muted-foreground))",
271
+ },
272
+ accent: {
273
+ DEFAULT: "hsl(var(--accent))",
274
+ foreground: "hsl(var(--accent-foreground))",
275
+ },
276
+ card: {
277
+ DEFAULT: "hsl(var(--card))",
278
+ foreground: "hsl(var(--card-foreground))",
279
+ },
280
+ ${MDXUI_TAILWIND_COLOR_SCALES}
281
+ },
282
+ borderRadius: {
283
+ lg: "var(--radius)",
284
+ md: "calc(var(--radius) - 2px)",
285
+ sm: "calc(var(--radius) - 4px)",
286
+ },`;
287
+ export {
288
+ CSS_VARS_BLOCK_V3,
289
+ CSS_VARS_BLOCK_V4,
290
+ MDXUI_SEMANTIC_TOKENS,
291
+ MDXUI_TAILWIND_COLOR_SCALES,
292
+ MDXUI_V4_THEME,
293
+ TAILWIND_V3_THEME_EXTENSIONS
294
+ };
@@ -0,0 +1 @@
1
+ export { ComponentEntry, REGISTRY } from './lib/component-registry.js';
@@ -0,0 +1,4 @@
1
+ import { REGISTRY } from "./lib/component-registry.js";
2
+ export {
3
+ REGISTRY
4
+ };
@@ -0,0 +1,30 @@
1
+ interface SymbolEntry {
2
+ /** Human-readable concept name */
3
+ name: string;
4
+ /** Category for grouping */
5
+ category: Category;
6
+ /** Unicode / visual representations */
7
+ symbols: string[];
8
+ /** LaTeX equivalents (what someone familiar with LaTeX would type) */
9
+ latex: string[];
10
+ /** The primitive component name */
11
+ component: string;
12
+ /** Ready-to-paste MDX usage */
13
+ usage: string;
14
+ /** Short description */
15
+ description: string;
16
+ }
17
+ type Category = "arithmetic" | "calculus" | "composition" | "trig" | "algebra" | "sets" | "logic" | "linear-algebra" | "probability" | "greek" | "relations" | "arrows" | "accents" | "brackets" | "geometry" | "physics" | "chemistry" | "script" | "operators" | "dots" | "definition" | "school" | "shorthands" | "misc" | "cs";
18
+ declare const SYMBOL_MAP: SymbolEntry[];
19
+ /** Search the symbol map by name, LaTeX, symbol, or component name. */
20
+ declare function searchSymbols(query: string): SymbolEntry[];
21
+ /** Get all entries for a category. */
22
+ declare function symbolsByCategory(category: Category): SymbolEntry[];
23
+ /** Get unique categories. */
24
+ declare const CATEGORIES_LIST: Category[];
25
+ /** Format a single entry as readable text for the MCP output standard. */
26
+ declare function formatEntry(e: SymbolEntry): string;
27
+ /** Build the math section of the OUTPUT_STANDARD dynamically from the map. */
28
+ declare function buildMathStandard(): string;
29
+
30
+ export { CATEGORIES_LIST, type Category, SYMBOL_MAP, type SymbolEntry, buildMathStandard, formatEntry, searchSymbols, symbolsByCategory };