@windrun-huaiin/third-ui 22.0.1 → 23.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 (65) hide show
  1. package/README.md +152 -189
  2. package/dist/fuma/server/features/base.d.ts +2 -0
  3. package/dist/fuma/server/features/base.js +13 -0
  4. package/dist/fuma/server/features/base.mjs +11 -0
  5. package/dist/fuma/server/features/code.d.ts +2 -0
  6. package/dist/fuma/server/features/code.js +65 -0
  7. package/dist/fuma/server/features/code.mjs +63 -0
  8. package/dist/fuma/server/features/math.d.ts +2 -0
  9. package/dist/fuma/server/features/math.js +14 -0
  10. package/dist/fuma/server/features/math.mjs +12 -0
  11. package/dist/fuma/server/features/mermaid.d.ts +2 -0
  12. package/dist/fuma/server/features/mermaid.js +13 -0
  13. package/dist/fuma/server/features/mermaid.mjs +11 -0
  14. package/dist/fuma/server/features/type-table.d.ts +2 -0
  15. package/dist/fuma/server/features/type-table.js +12 -0
  16. package/dist/fuma/server/features/type-table.mjs +10 -0
  17. package/dist/fuma/server/features/widgets.d.ts +2 -0
  18. package/dist/fuma/server/features/widgets.js +26 -0
  19. package/dist/fuma/server/features/widgets.mjs +24 -0
  20. package/dist/fuma/server/optional-features.d.ts +6 -8
  21. package/dist/fuma/server/optional-features.js +13 -107
  22. package/dist/fuma/server/optional-features.mjs +6 -104
  23. package/dist/fuma/server/site-mdx-base.d.ts +13 -0
  24. package/dist/fuma/server/site-mdx-base.js +36 -0
  25. package/dist/fuma/server/site-mdx-base.mjs +33 -0
  26. package/dist/fuma/server/site-mdx-components.d.ts +1 -1
  27. package/dist/fuma/server/site-mdx-components.js +7 -8
  28. package/dist/fuma/server/site-mdx-components.mjs +8 -9
  29. package/dist/fuma/server/site-mdx-fallbacks.d.ts +25 -0
  30. package/dist/fuma/server/site-mdx-fallbacks.js +79 -0
  31. package/dist/fuma/server/site-mdx-fallbacks.mjs +73 -0
  32. package/dist/fuma/server/site-mdx-features/code.d.ts +1 -0
  33. package/dist/fuma/server/site-mdx-features/code.js +7 -0
  34. package/dist/fuma/server/site-mdx-features/code.mjs +1 -0
  35. package/dist/fuma/server/site-mdx-features/math.d.ts +1 -0
  36. package/dist/fuma/server/site-mdx-features/math.js +7 -0
  37. package/dist/fuma/server/site-mdx-features/math.mjs +1 -0
  38. package/dist/fuma/server/site-mdx-features/mermaid.d.ts +1 -0
  39. package/dist/fuma/server/site-mdx-features/mermaid.js +7 -0
  40. package/dist/fuma/server/site-mdx-features/mermaid.mjs +1 -0
  41. package/dist/fuma/server/site-mdx-features/type-table.d.ts +1 -0
  42. package/dist/fuma/server/site-mdx-features/type-table.js +7 -0
  43. package/dist/fuma/server/site-mdx-features/type-table.mjs +1 -0
  44. package/dist/fuma/server/site-mdx-presets.d.ts +2 -1
  45. package/dist/fuma/server/site-mdx-presets.js +22 -13
  46. package/dist/fuma/server/site-mdx-presets.mjs +22 -12
  47. package/dist/fuma/share/markdown-component-map.js +43 -29
  48. package/dist/fuma/share/markdown-component-map.mjs +42 -28
  49. package/package.json +28 -13
  50. package/src/fuma/server/features/base.tsx +23 -0
  51. package/src/fuma/server/features/code.tsx +100 -0
  52. package/src/fuma/server/features/math.ts +16 -0
  53. package/src/fuma/server/features/mermaid.tsx +21 -0
  54. package/src/fuma/server/features/type-table.ts +12 -0
  55. package/src/fuma/server/features/widgets.tsx +34 -0
  56. package/src/fuma/server/site-mdx-base.tsx +66 -0
  57. package/src/fuma/server/site-mdx-fallbacks.tsx +172 -0
  58. package/src/fuma/server/site-mdx-features/code.ts +1 -0
  59. package/src/fuma/server/site-mdx-features/math.ts +1 -0
  60. package/src/fuma/server/site-mdx-features/mermaid.ts +1 -0
  61. package/src/fuma/server/site-mdx-features/type-table.ts +1 -0
  62. package/src/fuma/share/markdown-component-map.tsx +5 -4
  63. package/src/fuma/server/optional-features.tsx +0 -168
  64. package/src/fuma/server/site-mdx-components.tsx +0 -48
  65. package/src/fuma/server/site-mdx-presets.ts +0 -80
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var trophyCard = require('../../mdx/trophy-card.js');
6
+ var ziaCard = require('../../mdx/zia-card.js');
7
+ var gradientButton = require('../../mdx/gradient-button.js');
8
+ var ziaFile = require('../../mdx/zia-file.js');
9
+ var sunoEmbed = require('../../mdx/suno-embed.js');
10
+
11
+ const ImageGrid = React.lazy(() => Promise.resolve().then(function () { return require('../../heavy/image-grid.js'); }).then((mod) => ({ default: mod.ImageGrid })));
12
+ const ImageZoom = React.lazy(() => Promise.resolve().then(function () { return require('../../heavy/image-zoom.js'); }).then((mod) => ({ default: mod.ImageZoom })));
13
+ function createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc) {
14
+ return {
15
+ TrophyCard: trophyCard.TrophyCard,
16
+ ZiaCard: ziaCard.ZiaCard,
17
+ GradientButton: gradientButton.GradientButton,
18
+ ZiaFile: ziaFile.ZiaFile,
19
+ ZiaFolder: ziaFile.ZiaFolder,
20
+ SunoEmbed: sunoEmbed.SunoEmbed,
21
+ ImageGrid: (props) => (jsxRuntime.jsx(ImageGrid, Object.assign({}, props, { cdnBaseUrl: cdnBaseUrl }))),
22
+ ImageZoom: (props) => (jsxRuntime.jsx(ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))),
23
+ };
24
+ }
25
+
26
+ exports.createWidgetMdxComponents = createWidgetMdxComponents;
@@ -0,0 +1,24 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { lazy } from 'react';
3
+ import { TrophyCard } from '../../mdx/trophy-card.mjs';
4
+ import { ZiaCard } from '../../mdx/zia-card.mjs';
5
+ import { GradientButton } from '../../mdx/gradient-button.mjs';
6
+ import { ZiaFolder, ZiaFile } from '../../mdx/zia-file.mjs';
7
+ import { SunoEmbed } from '../../mdx/suno-embed.mjs';
8
+
9
+ const ImageGrid = lazy(() => import('../../heavy/image-grid.mjs').then((mod) => ({ default: mod.ImageGrid })));
10
+ const ImageZoom = lazy(() => import('../../heavy/image-zoom.mjs').then((mod) => ({ default: mod.ImageZoom })));
11
+ function createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc) {
12
+ return {
13
+ TrophyCard,
14
+ ZiaCard,
15
+ GradientButton,
16
+ ZiaFile,
17
+ ZiaFolder,
18
+ SunoEmbed,
19
+ ImageGrid: (props) => (jsx(ImageGrid, Object.assign({}, props, { cdnBaseUrl: cdnBaseUrl }))),
20
+ ImageZoom: (props) => (jsx(ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))),
21
+ };
22
+ }
23
+
24
+ export { createWidgetMdxComponents };
@@ -1,8 +1,6 @@
1
- import type { MDXComponents } from 'mdx/types';
2
- import type { ReactNode } from 'react';
3
- export declare function createBaseMdxComponents(imageFallbackSrc?: string): MDXComponents;
4
- export declare function createCodeMdxComponents(iconMap?: Record<string, ReactNode>): MDXComponents;
5
- export declare function createMathMdxComponents(): MDXComponents;
6
- export declare function createMermaidMdxComponents(watermarkEnabled?: boolean, watermarkText?: string): MDXComponents;
7
- export declare function createTypeTableMdxComponents(): MDXComponents;
8
- export declare function createWidgetMdxComponents(cdnBaseUrl?: string, imageFallbackSrc?: string): MDXComponents;
1
+ export { createBaseMdxComponents } from './features/base';
2
+ export { createCodeMdxComponents } from './features/code';
3
+ export { createMathMdxComponents } from './features/math';
4
+ export { createMermaidMdxComponents } from './features/mermaid';
5
+ export { createTypeTableMdxComponents } from './features/type-table';
6
+ export { createWidgetMdxComponents } from './features/widgets';
@@ -1,111 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var codeblock = require('fumadocs-ui/components/codeblock');
5
- var typeTable = require('fumadocs-ui/components/type-table');
6
- var icons = require('@windrun-huaiin/base-ui/icons');
7
- var markdownComponentMap = require('../share/markdown-component-map.js');
8
- var imageZoom = require('../heavy/image-zoom.js');
9
- var imageGrid = require('../heavy/image-grid.js');
10
- var math = require('../heavy/math.js');
11
- var mermaid = require('../heavy/mermaid.js');
12
- var trophyCard = require('../mdx/trophy-card.js');
13
- var ziaCard = require('../mdx/zia-card.js');
14
- var gradientButton = require('../mdx/gradient-button.js');
15
- var ziaFile = require('../mdx/zia-file.js');
16
- var sunoEmbed = require('../mdx/suno-embed.js');
3
+ var base = require('./features/base.js');
4
+ var code = require('./features/code.js');
5
+ var math = require('./features/math.js');
6
+ var mermaid = require('./features/mermaid.js');
7
+ var typeTable = require('./features/type-table.js');
8
+ var widgets = require('./features/widgets.js');
17
9
 
18
- const defaultCodeLanguageIconMap = {
19
- css: jsxRuntime.jsx(icons.CSSIcon, {}),
20
- csv: jsxRuntime.jsx(icons.CSVIcon, {}),
21
- diff: jsxRuntime.jsx(icons.DiffIcon, {}),
22
- html: jsxRuntime.jsx(icons.HtmlIcon, {}),
23
- http: jsxRuntime.jsx(icons.HttpIcon, {}),
24
- java: jsxRuntime.jsx(icons.JavaIcon, {}),
25
- json: jsxRuntime.jsx(icons.JsonIcon, {}),
26
- jsonc: jsxRuntime.jsx(icons.SquareDashedBottomCodeIcon, {}),
27
- log: jsxRuntime.jsx(icons.LogIcon, {}),
28
- mdx: jsxRuntime.jsx(icons.MDXIcon, {}),
29
- plaintext: jsxRuntime.jsx(icons.TxtIcon, {}),
30
- regex: jsxRuntime.jsx(icons.RegexIcon, {}),
31
- scheme: jsxRuntime.jsx(icons.SchemeIcon, {}),
32
- sql: jsxRuntime.jsx(icons.SQLIcon, {}),
33
- text: jsxRuntime.jsx(icons.TxtIcon, {}),
34
- txt: jsxRuntime.jsx(icons.TxtIcon, {}),
35
- xml: jsxRuntime.jsx(icons.XMLIcon, {}),
36
- yaml: jsxRuntime.jsx(icons.YamlIcon, {}),
37
- yml: jsxRuntime.jsx(icons.YamlIcon, {}),
38
- };
39
- function tryToMatchIcon(props, iconMap) {
40
- var _a;
41
- let lang;
42
- const dataLanguage = props['data-language'];
43
- if (dataLanguage && dataLanguage.trim() !== '') {
44
- lang = dataLanguage.trim().toLowerCase();
45
- }
46
- else {
47
- const title = props.title;
48
- if (title) {
49
- const titleParts = title.split('.');
50
- if (titleParts.length > 1 && titleParts[0] !== '') {
51
- const extension = (_a = titleParts.pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
52
- if (extension) {
53
- lang = extension;
54
- }
55
- }
56
- }
57
- }
58
- if (lang && iconMap[lang]) {
59
- return iconMap[lang];
60
- }
61
- return undefined;
62
- }
63
- function createBaseMdxComponents(imageFallbackSrc) {
64
- return Object.assign(Object.assign({}, markdownComponentMap.baseMarkdownComponents), { img: (props) => (jsxRuntime.jsx(imageZoom.ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))) });
65
- }
66
- function createCodeMdxComponents(iconMap = {}) {
67
- const mergedIconMap = Object.assign(Object.assign({}, defaultCodeLanguageIconMap), iconMap);
68
- return {
69
- pre: (props) => {
70
- const customIcon = tryToMatchIcon(props, mergedIconMap);
71
- return (jsxRuntime.jsx(codeblock.CodeBlock, Object.assign({}, props, (customIcon && { icon: customIcon }), { children: jsxRuntime.jsx(codeblock.Pre, { children: props.children }) })));
72
- },
73
- CodeBlock: codeblock.CodeBlock,
74
- Pre: codeblock.Pre,
75
- };
76
- }
77
- function createMathMdxComponents() {
78
- return {
79
- MathBlock: math.MathBlock,
80
- InlineMath: math.InlineMath,
81
- };
82
- }
83
- function createMermaidMdxComponents(watermarkEnabled, watermarkText) {
84
- return {
85
- Mermaid: (props) => (jsxRuntime.jsx(mermaid.Mermaid, Object.assign({}, props, { watermarkEnabled: watermarkEnabled, watermarkText: watermarkText }))),
86
- };
87
- }
88
- function createTypeTableMdxComponents() {
89
- return {
90
- TypeTable: typeTable.TypeTable,
91
- };
92
- }
93
- function createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc) {
94
- return {
95
- TrophyCard: trophyCard.TrophyCard,
96
- ZiaCard: ziaCard.ZiaCard,
97
- GradientButton: gradientButton.GradientButton,
98
- ZiaFile: ziaFile.ZiaFile,
99
- ZiaFolder: ziaFile.ZiaFolder,
100
- SunoEmbed: sunoEmbed.SunoEmbed,
101
- ImageGrid: (props) => (jsxRuntime.jsx(imageGrid.ImageGrid, Object.assign({}, props, { cdnBaseUrl: cdnBaseUrl }))),
102
- ImageZoom: (props) => (jsxRuntime.jsx(imageZoom.ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))),
103
- };
104
- }
105
10
 
106
- exports.createBaseMdxComponents = createBaseMdxComponents;
107
- exports.createCodeMdxComponents = createCodeMdxComponents;
108
- exports.createMathMdxComponents = createMathMdxComponents;
109
- exports.createMermaidMdxComponents = createMermaidMdxComponents;
110
- exports.createTypeTableMdxComponents = createTypeTableMdxComponents;
111
- exports.createWidgetMdxComponents = createWidgetMdxComponents;
11
+
12
+ exports.createBaseMdxComponents = base.createBaseMdxComponents;
13
+ exports.createCodeMdxComponents = code.createCodeMdxComponents;
14
+ exports.createMathMdxComponents = math.createMathMdxComponents;
15
+ exports.createMermaidMdxComponents = mermaid.createMermaidMdxComponents;
16
+ exports.createTypeTableMdxComponents = typeTable.createTypeTableMdxComponents;
17
+ exports.createWidgetMdxComponents = widgets.createWidgetMdxComponents;
@@ -1,104 +1,6 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { Pre, CodeBlock } from 'fumadocs-ui/components/codeblock';
3
- import { TypeTable } from 'fumadocs-ui/components/type-table';
4
- import { YamlIcon, XMLIcon, TxtIcon, SQLIcon, SchemeIcon, RegexIcon, MDXIcon, LogIcon, SquareDashedBottomCodeIcon, JsonIcon, JavaIcon, HttpIcon, HtmlIcon, DiffIcon, CSVIcon, CSSIcon } from '@windrun-huaiin/base-ui/icons';
5
- import { baseMarkdownComponents } from '../share/markdown-component-map.mjs';
6
- import { ImageZoom } from '../heavy/image-zoom.mjs';
7
- import { ImageGrid } from '../heavy/image-grid.mjs';
8
- import { InlineMath, MathBlock } from '../heavy/math.mjs';
9
- import { Mermaid } from '../heavy/mermaid.mjs';
10
- import { TrophyCard } from '../mdx/trophy-card.mjs';
11
- import { ZiaCard } from '../mdx/zia-card.mjs';
12
- import { GradientButton } from '../mdx/gradient-button.mjs';
13
- import { ZiaFolder, ZiaFile } from '../mdx/zia-file.mjs';
14
- import { SunoEmbed } from '../mdx/suno-embed.mjs';
15
-
16
- const defaultCodeLanguageIconMap = {
17
- css: jsx(CSSIcon, {}),
18
- csv: jsx(CSVIcon, {}),
19
- diff: jsx(DiffIcon, {}),
20
- html: jsx(HtmlIcon, {}),
21
- http: jsx(HttpIcon, {}),
22
- java: jsx(JavaIcon, {}),
23
- json: jsx(JsonIcon, {}),
24
- jsonc: jsx(SquareDashedBottomCodeIcon, {}),
25
- log: jsx(LogIcon, {}),
26
- mdx: jsx(MDXIcon, {}),
27
- plaintext: jsx(TxtIcon, {}),
28
- regex: jsx(RegexIcon, {}),
29
- scheme: jsx(SchemeIcon, {}),
30
- sql: jsx(SQLIcon, {}),
31
- text: jsx(TxtIcon, {}),
32
- txt: jsx(TxtIcon, {}),
33
- xml: jsx(XMLIcon, {}),
34
- yaml: jsx(YamlIcon, {}),
35
- yml: jsx(YamlIcon, {}),
36
- };
37
- function tryToMatchIcon(props, iconMap) {
38
- var _a;
39
- let lang;
40
- const dataLanguage = props['data-language'];
41
- if (dataLanguage && dataLanguage.trim() !== '') {
42
- lang = dataLanguage.trim().toLowerCase();
43
- }
44
- else {
45
- const title = props.title;
46
- if (title) {
47
- const titleParts = title.split('.');
48
- if (titleParts.length > 1 && titleParts[0] !== '') {
49
- const extension = (_a = titleParts.pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
50
- if (extension) {
51
- lang = extension;
52
- }
53
- }
54
- }
55
- }
56
- if (lang && iconMap[lang]) {
57
- return iconMap[lang];
58
- }
59
- return undefined;
60
- }
61
- function createBaseMdxComponents(imageFallbackSrc) {
62
- return Object.assign(Object.assign({}, baseMarkdownComponents), { img: (props) => (jsx(ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))) });
63
- }
64
- function createCodeMdxComponents(iconMap = {}) {
65
- const mergedIconMap = Object.assign(Object.assign({}, defaultCodeLanguageIconMap), iconMap);
66
- return {
67
- pre: (props) => {
68
- const customIcon = tryToMatchIcon(props, mergedIconMap);
69
- return (jsx(CodeBlock, Object.assign({}, props, (customIcon && { icon: customIcon }), { children: jsx(Pre, { children: props.children }) })));
70
- },
71
- CodeBlock,
72
- Pre,
73
- };
74
- }
75
- function createMathMdxComponents() {
76
- return {
77
- MathBlock,
78
- InlineMath,
79
- };
80
- }
81
- function createMermaidMdxComponents(watermarkEnabled, watermarkText) {
82
- return {
83
- Mermaid: (props) => (jsx(Mermaid, Object.assign({}, props, { watermarkEnabled: watermarkEnabled, watermarkText: watermarkText }))),
84
- };
85
- }
86
- function createTypeTableMdxComponents() {
87
- return {
88
- TypeTable,
89
- };
90
- }
91
- function createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc) {
92
- return {
93
- TrophyCard,
94
- ZiaCard,
95
- GradientButton,
96
- ZiaFile,
97
- ZiaFolder,
98
- SunoEmbed,
99
- ImageGrid: (props) => (jsx(ImageGrid, Object.assign({}, props, { cdnBaseUrl: cdnBaseUrl }))),
100
- ImageZoom: (props) => (jsx(ImageZoom, Object.assign({}, props, { fallbackSrc: imageFallbackSrc }))),
101
- };
102
- }
103
-
104
- export { createBaseMdxComponents, createCodeMdxComponents, createMathMdxComponents, createMermaidMdxComponents, createTypeTableMdxComponents, createWidgetMdxComponents };
1
+ export { createBaseMdxComponents } from './features/base.mjs';
2
+ export { createCodeMdxComponents } from './features/code.mjs';
3
+ export { createMathMdxComponents } from './features/math.mjs';
4
+ export { createMermaidMdxComponents } from './features/mermaid.mjs';
5
+ export { createTypeTableMdxComponents } from './features/type-table.mjs';
6
+ export { createWidgetMdxComponents } from './features/widgets.mjs';
@@ -0,0 +1,13 @@
1
+ import type { MDXComponents } from 'mdx/types';
2
+ export type SiteMdxFeatureComponents = MDXComponents;
3
+ export interface SiteMdxBaseOptions {
4
+ imageFallbackSrc?: string;
5
+ cdnBaseUrl?: string;
6
+ }
7
+ export interface CreateSiteMdxComponentsOptions {
8
+ baseOptions?: SiteMdxBaseOptions;
9
+ features?: SiteMdxFeatureComponents[];
10
+ additionalComponents?: MDXComponents;
11
+ }
12
+ export declare function createSiteMdxBaseComponents(options?: SiteMdxBaseOptions): MDXComponents;
13
+ export declare function createSiteMdxComponents(options?: CreateSiteMdxComponentsOptions): (components?: MDXComponents) => MDXComponents;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var tabs = require('fumadocs-ui/components/tabs');
4
+ var callout = require('fumadocs-ui/components/callout');
5
+ var card = require('fumadocs-ui/components/card');
6
+ var files = require('fumadocs-ui/components/files');
7
+ var accordion = require('fumadocs-ui/components/accordion');
8
+ var siteX = require('../site-x.js');
9
+ var base = require('./features/base.js');
10
+ var widgets = require('./features/widgets.js');
11
+ var siteMdxFallbacks = require('./site-mdx-fallbacks.js');
12
+
13
+ const defaultFumaUiComponents = {
14
+ Card: card.Card,
15
+ Cards: card.Cards,
16
+ Callout: callout.Callout,
17
+ File: files.File,
18
+ Folder: files.Folder,
19
+ Files: files.Files,
20
+ Accordion: accordion.Accordion,
21
+ Accordions: accordion.Accordions,
22
+ Tab: tabs.Tab,
23
+ Tabs: tabs.Tabs,
24
+ };
25
+ function createSiteMdxBaseComponents(options = {}) {
26
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultFumaUiComponents), { SiteX: siteX.SiteX }), base.createBaseMdxComponents(options.imageFallbackSrc)), widgets.createWidgetMdxComponents(options.cdnBaseUrl, options.imageFallbackSrc));
27
+ }
28
+ function createSiteMdxComponents(options = {}) {
29
+ const { additionalComponents, baseOptions, features = [], } = options;
30
+ return function getMDXComponents(components) {
31
+ return siteMdxFallbacks.withMissingMdxComponentFallback(Object.assign(Object.assign(Object.assign(Object.assign({}, createSiteMdxBaseComponents(baseOptions)), features.reduce((acc, feature) => (Object.assign(Object.assign({}, acc), feature)), {})), additionalComponents), components));
32
+ };
33
+ }
34
+
35
+ exports.createSiteMdxBaseComponents = createSiteMdxBaseComponents;
36
+ exports.createSiteMdxComponents = createSiteMdxComponents;
@@ -0,0 +1,33 @@
1
+ import { Tabs, Tab } from 'fumadocs-ui/components/tabs';
2
+ import { Callout } from 'fumadocs-ui/components/callout';
3
+ import { Cards, Card } from 'fumadocs-ui/components/card';
4
+ import { Files, Folder, File } from 'fumadocs-ui/components/files';
5
+ import { Accordions, Accordion } from 'fumadocs-ui/components/accordion';
6
+ import { SiteX } from '../site-x.mjs';
7
+ import { createBaseMdxComponents } from './features/base.mjs';
8
+ import { createWidgetMdxComponents } from './features/widgets.mjs';
9
+ import { withMissingMdxComponentFallback } from './site-mdx-fallbacks.mjs';
10
+
11
+ const defaultFumaUiComponents = {
12
+ Card,
13
+ Cards,
14
+ Callout,
15
+ File,
16
+ Folder,
17
+ Files,
18
+ Accordion,
19
+ Accordions,
20
+ Tab,
21
+ Tabs,
22
+ };
23
+ function createSiteMdxBaseComponents(options = {}) {
24
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultFumaUiComponents), { SiteX }), createBaseMdxComponents(options.imageFallbackSrc)), createWidgetMdxComponents(options.cdnBaseUrl, options.imageFallbackSrc));
25
+ }
26
+ function createSiteMdxComponents(options = {}) {
27
+ const { additionalComponents, baseOptions, features = [], } = options;
28
+ return function getMDXComponents(components) {
29
+ return withMissingMdxComponentFallback(Object.assign(Object.assign(Object.assign(Object.assign({}, createSiteMdxBaseComponents(baseOptions)), features.reduce((acc, feature) => (Object.assign(Object.assign({}, acc), feature)), {})), additionalComponents), components));
30
+ };
31
+ }
32
+
33
+ export { createSiteMdxBaseComponents, createSiteMdxComponents };
@@ -1,6 +1,6 @@
1
1
  import type { MDXComponents } from 'mdx/types';
