@windrun-huaiin/third-ui 21.0.0 → 22.0.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 (107) hide show
  1. package/dist/ai/ai-markdown.js +1 -1
  2. package/dist/ai/ai-markdown.mjs +1 -1
  3. package/dist/clerk/clerk-page-context-generator.js +3 -2
  4. package/dist/clerk/clerk-page-context-generator.mjs +3 -2
  5. package/dist/clerk/clerk-page-generator.js +4 -3
  6. package/dist/clerk/clerk-page-generator.mjs +4 -3
  7. package/dist/fuma/base/custom-header.d.ts +1 -1
  8. package/dist/fuma/base/custom-header.js +38 -36
  9. package/dist/fuma/base/custom-header.mjs +25 -23
  10. package/dist/fuma/base/custom-home-layout.d.ts +1 -1
  11. package/dist/fuma/base/custom-home-layout.js +1 -1
  12. package/dist/fuma/base/custom-home-layout.mjs +1 -1
  13. package/dist/fuma/base/header-theme-switch.d.ts +5 -0
  14. package/dist/fuma/base/header-theme-switch.js +42 -0
  15. package/dist/fuma/base/header-theme-switch.mjs +40 -0
  16. package/dist/fuma/base/index.d.ts +1 -0
  17. package/dist/fuma/base/index.js +7 -0
  18. package/dist/fuma/base/index.mjs +1 -0
  19. package/dist/fuma/base/site-layout.d.ts +116 -0
  20. package/dist/fuma/base/site-layout.js +72 -0
  21. package/dist/fuma/base/site-layout.mjs +65 -0
  22. package/dist/fuma/fuma-banner-suit.js +9 -6
  23. package/dist/fuma/fuma-banner-suit.mjs +10 -7
  24. package/dist/fuma/fuma-page-genarator.js +1 -1
  25. package/dist/fuma/fuma-page-genarator.mjs +1 -1
  26. package/dist/fuma/heavy/image-grid.d.ts +6 -0
  27. package/dist/fuma/heavy/image-grid.js +17 -0
  28. package/dist/fuma/heavy/image-grid.mjs +15 -0
  29. package/dist/fuma/heavy/image-zoom.d.ts +22 -0
  30. package/dist/fuma/heavy/image-zoom.js +39 -0
  31. package/dist/fuma/heavy/image-zoom.mjs +37 -0
  32. package/dist/fuma/heavy/index.d.ts +4 -0
  33. package/dist/fuma/heavy/index.js +15 -0
  34. package/dist/fuma/heavy/index.mjs +5 -0
  35. package/dist/fuma/heavy/math.d.ts +17 -0
  36. package/dist/fuma/heavy/math.js +60 -0
  37. package/dist/fuma/heavy/math.mjs +57 -0
  38. package/dist/fuma/heavy/mermaid.d.ts +13 -0
  39. package/dist/fuma/heavy/mermaid.js +360 -0
  40. package/dist/fuma/heavy/mermaid.mjs +358 -0
  41. package/dist/fuma/mdx/features.d.ts +8 -0
  42. package/dist/fuma/mdx/features.js +92 -0
  43. package/dist/fuma/mdx/features.mjs +85 -0
  44. package/dist/fuma/mdx/index.d.ts +0 -5
  45. package/dist/fuma/mdx/index.js +0 -11
  46. package/dist/fuma/mdx/index.mjs +0 -5
  47. package/dist/fuma/mdx/markdown-component-map.js +7 -1
  48. package/dist/fuma/mdx/markdown-component-map.mjs +7 -1
  49. package/dist/fuma/mdx/site-mdx-components.d.ts +13 -0
  50. package/dist/fuma/mdx/site-mdx-components.js +19 -0
  51. package/dist/fuma/mdx/site-mdx-components.mjs +17 -0
  52. package/dist/fuma/mdx/site-mdx-presets.d.ts +13 -0
  53. package/dist/fuma/mdx/site-mdx-presets.js +49 -0
  54. package/dist/fuma/mdx/site-mdx-presets.mjs +45 -0
  55. package/dist/fuma/mdx/toc-clerk-portable.js +9 -5
  56. package/dist/fuma/mdx/toc-clerk-portable.mjs +8 -4
  57. package/dist/fuma/mdx/zia-file.js +1 -0
  58. package/dist/fuma/mdx/zia-file.mjs +1 -0
  59. package/dist/fuma/server/optional-features.d.ts +8 -0
  60. package/dist/fuma/server/optional-features.js +111 -0
  61. package/dist/fuma/server/optional-features.mjs +104 -0
  62. package/dist/fuma/server/site-mdx-components.d.ts +13 -0
  63. package/dist/fuma/server/site-mdx-components.js +19 -0
  64. package/dist/fuma/server/site-mdx-components.mjs +17 -0
  65. package/dist/fuma/server/site-mdx-presets.d.ts +194 -0
  66. package/dist/fuma/server/site-mdx-presets.js +46 -0
  67. package/dist/fuma/server/site-mdx-presets.mjs +42 -0
  68. package/dist/fuma/share/index.d.ts +1 -0
  69. package/dist/fuma/share/index.js +7 -0
  70. package/dist/fuma/share/index.mjs +1 -0
  71. package/dist/fuma/share/markdown-component-map.d.ts +3 -0
  72. package/dist/fuma/share/markdown-component-map.js +79 -0
  73. package/dist/fuma/share/markdown-component-map.mjs +77 -0
  74. package/dist/lib/fuma-schema-check-util.js +19 -5
  75. package/dist/lib/fuma-schema-check-util.mjs +19 -5
  76. package/dist/lib/seo-metadata.d.ts +10 -0
  77. package/dist/main/x-button.js +2 -2
  78. package/dist/main/x-button.mjs +2 -2
  79. package/package.json +31 -8
  80. package/src/ai/ai-markdown.tsx +1 -1
  81. package/src/clerk/clerk-page-context-generator.tsx +6 -3
  82. package/src/clerk/clerk-page-generator.tsx +7 -4
  83. package/src/fuma/base/custom-header.tsx +32 -35
  84. package/src/fuma/base/custom-home-layout.tsx +2 -2
  85. package/src/fuma/base/header-theme-switch.tsx +88 -0
  86. package/src/fuma/base/index.ts +1 -0
  87. package/src/fuma/base/site-layout.tsx +289 -0
  88. package/src/fuma/fuma-banner-suit.tsx +30 -28
  89. package/src/fuma/fuma-page-genarator.tsx +1 -1
  90. package/src/fuma/{mdx → heavy}/image-grid.tsx +1 -1
  91. package/src/fuma/heavy/index.ts +7 -0
  92. package/src/fuma/mdx/index.ts +0 -5
  93. package/src/fuma/mdx/toc-clerk-portable.tsx +27 -24
  94. package/src/fuma/mdx/zia-file.tsx +3 -1
  95. package/src/fuma/server/optional-features.tsx +168 -0
  96. package/src/fuma/server/site-mdx-components.tsx +48 -0
  97. package/src/fuma/server/site-mdx-presets.ts +80 -0
  98. package/src/fuma/share/index.ts +1 -0
  99. package/src/fuma/{mdx → share}/markdown-component-map.tsx +1 -1
  100. package/src/lib/fuma-schema-check-util.ts +22 -6
  101. package/src/lib/seo-metadata.ts +47 -0
  102. package/src/main/x-button.tsx +2 -2
  103. package/src/styles/fuma.css +3 -7
  104. package/src/styles/third-ui.css +0 -4
  105. /package/src/fuma/{mdx → heavy}/image-zoom.tsx +0 -0
  106. /package/src/fuma/{mdx → heavy}/math.tsx +0 -0
  107. /package/src/fuma/{mdx → heavy}/mermaid.tsx +0 -0
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var siteMdxPresets = require('./site-mdx-presets.js');
4
+
5
+ function createSiteMdxComponents(options) {
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
+ return function getMDXComponents(components) {
15
+ return siteMdxPresets.composeSiteMdxComponents(features, featureMap, additionalComponents, components);
16
+ };
17
+ }
18
+
19
+ exports.createSiteMdxComponents = createSiteMdxComponents;
@@ -0,0 +1,17 @@
1
+ import { DEFAULT_SITE_MDX_FEATURES, createSiteFeatureComponentMap, composeSiteMdxComponents } from './site-mdx-presets.mjs';
2
+
3
+ function createSiteMdxComponents(options) {
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
+ return function getMDXComponents(components) {
13
+ return composeSiteMdxComponents(features, featureMap, additionalComponents, components);
14
+ };
15
+ }
16
+
17
+ export { createSiteMdxComponents };
@@ -0,0 +1,13 @@
1
+ import type { MDXComponents } from 'mdx/types';
2
+ import type { SiteMdxFeature, SiteMdxComponentsOptions } from './site-mdx-components';
3
+ export declare const DEFAULT_SITE_MDX_FEATURES: SiteMdxFeature[];
4
+ export declare function createSiteFeatureComponentMap(options: SiteMdxComponentsOptions): {
5
+ base: MDXComponents;
6
+ code: MDXComponents;
7
+ math: MDXComponents;
8
+ mermaid: MDXComponents;
9
+ 'type-table': MDXComponents;
10
+ 'fuma-ui': MDXComponents;
11
+ widgets: MDXComponents;
12
+ };
13
+ export declare function composeSiteMdxComponents(features: readonly SiteMdxFeature[], featureMap: Record<SiteMdxFeature, MDXComponents>, additionalComponents?: MDXComponents, components?: MDXComponents): MDXComponents;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var defaultMdxComponents = require('fumadocs-ui/mdx');
4
+ var tabs = require('fumadocs-ui/components/tabs');
5
+ var callout = require('fumadocs-ui/components/callout');
6
+ var files = require('fumadocs-ui/components/files');
7
+ var accordion = require('fumadocs-ui/components/accordion');
8
+ var features = require('./features.js');
9
+
10
+ const defaultFumaUiComponents = {
11
+ Callout: callout.Callout,
12
+ File: files.File,
13
+ Folder: files.Folder,
14
+ Files: files.Files,
15
+ Accordion: accordion.Accordion,
16
+ Accordions: accordion.Accordions,
17
+ Tab: tabs.Tab,
18
+ Tabs: tabs.Tabs,
19
+ };
20
+ const DEFAULT_SITE_MDX_FEATURES = [
21
+ 'base',
22
+ 'code',
23
+ 'math',
24
+ 'mermaid',
25
+ 'type-table',
26
+ 'fuma-ui',
27
+ 'widgets',
28
+ ];
29
+ function createSiteFeatureComponentMap(options) {
30
+ const { cdnBaseUrl, iconMap = {}, imageFallbackSrc, watermarkEnabled, watermarkText, } = options;
31
+ return {
32
+ base: features.createBaseMdxComponents(imageFallbackSrc),
33
+ code: features.createCodeMdxComponents(iconMap),
34
+ math: features.createMathMdxComponents(),
35
+ mermaid: features.createMermaidMdxComponents(watermarkEnabled, watermarkText),
36
+ 'type-table': features.createTypeTableMdxComponents(),
37
+ 'fuma-ui': defaultFumaUiComponents,
38
+ widgets: features.createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc),
39
+ };
40
+ }
41
+ function composeSiteMdxComponents(features, featureMap, additionalComponents, components) {
42
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultMdxComponents), features.reduce((acc, feature) => {
43
+ return Object.assign(Object.assign({}, acc), featureMap[feature]);
44
+ }, {})), additionalComponents), components);
45
+ }
46
+
47
+ exports.DEFAULT_SITE_MDX_FEATURES = DEFAULT_SITE_MDX_FEATURES;
48
+ exports.composeSiteMdxComponents = composeSiteMdxComponents;
49
+ exports.createSiteFeatureComponentMap = createSiteFeatureComponentMap;
@@ -0,0 +1,45 @@
1
+ import defaultMdxComponents from 'fumadocs-ui/mdx';
2
+ import { Tabs, Tab } from 'fumadocs-ui/components/tabs';
3
+ import { Callout } from 'fumadocs-ui/components/callout';
4
+ import { Files, Folder, File } from 'fumadocs-ui/components/files';
5
+ import { Accordions, Accordion } from 'fumadocs-ui/components/accordion';
6
+ import { createWidgetMdxComponents, createTypeTableMdxComponents, createMermaidMdxComponents, createMathMdxComponents, createCodeMdxComponents, createBaseMdxComponents } from './features.mjs';
7
+
8
+ const defaultFumaUiComponents = {
9
+ Callout,
10
+ File,
11
+ Folder,
12
+ Files,
13
+ Accordion,
14
+ Accordions,
15
+ Tab,
16
+ Tabs,
17
+ };
18
+ const DEFAULT_SITE_MDX_FEATURES = [
19
+ 'base',
20
+ 'code',
21
+ 'math',
22
+ 'mermaid',
23
+ 'type-table',
24
+ 'fuma-ui',
25
+ 'widgets',
26
+ ];
27
+ function createSiteFeatureComponentMap(options) {
28
+ const { cdnBaseUrl, iconMap = {}, imageFallbackSrc, watermarkEnabled, watermarkText, } = options;
29
+ return {
30
+ base: createBaseMdxComponents(imageFallbackSrc),
31
+ code: createCodeMdxComponents(iconMap),
32
+ math: createMathMdxComponents(),
33
+ mermaid: createMermaidMdxComponents(watermarkEnabled, watermarkText),
34
+ 'type-table': createTypeTableMdxComponents(),
35
+ 'fuma-ui': defaultFumaUiComponents,
36
+ widgets: createWidgetMdxComponents(cdnBaseUrl, imageFallbackSrc),
37
+ };
38
+ }
39
+ function composeSiteMdxComponents(features, featureMap, additionalComponents, components) {
40
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, defaultMdxComponents), features.reduce((acc, feature) => {
41
+ return Object.assign(Object.assign({}, acc), featureMap[feature]);
42
+ }, {})), additionalComponents), components);
43
+ }
44
+
45
+ export { DEFAULT_SITE_MDX_FEATURES, composeSiteMdxComponents, createSiteFeatureComponentMap };
@@ -4,7 +4,7 @@
4
4
  var tslib = require('tslib');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var Primitive = require('fumadocs-core/toc');
7
- var page = require('fumadocs-ui/layouts/docs/page');
7
+ var toc = require('fumadocs-ui/layouts/docs/page/slots/toc');
8
8
  var React = require('react');
9
9
  var lib = require('@windrun-huaiin/base-ui/lib');
10
10
 
@@ -49,11 +49,15 @@ const CLERK_STEP_BADGE_RADIUS = 7;
49
49
  const CLERK_DEPTH_GROUP_LINE_OFFSETS = [6, 18, 30, 42];
50
50
  // Max number of characters rendered for a TOC label before trimming with ellipsis.
51
51
  const CLERK_MAX_LABEL_LENGTH = 44;
52
- function PortableClerkTOC({ toc, header, footer, title, emptyLabel = 'No headings', className, }) {
53
- return (jsxRuntime.jsxs(page.PageTOC, { className: className, children: [header, title !== null && title !== void 0 ? title : jsxRuntime.jsx(page.PageTOCTitle, {}), jsxRuntime.jsx(PortableClerkTOCScrollArea, { children: jsxRuntime.jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }) }), footer] }));
52
+ function PortableClerkTOC({ toc: toc$1, header, footer, title, emptyLabel = 'No headings', className, }) {
53
+ return (jsxRuntime.jsx(toc.TOC, { style: "clerk", container: { className }, header: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header, title !== null && title !== void 0 ? title : null] }), footer: footer, list: {
54
+ children: jsxRuntime.jsx(PortableClerkTOCItems, { toc: toc$1, emptyLabel: emptyLabel }),
55
+ } }));
54
56
  }
55
- function PortableClerkTOCPopover({ toc, header, footer, emptyLabel = 'No headings', }) {
56
- return (jsxRuntime.jsxs(page.PageTOCPopover, { children: [jsxRuntime.jsx(page.PageTOCPopoverTrigger, {}), jsxRuntime.jsxs(page.PageTOCPopoverContent, { children: [header, jsxRuntime.jsx(PortableClerkTOCScrollArea, { children: jsxRuntime.jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }) }), footer] })] }));
57
+ function PortableClerkTOCPopover({ toc: toc$1, header, footer, emptyLabel = 'No headings', }) {
58
+ return (jsxRuntime.jsx(toc.TOCPopover, { style: "clerk", header: header, footer: footer, list: {
59
+ children: jsxRuntime.jsx(PortableClerkTOCItems, { toc: toc$1, emptyLabel: emptyLabel }),
60
+ } }));
57
61
  }
58
62
  function PortableClerkTOCScrollArea(_a) {
59
63
  var { ref, className } = _a, props = tslib.__rest(_a, ["ref", "className"]);
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { __rest } from 'tslib';
3
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import * as Primitive from 'fumadocs-core/toc';
5
- import { PageTOC, PageTOCTitle, PageTOCPopover, PageTOCPopoverTrigger, PageTOCPopoverContent } from 'fumadocs-ui/layouts/docs/page';
5
+ import { TOC, TOCPopover } from 'fumadocs-ui/layouts/docs/page/slots/toc';
6
6
  import { useRef, useState, useMemo, useLayoutEffect, useEffect } from 'react';
7
7
  import { themeSvgIconColor, themeIconColor } from '@windrun-huaiin/base-ui/lib';
8
8
 
@@ -29,10 +29,14 @@ const CLERK_DEPTH_GROUP_LINE_OFFSETS = [6, 18, 30, 42];
29
29
  // Max number of characters rendered for a TOC label before trimming with ellipsis.
30
30
  const CLERK_MAX_LABEL_LENGTH = 44;
31
31
  function PortableClerkTOC({ toc, header, footer, title, emptyLabel = 'No headings', className, }) {
32
- return (jsxs(PageTOC, { className: className, children: [header, title !== null && title !== void 0 ? title : jsx(PageTOCTitle, {}), jsx(PortableClerkTOCScrollArea, { children: jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }) }), footer] }));
32
+ return (jsx(TOC, { style: "clerk", container: { className }, header: jsxs(Fragment, { children: [header, title !== null && title !== void 0 ? title : null] }), footer: footer, list: {
33
+ children: jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }),
34
+ } }));
33
35
  }
