aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages
diff options
context:
space:
mode:
authorNatsuu <natsukawa247@outlook.com>2026-04-01 11:28:27 +0800
committerGitHub <noreply@github.com>2026-04-01 11:28:27 +0800
commitbf0634ab5091bb8c585b574c5ed175a2a231df5e (patch)
tree6424355eb47fefa1f60029dab82fbcc69d0bb5d9 /packages
parent408df90aa804116ef82e5e40a79430820a1ed502 (diff)
parent61c576ee502bf8929cd881cc40302be7b1c10b85 (diff)
downloadDropOut-bf0634ab5091bb8c585b574c5ed175a2a231df5e.tar.gz
DropOut-bf0634ab5091bb8c585b574c5ed175a2a231df5e.zip
Merge branch 'main' into feat/docs-build-test
Diffstat (limited to 'packages')
-rw-r--r--packages/docs/app/components/mermaid.tsx27
-rw-r--r--packages/docs/app/docs/page.tsx16
-rw-r--r--packages/docs/app/routes/home.tsx10
-rw-r--r--packages/docs/biome.json2
-rw-r--r--packages/docs/package.json4
-rw-r--r--packages/ui/package.json2
-rw-r--r--packages/ui/src/components/ui/accordion.tsx2
-rw-r--r--packages/ui/src/components/ui/avatar.tsx4
-rw-r--r--packages/ui/src/components/ui/card.tsx8
-rw-r--r--packages/ui/src/components/ui/dropdown-menu.tsx10
-rw-r--r--packages/ui/src/components/ui/field.tsx4
-rw-r--r--packages/ui/src/components/ui/tabs.tsx2
12 files changed, 49 insertions, 42 deletions
diff --git a/packages/docs/app/components/mermaid.tsx b/packages/docs/app/components/mermaid.tsx
index 2df47cc..fe153ec 100644
--- a/packages/docs/app/components/mermaid.tsx
+++ b/packages/docs/app/components/mermaid.tsx
@@ -6,24 +6,37 @@ import { useEffect, useRef } from "react";
mermaid.initialize({
startOnLoad: false,
theme: "default",
+ securityLevel: "strict",
});
export function Mermaid({ chart }: { chart: string }) {
const ref = useRef<HTMLDivElement>(null);
useEffect(() => {
- if (ref.current) {
- mermaid.run({
- nodes: [ref.current],
+ let current = true;
+ const id = `mermaid-${Math.random().toString(36).slice(2, 9)}`;
+ mermaid
+ .render(id, chart)
+ .then(({ svg }) => {
+ if (!current) return;
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(svg, "image/svg+xml");
+ const svgEl = doc.querySelector("svg");
+ if (ref.current && svgEl) {
+ ref.current.replaceChildren(svgEl);
+ }
+ })
+ .catch(() => {
+ if (current) ref.current?.replaceChildren();
});
- }
+ return () => {
+ current = false;
+ };
}, [chart]);
return (
<div className="not-prose my-6">
- <div ref={ref} className="mermaid">
- {chart}
- </div>
+ <div ref={ref} className="mermaid" />
</div>
);
}
diff --git a/packages/docs/app/docs/page.tsx b/packages/docs/app/docs/page.tsx
index 6ff6b4a..5bddb8d 100644
--- a/packages/docs/app/docs/page.tsx
+++ b/packages/docs/app/docs/page.tsx
@@ -3,12 +3,7 @@ import { useFumadocsLoader } from "fumadocs-core/source/client";
import { Card, Cards } from "fumadocs-ui/components/card";
import { DocsLayout } from "fumadocs-ui/layouts/docs";
import defaultMdxComponents from "fumadocs-ui/mdx";
-import {
- DocsBody,
- DocsDescription,
- DocsPage,
- DocsTitle,
-} from "fumadocs-ui/page";
+import { DocsBody, DocsPage } from "fumadocs-ui/page";
import { Mermaid } from "@/components/mermaid";
import { i18n } from "@/lib/i18n";
import { baseOptions } from "@/lib/layout.shared";
@@ -19,8 +14,9 @@ export async function loader({ params }: Route.LoaderArgs) {
// 从路由参数获取语言,如果没有则使用默认语言
// URL 格式: /docs/manual/getting-started (默认语言 zh)
// URL 格式: /en/docs/manual/getting-started (英语)
- const lang =
- params.lang && i18n.languages.includes(params.lang as any)
+ const lang: "zh" | "en" =
+ params.lang &&
+ i18n.languages.includes(params.lang as (typeof i18n)["languages"][number])
? (params.lang as "zh" | "en")
: (i18n.defaultLanguage as "zh" | "en");
@@ -41,7 +37,7 @@ export async function loader({ params }: Route.LoaderArgs) {
}
const clientLoader = browserCollections.docs.createClientLoader({
- component({ toc, frontmatter, default: Mdx }) {
+ component({ toc, default: Mdx }) {
return (
<DocsPage toc={toc}>
{/* 老王说不要这个 */}
@@ -67,7 +63,7 @@ const clientLoader = browserCollections.docs.createClientLoader({
},
});
-export default function Page({ loaderData, params }: Route.ComponentProps) {
+export default function Page({ loaderData }: Route.ComponentProps) {
const { pageTree, lang } = useFumadocsLoader(loaderData);
return (
diff --git a/packages/docs/app/routes/home.tsx b/packages/docs/app/routes/home.tsx
index fe561e4..26c0f52 100644
--- a/packages/docs/app/routes/home.tsx
+++ b/packages/docs/app/routes/home.tsx
@@ -110,7 +110,7 @@ const texts = {
},
};
-export function meta({ params }: Route.MetaArgs) {
+export function meta() {
return [
{ title: "DropOut - Modern Minecraft Launcher" },
{
@@ -172,9 +172,9 @@ export default function Home({ params }: Route.ComponentProps) {
{/* Features Grid */}
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-16">
- {t.features.items.map((item, i) => (
+ {t.features.items.map((item) => (
<div
- key={i}
+ key={item.title}
className="p-6 rounded-lg border border-blue-600/20 bg-fd-card hover:border-blue-600/50 transition-colors"
>
<h3 className="font-semibold text-lg mb-2">{item.title}</h3>
@@ -187,8 +187,8 @@ export default function Home({ params }: Route.ComponentProps) {
<div className="text-center mb-16">
<h2 className="text-3xl font-bold mb-6">{t.why.title}</h2>
<div className="max-w-3xl mx-auto space-y-4 text-left">
- {t.why.items.map((item, i) => (
- <div key={i} className="p-4 rounded-lg bg-fd-muted/50">
+ {t.why.items.map((item) => (
+ <div key={item.q} className="p-4 rounded-lg bg-fd-muted/50">
<p className="text-fd-foreground">
<span className="font-semibold">{item.q}</span>
<br />
diff --git a/packages/docs/biome.json b/packages/docs/biome.json
index ea55c8c..92b5bb6 100644
--- a/packages/docs/biome.json
+++ b/packages/docs/biome.json
@@ -1,6 +1,6 @@
{
"root": false,
- "$schema": "https://biomejs.dev/schemas/2.4.5/schema.json",
+ "$schema": "https://biomejs.dev/schemas/2.4.9/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
diff --git a/packages/docs/package.json b/packages/docs/package.json
index 59cddc7..5b039b5 100644
--- a/packages/docs/package.json
+++ b/packages/docs/package.json
@@ -25,11 +25,9 @@
"react-router": "^7.12.0"
},
"devDependencies": {
- "@biomejs/biome": "^2.3.11",
"@react-router/dev": "^7.12.0",
"@tailwindcss/vite": "^4.1.18",
"@types/mdx": "^2.0.13",
- "@types/node": "^25.0.5",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"react-router-devtools": "^6.1.0",
@@ -38,4 +36,4 @@
"vite": "^7.3.1",
"vite-tsconfig-paths": "^6.0.4"
}
-} \ No newline at end of file
+}
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 2c04e98..5f46c0f 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -46,4 +46,4 @@
"typescript": "~5.9.3",
"vite": "npm:rolldown-vite@^7"
}
-} \ No newline at end of file
+}
diff --git a/packages/ui/src/components/ui/accordion.tsx b/packages/ui/src/components/ui/accordion.tsx
index 02ba45c..65dd3e5 100644
--- a/packages/ui/src/components/ui/accordion.tsx
+++ b/packages/ui/src/components/ui/accordion.tsx
@@ -74,4 +74,4 @@ function AccordionContent({
);
}
-export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
+export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
diff --git a/packages/ui/src/components/ui/avatar.tsx b/packages/ui/src/components/ui/avatar.tsx
index 9fd72a2..961d0bd 100644
--- a/packages/ui/src/components/ui/avatar.tsx
+++ b/packages/ui/src/components/ui/avatar.tsx
@@ -99,9 +99,9 @@ function AvatarGroupCount({
export {
Avatar,
- AvatarImage,
+ AvatarBadge,
AvatarFallback,
AvatarGroup,
AvatarGroupCount,
- AvatarBadge,
+ AvatarImage,
};
diff --git a/packages/ui/src/components/ui/card.tsx b/packages/ui/src/components/ui/card.tsx
index b7084a0..3caf2b5 100644
--- a/packages/ui/src/components/ui/card.tsx
+++ b/packages/ui/src/components/ui/card.tsx
@@ -94,10 +94,10 @@ function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
export {
Card,
- CardHeader,
- CardFooter,
- CardTitle,
CardAction,
- CardDescription,
CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
};
diff --git a/packages/ui/src/components/ui/dropdown-menu.tsx b/packages/ui/src/components/ui/dropdown-menu.tsx
index ee97374..33dce1b 100644
--- a/packages/ui/src/components/ui/dropdown-menu.tsx
+++ b/packages/ui/src/components/ui/dropdown-menu.tsx
@@ -252,18 +252,18 @@ function DropdownMenuShortcut({
export {
DropdownMenu,
- DropdownMenuPortal,
- DropdownMenuTrigger,
+ DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
- DropdownMenuLabel,
DropdownMenuItem,
- DropdownMenuCheckboxItem,
+ DropdownMenuLabel,
+ DropdownMenuPortal,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuSub,
- DropdownMenuSubTrigger,
DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuTrigger,
};
diff --git a/packages/ui/src/components/ui/field.tsx b/packages/ui/src/components/ui/field.tsx
index 226e302..1214480 100644
--- a/packages/ui/src/components/ui/field.tsx
+++ b/packages/ui/src/components/ui/field.tsx
@@ -234,13 +234,13 @@ function FieldError({
export {
Field,
- FieldLabel,
+ FieldContent,
FieldDescription,
FieldError,
FieldGroup,
+ FieldLabel,
FieldLegend,
FieldSeparator,
FieldSet,
- FieldContent,
FieldTitle,
};
diff --git a/packages/ui/src/components/ui/tabs.tsx b/packages/ui/src/components/ui/tabs.tsx
index c66893f..8afbb42 100644
--- a/packages/ui/src/components/ui/tabs.tsx
+++ b/packages/ui/src/components/ui/tabs.tsx
@@ -77,4 +77,4 @@ function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {
);
}
-export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
+export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };