@windrun-huaiin/third-ui 6.3.1 → 7.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 (76) hide show
  1. package/package.json +15 -53
  2. package/dist/chunk-45PUPAKX.js +0 -128
  3. package/dist/chunk-45PUPAKX.js.map +0 -1
  4. package/dist/chunk-5BELDGQB.mjs +0 -19
  5. package/dist/chunk-5BELDGQB.mjs.map +0 -1
  6. package/dist/chunk-ECWCWQCD.js +0 -231
  7. package/dist/chunk-ECWCWQCD.js.map +0 -1
  8. package/dist/chunk-EH6BJNHH.mjs +0 -3266
  9. package/dist/chunk-EH6BJNHH.mjs.map +0 -1
  10. package/dist/chunk-ETOMEWHS.mjs +0 -231
  11. package/dist/chunk-ETOMEWHS.mjs.map +0 -1
  12. package/dist/chunk-GPRHQYBI.mjs +0 -2962
  13. package/dist/chunk-GPRHQYBI.mjs.map +0 -1
  14. package/dist/chunk-M4ASGKEP.mjs +0 -128
  15. package/dist/chunk-M4ASGKEP.mjs.map +0 -1
  16. package/dist/chunk-NQKOD34Z.js +0 -2962
  17. package/dist/chunk-NQKOD34Z.js.map +0 -1
  18. package/dist/chunk-OZQO43WJ.js +0 -981
  19. package/dist/chunk-OZQO43WJ.js.map +0 -1
  20. package/dist/chunk-SQFKTU52.mjs +0 -981
  21. package/dist/chunk-SQFKTU52.mjs.map +0 -1
  22. package/dist/chunk-UNJOOO7O.js +0 -101
  23. package/dist/chunk-UNJOOO7O.js.map +0 -1
  24. package/dist/chunk-WWEZQKHX.mjs +0 -103
  25. package/dist/chunk-WWEZQKHX.mjs.map +0 -1
  26. package/dist/chunk-XCKOFS5W.js +0 -3266
  27. package/dist/chunk-XCKOFS5W.js.map +0 -1
  28. package/dist/chunk-ZURRPUFV.js +0 -19
  29. package/dist/chunk-ZURRPUFV.js.map +0 -1
  30. package/dist/clerk/index.d.mts +0 -15
  31. package/dist/clerk/index.d.ts +0 -15
  32. package/dist/clerk/index.js +0 -52
  33. package/dist/clerk/index.js.map +0 -1
  34. package/dist/clerk/index.mjs +0 -52
  35. package/dist/clerk/index.mjs.map +0 -1
  36. package/dist/clerk/server.d.mts +0 -28
  37. package/dist/clerk/server.d.ts +0 -28
  38. package/dist/clerk/server.js +0 -188
  39. package/dist/clerk/server.js.map +0 -1
  40. package/dist/clerk/server.mjs +0 -188
  41. package/dist/clerk/server.mjs.map +0 -1
  42. package/dist/cta.css +0 -16
  43. package/dist/fuma/mdx/index.d.mts +0 -133
  44. package/dist/fuma/mdx/index.d.ts +0 -133
  45. package/dist/fuma/mdx/index.js +0 -40
  46. package/dist/fuma/mdx/index.js.map +0 -1
  47. package/dist/fuma/mdx/index.mjs +0 -40
  48. package/dist/fuma/mdx/index.mjs.map +0 -1
  49. package/dist/fuma/server.d.mts +0 -77
  50. package/dist/fuma/server.d.ts +0 -77
  51. package/dist/fuma/server.js +0 -27481
  52. package/dist/fuma/server.js.map +0 -1
  53. package/dist/fuma/server.mjs +0 -27481
  54. package/dist/fuma/server.mjs.map +0 -1
  55. package/dist/fuma.css +0 -106
  56. package/dist/lib/server.d.mts +0 -4670
  57. package/dist/lib/server.d.ts +0 -4670
  58. package/dist/lib/server.js +0 -152
  59. package/dist/lib/server.js.map +0 -1
  60. package/dist/lib/server.mjs +0 -152
  61. package/dist/lib/server.mjs.map +0 -1
  62. package/dist/main/index.d.mts +0 -198
  63. package/dist/main/index.d.ts +0 -198
  64. package/dist/main/index.js +0 -32
  65. package/dist/main/index.js.map +0 -1
  66. package/dist/main/index.mjs +0 -32
  67. package/dist/main/index.mjs.map +0 -1
  68. package/dist/main/server.d.mts +0 -64
  69. package/dist/main/server.d.ts +0 -64
  70. package/dist/main/server.js +0 -615
  71. package/dist/main/server.js.map +0 -1
  72. package/dist/main/server.mjs +0 -615
  73. package/dist/main/server.mjs.map +0 -1
  74. package/dist/third-ui.css +0 -66
  75. package/dist/toc-base-BC7kXpDU.d.mts +0 -15
  76. package/dist/toc-base-BC7kXpDU.d.ts +0 -15
