Chore: Switch to tsdown for bundling

This commit is contained in:
Fuma Nama
2025-12-29 18:16:01 +08:00
parent 58a466369c
commit b16a32f98b
111 changed files with 680 additions and 1494 deletions
+19
View File
@@ -0,0 +1,19 @@
---
'@fumadocs/content-collections': patch
'create-fumadocs-app': patch
'@fumadocs/mdx-remote': patch
'fumadocs-typescript': patch
'fumadocs-obsidian': patch
'fumadocs-ui': patch
'fumadocs-twoslash': patch
'@fumadocs/base-ui': patch
'fumadocs-docgen': patch
'fumadocs-openapi': patch
'fumadocs-python': patch
'fumadocs-core': patch
'@fumadocs/cli': patch
'fumadocs-mdx': patch
'@fumadocs/ui': patch
---
Switch to tsdown for bundling
-1
View File
@@ -28,7 +28,6 @@
"prettier": "^3.7.4",
"prettier-plugin-astro": "^0.14.1",
"rimraf": "^6.1.2",
"tsup": "8.5.1",
"turbo": "2.7.1",
"typescript": "^5.9.3",
"typescript-eslint": "^8.50.1",
+4 -5
View File
@@ -84,15 +84,15 @@
],
"scripts": {
"build": "pnpm build:layout && pnpm build:tailwind",
"build:layout": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:layout": "tsdown",
"build:tailwind": "tailwindcss -i css/style.css -o ./dist/style.css && tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css",
"clean": "rimraf dist",
"dev": "concurrently \"tsc -w --project tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\" \"pnpm dev:tailwind\"",
"dev:tailwind": "tailwindcss -i css/style.css -o ./dist/style.css -w && tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css -w",
"dev": "concurrently \"tsdown --watch\" \"tailwindcss -i css/style.css -o ./dist/style.css -w\" \"tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css -w\"",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
"dependencies": {
"lucide-react": "^0.562.0",
"@base-ui/react": "^1.0.0",
"@fumadocs/ui": "workspace:*",
"class-variance-authority": "^0.7.1",
@@ -102,15 +102,14 @@
"scroll-into-view-if-needed": "^3.1.0"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@fumadocs/cli": "workspace:*",
"@tailwindcss/cli": "^4.1.18",
"@types/node": "^24.10.2",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"eslint-config-custom": "workspace:*",
"fumadocs-core": "workspace:*",
"tailwindcss": "^4.1.18",
"tsc-alias": "^1.8.16",
"tsconfig": "workspace:*"
},
"peerDependencies": {
@@ -1,6 +1,6 @@
'use client';
import { Check, Link as LinkIcon } from '@fumadocs/ui/icons';
import { Check, Link as LinkIcon } from 'lucide-react';
import {
ComponentProps,
type ReactNode,
+1 -1
View File
@@ -1,7 +1,7 @@
'use client';
import { type HTMLAttributes, useEffect, useState } from 'react';
import { X } from '@fumadocs/ui/icons';
import { X } from 'lucide-react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
+5 -3
View File
@@ -2,9 +2,9 @@ import {
CircleCheck,
CircleX,
Info,
Sun,
Lightbulb,
TriangleAlert,
} from '@fumadocs/ui/icons';
} from 'lucide-react';
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
@@ -80,7 +80,9 @@ export function CalloutContainer({
warning: <TriangleAlert className={iconClass} />,
error: <CircleX className={iconClass} />,
success: <CircleCheck className={iconClass} />,
idea: <Sun className={iconClass} />,
idea: (
<Lightbulb className="size-5 -me-0.5 fill-(--callout-color) text-(--callout-color)" />
),
}[type]}
<div className="flex flex-col gap-2 min-w-0 flex-1">{children}</div>
</div>
@@ -1,5 +1,5 @@
'use client';
import { Check, Clipboard } from '@fumadocs/ui/icons';
import { Check, Clipboard } from 'lucide-react';
import {
type ComponentProps,
createContext,
@@ -1,6 +1,6 @@
'use client';
import { ChevronRight, Hash, Search as SearchIcon } from '@fumadocs/ui/icons';
import { ChevronRight, Hash, Search as SearchIcon } from 'lucide-react';
import {
type ComponentProps,
createContext,
+1 -1
View File
@@ -5,7 +5,7 @@ import {
File as FileIcon,
Folder as FolderIcon,
FolderOpen,
} from '@fumadocs/ui/icons';
} from 'lucide-react';
import { type HTMLAttributes, type ReactNode, useState } from 'react';
import { cn } from '@fumadocs/ui/cn';
import {
@@ -1,5 +1,5 @@
import { cn } from '@fumadocs/ui/cn';
import { Star } from '@fumadocs/ui/icons';
import { Star } from 'lucide-react';
import { type AnchorHTMLAttributes } from 'react';
async function getRepoStarsAndForks(
+1 -1
View File
@@ -1,4 +1,4 @@
import { Link } from '@fumadocs/ui/icons';
import { Link } from 'lucide-react';
import type { ComponentPropsWithoutRef } from 'react';
import { cn } from '@fumadocs/ui/cn';
@@ -1,6 +1,6 @@
'use client';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import type { TOCItemType } from 'fumadocs-core/toc';
import {
Collapsible,
@@ -1,5 +1,5 @@
'use client';
import { ChevronDown, ExternalLink } from '@fumadocs/ui/icons';
import { ChevronDown, ExternalLink } from 'lucide-react';
import {
type ComponentProps,
createContext,
@@ -1,5 +1,5 @@
'use client';
import { Check, ChevronsUpDown } from '@fumadocs/ui/icons';
import { Check, ChevronsUpDown } from 'lucide-react';
import { type ComponentProps, type ReactNode, useMemo, useState } from 'react';
import Link from 'fumadocs-core/link';
import { usePathname } from 'fumadocs-core/framework';
@@ -1,6 +1,6 @@
'use client';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cva } from 'class-variance-authority';
import { cn } from '@fumadocs/ui/cn';
@@ -1,7 +1,7 @@
'use client';
import { Accordion as Primitive } from '@base-ui/react/accordion';
import { ChevronRight } from '@fumadocs/ui/icons';
import { ChevronRight } from 'lucide-react';
import { type ComponentProps } from 'react';
import { cn } from '@fumadocs/ui/cn';
+1 -1
View File
@@ -5,7 +5,7 @@ import {
type ReactNode,
useMemo,
} from 'react';
import { Languages, Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
import { Languages, Sidebar as SidebarIcon } from 'lucide-react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import {
@@ -11,7 +11,7 @@ import {
useRef,
useState,
} from 'react';
import { ChevronDown, ChevronLeft, ChevronRight } from '@fumadocs/ui/icons';
import { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cn } from '@fumadocs/ui/cn';
import { useI18n } from '@/contexts/i18n';
@@ -1,7 +1,7 @@
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Edit, Text } from '@fumadocs/ui/icons';
import { Edit, Text } from 'lucide-react';
import { I18nLabel } from '@/contexts/i18n';
import {
type BreadcrumbProps,
@@ -7,7 +7,7 @@ import { createPageTreeRenderer } from '@/components/sidebar/page-tree';
import { createLinkItemRenderer } from '@/components/sidebar/link-item';
import { buttonVariants } from '@/components/ui/button';
import { SearchToggle } from '@/layouts/shared/search-toggle';
import { Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
import { Sidebar as SidebarIcon } from 'lucide-react';
import { mergeRefs } from '@fumadocs/ui/merge-refs';
const itemVariants = cva(
+1 -1
View File
@@ -38,7 +38,7 @@ import {
LanguageToggle,
LanguageToggleText,
} from '@/layouts/shared/language-toggle';
import { ChevronDown, Languages } from '@fumadocs/ui/icons';
import { ChevronDown, Languages } from 'lucide-react';
import { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';
import { NavigationMenu } from '@base-ui/react';
import {
@@ -13,7 +13,7 @@ import {
useState,
} from 'react';
import { useSidebar } from '@/components/sidebar/base';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { usePathname } from 'fumadocs-core/framework';
import {
@@ -23,7 +23,7 @@ import {
import { TreeContextProvider } from '@/contexts/tree';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Languages, Sidebar as SidebarIcon, X } from '@fumadocs/ui/icons';
import { Languages, Sidebar as SidebarIcon, X } from 'lucide-react';
import { LanguageToggle } from '@/layouts/shared/language-toggle';
import { ThemeToggle } from '@/layouts/shared/theme-toggle';
import type * as PageTree from 'fumadocs-core/page-tree';
@@ -11,7 +11,7 @@ import {
useRef,
useState,
} from 'react';
import { ChevronDown, ChevronLeft, ChevronRight } from '@fumadocs/ui/icons';
import { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cn } from '@fumadocs/ui/cn';
import { useI18n } from '@/contexts/i18n';
@@ -1,7 +1,7 @@
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Edit, Text } from '@fumadocs/ui/icons';
import { Edit, Text } from 'lucide-react';
import { I18nLabel } from '@/contexts/i18n';
import {
type BreadcrumbProps,
@@ -1,6 +1,6 @@
'use client';
import type { ComponentProps } from 'react';
import { Search } from '@fumadocs/ui/icons';
import { Search } from 'lucide-react';
import { useSearchContext } from '@/contexts/search';
import { useI18n } from '@/contexts/i18n';
import { cn } from '@fumadocs/ui/cn';
@@ -1,6 +1,6 @@
'use client';
import { cva } from 'class-variance-authority';
import { Airplay, Moon, Sun } from '@fumadocs/ui/icons';
import { Airplay, Moon, Sun } from 'lucide-react';
import { useTheme } from 'next-themes';
import { ComponentProps, useEffect, useState } from 'react';
import { cn } from '@fumadocs/ui/cn';
-11
View File
@@ -1,11 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"outDir": "dist",
"rootDir": "src",
"module": "ESNext"
},
"include": ["./src/**/*"],
"exclude": ["./src/_registry"]
}
-3
View File
@@ -5,8 +5,5 @@
"@/*": ["./src/*"]
}
},
"tsc-alias": {
"resolveFullPaths": true
},
"exclude": ["node_modules", "dist", "eslint.config.mjs"]
}
+10
View File
@@ -0,0 +1,10 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
format: 'esm',
target: 'es2023',
entry: ['./src/**/*.{ts,tsx}', '!./src/_registry'],
fixedExtension: false,
unbundle: true,
dts: true,
});
+3 -3
View File
@@ -3,7 +3,6 @@
"version": "1.2.0",
"description": "The CLI tool for Fumadocs",
"keywords": [
"NextJs",
"Docs",
"Fumadocs"
],
@@ -26,9 +25,9 @@
"dist/*"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -42,6 +41,7 @@
"zod": "^4.2.1"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/node": "24.10.2",
"eslint-config-custom": "workspace:*",
"shadcn": "3.6.2",
@@ -1,4 +1,4 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
import fs from 'node:fs/promises';
import { createConfigSchema } from '@/config';
import { z } from 'zod';
@@ -7,6 +7,7 @@ export default defineConfig({
entry: ['./src/index.ts', './src/build/index.ts'],
format: 'esm',
dts: true,
fixedExtension: false,
target: 'node22',
async onSuccess() {
console.log('JSON schema generated');
+6 -3
View File
@@ -28,9 +28,9 @@
"dist/*"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -42,7 +42,7 @@
"fumadocs-core": "workspace:*",
"tsconfig": "workspace:*",
"unified": "^11.0.5",
"zod": "^4.2.1"
"tsdown": "^0.18.3"
},
"peerDependencies": {
"@content-collections/core": "0.x.x",
@@ -51,5 +51,8 @@
},
"publishConfig": {
"access": "public"
},
"dependencies": {
"zod": "^4.2.1"
}
}
@@ -1,8 +1,9 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
dts: true,
target: 'esnext',
fixedExtension: false,
target: 'node22',
format: 'esm',
entry: ['src/{index,configuration}.ts'],
});
+3 -2
View File
@@ -109,9 +109,9 @@
"dist/*"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -136,6 +136,7 @@
"unist-util-visit": "^5.0.0"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@mdx-js/mdx": "^3.1.1",
"@mixedbread/sdk": "^0.46.0",
"@orama/core": "^1.2.15",
@@ -1,7 +1,8 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
dts: true,
fixedExtension: false,
target: 'es2022',
format: 'esm',
entry: [
+3 -2
View File
@@ -30,9 +30,9 @@
"dist/*"
],
"scripts": {
"build": "pnpm run sync && tsup",
"build": "pnpm run sync && tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"postpublish": "echo \"Updating template repo\" && bash ./scripts/update-git-repo.sh",
"types:check": "tsc --noEmit",
@@ -47,6 +47,7 @@
"ts-morph": "^27.0.2"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/cross-spawn": "^6.0.6",
"@types/node": "24.10.2",
"eslint-config-custom": "workspace:*",
@@ -12,8 +12,8 @@
"fumadocs-core": "workspace:*",
"fumadocs-mdx": "workspace:*",
"fumadocs-ui": "workspace:*",
"lucide-react": "^0.561.0",
"next": "16.0.10",
"lucide-react": "^0.562.0",
"next": "16.1.1",
"react": "^19.2.3",
"react-dom": "^19.2.3"
},
@@ -9,18 +9,18 @@
"types:check": "react-router typegen && fumadocs-mdx && tsc --noEmit"
},
"dependencies": {
"@orama/orama": "^3.1.16",
"@react-router/node": "^7.10.1",
"@orama/orama": "^3.1.18",
"@react-router/node": "^7.11.0",
"fumadocs-core": "workspace:*",
"fumadocs-mdx": "workspace:*",
"fumadocs-ui": "workspace:*",
"isbot": "^5.1.32",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-router": "^7.10.1"
"react-router": "^7.11.0"
},
"devDependencies": {
"@react-router/dev": "^7.10.1",
"@react-router/dev": "^7.11.0",
"@tailwindcss/vite": "^4.1.18",
"@types/mdx": "^2.0.13",
"@types/node": "^24.10.2",
@@ -30,7 +30,7 @@
"serve": "^14.2.5",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite": "^7.2.7",
"vite-tsconfig-paths": "^6.0.0"
"vite": "^7.3.0",
"vite-tsconfig-paths": "^6.0.3"
}
}
@@ -9,18 +9,18 @@
"types:check": "react-router typegen && fumadocs-mdx && tsc --noEmit"
},
"dependencies": {
"@react-router/node": "^7.10.1",
"@react-router/serve": "^7.10.1",
"@react-router/node": "^7.11.0",
"@react-router/serve": "^7.11.0",
"fumadocs-core": "workspace:*",
"fumadocs-mdx": "workspace:*",
"fumadocs-ui": "workspace:*",
"isbot": "^5.1.32",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-router": "^7.10.1"
"react-router": "^7.11.0"
},
"devDependencies": {
"@react-router/dev": "^7.10.1",
"@react-router/dev": "^7.11.0",
"@tailwindcss/vite": "^4.1.18",
"@types/mdx": "^2.0.13",
"@types/node": "^24.10.2",
@@ -29,7 +29,7 @@
"react-router-devtools": "^6.0.0",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite": "^7.2.7",
"vite-tsconfig-paths": "^6.0.0"
"vite": "^7.3.0",
"vite-tsconfig-paths": "^6.0.3"
}
}
@@ -10,7 +10,7 @@
"types:check": "fumadocs-mdx && tsc --noEmit"
},
"dependencies": {
"@orama/orama": "^3.1.16",
"@orama/orama": "^3.1.18",
"@tanstack/react-router": "1.136.18",
"@tanstack/react-router-devtools": "1.136.18",
"@tanstack/react-start": "1.136.18",
@@ -18,11 +18,11 @@
"fumadocs-core": "workspace:*",
"fumadocs-mdx": "workspace:*",
"fumadocs-ui": "workspace:*",
"lucide-static": "^0.561.0",
"lucide-static": "^0.562.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"tailwind-merge": "^3.4.0",
"vite": "^7.2.7"
"vite": "^7.3.0"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.18",
@@ -34,6 +34,6 @@
"serve": "^14.2.5",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite-tsconfig-paths": "^6.0.0"
"vite-tsconfig-paths": "^6.0.3"
}
}
@@ -16,11 +16,11 @@
"fumadocs-core": "workspace:*",
"fumadocs-mdx": "workspace:*",
"fumadocs-ui": "workspace:*",
"lucide-react": "^0.561.0",
"lucide-react": "^0.562.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"tailwind-merge": "^3.4.0",
"vite": "^7.2.7"
"vite": "^7.3.0"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.18",
@@ -32,6 +32,6 @@
"nitro": "3.0.1-alpha.1",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite-tsconfig-paths": "^6.0.0"
"vite-tsconfig-paths": "^6.0.3"
}
}
@@ -16,7 +16,7 @@
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-server-dom-webpack": "^19.2.3",
"waku": "^0.27.4"
"waku": "^0.27.5"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.18",
@@ -26,7 +26,7 @@
"@types/react-dom": "^19.2.3",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite": "^7.2.7",
"vite-tsconfig-paths": "^6.0.0"
"vite": "^7.3.0",
"vite-tsconfig-paths": "^6.0.3"
}
}
+1
View File
@@ -6,5 +6,6 @@
"@/*": ["./src/*"]
}
},
"include": ["scripts", "src", "test"],
"exclude": ["node_modules", "template", "dist", "eslint.config.mjs"]
}
@@ -1,8 +1,9 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
entry: ['./src/bin.ts', './src/index.ts', './src/plugins/*'],
format: 'esm',
target: 'node20',
target: 'node22',
dts: true,
fixedExtension: false,
});
+3 -3
View File
@@ -3,7 +3,6 @@
"version": "3.0.4",
"description": "Useful remark utilities and plugins",
"keywords": [
"NextJs",
"fumadocs",
"remark",
"mdx",
@@ -30,9 +29,9 @@
}
},
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -48,6 +47,7 @@
"fumadocs-core": "^15.7.2 || ^16.0.0"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@mdx-js/mdx": "^3.1.1",
"@types/estree": "^1.0.8",
"@types/hast": "^3.0.4",
@@ -1,8 +1,9 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
external: [],
dts: true,
fixedExtension: false,
target: 'es6',
format: 'esm',
entry: ['src/index.ts', 'src/remark-ts2js.ts'],
+3 -2
View File
@@ -29,9 +29,9 @@
"dist/*"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -41,6 +41,7 @@
"zod": "^4.2.1"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/mdx": "^2.0.13",
"@types/node": "24.10.2",
"@types/react": "^19.2.7",
@@ -1,8 +1,9 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
external: ['fumadocs-core', 'next', 'react'],
dts: true,
fixedExtension: false,
target: 'es2021',
entry: ['./src/index.ts', './src/client/index.ts'],
format: 'esm',
+3 -3
View File
@@ -57,9 +57,9 @@
"loader-meta.cjs"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -83,6 +83,7 @@
"zod": "^4.2.1"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@fumadocs/mdx-remote": "workspace:*",
"@types/bun": "^1.3.5",
"@types/js-yaml": "^4.0.9",
@@ -91,7 +92,6 @@
"@types/node": "^24.10.2",
"@types/picomatch": "^4.0.2",
"@types/react": "^19.2.7",
"astro": "^5.16.6",
"eslint-config-custom": "workspace:*",
"fumadocs-core": "workspace:*",
"mdast-util-directive": "^3.1.0",
@@ -1,4 +1,4 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
const external = ['next', 'typescript', 'bun'];
@@ -21,18 +21,19 @@ export default defineConfig([
noExternal,
external,
dts: true,
fixedExtension: false,
target: 'node22',
},
{
entry: {
// ensure Next.js CJS config compatibility
// because next.config.ts by default uses CJS
'./next/index': './src/next/index.ts',
},
outDir: 'dist/next',
// ensure Next.js CJS config compatibility
// because next.config.ts by default uses CJS
entry: ['./src/next/index.ts'],
format: 'cjs',
noExternal,
external,
dts: false,
fixedExtension: false,
target: 'node22',
},
]);
+3 -2
View File
@@ -33,9 +33,9 @@
}
},
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -54,6 +54,7 @@
"zod": "^4.2.1"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/estree": "^1.0.8",
"@types/js-yaml": "^4.0.9",
"@types/mdast": "^4.0.4",
@@ -1,8 +1,9 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
external: ['react'],
dts: true,
fixedExtension: false,
target: 'es6',
format: 'esm',
entry: ['src/index.ts', 'src/ui/index.tsx', 'src/mdx/index.ts'],
+5 -4
View File
@@ -49,13 +49,14 @@
"css"
],
"scripts": {
"build": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "concurrently \"tsc -w --project tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\"",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
"dependencies": {
"lucide-react": "^0.562.0",
"@fumari/json-schema-to-typescript": "^2.0.0",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-dialog": "^1.1.15",
@@ -88,8 +89,8 @@
"json-schema-typed": "^8.0.2",
"openapi-types": "^12.1.3",
"tailwindcss": "^4.1.18",
"tsc-alias": "^1.8.16",
"tsconfig": "workspace:*"
"tsconfig": "workspace:*",
"tsdown": "^0.18.3"
},
"peerDependencies": {
"@scalar/api-client-react": "*",
+1 -1
View File
@@ -47,7 +47,7 @@ import {
CollapsibleContent,
CollapsibleTrigger,
} from 'fumadocs-ui/components/ui/collapsible';
import { X, ChevronDown, LoaderCircle } from '@/ui/icons';
import { X, ChevronDown, LoaderCircle } from 'lucide-react';
import { encodeRequestData } from '@/requests/media/encode';
import { buttonVariants } from 'fumadocs-ui/components/ui/button';
import { cn } from '@/utils/cn';
@@ -5,7 +5,7 @@ import {
type ReactNode,
useState,
} from 'react';
import { ChevronDown, Plus, Trash2, X } from '@/ui/icons';
import { ChevronDown, Plus, Trash2, X } from 'lucide-react';
import { useController, useFieldArray, useFormContext } from 'react-hook-form';
import {
Select,
@@ -1,4 +1,4 @@
import { CircleCheck, CircleX } from '@/ui/icons';
import { CircleCheck, CircleX } from 'lucide-react';
interface StatusInfo {
description: string;
@@ -1,7 +1,7 @@
'use client';
import * as Primitive from '@radix-ui/react-accordion';
import { ChevronRight } from '@/ui/icons';
import { ChevronRight } from 'lucide-react';
import type { ComponentProps } from 'react';
import { cn } from '@/utils/cn';
@@ -2,7 +2,7 @@
import * as React from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
import { X } from '@/ui/icons';
import { X } from 'lucide-react';
import { cn } from '@/utils/cn';
import { buttonVariants } from 'fumadocs-ui/components/ui/button';
@@ -1,5 +1,5 @@
import * as SelectPrimitive from '@radix-ui/react-select';
import { Check, ChevronDown, ChevronUp } from '@/ui/icons';
import { Check, ChevronDown, ChevronUp } from 'lucide-react';
import React, { forwardRef } from 'react';
import { cn } from '@/utils/cn';
-349
View File
@@ -1,349 +0,0 @@
/**
* @license lucide-react - ISC
*
* All copyright belongs to https://github.com/lucide-icons/lucide, we bundle it as part of library to avoid upstream issues.
*/
import { type ComponentProps, createElement, forwardRef } from 'react';
const defaultAttributes: LucideProps = {
xmlns: 'http://www.w3.org/2000/svg',
width: 24,
height: 24,
viewBox: '0 0 24 24',
fill: 'none',
stroke: 'currentColor',
strokeWidth: 2,
strokeLinecap: 'round',
strokeLinejoin: 'round',
};
type SVGElementType =
| 'circle'
| 'ellipse'
| 'g'
| 'line'
| 'path'
| 'polygon'
| 'polyline'
| 'rect';
export interface LucideProps extends ComponentProps<'svg'> {
size?: string | number;
}
export type IconNode = [
elementName: SVGElementType,
attrs: Record<string, string>,
][];
const createLucideIcon = (iconName: string, iconNode: IconNode) => {
const Component = forwardRef<SVGSVGElement, LucideProps>(
({ size = 24, color = 'currentColor', children, ...props }, ref) => {
return (
<svg
ref={ref}
{...defaultAttributes}
width={size}
height={size}
stroke={color}
{...props}
>
{iconNode.map(([tag, attr]) => createElement(tag, attr))}
{children}
</svg>
);
},
);
Component.displayName = iconName;
return Component;
};
export const ChevronDown = createLucideIcon('chevron-down', [
['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }],
]);
export const Languages = createLucideIcon('languages', [
['path', { d: 'm5 8 6 6', key: '1wu5hv' }],
['path', { d: 'm4 14 6-6 2-3', key: '1k1g8d' }],
['path', { d: 'M2 5h12', key: 'or177f' }],
['path', { d: 'M7 2h1', key: '1t2jsx' }],
['path', { d: 'm22 22-5-10-5 10', key: 'don7ne' }],
['path', { d: 'M14 18h6', key: '1m8k6r' }],
]);
export const Sidebar = createLucideIcon('panel-left', [
[
'rect',
{ width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' },
],
['path', { d: 'M9 3v18', key: 'fh3hqa' }],
]);
export const ChevronsUpDown = createLucideIcon('chevrons-up-down', [
['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],
['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],
]);
export const Search = createLucideIcon('search', [
['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],
['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],
]);
export const ExternalLink = createLucideIcon('external-link', [
['path', { d: 'M15 3h6v6', key: '1q9fwt' }],
['path', { d: 'M10 14 21 3', key: 'gplh6r' }],
[
'path',
{
d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6',
key: 'a6xqqp',
},
],
]);
export const Moon = createLucideIcon('moon', [
['path', { d: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z', key: 'a7tn18' }],
]);
export const Sun = createLucideIcon('sun', [
['circle', { cx: '12', cy: '12', r: '4', key: '4exip2' }],
['path', { d: 'M12 2v2', key: 'tus03m' }],
['path', { d: 'M12 20v2', key: '1lh1kg' }],
['path', { d: 'm4.93 4.93 1.41 1.41', key: '149t6j' }],
['path', { d: 'm17.66 17.66 1.41 1.41', key: 'ptbguv' }],
['path', { d: 'M2 12h2', key: '1t8f8n' }],
['path', { d: 'M20 12h2', key: '1q8mjw' }],
['path', { d: 'm6.34 17.66-1.41 1.41', key: '1m8zz5' }],
['path', { d: 'm19.07 4.93-1.41 1.41', key: '1shlcs' }],
]);
export const Airplay = createLucideIcon('airplay', [
[
'path',
{
d: 'M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1',
key: 'ns4c3b',
},
],
['path', { d: 'm12 15 5 6H7Z', key: '14qnn2' }],
]);
export const Menu = createLucideIcon('menu', [
['line', { x1: '4', x2: '20', y1: '12', y2: '12', key: '1e0a9i' }],
['line', { x1: '4', x2: '20', y1: '6', y2: '6', key: '1owob3' }],
['line', { x1: '4', x2: '20', y1: '18', y2: '18', key: 'yk5zj1' }],
]);
export const X = createLucideIcon('x', [
['path', { d: 'M18 6 6 18', key: '1bl5f8' }],
['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],
]);
export const LoaderCircle = createLucideIcon('loader-circle', [
['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }],
]);
export const CircleCheck = createLucideIcon('circle-check', [
['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],
['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],
]);
export const CircleX = createLucideIcon('circle-x', [
['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],
['path', { d: 'm15 9-6 6', key: '1uzhvr' }],
['path', { d: 'm9 9 6 6', key: 'z0biqf' }],
]);
export const Check = createLucideIcon('check', [
['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }],
]);
export const TriangleAlert = createLucideIcon('triangle-alert', [
[
'path',
{
d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',
key: 'wmoenq',
},
],
['path', { d: 'M12 9v4', key: 'juzpu7' }],
['path', { d: 'M12 17h.01', key: 'p32p05' }],
]);
export const Info = createLucideIcon('info', [
['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],
['path', { d: 'M12 16v-4', key: '1dtifu' }],
['path', { d: 'M12 8h.01', key: 'e9boi3' }],
]);
export const Copy = createLucideIcon('copy', [
[
'rect',
{
width: '14',
height: '14',
x: '8',
y: '8',
rx: '2',
ry: '2',
key: '17jyea',
},
],
[
'path',
{
d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2',
key: 'zix9uf',
},
],
]);
export const Clipboard = createLucideIcon('clipboard', [
[
'rect',
{
width: '8',
height: '4',
x: '8',
y: '2',
rx: '1',
ry: '1',
key: '1',
},
],
[
'path',
{
d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',
key: '2',
},
],
]);
export const FileText = createLucideIcon('file-text', [
[
'path',
{
d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z',
key: '1rqfz7',
},
],
['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],
['path', { d: 'M10 9H8', key: 'b1mrlr' }],
['path', { d: 'M16 13H8', key: 't4e002' }],
['path', { d: 'M16 17H8', key: 'z1uh3a' }],
]);
export const Hash = createLucideIcon('hash', [
['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],
['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],
['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],
['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],
]);
export const Text = createLucideIcon('text', [
['path', { d: 'M15 18H3', key: 'olowqp' }],
['path', { d: 'M17 6H3', key: '16j9eg' }],
['path', { d: 'M21 12H3', key: '2avoz0' }],
]);
export const File = createLucideIcon('file', [
[
'path',
{
d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z',
key: '1rqfz7',
},
],
['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],
]);
export const Folder = createLucideIcon('folder', [
[
'path',
{
d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',
key: '1kt360',
},
],
]);
export const FolderOpen = createLucideIcon('folder-open', [
[
'path',
{
d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',
key: 'usdka0',
},
],
]);
export const Star = createLucideIcon('star', [
[
'path',
{
d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',
key: 'r04s7s',
},
],
]);
export const Link = createLucideIcon('link', [
[
'path',
{
d: 'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71',
key: '1cjeqo',
},
],
[
'path',
{
d: 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71',
key: '19qd67',
},
],
]);
export const Edit = createLucideIcon('square-pen', [
[
'path',
{
d: 'M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7',
key: '1m0v6g',
},
],
[
'path',
{
d: 'M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z',
key: 'ohrbg2',
},
],
]);
export const ChevronRight = createLucideIcon('chevron-right', [
['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }],
]);
export const ChevronLeft = createLucideIcon('chevron-left', [
['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],
]);
export const Plus = createLucideIcon('plus', [
['path', { d: 'M5 12h14', key: '1ays0h' }],
['path', { d: 'M12 5v14', key: 's699le' }],
]);
export const Trash2 = createLucideIcon('trash-2', [
['path', { d: 'M3 6h18', key: 'd0wm0j' }],
['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],
['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],
['line', { x1: '10', x2: '10', y1: '11', y2: '17', key: '1uufr5' }],
['line', { x1: '14', x2: '14', y1: '11', y2: '17', key: 'xtxkd' }],
]);
export const ChevronUp = createLucideIcon('chevron-up', [
['path', { d: 'm18 15-6-6-6 6', key: '153udz' }],
]);
+1 -1
View File
@@ -3,7 +3,7 @@
import { useCopyButton } from 'fumadocs-ui/utils/use-copy-button';
import { buttonVariants } from 'fumadocs-ui/components/ui/button';
import { cn } from '@/utils/cn';
import { Check, Copy } from '@/ui/icons';
import { Check, Copy } from 'lucide-react';
import {
type ComponentProps,
createContext,
+1 -1
View File
@@ -23,7 +23,7 @@ import {
CollapsibleTrigger,
} from 'fumadocs-ui/components/ui/collapsible';
import { buttonVariants } from 'fumadocs-ui/components/ui/button';
import { ChevronDown } from '@/ui/icons';
import { ChevronDown } from 'lucide-react';
import { Badge } from '@/ui/components/method-label';
import {
Popover,
-10
View File
@@ -1,10 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"outDir": "dist",
"rootDir": "src",
"sourceMap": false
},
"include": ["./src/**/*"]
}
+2 -4
View File
@@ -3,10 +3,8 @@
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
},
"tsc-alias": {
"resolveFullPaths": true
},
"types": ["react/experimental"]
},
"exclude": ["node_modules", "dist", "eslint.config.mjs", "tailwind.config.js"]
}
+17
View File
@@ -0,0 +1,17 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
format: 'esm',
target: 'es2023',
entry: [
'./src/index.ts',
'./src/ui/index.ts',
'./src/ui/client/index.tsx',
'./src/playground/{index,client}.tsx',
'./src/scalar/index.tsx',
'./src/server/index.ts',
],
fixedExtension: false,
unbundle: true,
dts: true,
});
-1
View File
@@ -1 +0,0 @@
import 'react/experimental';
+3 -2
View File
@@ -32,13 +32,14 @@
}
},
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/js-yaml": "^4.0.9",
"@types/node": "^24.10.2",
"@types/react": "^19.2.7",
@@ -1,9 +1,10 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
entry: ['./src/index.ts', './src/components/index.tsx'],
format: 'esm',
dts: true,
fixedExtension: false,
target: 'es2022',
external: ['react'],
});
+5 -6
View File
@@ -92,15 +92,15 @@
],
"scripts": {
"build": "pnpm build:layout && pnpm build:tailwind",
"build:layout": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
"build:layout": "tsdown",
"build:tailwind": "tailwindcss -i css/style.css -o ./dist/style.css && tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css",
"clean": "rimraf dist",
"dev": "concurrently \"tsc -w --project tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\" \"pnpm dev:tailwind\"",
"dev:tailwind": "tailwindcss -i css/style.css -o ./dist/style.css -w && tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css -w",
"dev": "concurrently \"tsdown --watch\" \"tailwindcss -i css/style.css -o ./dist/style.css -w\" \"tailwindcss -i src/components/image-zoom.css -o dist/components/image-zoom.css -w\"",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
"dependencies": {
"lucide-react": "^0.562.0",
"@fumadocs/ui": "workspace:*",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-collapsible": "^1.1.12",
@@ -125,10 +125,9 @@
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"eslint-config-custom": "workspace:*",
"fumadocs-core": "workspace:*",
"tailwindcss": "^4.1.18",
"tsc-alias": "^1.8.16",
"tsconfig": "workspace:*"
"tsconfig": "workspace:*",
"tsdown": "^0.18.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -1,6 +1,6 @@
'use client';
import { Check, Link as LinkIcon } from '@fumadocs/ui/icons';
import { Check, Link as LinkIcon } from 'lucide-react';
import {
ComponentProps,
type ReactNode,
+1 -1
View File
@@ -1,7 +1,7 @@
'use client';
import { type HTMLAttributes, useEffect, useState } from 'react';
import { X } from '@fumadocs/ui/icons';
import { X } from 'lucide-react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
+3 -3
View File
@@ -2,9 +2,9 @@ import {
CircleCheck,
CircleX,
Info,
LightBulb,
Lightbulb,
TriangleAlert,
} from '@fumadocs/ui/icons';
} from 'lucide-react';
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
@@ -81,7 +81,7 @@ export function CalloutContainer({
error: <CircleX className={iconClass} />,
success: <CircleCheck className={iconClass} />,
idea: (
<LightBulb className="size-5 -me-0.5 fill-(--callout-color) text-(--callout-color)" />
<Lightbulb className="size-5 -me-0.5 fill-(--callout-color) text-(--callout-color)" />
),
}[type]}
<div className="flex flex-col gap-2 min-w-0 flex-1">{children}</div>
@@ -1,5 +1,5 @@
'use client';
import { Check, Clipboard } from '@fumadocs/ui/icons';
import { Check, Clipboard } from 'lucide-react';
import {
type ComponentProps,
createContext,
@@ -1,6 +1,6 @@
'use client';
import { ChevronRight, Hash, Search as SearchIcon } from '@fumadocs/ui/icons';
import { ChevronRight, Hash, Search as SearchIcon } from 'lucide-react';
import {
type ComponentProps,
createContext,
+1 -1
View File
@@ -5,7 +5,7 @@ import {
File as FileIcon,
Folder as FolderIcon,
FolderOpen,
} from '@fumadocs/ui/icons';
} from 'lucide-react';
import { type HTMLAttributes, type ReactNode, useState } from 'react';
import { cn } from '@fumadocs/ui/cn';
import {
@@ -1,5 +1,5 @@
import { cn } from '@fumadocs/ui/cn';
import { Star } from '@fumadocs/ui/icons';
import { Star } from 'lucide-react';
import { type AnchorHTMLAttributes } from 'react';
async function getRepoStarsAndForks(
+1 -1
View File
@@ -1,4 +1,4 @@
import { Link } from '@fumadocs/ui/icons';
import { Link } from 'lucide-react';
import type { ComponentPropsWithoutRef } from 'react';
import { cn } from '@fumadocs/ui/cn';
@@ -1,6 +1,6 @@
'use client';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import type { TOCItemType } from 'fumadocs-core/toc';
import {
Collapsible,
@@ -1,5 +1,5 @@
'use client';
import { ChevronDown, ExternalLink } from '@fumadocs/ui/icons';
import { ChevronDown, ExternalLink } from 'lucide-react';
import {
type ComponentProps,
createContext,
@@ -1,5 +1,5 @@
'use client';
import { Check, ChevronsUpDown } from '@fumadocs/ui/icons';
import { Check, ChevronsUpDown } from 'lucide-react';
import { type ComponentProps, type ReactNode, useMemo, useState } from 'react';
import Link from 'fumadocs-core/link';
import { usePathname } from 'fumadocs-core/framework';
@@ -1,6 +1,6 @@
'use client';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cva } from 'class-variance-authority';
import { cn } from '@fumadocs/ui/cn';
@@ -1,7 +1,7 @@
'use client';
import * as Primitive from '@radix-ui/react-accordion';
import { ChevronRight } from '@fumadocs/ui/icons';
import { ChevronRight } from 'lucide-react';
import { type ComponentProps } from 'react';
import { cn } from '@fumadocs/ui/cn';
+1 -1
View File
@@ -5,7 +5,7 @@ import {
type ReactNode,
useMemo,
} from 'react';
import { Languages, Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
import { Languages, Sidebar as SidebarIcon } from 'lucide-react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import {
@@ -11,7 +11,7 @@ import {
useRef,
useState,
} from 'react';
import { ChevronDown, ChevronLeft, ChevronRight } from '@fumadocs/ui/icons';
import { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cn } from '@fumadocs/ui/cn';
import { useI18n } from '@/contexts/i18n';
@@ -1,7 +1,7 @@
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Edit, Text } from '@fumadocs/ui/icons';
import { Edit, Text } from 'lucide-react';
import { I18nLabel } from '@/contexts/i18n';
import {
type BreadcrumbProps,
@@ -7,7 +7,7 @@ import { createPageTreeRenderer } from '@/components/sidebar/page-tree';
import { createLinkItemRenderer } from '@/components/sidebar/link-item';
import { buttonVariants } from '@/components/ui/button';
import { SearchToggle } from '@/layouts/shared/search-toggle';
import { Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
import { Sidebar as SidebarIcon } from 'lucide-react';
import { mergeRefs } from '@fumadocs/ui/merge-refs';
const itemVariants = cva(
@@ -30,7 +30,7 @@ import {
LanguageToggle,
LanguageToggleText,
} from '@/layouts/shared/language-toggle';
import { ChevronDown, Languages } from '@fumadocs/ui/icons';
import { ChevronDown, Languages } from 'lucide-react';
import { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';
export const navItemVariants = cva('[&_svg]:size-4', {
@@ -13,7 +13,7 @@ import {
useState,
} from 'react';
import { useSidebar } from '@/components/sidebar/base';
import { ChevronDown } from '@fumadocs/ui/icons';
import { ChevronDown } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { usePathname } from 'fumadocs-core/framework';
import { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';
@@ -23,7 +23,7 @@ import {
import { TreeContextProvider } from '@/contexts/tree';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Languages, Sidebar as SidebarIcon, X } from '@fumadocs/ui/icons';
import { Languages, Sidebar as SidebarIcon, X } from 'lucide-react';
import { LanguageToggle } from '@/layouts/shared/language-toggle';
import { ThemeToggle } from '@/layouts/shared/theme-toggle';
import type * as PageTree from 'fumadocs-core/page-tree';
@@ -11,7 +11,7 @@ import {
useRef,
useState,
} from 'react';
import { ChevronDown, ChevronLeft, ChevronRight } from '@fumadocs/ui/icons';
import { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';
import Link from 'fumadocs-core/link';
import { cn } from '@fumadocs/ui/cn';
import { useI18n } from '@/contexts/i18n';
@@ -1,7 +1,7 @@
import type { ComponentProps, ReactNode } from 'react';
import { cn } from '@fumadocs/ui/cn';
import { buttonVariants } from '@/components/ui/button';
import { Edit, Text } from '@fumadocs/ui/icons';
import { Edit, Text } from 'lucide-react';
import { I18nLabel } from '@/contexts/i18n';
import {
type BreadcrumbProps,
@@ -1,6 +1,6 @@
'use client';
import type { ComponentProps } from 'react';
import { Search } from '@fumadocs/ui/icons';
import { Search } from 'lucide-react';
import { useSearchContext } from '@/contexts/search';
import { useI18n } from '@/contexts/i18n';
import { cn } from '@fumadocs/ui/cn';
@@ -1,6 +1,6 @@
'use client';
import { cva } from 'class-variance-authority';
import { Airplay, Moon, Sun } from '@fumadocs/ui/icons';
import { Airplay, Moon, Sun } from 'lucide-react';
import { useTheme } from 'next-themes';
import { ComponentProps, useEffect, useState } from 'react';
import { cn } from '@fumadocs/ui/cn';
-11
View File
@@ -1,11 +0,0 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"outDir": "dist",
"rootDir": "src",
"module": "ESNext"
},
"include": ["./src/**/*"],
"exclude": ["./src/_registry"]
}
-3
View File
@@ -5,8 +5,5 @@
"@/*": ["./src/*"]
}
},
"tsc-alias": {
"resolveFullPaths": true
},
"exclude": ["node_modules", "dist", "eslint.config.mjs"]
}
+10
View File
@@ -0,0 +1,10 @@
import { defineConfig } from 'tsdown';
export default defineConfig({
format: 'esm',
target: 'es2023',
entry: ['./src/**/*.{ts,tsx}', '!./src/_registry'],
fixedExtension: false,
unbundle: true,
dts: true,
});
+3 -2
View File
@@ -34,9 +34,9 @@
"styles/*"
],
"scripts": {
"build": "tsup",
"build": "tsdown",
"clean": "rimraf dist",
"dev": "tsup --watch",
"dev": "tsdown --watch",
"lint": "eslint .",
"types:check": "tsc --noEmit"
},
@@ -51,6 +51,7 @@
"twoslash": "^0.3.6"
},
"devDependencies": {
"tsdown": "^0.18.3",
"@types/hast": "^3.0.4",
"@types/mdast": "^4.0.4",
"@types/node": "24.10.2",
@@ -1,7 +1,8 @@
import { defineConfig } from 'tsup';
import { defineConfig } from 'tsdown';
export default defineConfig({
dts: true,
fixedExtension: false,
target: 'es6',
format: 'esm',
entry: ['src/index.ts', 'src/cache-fs.ts', 'src/ui/index.ts'],

Some files were not shown because too many files have changed in this diff Show More