2
2
  import type { ReactNode } from 'react';
3
- import type { SiteMdxFeature } from '@windrun-huaiin/contracts/mdx';
3
+ import { type SiteMdxFeature } from './site-mdx-presets';
4
4
  export interface SiteMdxComponentsOptions {
5
5
  imageFallbackSrc?: string;
6
6
  cdnBaseUrl?: string;
@@ -4,15 +4,14 @@ var siteMdxPresets = require('./site-mdx-presets.js');
4
4
 
5
5
  function createSiteMdxComponents(options) {
6
6
  const { additionalComponents, cdnBaseUrl, features = siteMdxPresets.DEFAULT_SITE_MDX_FEATURES, iconMap = {}, imageFallbackSrc, watermarkEnabled, watermarkText, } = options;
7
- const featureMap = siteMdxPresets.createSiteFeatureComponentMap({
8
- cdnBaseUrl,
9
- iconMap,
10
- imageFallbackSrc,
11
- watermarkEnabled,
12
- watermarkText,
13
- });
14
7
  return function getMDXComponents(components) {
15
- return siteMdxPresets.composeSiteMdxComponents(features, featureMap, additionalComponents, components);
8
+ return siteMdxPresets.createComposedSiteMdxComponents(features, {
9
+ cdnBaseUrl,
10
+ iconMap,
11
+ imageFallbackSrc,
12
+ watermarkEnabled,
13
+ watermarkText,
14
+ }, additionalComponents, components);
16
15
  };
17
16
  }
18
17
 
@@ -1,16 +1,15 @@
1
- import { DEFAULT_SITE_MDX_FEATURES, createSiteFeatureComponentMap, composeSiteMdxComponents } from './site-mdx-presets.mjs';
1
+ import { DEFAULT_SITE_MDX_FEATURES, createComposedSiteMdxComponents } from './site-mdx-presets.mjs';
2
2
 
3
3
  function createSiteMdxComponents(options) {
4
4
  const { additionalComponents, cdnBaseUrl, features = DEFAULT_SITE_MDX_FEATURES, iconMap = {}, imageFallbackSrc, watermarkEnabled, watermarkText, } = options;
5
- const featureMap = createSiteFeatureComponentMap({
6
- cdnBaseUrl,
7
- iconMap,
8
- imageFallbackSrc,
9
- watermarkEnabled,
10
- watermarkText,
11
- });
12
5
  return function getMDXComponents(components) {
13
- return composeSiteMdxComponents(features, featureMap, additionalComponents, components);
6
+ return createComposedSiteMdxComponents(features, {
7
+ cdnBaseUrl,
8
+ iconMap,
9
+ imageFallbackSrc,
10
+ watermarkEnabled,
11
+ watermarkText,
12
+ }, additionalComponents, components);
14
13
  };
15
14
  }
16
15
 
@@ -0,0 +1,25 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ import type { MDXComponents } from 'mdx/types';
3
+ type MissingFeatureBlockProps = ComponentPropsWithoutRef<'div'> & {
4
+ feature: string;
5
+ component: string;
6
+ };
7
+ type MissingFeatureInlineProps = ComponentPropsWithoutRef<'span'> & {
8
+ feature: string;
9
+ component: string;
10
+ };
11
+ export declare function MissingMdxFeatureBlock({ feature, component, children, className, ...props }: MissingFeatureBlockProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function MissingMdxFeatureInline({ feature, component, children, className, ...props }: MissingFeatureInlineProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function createMissingMdxFeatureComponents(): {
14
+ MathBlock: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
15
+ InlineMath: (props: ComponentPropsWithoutRef<"span">) => import("react/jsx-runtime").JSX.Element;
16
+ Mermaid: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
17
+ TypeTable: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
18
+ CodeBlockTab: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
19
+ CodeBlockTabs: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
20
+ CodeBlockTabsList: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
21
+ CodeBlockTabsTrigger: (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
22
+ };
23
+ export declare function createMissingMdxComponentFallback(component: string): (props: ComponentPropsWithoutRef<"div">) => import("react/jsx-runtime").JSX.Element;
24
+ export declare function withMissingMdxComponentFallback(components: MDXComponents): MDXComponents;
25
+ export {};
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ function renderChildren(children) {
7
+ if (children == null || children === '') {
8
+ return jsxRuntime.jsx("span", { className: "italic text-fd-muted-foreground", children: "No fallback content." });
9
+ }
10
+ return children;
11
+ }
12
+ function hasChildren(children) {
13
+ return children != null && children !== '';
14
+ }
15
+ function getDisplayProps(props) {
16
+ return Object.entries(props)
17
+ .filter(([, value]) => typeof value === 'string' ||
18
+ typeof value === 'number' ||
19
+ typeof value === 'boolean')
20
+ .map(([key, value]) => [key, String(value)]);
21
+ }
22
+ function MissingMdxFeatureBlock(_a) {
23
+ var { feature, component, children, className } = _a, props = tslib.__rest(_a, ["feature", "component", "children", "className"]);
24
+ const displayProps = getDisplayProps(props);
25
+ return (jsxRuntime.jsxs("div", { className: [
26
+ 'my-4 rounded-xl border border-red-300 bg-red-50/80 p-4 text-sm text-red-950 shadow-sm dark:border-red-800/80 dark:bg-red-950/30 dark:text-red-100',
27
+ className,
28
+ ].filter(Boolean).join(' '), children: [jsxRuntime.jsxs("div", { className: "mb-2 flex flex-wrap items-center gap-2 font-medium", children: [jsxRuntime.jsx("span", { children: "MDX feature not enabled" }), jsxRuntime.jsx("code", { className: "rounded bg-red-100 px-1.5 py-0.5 text-xs dark:bg-red-900/60", children: feature }), jsxRuntime.jsx("code", { className: "rounded bg-red-100 px-1.5 py-0.5 text-xs dark:bg-red-900/60", children: component })] }), displayProps.length > 0 && (jsxRuntime.jsx("div", { className: "mb-2 flex flex-wrap gap-1.5 text-xs", children: displayProps.map(([key, value]) => (jsxRuntime.jsxs("span", { className: "rounded-md border border-red-200 bg-white/60 px-1.5 py-0.5 font-mono dark:border-red-900/70 dark:bg-black/20", children: [key, "=", value] }, key))) })), jsxRuntime.jsx("div", { className: "whitespace-pre-wrap break-words rounded-lg border border-red-200 bg-white/70 p-3 font-mono text-xs text-red-900 dark:border-red-900/70 dark:bg-black/20 dark:text-red-100", children: renderChildren(children) })] }));
29
+ }
30
+ function MissingMdxFeatureInline(_a) {
31
+ var { feature, component, children, className } = _a, props = tslib.__rest(_a, ["feature", "component", "children", "className"]);
32
+ const displayProps = getDisplayProps(props);
33
+ return (jsxRuntime.jsxs("span", { className: [
34
+ 'inline-flex max-w-full items-center gap-1 rounded-md border border-red-300 bg-red-50 px-1.5 py-0.5 text-sm text-red-900 dark:border-red-800 dark:bg-red-950/40 dark:text-red-100',
35
+ className,
36
+ ].filter(Boolean).join(' '), title: `MDX feature not enabled: ${feature} (${component})`, children: [jsxRuntime.jsx("span", { className: "font-medium", children: component }), displayProps.map(([key, value]) => (jsxRuntime.jsxs("span", { className: "font-mono text-xs opacity-80", children: [key, "=", value] }, key))), hasChildren(children) && (jsxRuntime.jsx("span", { className: "font-mono text-xs opacity-80", children: children }))] }));
37
+ }
38
+ function createMissingMdxFeatureComponents() {
39
+ return {
40
+ MathBlock: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "math", component: "MathBlock" }))),
41
+ InlineMath: (props) => (jsxRuntime.jsx(MissingMdxFeatureInline, Object.assign({}, props, { feature: "math", component: "InlineMath" }))),
42
+ Mermaid: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "diagram renderer", component: "Mermaid" }))),
43
+ TypeTable: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "API table renderer", component: "TypeTable" }))),
44
+ CodeBlockTab: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTab" }))),
45
+ CodeBlockTabs: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabs" }))),
46
+ CodeBlockTabsList: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabsList" }))),
47
+ CodeBlockTabsTrigger: (props) => (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabsTrigger" }))),
48
+ };
49
+ }
50
+ function createMissingMdxComponentFallback(component) {
51
+ return function MissingMdxComponent(props) {
52
+ return (jsxRuntime.jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "unknown MDX component", component: component })));
53
+ };
54
+ }
55
+ function withMissingMdxComponentFallback(components) {
56
+ return new Proxy(components, {
57
+ has(target, prop) {
58
+ if (typeof prop === 'string' && /^[A-Z]/.test(prop)) {
59
+ return true;
60
+ }
61
+ return prop in target;
62
+ },
63
+ get(target, prop, receiver) {
64
+ if (typeof prop !== 'string' || prop in target) {
65
+ return Reflect.get(target, prop, receiver);
66
+ }
67
+ if (/^[A-Z]/.test(prop)) {
68
+ return createMissingMdxComponentFallback(prop);
69
+ }
70
+ return Reflect.get(target, prop, receiver);
71
+ },
72
+ });
73
+ }
74
+
75
+ exports.MissingMdxFeatureBlock = MissingMdxFeatureBlock;
76
+ exports.MissingMdxFeatureInline = MissingMdxFeatureInline;
77
+ exports.createMissingMdxComponentFallback = createMissingMdxComponentFallback;
78
+ exports.createMissingMdxFeatureComponents = createMissingMdxFeatureComponents;
79
+ exports.withMissingMdxComponentFallback = withMissingMdxComponentFallback;
@@ -0,0 +1,73 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+
4
+ function renderChildren(children) {
5
+ if (children == null || children === '') {
6
+ return jsx("span", { className: "italic text-fd-muted-foreground", children: "No fallback content." });
7
+ }
8
+ return children;
9
+ }
10
+ function hasChildren(children) {
11
+ return children != null && children !== '';
12
+ }
13
+ function getDisplayProps(props) {
14
+ return Object.entries(props)
15
+ .filter(([, value]) => typeof value === 'string' ||
16
+ typeof value === 'number' ||
17
+ typeof value === 'boolean')
18
+ .map(([key, value]) => [key, String(value)]);
19
+ }
20
+ function MissingMdxFeatureBlock(_a) {
21
+ var { feature, component, children, className } = _a, props = __rest(_a, ["feature", "component", "children", "className"]);
22
+ const displayProps = getDisplayProps(props);
23
+ return (jsxs("div", { className: [
24
+ 'my-4 rounded-xl border border-red-300 bg-red-50/80 p-4 text-sm text-red-950 shadow-sm dark:border-red-800/80 dark:bg-red-950/30 dark:text-red-100',
25
+ className,
26
+ ].filter(Boolean).join(' '), children: [jsxs("div", { className: "mb-2 flex flex-wrap items-center gap-2 font-medium", children: [jsx("span", { children: "MDX feature not enabled" }), jsx("code", { className: "rounded bg-red-100 px-1.5 py-0.5 text-xs dark:bg-red-900/60", children: feature }), jsx("code", { className: "rounded bg-red-100 px-1.5 py-0.5 text-xs dark:bg-red-900/60", children: component })] }), displayProps.length > 0 && (jsx("div", { className: "mb-2 flex flex-wrap gap-1.5 text-xs", children: displayProps.map(([key, value]) => (jsxs("span", { className: "rounded-md border border-red-200 bg-white/60 px-1.5 py-0.5 font-mono dark:border-red-900/70 dark:bg-black/20", children: [key, "=", value] }, key))) })), jsx("div", { className: "whitespace-pre-wrap break-words rounded-lg border border-red-200 bg-white/70 p-3 font-mono text-xs text-red-900 dark:border-red-900/70 dark:bg-black/20 dark:text-red-100", children: renderChildren(children) })] }));
27
+ }
28
+ function MissingMdxFeatureInline(_a) {
29
+ var { feature, component, children, className } = _a, props = __rest(_a, ["feature", "component", "children", "className"]);
30
+ const displayProps = getDisplayProps(props);
31
+ return (jsxs("span", { className: [
32
+ 'inline-flex max-w-full items-center gap-1 rounded-md border border-red-300 bg-red-50 px-1.5 py-0.5 text-sm text-red-900 dark:border-red-800 dark:bg-red-950/40 dark:text-red-100',
33
+ className,
34
+ ].filter(Boolean).join(' '), title: `MDX feature not enabled: ${feature} (${component})`, children: [jsx("span", { className: "font-medium", children: component }), displayProps.map(([key, value]) => (jsxs("span", { className: "font-mono text-xs opacity-80", children: [key, "=", value] }, key))), hasChildren(children) && (jsx("span", { className: "font-mono text-xs opacity-80", children: children }))] }));
35
+ }
36
+ function createMissingMdxFeatureComponents() {
37
+ return {
38
+ MathBlock: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "math", component: "MathBlock" }))),
39
+ InlineMath: (props) => (jsx(MissingMdxFeatureInline, Object.assign({}, props, { feature: "math", component: "InlineMath" }))),
40
+ Mermaid: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "diagram renderer", component: "Mermaid" }))),
41
+ TypeTable: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "API table renderer", component: "TypeTable" }))),
42
+ CodeBlockTab: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTab" }))),
43
+ CodeBlockTabs: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabs" }))),
44
+ CodeBlockTabsList: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabsList" }))),
45
+ CodeBlockTabsTrigger: (props) => (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "code", component: "CodeBlockTabsTrigger" }))),
46
+ };
47
+ }
48
+ function createMissingMdxComponentFallback(component) {
49
+ return function MissingMdxComponent(props) {
50
+ return (jsx(MissingMdxFeatureBlock, Object.assign({}, props, { feature: "unknown MDX component", component: component })));
51
+ };
52
+ }
53
+ function withMissingMdxComponentFallback(components) {
54
+ return new Proxy(components, {
55
+ has(target, prop) {
56
+ if (typeof prop === 'string' && /^[A-Z]/.test(prop)) {
57
+ return true;
58
+ }
59
+ return prop in target;
60
+ },
61
+ get(target, prop, receiver) {
62
+ if (typeof prop !== 'string' || prop in target) {
63
+ return Reflect.get(target, prop, receiver);
64
+ }
65
+ if (/^[A-Z]/.test(prop)) {
66
+ return createMissingMdxComponentFallback(prop);
67
+ }
68
+ return Reflect.get(target, prop, receiver);
69
+ },
70
+ });
71
+ }
72
+
73
+ export { MissingMdxFeatureBlock, MissingMdxFeatureInline, createMissingMdxComponentFallback, createMissingMdxFeatureComponents, withMissingMdxComponentFallback };
@@ -0,0 +1 @@
1
+ export { createCodeMdxComponents } from '../features/code';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var code = require('../features/code.js');
4
+
5
+
6
+
7
+ exports.createCodeMdxComponents = code.createCodeMdxComponents;
@@ -0,0 +1 @@
1
+ export { createCodeMdxComponents } from '../features/code.mjs';