diff options
| author | 2026-04-01 10:47:28 +0800 | |
|---|---|---|
| committer | 2026-04-01 10:47:28 +0800 | |
| commit | ed0744635367a5bae9e486d796d7ba6ab696289c (patch) | |
| tree | 88fdd18f7baf8f082053df8764be7f0ccd025f25 | |
| parent | c4dc0676d794bca2613be282867d369328ebf073 (diff) | |
| parent | 0bb6b264be3205ceb367f3010961684a992263dc (diff) | |
| download | DropOut-ed0744635367a5bae9e486d796d7ba6ab696289c.tar.gz DropOut-ed0744635367a5bae9e486d796d7ba6ab696289c.zip | |
Improve docs UI and Mermaid rendering (#125)
Refactor documentation for clarity and organization. Upgrade the
@biomejs/biome dependency to version 2.4.9. Clean up imports and improve
component structure in the documentation pages.
## Summary by Sourcery
Refine documentation rendering and UI components while updating tooling
dependencies.
New Features:
- Improve Mermaid diagram rendering in docs with explicit SVG rendering
and stricter security configuration.
Bug Fixes:
- Use stable keys for mapped feature and FAQ items on the docs home page
to avoid React key issues.
- Adjust field error list keys to avoid collisions and improve React
reconciliation.
Enhancements:
- Clean up and reorder exports, imports, and hook dependencies across UI
components for consistency and maintainability.
- Streamline docs routing and loader types by removing unused parameters
and simplifying language handling.
- Improve user-facing error and status messages with template literals
and clearer formatting.
Build:
- Upgrade @biomejs/biome to version 2.4.9 and consolidate Biome
configuration by removing redundant docs-specific settings.
Documentation:
- Tidy documentation page composition and table-of-contents handling for
clearer structure.
| -rw-r--r-- | .changes/update-dependence.md | 5 | ||||
| -rw-r--r-- | biome.json | 2 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | packages/docs/app/components/mermaid.tsx | 27 | ||||
| -rw-r--r-- | packages/docs/app/docs/page.tsx | 16 | ||||
| -rw-r--r-- | packages/docs/app/routes/home.tsx | 10 | ||||
| -rw-r--r-- | packages/docs/biome.json | 2 | ||||
| -rw-r--r-- | packages/docs/package.json | 4 | ||||
| -rw-r--r-- | packages/ui/package.json | 2 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/accordion.tsx | 2 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/avatar.tsx | 4 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/card.tsx | 8 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/dropdown-menu.tsx | 10 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/field.tsx | 4 | ||||
| -rw-r--r-- | packages/ui/src/components/ui/tabs.tsx | 2 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 164 |
16 files changed, 94 insertions, 170 deletions
diff --git a/.changes/update-dependence.md b/.changes/update-dependence.md new file mode 100644 index 0000000..cc2bd20 --- /dev/null +++ b/.changes/update-dependence.md @@ -0,0 +1,5 @@ +--- +"@dropout/docs": "patch:chore" +--- + +sync package version with root @@ -1,5 +1,5 @@ { - "$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/package.json b/package.json index c91e0d4..07ed537 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "toml": "^3.0.0" }, "devDependencies": { - "@biomejs/biome": "^2.4.5", + "@biomejs/biome": "^2.4.9", "@j178/prek": "^0.2.29", "@tauri-apps/cli": "^2.9.6", "@types/node": "^24.10.9", 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 }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7dfd0bb..8bc2ab4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,8 +19,8 @@ importers: version: 3.0.0 devDependencies: '@biomejs/biome': - specifier: ^2.4.5 - version: 2.4.5 + specifier: ^2.4.9 + version: 2.4.9 '@j178/prek': specifier: ^0.2.29 version: 0.2.29 @@ -67,9 +67,6 @@ importers: specifier: ^7.12.0 version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) devDependencies: - '@biomejs/biome': - specifier: ^2.3.11 - version: 2.3.11 '@react-router/dev': specifier: ^7.12.0 version: 7.12.0(@react-router/serve@7.12.0(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3))(@types/node@25.0.9)(jiti@2.6.1)(react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.2.5(@types/node@25.0.9)(jiti@2.6.1)(tsx@4.21.0))(tsx@4.21.0)(typescript@5.9.3) @@ -79,9 +76,6 @@ importers: '@types/mdx': specifier: ^2.0.13 version: 2.0.13 - '@types/node': - specifier: ^25.0.5 - version: 25.0.9 '@types/react': specifier: ^19.2.8 version: 19.2.8 @@ -407,13 +401,8 @@ packages: '@types/react': optional: true - '@biomejs/biome@2.3.11': - resolution: {integrity: sha512-/zt+6qazBWguPG6+eWmiELqO+9jRsMZ/DBU3lfuU2ngtIQYzymocHhKiZRyrbra4aCOoyTg/BmY+6WH5mv9xmQ==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/biome@2.4.5': - resolution: {integrity: sha512-OWNCyMS0Q011R6YifXNOg6qsOg64IVc7XX6SqGsrGszPbkVCoaO7Sr/lISFnXZ9hjQhDewwZ40789QmrG0GYgQ==} + '@biomejs/biome@2.4.9': + resolution: {integrity: sha512-wvZW92FrwitTcacvCBT8xdAbfbxWfDLwjYMmU3djjqQTh7Ni4ZdiWIT/x5VcZ+RQuxiKzIOzi5D+dcyJDFZMsA==} engines: {node: '>=14.21.3'} hasBin: true @@ -423,100 +412,54 @@ packages: cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-arm64@2.4.5': - resolution: {integrity: sha512-lGS4Nd5O3KQJ6TeWv10mElnx1phERhBxqGP/IKq0SvZl78kcWDFMaTtVK+w3v3lusRFxJY78n07PbKplirsU5g==} + '@biomejs/cli-darwin-arm64@2.4.9': + resolution: {integrity: sha512-d5G8Gf2RpH5pYwiHLPA+UpG3G9TLQu4WM+VK6sfL7K68AmhcEQ9r+nkj/DvR/GYhYox6twsHUtmWWWIKfcfQQA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.3.11': - resolution: {integrity: sha512-fh7nnvbweDPm2xEmFjfmq7zSUiox88plgdHF9OIW4i99WnXrAC3o2P3ag9judoUMv8FCSUnlwJCM1B64nO5Fbg==} + '@biomejs/cli-darwin-x64@2.4.9': + resolution: {integrity: sha512-LNCLNgqDMG7BLdc3a8aY/dwKPK7+R8/JXJoXjCvZh2gx8KseqBdFDKbhrr7HCWF8SzNhbTaALhTBoh/I6rf9lA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-darwin-x64@2.4.5': - resolution: {integrity: sha512-6MoH4tyISIBNkZ2Q5T1R7dLd5BsITb2yhhhrU9jHZxnNSNMWl+s2Mxu7NBF8Y3a7JJcqq9nsk8i637z4gqkJxQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@2.3.11': - resolution: {integrity: sha512-XPSQ+XIPZMLaZ6zveQdwNjbX+QdROEd1zPgMwD47zvHV+tCGB88VH+aynyGxAHdzL+Tm/+DtKST5SECs4iwCLg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-arm64-musl@2.4.5': - resolution: {integrity: sha512-iqLDgpzobG7gpBF0fwEVS/LT8kmN7+S0E2YKFDtqliJfzNLnAiV2Nnyb+ehCDCJgAZBASkYHR2o60VQWikpqIg==} + '@biomejs/cli-linux-arm64-musl@2.4.9': + resolution: {integrity: sha512-8RCww5xnPn2wpK4L/QDGDOW0dq80uVWfppPxHIUg6mOs9B6gRmqPp32h1Ls3T8GnW8Wo5A8u7vpTwz4fExN+sw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@2.3.11': - resolution: {integrity: sha512-l4xkGa9E7Uc0/05qU2lMYfN1H+fzzkHgaJoy98wO+b/7Gl78srbCRRgwYSW+BTLixTBrM6Ede5NSBwt7rd/i6g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-linux-arm64@2.4.5': - resolution: {integrity: sha512-U1GAG6FTjhAO04MyH4xn23wRNBkT6H7NentHh+8UxD6ShXKBm5SY4RedKJzkUThANxb9rUKIPc7B8ew9Xo/cWg==} + '@biomejs/cli-linux-arm64@2.4.9': + resolution: {integrity: sha512-4adnkAUi6K4C/emPRgYznMOcLlUqZdXWM6aIui4VP4LraE764g6Q4YguygnAUoxKjKIXIWPteKMgRbN0wsgwcg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@2.3.11': - resolution: {integrity: sha512-vU7a8wLs5C9yJ4CB8a44r12aXYb8yYgBn+WeyzbMjaCMklzCv1oXr8x+VEyWodgJt9bDmhiaW/I0RHbn7rsNmw==} + '@biomejs/cli-linux-x64-musl@2.4.9': + resolution: {integrity: sha512-5TD+WS9v5vzXKzjetF0hgoaNFHMcpQeBUwKKVi3JbG1e9UCrFuUK3Gt185fyTzvRdwYkJJEMqglRPjmesmVv4A==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64-musl@2.4.5': - resolution: {integrity: sha512-NlKa7GpbQmNhZf9kakQeddqZyT7itN7jjWdakELeXyTU3pg/83fTysRRDPJD0akTfKDl6vZYNT9Zqn4MYZVBOA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-x64@2.3.11': - resolution: {integrity: sha512-/1s9V/H3cSe0r0Mv/Z8JryF5x9ywRxywomqZVLHAoa/uN0eY7F8gEngWKNS5vbbN/BsfpCG5yeBT5ENh50Frxg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-linux-x64@2.4.5': - resolution: {integrity: sha512-NdODlSugMzTlENPTa4z0xB82dTUlCpsrOxc43///aNkTLblIYH4XpYflBbf5ySlQuP8AA4AZd1qXhV07IdrHdQ==} + '@biomejs/cli-linux-x64@2.4.9': + resolution: {integrity: sha512-L10na7POF0Ks/cgLFNF1ZvIe+X4onLkTi5oP9hY+Rh60Q+7fWzKDDCeGyiHUFf1nGIa9dQOOUPGe2MyYg8nMSQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@2.3.11': - resolution: {integrity: sha512-PZQ6ElCOnkYapSsysiTy0+fYX+agXPlWugh6+eQ6uPKI3vKAqNp6TnMhoM3oY2NltSB89hz59o8xIfOdyhi9Iw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-arm64@2.4.5': - resolution: {integrity: sha512-EBfrTqRIWOFSd7CQb/0ttjHMR88zm3hGravnDwUA9wHAaCAYsULKDebWcN5RmrEo1KBtl/gDVJMrFjNR0pdGUw==} + '@biomejs/cli-win32-arm64@2.4.9': + resolution: {integrity: sha512-aDZr0RBC3sMGJOU10BvG7eZIlWLK/i51HRIfScE2lVhfts2dQTreowLiJJd+UYg/tHKxS470IbzpuKmd0MiD6g==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.3.11': - resolution: {integrity: sha512-43VrG813EW+b5+YbDbz31uUsheX+qFKCpXeY9kfdAx+ww3naKxeVkTD9zLIWxUPfJquANMHrmW3wbe/037G0Qg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@biomejs/cli-win32-x64@2.4.5': - resolution: {integrity: sha512-Pmhv9zT95YzECfjEHNl3mN9Vhusw9VA5KHY0ZvlGsxsjwS5cb7vpRnHzJIv0vG7jB0JI7xEaMH9ddfZm/RozBw==} + '@biomejs/cli-win32-x64@2.4.9': + resolution: {integrity: sha512-NS4g/2G9SoQ4ktKtz31pvyc/rmgzlcIDCGU/zWbmHJAqx6gcRj2gj5Q/guXhoWTzCUaQZDIqiCQXHS7BcGYc0w==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -5261,74 +5204,42 @@ snapshots: optionalDependencies: '@types/react': 19.2.8 - '@biomejs/biome@2.3.11': + '@biomejs/biome@2.4.9': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.3.11 - '@biomejs/cli-darwin-x64': 2.3.11 - '@biomejs/cli-linux-arm64': 2.3.11 - '@biomejs/cli-linux-arm64-musl': 2.3.11 - '@biomejs/cli-linux-x64': 2.3.11 - '@biomejs/cli-linux-x64-musl': 2.3.11 - '@biomejs/cli-win32-arm64': 2.3.11 - '@biomejs/cli-win32-x64': 2.3.11 - - '@biomejs/biome@2.4.5': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.4.5 - '@biomejs/cli-darwin-x64': 2.4.5 - '@biomejs/cli-linux-arm64': 2.4.5 - '@biomejs/cli-linux-arm64-musl': 2.4.5 - '@biomejs/cli-linux-x64': 2.4.5 - '@biomejs/cli-linux-x64-musl': 2.4.5 - '@biomejs/cli-win32-arm64': 2.4.5 - '@biomejs/cli-win32-x64': 2.4.5 + '@biomejs/cli-darwin-arm64': 2.4.9 + '@biomejs/cli-darwin-x64': 2.4.9 + '@biomejs/cli-linux-arm64': 2.4.9 + '@biomejs/cli-linux-arm64-musl': 2.4.9 + '@biomejs/cli-linux-x64': 2.4.9 + '@biomejs/cli-linux-x64-musl': 2.4.9 + '@biomejs/cli-win32-arm64': 2.4.9 + '@biomejs/cli-win32-x64': 2.4.9 '@biomejs/cli-darwin-arm64@2.3.11': optional: true - '@biomejs/cli-darwin-arm64@2.4.5': - optional: true - - '@biomejs/cli-darwin-x64@2.3.11': - optional: true - - '@biomejs/cli-darwin-x64@2.4.5': - optional: true - - '@biomejs/cli-linux-arm64-musl@2.3.11': - optional: true - - '@biomejs/cli-linux-arm64-musl@2.4.5': + '@biomejs/cli-darwin-arm64@2.4.9': optional: true - '@biomejs/cli-linux-arm64@2.3.11': + '@biomejs/cli-darwin-x64@2.4.9': optional: true - '@biomejs/cli-linux-arm64@2.4.5': + '@biomejs/cli-linux-arm64-musl@2.4.9': optional: true - '@biomejs/cli-linux-x64-musl@2.3.11': + '@biomejs/cli-linux-arm64@2.4.9': optional: true - '@biomejs/cli-linux-x64-musl@2.4.5': + '@biomejs/cli-linux-x64-musl@2.4.9': optional: true - '@biomejs/cli-linux-x64@2.3.11': + '@biomejs/cli-linux-x64@2.4.9': optional: true - '@biomejs/cli-linux-x64@2.4.5': + '@biomejs/cli-win32-arm64@2.4.9': optional: true - '@biomejs/cli-win32-arm64@2.3.11': - optional: true - - '@biomejs/cli-win32-arm64@2.4.5': - optional: true - - '@biomejs/cli-win32-x64@2.3.11': - optional: true - - '@biomejs/cli-win32-x64@2.4.5': + '@biomejs/cli-win32-x64@2.4.9': optional: true '@bkrem/react-transition-group@1.3.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': @@ -7072,6 +6983,7 @@ snapshots: '@types/node@25.0.9': dependencies: undici-types: 7.16.0 + optional: true '@types/react-dom@19.2.3(@types/react@19.2.8)': dependencies: |