@@ -1,152 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }/* eslint-disable */
2
-
3
-
4
- var _chunkZURRPUFVjs = require('../chunk-ZURRPUFV.js');
5
-
6
-
7
- var _chunkUNJOOO7Ojs = require('../chunk-UNJOOO7O.js');
8
-
9
- // src/lib/server.ts
10
- _chunkUNJOOO7Ojs.init_cjs_shims.call(void 0, );
11
-
12
- // src/lib/fuma-search-util.ts
13
- _chunkUNJOOO7Ojs.init_cjs_shims.call(void 0, );
14
- var fumaI18nCn = {
15
- search: "Translated Content"
16
- // other translations
17
- };
18
-
19
- // src/lib/fuma-schema-check-util.ts
20
- _chunkUNJOOO7Ojs.init_cjs_shims.call(void 0, );
21
- var _zod = require('zod');
22
- var _config = require('fumadocs-mdx/config');
23
- var createTitleSchema = () => _zod.z.string({
24
- required_error: "Title is required",
25
- invalid_type_error: "Title must be a string and cannot be null"
26
- }).trim().min(1, { message: "Title cannot be empty or consist only of whitespace" });
27
- var createDescriptionSchema = () => _zod.z.preprocess(
28
- (val) => {
29
- if (typeof val === "string") {
30
- return val.trim() === "" || val === null ? void 0 : val.trim();
31
- }
32
- return val === null ? void 0 : val;
33
- },
34
- _zod.z.string().optional()
35
- );
36
- var createIconSchema = () => _zod.z.preprocess(
37
- (val) => val === "" || val === null ? void 0 : val,
38
- _zod.z.string().optional()
39
- );
40
- var createDateSchema = () => _zod.z.preprocess(
41
- (arg) => {
42
- if (arg instanceof Date) {
43
- const year = arg.getFullYear();
44
- const month = (arg.getMonth() + 1).toString().padStart(2, "0");
45
- const day = arg.getDate().toString().padStart(2, "0");
46
- return `${year}-${month}-${day}`;
47
- }
48
- if (typeof arg === "string") {
49
- return arg.trim();
50
- }
51
- return arg;
52
- },
53
- _zod.z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format or a valid Date object").refine((val) => !isNaN(new Date(val).getTime()), "Invalid date!")
54
- );
55
- var createCommonDocsSchema = () => _config.frontmatterSchema.extend({
56
- title: createTitleSchema(),
57
- description: createDescriptionSchema(),
58
- icon: createIconSchema(),
59
- date: createDateSchema(),
60
- author: _zod.z.string().optional(),
61
- keywords: _zod.z.array(_zod.z.string()).optional()
62
- });
63
- var createCommonMetaSchema = () => _config.metaSchema.extend({
64
- description: _zod.z.string().optional()
65
- });
66
- var remarkInstallOptions = {
67
- persist: {
68
- id: "package-manager"
69
- }
70
- };
71
-
72
- // src/lib/seo-util.ts
73
- _chunkUNJOOO7Ojs.init_cjs_shims.call(void 0, );
74
- var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
75
- var _path = require('path'); var _path2 = _interopRequireDefault(_path);
76
- function generateRobots(baseUrl) {
77
- return {
78
- rules: {
79
- userAgent: "*",
80
- allow: "/"
81
- },
82
- sitemap: `${baseUrl}/sitemap.xml`
83
- };
84
- }
85
- function generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap = true) {
86
- const blogRoutes = [];
87
- if (mdxSourceDir && mdxSourceDir.trim() !== "") {
88
- const blogDir = _path2.default.join(process.cwd(), mdxSourceDir);
89
- try {
90
- if (_fs2.default.existsSync(blogDir) && _fs2.default.statSync(blogDir).isDirectory()) {
91
- const blogFiles = _fs2.default.readdirSync(blogDir).filter((f) => f.endsWith(".mdx"));
92
- for (const locale of locales) {
93
- for (const f of blogFiles) {
94
- if (f === "index.mdx") {
95
- blogRoutes.push({
96
- url: `${baseUrl}/${locale}/blog`,
97
- lastModified: /* @__PURE__ */ new Date(),
98
- changeFrequency: "daily",
99
- priority: 1
100
- });
101
- } else {
102
- const slug = f.replace(/\.mdx$/, "");
103
- blogRoutes.push({
104
- url: `${baseUrl}/${locale}/blog/${slug}`,
105
- lastModified: /* @__PURE__ */ new Date(),
106
- changeFrequency: f === "ioc.mdx" ? "daily" : "monthly",
107
- priority: 0.8
108
- });
109
- }
110
- }
111
- }
112
- }
113
- } catch (error) {
114
- console.warn(`Warning: Could not read MDX directory "${mdxSourceDir}":`, error);
115
- }
116
- }
117
- const mainRoutes = locales.map((locale) => ({
118
- url: `${baseUrl}/${locale}`,
119
- lastModified: /* @__PURE__ */ new Date(),
120
- changeFrequency: "weekly",
121
- priority: 1
122
- }));
123
- return openMdxSEOSiteMap ? [...mainRoutes, ...blogRoutes] : [...mainRoutes];
124
- }
125
- function createRobotsHandler(baseUrl) {
126
- return function robots() {
127
- return generateRobots(baseUrl);
128
- };
129
- }
130
- function createSitemapHandler(baseUrl, locales, mdxSourceDir = "", openMdxSEOSiteMap = true) {
131
- const sitemapHandler = function sitemap() {
132
- return generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap);
133
- };
134
- sitemapHandler.dynamic = "force-static";
135
- return sitemapHandler;
136
- }
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
- exports.clerkIntl = _chunkZURRPUFVjs.clerkIntl; exports.createCommonDocsSchema = createCommonDocsSchema; exports.createCommonMetaSchema = createCommonMetaSchema; exports.createDateSchema = createDateSchema; exports.createDescriptionSchema = createDescriptionSchema; exports.createIconSchema = createIconSchema; exports.createRobotsHandler = createRobotsHandler; exports.createSitemapHandler = createSitemapHandler; exports.createTitleSchema = createTitleSchema; exports.fumaI18nCn = fumaI18nCn; exports.generateRobots = generateRobots; exports.generateSitemap = generateSitemap; exports.remarkInstallOptions = remarkInstallOptions;
152
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/funeye/IdeaProjects/next-ai-build/packages/third-ui/dist/lib/server.js","../../src/lib/server.ts","../../src/lib/fuma-search-util.ts","../../src/lib/fuma-schema-check-util.ts","../../src/lib/seo-util.ts"],"names":[],"mappings":"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","file":"/Users/funeye/IdeaProjects/next-ai-build/packages/third-ui/dist/lib/server.js","sourcesContent":[null,"// This is a server component!\n\nexport * from './fuma-search-util';\nexport * from './clerk-intl';\nexport * from './fuma-schema-check-util';\nexport * from './seo-util';","import { Translations } from 'fumadocs-ui/i18n';\n\nexport const fumaI18nCn: Partial<Translations> = {\n search: 'Translated Content',\n // other translations\n};\n","import { z } from 'zod';\nimport { frontmatterSchema, metaSchema } from 'fumadocs-mdx/config';\n\n\n// Reusable schema for title\nexport const createTitleSchema = () =>\n z.string({\n required_error: \"Title is required\",\n invalid_type_error: \"Title must be a string and cannot be null\",\n })\n .trim()\n .min(1, { message: \"Title cannot be empty or consist only of whitespace\" });\n\n// Reusable schema for description\nexport const createDescriptionSchema = () =>\n z.preprocess(\n (val: any) => {\n if (typeof val === 'string') {\n return val.trim() === \"\" || val === null ? undefined : val.trim();\n }\n return val === null ? undefined : val;\n },\n z.string().optional()\n );\n\n// Reusable schema for icon\nexport const createIconSchema = () =>\n z.preprocess(\n (val: any) => (val === \"\" || val === null ? undefined : val),\n z.string().optional()\n );\n\n// Reusable schema for date\nexport const createDateSchema = () =>\n z.preprocess((arg: any) => {\n if (arg instanceof Date) {\n // Format Date object to YYYY-MM-DD string\n const year = arg.getFullYear();\n const month = (arg.getMonth() + 1).toString().padStart(2, '0');\n const day = arg.getDate().toString().padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n if (typeof arg === 'string') {\n return arg.trim();\n }\n // For other types or null/undefined, let the subsequent string validation handle it\n return arg; \n },\n z.string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format or a valid Date object\")\n .refine((val: any) => !isNaN(new Date(val).getTime()), 'Invalid date!')\n );\n\n// common docs frontmatter schema\nexport const createCommonDocsSchema = () => frontmatterSchema.extend({\n title: createTitleSchema(),\n description: createDescriptionSchema(),\n icon: createIconSchema(),\n date: createDateSchema(),\n author: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n});\n\n// common meta schema\nexport const createCommonMetaSchema = () => metaSchema.extend({\n description: z.string().optional(),\n});\n\nexport const remarkInstallOptions = {\n persist: {\n id: 'package-manager',\n },\n};","import type { MetadataRoute } from 'next';\nimport fs from 'fs';\nimport path from 'path';\n\n/**\n * Generate robots.txt content\n * @param baseUrl - The base URL of the website\n * @returns Robots configuration\n */\nexport function generateRobots(baseUrl: string): MetadataRoute.Robots {\n return {\n rules: {\n userAgent: \"*\",\n allow: \"/\",\n },\n sitemap: `${baseUrl}/sitemap.xml`,\n };\n}\n\n/**\n * Generate sitemap.xml content\n * @param baseUrl - The base URL of the website\n * @param locales - Supported locales array\n * @param mdxSourceDir - MDX source directory path\n * @param openMdxSEOSiteMap - Whether to include MDX content in sitemap, default is true\n * @returns Sitemap entries\n */\nexport function generateSitemap(\n baseUrl: string,\n locales: string[],\n mdxSourceDir: string,\n openMdxSEOSiteMap: boolean = true\n): MetadataRoute.Sitemap {\n // 2. handle index.mdx (blog start page) and other slugs\n const blogRoutes: MetadataRoute.Sitemap = [];\n\n // 1. read all blog mdx file names with error handling\n if (mdxSourceDir && mdxSourceDir.trim() !== '') {\n const blogDir = path.join(process.cwd(), mdxSourceDir);\n \n // Check if directory exists and is readable\n try {\n if (fs.existsSync(blogDir) && fs.statSync(blogDir).isDirectory()) {\n const blogFiles = fs.readdirSync(blogDir).filter(f => f.endsWith('.mdx'));\n\n for (const locale of locales) {\n for (const f of blogFiles) {\n if (f === 'index.mdx') {\n blogRoutes.push({\n url: `${baseUrl}/${locale}/blog`,\n lastModified: new Date(),\n changeFrequency: 'daily',\n priority: 1.0\n });\n } else {\n const slug = f.replace(/\\.mdx$/, '');\n blogRoutes.push({\n url: `${baseUrl}/${locale}/blog/${slug}`,\n lastModified: new Date(),\n changeFrequency: f === 'ioc.mdx' ? 'daily' : 'monthly',\n priority: 0.8\n });\n }\n }\n }\n }\n } catch (error) {\n // Handle edge cases like race conditions, permission changes, or filesystem errors\n console.warn(`Warning: Could not read MDX directory \"${mdxSourceDir}\":`, error);\n }\n }\n\n // 3. main page (all language versions)\n const mainRoutes = locales.map(locale => ({\n url: `${baseUrl}/${locale}`,\n lastModified: new Date(),\n changeFrequency: 'weekly' as const,\n priority: 1.0\n }));\n\n return openMdxSEOSiteMap ? [...mainRoutes, ...blogRoutes] : [...mainRoutes];\n}\n\n/**\n * Create robots.txt handler function\n * @param baseUrl - The base URL of the website\n * @returns Robots handler function\n */\nexport function createRobotsHandler(baseUrl: string) {\n return function robots(): MetadataRoute.Robots {\n return generateRobots(baseUrl);\n };\n}\n\n/**\n * Create sitemap.xml handler function\n * @param baseUrl - The base URL of the website\n * @param locales - Supported locales array\n * @param mdxSourceDir - MDX source directory path, default is empty\n * @param openMdxSEOSiteMap - Whether to include MDX content in sitemap, default is true\n * @returns Sitemap handler function\n */\nexport function createSitemapHandler(\n baseUrl: string,\n locales: string[],\n mdxSourceDir: string = '',\n openMdxSEOSiteMap: boolean = true\n) {\n // force static generation\n const sitemapHandler = function sitemap(): MetadataRoute.Sitemap {\n return generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap);\n };\n \n // Add static generation directive\n (sitemapHandler as any).dynamic = 'force-static';\n \n return sitemapHandler;\n}"]}
@@ -1,152 +0,0 @@
1
- /* eslint-disable */
2
- import {
3
- clerkIntl
4
- } from "../chunk-5BELDGQB.mjs";
5
- import {
6
- init_esm_shims
7
- } from "../chunk-WWEZQKHX.mjs";
8
-
9
- // src/lib/server.ts
10
- init_esm_shims();
11
-
12
- // src/lib/fuma-search-util.ts
13
- init_esm_shims();
14
- var fumaI18nCn = {
15
- search: "Translated Content"
16
- // other translations
17
- };
18
-
19
- // src/lib/fuma-schema-check-util.ts
20
- init_esm_shims();
21
- import { z } from "zod";
22
- import { frontmatterSchema, metaSchema } from "fumadocs-mdx/config";
23
- var createTitleSchema = () => z.string({
24
- required_error: "Title is required",
25
- invalid_type_error: "Title must be a string and cannot be null"
26
- }).trim().min(1, { message: "Title cannot be empty or consist only of whitespace" });
27
- var createDescriptionSchema = () => z.preprocess(
28
- (val) => {
29
- if (typeof val === "string") {
30
- return val.trim() === "" || val === null ? void 0 : val.trim();
31
- }
32
- return val === null ? void 0 : val;
33
- },
34
- z.string().optional()
35
- );
36
- var createIconSchema = () => z.preprocess(
37
- (val) => val === "" || val === null ? void 0 : val,
38
- z.string().optional()
39
- );
40
- var createDateSchema = () => z.preprocess(
41
- (arg) => {
42
- if (arg instanceof Date) {
43
- const year = arg.getFullYear();
44
- const month = (arg.getMonth() + 1).toString().padStart(2, "0");
45
- const day = arg.getDate().toString().padStart(2, "0");
46
- return `${year}-${month}-${day}`;
47
- }
48
- if (typeof arg === "string") {
49
- return arg.trim();
50
- }
51
- return arg;
52
- },
53
- z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format or a valid Date object").refine((val) => !isNaN(new Date(val).getTime()), "Invalid date!")
54
- );
55
- var createCommonDocsSchema = () => frontmatterSchema.extend({
56
- title: createTitleSchema(),
57
- description: createDescriptionSchema(),
58
- icon: createIconSchema(),
59
- date: createDateSchema(),
60
- author: z.string().optional(),
61
- keywords: z.array(z.string()).optional()
62
- });
63
- var createCommonMetaSchema = () => metaSchema.extend({
64
- description: z.string().optional()
65
- });
66
- var remarkInstallOptions = {
67
- persist: {
68
- id: "package-manager"
69
- }
70
- };
71
-
72
- // src/lib/seo-util.ts
73
- init_esm_shims();
74
- import fs from "fs";
75
- import path from "path";
76
- function generateRobots(baseUrl) {
77
- return {
78
- rules: {
79
- userAgent: "*",
80
- allow: "/"
81
- },
82
- sitemap: `${baseUrl}/sitemap.xml`
83
- };
84
- }
85
- function generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap = true) {
86
- const blogRoutes = [];
87
- if (mdxSourceDir && mdxSourceDir.trim() !== "") {
88
- const blogDir = path.join(process.cwd(), mdxSourceDir);
89
- try {
90
- if (fs.existsSync(blogDir) && fs.statSync(blogDir).isDirectory()) {
91
- const blogFiles = fs.readdirSync(blogDir).filter((f) => f.endsWith(".mdx"));
92
- for (const locale of locales) {
93
- for (const f of blogFiles) {
94
- if (f === "index.mdx") {
95
- blogRoutes.push({
96
- url: `${baseUrl}/${locale}/blog`,
97
- lastModified: /* @__PURE__ */ new Date(),
98
- changeFrequency: "daily",
99
- priority: 1
100
- });
101
- } else {
102
- const slug = f.replace(/\.mdx$/, "");
103
- blogRoutes.push({
104
- url: `${baseUrl}/${locale}/blog/${slug}`,
105
- lastModified: /* @__PURE__ */ new Date(),
106
- changeFrequency: f === "ioc.mdx" ? "daily" : "monthly",
107
- priority: 0.8
108
- });
109
- }
110
- }
111
- }
112
- }
113
- } catch (error) {
114
- console.warn(`Warning: Could not read MDX directory "${mdxSourceDir}":`, error);
115
- }
116
- }
117
- const mainRoutes = locales.map((locale) => ({
118
- url: `${baseUrl}/${locale}`,
119
- lastModified: /* @__PURE__ */ new Date(),
120
- changeFrequency: "weekly",
121
- priority: 1
122
- }));
123
- return openMdxSEOSiteMap ? [...mainRoutes, ...blogRoutes] : [...mainRoutes];
124
- }
125
- function createRobotsHandler(baseUrl) {
126
- return function robots() {
127
- return generateRobots(baseUrl);
128
- };
129
- }
130
- function createSitemapHandler(baseUrl, locales, mdxSourceDir = "", openMdxSEOSiteMap = true) {
131
- const sitemapHandler = function sitemap() {
132
- return generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap);
133
- };
134
- sitemapHandler.dynamic = "force-static";
135
- return sitemapHandler;
136
- }
137
- export {
138
- clerkIntl,
139
- createCommonDocsSchema,
140
- createCommonMetaSchema,
141
- createDateSchema,
142
- createDescriptionSchema,
143
- createIconSchema,
144
- createRobotsHandler,
145
- createSitemapHandler,
146
- createTitleSchema,
147
- fumaI18nCn,
148
- generateRobots,
149
- generateSitemap,
150
- remarkInstallOptions
151
- };
152
- //# sourceMappingURL=server.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/server.ts","../../src/lib/fuma-search-util.ts","../../src/lib/fuma-schema-check-util.ts","../../src/lib/seo-util.ts"],"sourcesContent":["// This is a server component!\n\nexport * from './fuma-search-util';\nexport * from './clerk-intl';\nexport * from './fuma-schema-check-util';\nexport * from './seo-util';","import { Translations } from 'fumadocs-ui/i18n';\n\nexport const fumaI18nCn: Partial<Translations> = {\n search: 'Translated Content',\n // other translations\n};\n","import { z } from 'zod';\nimport { frontmatterSchema, metaSchema } from 'fumadocs-mdx/config';\n\n\n// Reusable schema for title\nexport const createTitleSchema = () =>\n z.string({\n required_error: \"Title is required\",\n invalid_type_error: \"Title must be a string and cannot be null\",\n })\n .trim()\n .min(1, { message: \"Title cannot be empty or consist only of whitespace\" });\n\n// Reusable schema for description\nexport const createDescriptionSchema = () =>\n z.preprocess(\n (val: any) => {\n if (typeof val === 'string') {\n return val.trim() === \"\" || val === null ? undefined : val.trim();\n }\n return val === null ? undefined : val;\n },\n z.string().optional()\n );\n\n// Reusable schema for icon\nexport const createIconSchema = () =>\n z.preprocess(\n (val: any) => (val === \"\" || val === null ? undefined : val),\n z.string().optional()\n );\n\n// Reusable schema for date\nexport const createDateSchema = () =>\n z.preprocess((arg: any) => {\n if (arg instanceof Date) {\n // Format Date object to YYYY-MM-DD string\n const year = arg.getFullYear();\n const month = (arg.getMonth() + 1).toString().padStart(2, '0');\n const day = arg.getDate().toString().padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n if (typeof arg === 'string') {\n return arg.trim();\n }\n // For other types or null/undefined, let the subsequent string validation handle it\n return arg; \n },\n z.string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Date must be in YYYY-MM-DD format or a valid Date object\")\n .refine((val: any) => !isNaN(new Date(val).getTime()), 'Invalid date!')\n );\n\n// common docs frontmatter schema\nexport const createCommonDocsSchema = () => frontmatterSchema.extend({\n title: createTitleSchema(),\n description: createDescriptionSchema(),\n icon: createIconSchema(),\n date: createDateSchema(),\n author: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n});\n\n// common meta schema\nexport const createCommonMetaSchema = () => metaSchema.extend({\n description: z.string().optional(),\n});\n\nexport const remarkInstallOptions = {\n persist: {\n id: 'package-manager',\n },\n};","import type { MetadataRoute } from 'next';\nimport fs from 'fs';\nimport path from 'path';\n\n/**\n * Generate robots.txt content\n * @param baseUrl - The base URL of the website\n * @returns Robots configuration\n */\nexport function generateRobots(baseUrl: string): MetadataRoute.Robots {\n return {\n rules: {\n userAgent: \"*\",\n allow: \"/\",\n },\n sitemap: `${baseUrl}/sitemap.xml`,\n };\n}\n\n/**\n * Generate sitemap.xml content\n * @param baseUrl - The base URL of the website\n * @param locales - Supported locales array\n * @param mdxSourceDir - MDX source directory path\n * @param openMdxSEOSiteMap - Whether to include MDX content in sitemap, default is true\n * @returns Sitemap entries\n */\nexport function generateSitemap(\n baseUrl: string,\n locales: string[],\n mdxSourceDir: string,\n openMdxSEOSiteMap: boolean = true\n): MetadataRoute.Sitemap {\n // 2. handle index.mdx (blog start page) and other slugs\n const blogRoutes: MetadataRoute.Sitemap = [];\n\n // 1. read all blog mdx file names with error handling\n if (mdxSourceDir && mdxSourceDir.trim() !== '') {\n const blogDir = path.join(process.cwd(), mdxSourceDir);\n \n // Check if directory exists and is readable\n try {\n if (fs.existsSync(blogDir) && fs.statSync(blogDir).isDirectory()) {\n const blogFiles = fs.readdirSync(blogDir).filter(f => f.endsWith('.mdx'));\n\n for (const locale of locales) {\n for (const f of blogFiles) {\n if (f === 'index.mdx') {\n blogRoutes.push({\n url: `${baseUrl}/${locale}/blog`,\n lastModified: new Date(),\n changeFrequency: 'daily',\n priority: 1.0\n });\n } else {\n const slug = f.replace(/\\.mdx$/, '');\n blogRoutes.push({\n url: `${baseUrl}/${locale}/blog/${slug}`,\n lastModified: new Date(),\n changeFrequency: f === 'ioc.mdx' ? 'daily' : 'monthly',\n priority: 0.8\n });\n }\n }\n }\n }\n } catch (error) {\n // Handle edge cases like race conditions, permission changes, or filesystem errors\n console.warn(`Warning: Could not read MDX directory \"${mdxSourceDir}\":`, error);\n }\n }\n\n // 3. main page (all language versions)\n const mainRoutes = locales.map(locale => ({\n url: `${baseUrl}/${locale}`,\n lastModified: new Date(),\n changeFrequency: 'weekly' as const,\n priority: 1.0\n }));\n\n return openMdxSEOSiteMap ? [...mainRoutes, ...blogRoutes] : [...mainRoutes];\n}\n\n/**\n * Create robots.txt handler function\n * @param baseUrl - The base URL of the website\n * @returns Robots handler function\n */\nexport function createRobotsHandler(baseUrl: string) {\n return function robots(): MetadataRoute.Robots {\n return generateRobots(baseUrl);\n };\n}\n\n/**\n * Create sitemap.xml handler function\n * @param baseUrl - The base URL of the website\n * @param locales - Supported locales array\n * @param mdxSourceDir - MDX source directory path, default is empty\n * @param openMdxSEOSiteMap - Whether to include MDX content in sitemap, default is true\n * @returns Sitemap handler function\n */\nexport function createSitemapHandler(\n baseUrl: string,\n locales: string[],\n mdxSourceDir: string = '',\n openMdxSEOSiteMap: boolean = true\n) {\n // force static generation\n const sitemapHandler = function sitemap(): MetadataRoute.Sitemap {\n return generateSitemap(baseUrl, locales, mdxSourceDir, openMdxSEOSiteMap);\n };\n \n // Add static generation directive\n (sitemapHandler as any).dynamic = 'force-static';\n \n return sitemapHandler;\n}"],"mappings":"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","names":[]}
@@ -1,198 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React, { ReactNode } from 'react';
3
-
4
- declare function GoToTop(): react_jsx_runtime.JSX.Element;
5
-
6
- declare function Loading(): react_jsx_runtime.JSX.Element;
7
-
8
- declare function NProgressBar(): null;
9
-
10
- interface AdsAlertDialogProps {
11
- open: boolean;
12
- onOpenChange: (open: boolean) => void;
13
- title: React.ReactNode;
14
- description: React.ReactNode;
15
- imgSrc?: string;
16
- imgHref?: string;
17
- onCancel?: () => void;
18
- cancelText?: string;
19
- confirmText?: string;
20
- onConfirm?: () => void;
21
- }
22
- declare function AdsAlertDialog({ open, onOpenChange, title, description, imgSrc, imgHref, cancelText, onCancel, confirmText, onConfirm, }: AdsAlertDialogProps): react_jsx_runtime.JSX.Element;
23
-
24
- interface BaseButtonConfig {
25
- icon: ReactNode;
26
- text: string;
27
- onClick: () => void | Promise<void>;
28
- disabled?: boolean;
29
- }
30
- interface MenuItemConfig extends BaseButtonConfig {
31
- tag?: {
32
- text: string;
33
- color?: string;
34
- };
35
- splitTopBorder?: boolean;
36
- }
37
- interface SingleButtonProps {
38
- type: 'single';
39
- button: BaseButtonConfig;
40
- loadingText?: string;
41
- minWidth?: string;
42
- className?: string;
43
- }
44
- interface SplitButtonProps {
45
- type: 'split';
46
- mainButton: BaseButtonConfig;
47
- menuItems: MenuItemConfig[];
48
- loadingText?: string;
49
- menuWidth?: string;
50
- className?: string;
51
- mainButtonClassName?: string;
52
- dropdownButtonClassName?: string;
53
- }
54
- type xButtonProps = SingleButtonProps | SplitButtonProps;
55
- declare function XButton(props: xButtonProps): react_jsx_runtime.JSX.Element;
56
-
57
- interface AIPromptTextareaProps {
58
- /**
59
- * Textarea value reference
60
- */
61
- value: string;
62
- /**
63
- * Textarea value change handler
64
- */
65
- onChange: (value: string) => void;
66
- /**
67
- * Word limit value reference
68
- */
69
- isWordLimit: boolean;
70
- /**
71
- * Word limit value change handler
72
- */
73
- onWordLimitChange: (isLimit: boolean) => void;
74
- /**
75
- * Placeholder
76
- */
77
- placeholder?: string;
78
- /**
79
- * Disabled switch condition, default is false
80
- */
81
- disabled?: boolean;
82
- /**
83
- * Maximum words
84
- */
85
- maxWords?: number;
86
- /**
87
- * Word count unit title
88
- */
89
- wordUnitTitle?: string;
90
- /**
91
- * Minimum height, px
92
- */
93
- minHeight?: number;
94
- /**
95
- * Maximum height, px
96
- */
97
- maxHeight?: number;
98
- /**
99
- * Word count switch, default is true
100
- */
101
- showWordCount?: boolean;
102
- /**
103
- * Auto scroll switch, default is true
104
- */
105
- autoScroll?: boolean;
106
- /**
107
- * Extra scroll space, px
108
- */
109
- extraScrollSpace?: number;
110
- /**
111
- * Custome tailwindcss style
112
- */
113
- className?: string;
114
- /**
115
- * Title text, if not provided, no title will be rendered
116
- */
117
- title?: string;
118
- /**
119
- * Description text
120
- */
121
- description?: string;
122
- /**
123
- * Embed title inside textarea, default is false
124
- */
125
- embed?: boolean;
126
- }
127
- declare function AIPromptTextarea({ value, onChange, placeholder, disabled, maxWords, wordUnitTitle, minHeight, maxHeight, className, showWordCount, autoScroll, extraScrollSpace, isWordLimit, onWordLimitChange, title, description, embed }: AIPromptTextareaProps): react_jsx_runtime.JSX.Element;
128
-
129
- type TagRenderer = (chunks: React.ReactNode) => React.ReactElement;
130
- type TagRenderers = Record<string, TagRenderer>;
131
- declare function createRichTextRenderer(customRenderers?: TagRenderers): (t: any, key: string) => any;
132
- declare const richText: (t: any, key: string) => any;
133
-
134
- interface FAQData {
135
- title: string;
136
- description: string;
137
- items: Array<{
138
- id: string;
139
- question: string;
140
- answer: string;
141
- }>;
142
- }
143
- declare function FAQInteractive({ data }: {
144
- data: FAQData;
145
- }): null;
146
-
147
- interface BillingOption {
148
- key: string;
149
- discount: number;
150
- }
151
- interface Prices {
152
- [key: string]: number | string;
153
- }
154
- interface PricePlanAppConfig {
155
- billingOptions: BillingOption[];
156
- prices: Prices;
157
- minPlanFeaturesCount: number;
158
- }
159
- interface PricePlanData {
160
- title: string;
161
- subtitle: string;
162
- billingSwitch: {
163
- options: Array<{
164
- key: string;
165
- name: string;
166
- unit: string;
167
- discountText: string;
168
- subTitle?: string;
169
- }>;
170
- defaultKey: string;
171
- };
172
- plans: Array<any>;
173
- currency: string;
174
- pricePlanConfig: PricePlanAppConfig;
175
- }
176
- declare function PricePlanInteractive({ data }: {
177
- data: PricePlanData;
178
- }): react_jsx_runtime.JSX.Element;
179
-
180
- interface GalleryItem {
181
- id: string;
182
- url: string;
183
- altMsg: string;
184
- }
185
- interface GalleryData {
186
- titleL: string;
187
- eyesOn: string;
188
- titleR: string;
189
- description: string;
190
- items: GalleryItem[];
191
- defaultImgUrl: string;
192
- downloadPrefix: string;
193
- }
194
- declare function GalleryInteractive({ data }: {
195
- data: GalleryData;
196
- }): null;
197
-
198
- export { AIPromptTextarea, AdsAlertDialog, FAQInteractive, GalleryInteractive, GoToTop, Loading, NProgressBar, PricePlanInteractive, XButton, createRichTextRenderer, richText };