34
36
  function PortableClerkTOCPopover({ toc, header, footer, emptyLabel = 'No headings', }) {
35
- return (jsxs(PageTOCPopover, { children: [jsx(PageTOCPopoverTrigger, {}), jsxs(PageTOCPopoverContent, { children: [header, jsx(PortableClerkTOCScrollArea, { children: jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }) }), footer] })] }));
37
+ return (jsx(TOCPopover, { style: "clerk", header: header, footer: footer, list: {
38
+ children: jsx(PortableClerkTOCItems, { toc: toc, emptyLabel: emptyLabel }),
39
+ } }));
36
40
  }
37
41
  function PortableClerkTOCScrollArea(_a) {
38
42
  var { ref, className } = _a, props = __rest(_a, ["ref", "className"]);
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var tslib = require('tslib');
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { __rest } from 'tslib';
2
3
  import { jsx, jsxs } from 'react/jsx-runtime';
3
4
  import { FileIcon, FolderOpenIcon, FolderIcon } from '@windrun-huaiin/base-ui/icons';
@@ -0,0 +1,8 @@
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;
@@ -0,0 +1,111 @@
1
+ 'use strict';
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');
17
+
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
+
106
+ exports.createBaseMdxComponents = createBaseMdxComponents;
107
+ exports.createCodeMdxComponents = createCodeMdxComponents;
108
+ exports.createMathMdxComponents = createMathMdxComponents;
109
+ exports.createMermaidMdxComponents = createMermaidMdxComponents;
110
+ exports.createTypeTableMdxComponents = createTypeTableMdxComponents;
111
+ exports.createWidgetMdxComponents = createWidgetMdxComponents;
@@ -0,0 +1,104 @@
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 };
@@ -0,0 +1,13 @@
1
+ import type { MDXComponents } from 'mdx/types';
2
+ import type { ReactNode } from 'react';
3
+ import type { SiteMdxFeature } from '@windrun-huaiin/contracts/mdx';
4
+ export interface SiteMdxComponentsOptions {
5
+ imageFallbackSrc?: string;
6
+ cdnBaseUrl?: string;
7
+ watermarkEnabled?: boolean;
8
+ watermarkText?: string;
9
+ additionalComponents?: MDXComponents;
10
+ iconMap?: Record<string, ReactNode>;
11
+ features?: SiteMdxFeature[];
12
+ }
13
+ export declare function createSiteMdxComponents(options: SiteMdxComponentsOptions): (components?: MDXComponents) => MDXComponents;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var siteMdxPresets = require('./site-mdx-presets.js');
4
+
5
+ function createSiteMdxComponents(options) {
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
+ return function getMDXComponents(components) {
15
+ return siteMdxPresets.composeSiteMdxComponents(features, featureMap, additionalComponents, components);
16
+ };
17
+ }
18
+
19
+ exports.createSiteMdxComponents = createSiteMdxComponents;
@@ -0,0 +1,17 @@
1
+ import { DEFAULT_SITE_MDX_FEATURES, createSiteFeatureComponentMap, composeSiteMdxComponents } from './site-mdx-presets.mjs';
2
+
3
+ function createSiteMdxComponents(options) {
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
+ return function getMDXComponents(components) {
13
+ return composeSiteMdxComponents(features, featureMap, additionalComponents, components);
14
+ };
15
+ }
16
+
17
+ export { createSiteMdxComponents };