♻️ refactor(deps): Update

This commit is contained in:
web@ppanel 2024-12-13 23:42:23 +07:00
parent 37d408f6bd
commit 19837a1032
23 changed files with 2746 additions and 2333 deletions

View File

@ -21,7 +21,7 @@ import NoticeForm from './notice-form';
export default function Page() { export default function Page() {
const t = useTranslations('announcement'); const t = useTranslations('announcement');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.Announcement, { enable: boolean; search: string }> <ProTable<API.Announcement, { enable: boolean; search: string }>

View File

@ -34,7 +34,7 @@ export default function Page() {
return data.data?.list as API.SubscribeGroup[]; return data.data?.list as API.SubscribeGroup[];
}, },
}); });
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.Coupon, { group_id: number; query: string }> <ProTable<API.Coupon, { group_id: number; query: string }>
action={ref} action={ref}

View File

@ -21,7 +21,7 @@ export default function Page() {
const t = useTranslations('document'); const t = useTranslations('document');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.Document, { tag: string; search: string }> <ProTable<API.Document, { tag: string; search: string }>
action={ref} action={ref}

View File

@ -28,7 +28,7 @@ export default function Page() {
{ value: 5, label: t('status.5'), className: 'bg-green-500' }, { value: 5, label: t('status.5'), className: 'bg-green-500' },
]; ];
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
const { data: subscribeList } = useQuery({ const { data: subscribeList } = useQuery({
queryKey: ['getSubscribeList', 'all'], queryKey: ['getSubscribeList', 'all'],

View File

@ -19,7 +19,7 @@ import GroupForm from './group-form';
export default function GroupTable() { export default function GroupTable() {
const t = useTranslations('server'); const t = useTranslations('server');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.ServerGroup, any> <ProTable<API.ServerGroup, any>

View File

@ -36,7 +36,7 @@ export default function NodeTable() {
}, },
}); });
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.Server, { groupId: number; search: string }> <ProTable<API.Server, { groupId: number; search: string }>

View File

@ -19,7 +19,7 @@ import GroupForm from './group-form';
const GroupTable = () => { const GroupTable = () => {
const t = useTranslations('subscribe'); const t = useTranslations('subscribe');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.SubscribeGroup, any> <ProTable<API.SubscribeGroup, any>

View File

@ -33,7 +33,7 @@ export default function SubscribeTable() {
return data.data?.list as API.SubscribeGroup[]; return data.data?.list as API.SubscribeGroup[];
}, },
}); });
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.Subscribe, { group_id: number; query: string }> <ProTable<API.Subscribe, { group_id: number; query: string }>
action={ref} action={ref}

View File

@ -61,7 +61,7 @@ export default function Page() {
}, 66); }, 66);
}, [ticket?.follow?.length]); }, [ticket?.follow?.length]);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<> <>
<ProTable<API.Ticket, { status: number }> <ProTable<API.Ticket, { status: number }>

View File

@ -15,7 +15,7 @@ import UserForm from './user-form';
export default function Page() { export default function Page() {
const t = useTranslations('user'); const t = useTranslations('user');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const ref = useRef<ProTableActions>(); const ref = useRef<ProTableActions>(null);
return ( return (
<ProTable<API.User, any> <ProTable<API.User, any>

View File

@ -10,34 +10,34 @@
"start": "next start" "start": "next start"
}, },
"dependencies": { "dependencies": {
"@iconify/react": "^5.0.2", "@iconify/react": "^5.1.0",
"@repo/ui": "workspace:*", "@repo/ui": "workspace:*",
"@shadcn/ui": "workspace:*", "@shadcn/ui": "workspace:*",
"@tanstack/react-query": "^5.61.3", "@tanstack/react-query": "^5.62.7",
"@tanstack/react-query-next-experimental": "^5.61.3", "@tanstack/react-query-next-experimental": "^5.62.7",
"ahooks": "^3.8.1", "ahooks": "^3.8.4",
"axios": "^1.7.8", "axios": "^1.7.9",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"mathjs": "^14.0.0", "mathjs": "^14.0.1",
"nanoid": "^5.0.9", "nanoid": "^5.0.9",
"next": "^15.0.3", "next": "^15.1.0",
"next-intl": "^3.25.3", "next-intl": "^3.26.1",
"next-runtime-env": "^3.2.2", "next-runtime-env": "^3.2.2",
"next-themes": "^0.4.3", "next-themes": "^0.4.4",
"nextjs-toploader": "^3.7.15", "nextjs-toploader": "^3.7.15",
"radash": "^12.1.0", "radash": "^12.1.0",
"react": "rc", "react": "^19.0.0",
"react-dom": "rc", "react-dom": "^19.0.0",
"react-turnstile": "^1.1.4", "react-turnstile": "^1.1.4",
"universal-cookie": "^7.2.2", "universal-cookie": "^7.2.2",
"zustand": "^5.0.1" "zustand": "^5.0.2"
}, },
"devDependencies": { "devDependencies": {
"@repo/eslint-config": "workspace:*", "@repo/eslint-config": "workspace:*",
"@repo/typescript-config": "workspace:*", "@repo/typescript-config": "workspace:*",
"@types/node": "^22.10.0", "@types/node": "^22.10.2",
"@types/react": "^18.3.12", "@types/react": "^19.0.1",
"@types/react-dom": "^18.3.1", "@types/react-dom": "^19.0.2",
"typescript": "^5.7.2" "typescript": "^5.7.2"
} }
} }

View File

@ -10,7 +10,7 @@ import { cn } from '@shadcn/ui/lib/utils';
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { AnimatePresence, motion } from 'framer-motion'; import { AnimatePresence, motion } from 'framer-motion';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import { useEffect, useId, useRef, useState } from 'react'; import { RefObject, useEffect, useId, useRef, useState } from 'react';
export function DocumentButton({ items }: { items: API.Document[] }) { export function DocumentButton({ items }: { items: API.Document[] }) {
const t = useTranslations('document'); const t = useTranslations('document');
@ -46,7 +46,7 @@ export function DocumentButton({ items }: { items: API.Document[] }) {
return () => window.removeEventListener('keydown', onKeyDown); return () => window.removeEventListener('keydown', onKeyDown);
}, [active]); }, [active]);
useOutsideClick(ref, () => setActive(null)); useOutsideClick(ref as RefObject<HTMLDivElement>, () => setActive(null));
return ( return (
<> <>

View File

@ -9,7 +9,7 @@ import { cn } from '@shadcn/ui/lib/utils';
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { AnimatePresence, motion } from 'framer-motion'; import { AnimatePresence, motion } from 'framer-motion';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import { useEffect, useId, useRef, useState } from 'react'; import { RefObject, useEffect, useId, useRef, useState } from 'react';
interface Item { interface Item {
path: string; path: string;
@ -48,7 +48,7 @@ export function TutorialButton({ items }: { items: Item[] }) {
return () => window.removeEventListener('keydown', onKeyDown); return () => window.removeEventListener('keydown', onKeyDown);
}, [active]); }, [active]);
useOutsideClick(ref, () => setActive(null)); useOutsideClick(ref as RefObject<HTMLDivElement>, () => setActive(null));
return ( return (
<> <>

View File

@ -70,7 +70,7 @@ export default function Page() {
}, 66); }, 66);
}, [ticket?.follow?.length]); }, [ticket?.follow?.length]);
const ref = useRef<ProListActions>(); const ref = useRef<ProListActions>(null);
const [create, setCreate] = useState<Partial<API.CreateUserTicketRequest & { open: boolean }>>(); const [create, setCreate] = useState<Partial<API.CreateUserTicketRequest & { open: boolean }>>();
return ( return (

View File

@ -10,40 +10,40 @@
"start": "next start" "start": "next start"
}, },
"dependencies": { "dependencies": {
"@iconify/react": "^5.0.2", "@iconify/react": "^5.1.0",
"@repo/ui": "workspace:*", "@repo/ui": "workspace:*",
"@shadcn/ui": "workspace:*", "@shadcn/ui": "workspace:*",
"@stripe/react-stripe-js": "^3.0.0", "@stripe/react-stripe-js": "^3.1.0",
"@stripe/stripe-js": "^5.2.0", "@stripe/stripe-js": "^5.3.0",
"@tanstack/react-query": "^5.61.3", "@tanstack/react-query": "^5.62.7",
"@tanstack/react-query-next-experimental": "^5.61.3", "@tanstack/react-query-next-experimental": "^5.62.7",
"ahooks": "^3.8.1", "ahooks": "^3.8.4",
"axios": "^1.7.8", "axios": "^1.7.9",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"framer-motion": "^11.11.17", "framer-motion": "^11.14.4",
"lucide-react": "^0.461.0", "lucide-react": "^0.468.0",
"mathjs": "^14.0.0", "mathjs": "^14.0.1",
"next": "^15.0.3", "next": "^15.1.0",
"next-intl": "^3.25.3", "next-intl": "^3.26.1",
"next-runtime-env": "^3.2.2", "next-runtime-env": "^3.2.2",
"next-themes": "^0.4.3", "next-themes": "^0.4.4",
"nextjs-toploader": "^3.7.15", "nextjs-toploader": "^3.7.15",
"qrcode.react": "^4.1.0", "qrcode.react": "^4.2.0",
"radash": "^12.1.0", "radash": "^12.1.0",
"react": "rc", "react": "^19.0.0",
"react-copy-to-clipboard": "^5.1.0", "react-copy-to-clipboard": "^5.1.0",
"react-dom": "rc", "react-dom": "^19.0.0",
"react-turnstile": "^1.1.4", "react-turnstile": "^1.1.4",
"universal-cookie": "^7.2.2", "universal-cookie": "^7.2.2",
"zustand": "^5.0.1" "zustand": "^5.0.2"
}, },
"devDependencies": { "devDependencies": {
"@repo/eslint-config": "workspace:*", "@repo/eslint-config": "workspace:*",
"@repo/typescript-config": "workspace:*", "@repo/typescript-config": "workspace:*",
"@types/node": "^22.10.0", "@types/node": "^22.10.2",
"@types/react": "^18.3.12", "@types/react": "^19.0.1",
"@types/react-copy-to-clipboard": "^5.0.7", "@types/react-copy-to-clipboard": "^5.0.7",
"@types/react-dom": "^18.3.1", "@types/react-dom": "^19.0.2",
"typescript": "^5.7.2" "typescript": "^5.7.2"
} }
} }

View File

@ -43,10 +43,10 @@
"@repo/typescript-config": "workspace:*", "@repo/typescript-config": "workspace:*",
"@umijs/openapi": "^1.13.0", "@umijs/openapi": "^1.13.0",
"husky": "^9.1.7", "husky": "^9.1.7",
"lint-staged": "^15.2.10", "lint-staged": "^15.2.11",
"semantic-release": "^24.2.0", "semantic-release": "^24.2.0",
"semantic-release-config-gitmoji": "^1.5.3", "semantic-release-config-gitmoji": "^1.5.3",
"turbo": "^2.3.2", "turbo": "^2.3.3",
"typescript": "^5.7.2" "typescript": "^5.7.2"
}, },
"packageManager": "pnpm@9.12.3", "packageManager": "pnpm@9.12.3",
@ -55,7 +55,7 @@
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"react-is": "rc" "react-is": "19.0.0"
} }
} }
} }

View File

@ -8,17 +8,17 @@
"./react-internal": "./react-internal.js" "./react-internal": "./react-internal.js"
}, },
"devDependencies": { "devDependencies": {
"@next/eslint-plugin-next": "^15.0.3", "@next/eslint-plugin-next": "^15.1.0",
"@typescript-eslint/eslint-plugin": "^8.16.0", "@typescript-eslint/eslint-plugin": "^8.18.0",
"@typescript-eslint/parser": "^8.16.0", "@typescript-eslint/parser": "^8.18.0",
"eslint": "^9.15.0", "eslint": "^9.16.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-only-warn": "^1.1.0", "eslint-plugin-only-warn": "^1.1.0",
"eslint-plugin-react": "^7.37.2", "eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-turbo": "^2.3.2", "eslint-plugin-turbo": "^2.3.3",
"globals": "^15.12.0", "globals": "^15.13.0",
"typescript": "^5.7.2", "typescript": "^5.7.2",
"typescript-eslint": "^8.16.0" "typescript-eslint": "^8.18.0"
} }
} }

View File

@ -4,7 +4,7 @@
"main": "index.js", "main": "index.js",
"devDependencies": { "devDependencies": {
"@ianvs/prettier-plugin-sort-imports": "^4.4.0", "@ianvs/prettier-plugin-sort-imports": "^4.4.0",
"prettier": "^3.4.0", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.6", "prettier-plugin-packagejson": "^2.5.6",
"prettier-plugin-sh": "^0.14.0", "prettier-plugin-sh": "^0.14.0",

View File

@ -16,79 +16,81 @@
}, },
"dependencies": { "dependencies": {
"@hookform/resolvers": "^3.9.1", "@hookform/resolvers": "^3.9.1",
"@radix-ui/react-accordion": "^1.2.1", "@radix-ui/react-accordion": "^1.2.2",
"@radix-ui/react-alert-dialog": "^1.1.2", "@radix-ui/react-alert-dialog": "^1.1.3",
"@radix-ui/react-aspect-ratio": "^1.1.0", "@radix-ui/react-aspect-ratio": "^1.1.1",
"@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-avatar": "^1.1.2",
"@radix-ui/react-checkbox": "^1.1.2", "@radix-ui/react-checkbox": "^1.1.3",
"@radix-ui/react-collapsible": "^1.1.1", "@radix-ui/react-collapsible": "^1.1.2",
"@radix-ui/react-context-menu": "^2.2.2", "@radix-ui/react-context-menu": "^2.2.3",
"@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dialog": "^1.1.3",
"@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-dropdown-menu": "^2.1.3",
"@radix-ui/react-hover-card": "^1.1.2", "@radix-ui/react-hover-card": "^1.1.3",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.0", "@radix-ui/react-label": "^2.1.1",
"@radix-ui/react-menubar": "^1.1.2", "@radix-ui/react-menubar": "^1.1.3",
"@radix-ui/react-navigation-menu": "^1.2.1", "@radix-ui/react-navigation-menu": "^1.2.2",
"@radix-ui/react-popover": "^1.1.2", "@radix-ui/react-popover": "^1.1.3",
"@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-progress": "^1.1.1",
"@radix-ui/react-radio-group": "^1.2.1", "@radix-ui/react-radio-group": "^1.2.2",
"@radix-ui/react-scroll-area": "^1.2.1", "@radix-ui/react-scroll-area": "^1.2.2",
"@radix-ui/react-select": "^2.1.2", "@radix-ui/react-select": "^2.1.3",
"@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-separator": "^1.1.1",
"@radix-ui/react-slider": "^1.2.1", "@radix-ui/react-slider": "^1.2.2",
"@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-slot": "^1.1.1",
"@radix-ui/react-switch": "^1.1.1", "@radix-ui/react-switch": "^1.1.2",
"@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-tabs": "^1.1.2",
"@radix-ui/react-toast": "^1.2.2", "@radix-ui/react-toast": "^1.2.3",
"@radix-ui/react-toggle": "^1.1.0", "@radix-ui/react-toggle": "^1.1.1",
"@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-toggle-group": "^1.1.1",
"@radix-ui/react-tooltip": "^1.1.4", "@radix-ui/react-tooltip": "^1.1.5",
"@react-three/drei": "^9.117.3", "@react-three/drei": "^9.120.4",
"@react-three/fiber": "^8.17.10", "@react-three/fiber": "^8.17.10",
"@tabler/icons-react": "^3.22.0", "@tabler/icons-react": "^3.24.0",
"@tsparticles/engine": "^3.7.1", "@tsparticles/engine": "^3.7.1",
"@tsparticles/react": "^3.0.0", "@tsparticles/react": "^3.0.0",
"@tsparticles/slim": "^3.7.1", "@tsparticles/slim": "^3.7.1",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "1.0.4", "cmdk": "1.0.0",
"cobe": "^0.6.3", "cobe": "^0.6.3",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"dotted-map": "^2.2.3",
"embla-carousel-react": "^8.5.1", "embla-carousel-react": "^8.5.1",
"framer-motion": "^11.11.17", "framer-motion": "^11.14.4",
"input-otp": "^1.4.1", "input-otp": "^1.4.1",
"lucide-react": "^0.461.0", "lucide-react": "^0.468.0",
"mini-svg-data-uri": "^1.4.4", "mini-svg-data-uri": "^1.4.4",
"next-themes": "^0.4.3", "motion": "^11.14.4",
"next-themes": "^0.4.4",
"qss": "^3.0.0", "qss": "^3.0.0",
"react-day-picker": "8.10.1", "react-day-picker": "8.10.1",
"react-dropzone": "^14.3.5", "react-dropzone": "^14.3.5",
"react-hook-form": "^7.53.2", "react-hook-form": "^7.54.1",
"react-icons": "^5.3.0", "react-icons": "^5.4.0",
"react-resizable-panels": "^2.1.7", "react-resizable-panels": "^2.1.7",
"recharts": "^2.13.3", "recharts": "^2.15.0",
"simplex-noise": "^4.0.3", "simplex-noise": "^4.0.3",
"sonner": "^1.7.0", "sonner": "^1.7.1",
"tailwind-merge": "^2.5.5", "tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"three": "^0.170.0", "three": "^0.171.0",
"three-globe": "^2.35.2", "three-globe": "^2.35.11",
"vaul": "^1.1.1", "vaul": "^1.1.1",
"zod": "^3.23.8" "zod": "^3.24.1"
}, },
"devDependencies": { "devDependencies": {
"@repo/eslint-config": "workspace:*", "@repo/eslint-config": "workspace:*",
"@repo/typescript-config": "workspace:*", "@repo/typescript-config": "workspace:*",
"@types/node": "^22.10.0", "@types/node": "^22.10.2",
"@types/react": "^18.3.12", "@types/react": "^19.0.1",
"@types/react-dom": "^18.3.1", "@types/react-dom": "^19.0.2",
"@types/three": "^0.170.0", "@types/three": "^0.170.0",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"next": "^15.0.3", "next": "^15.1.0",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"react": "^18.3.1", "react": "^19.0.0",
"tailwindcss": "^3.4.15", "tailwindcss": "^3.4.16",
"typescript": "^5.7.2" "typescript": "^5.7.2"
} }
} }

View File

@ -1,6 +1,4 @@
// @ts-nocheck // @ts-nocheck
// Core component that receives mouse positions and renders pointer and content
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { AnimatePresence, motion, useMotionValue } from 'framer-motion'; import { AnimatePresence, motion, useMotionValue } from 'framer-motion';

View File

@ -18,14 +18,14 @@
"@monaco-editor/react": "^4.6.0", "@monaco-editor/react": "^4.6.0",
"@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-icons": "^1.3.2",
"@shadcn/ui": "workspace:*", "@shadcn/ui": "workspace:*",
"@tanstack/react-table": "^8.20.5", "@tanstack/react-table": "^8.20.6",
"@types/react-syntax-highlighter": "^15.5.13", "@types/react-syntax-highlighter": "^15.5.13",
"ahooks": "^3.8.1", "ahooks": "^3.8.4",
"katex": "^0.16.11", "katex": "^0.16.15",
"lottie-react": "^2.4.0", "lottie-react": "^2.4.0",
"lucide-react": "^0.461.0", "lucide-react": "^0.468.0",
"mathjs": "^14.0.0", "mathjs": "^14.0.1",
"react": "^18.3.1", "react": "^19.0.0",
"react-markdown": "^9.0.1", "react-markdown": "^9.0.1",
"react-syntax-highlighter": "^15.6.1", "react-syntax-highlighter": "^15.6.1",
"rehype-katex": "^7.0.1", "rehype-katex": "^7.0.1",
@ -37,15 +37,15 @@
"devDependencies": { "devDependencies": {
"@repo/eslint-config": "workspace:*", "@repo/eslint-config": "workspace:*",
"@repo/typescript-config": "workspace:*", "@repo/typescript-config": "workspace:*",
"@turbo/gen": "^2.3.2", "@turbo/gen": "^2.3.3",
"@types/node": "^22.10.0", "@types/node": "^22.10.2",
"@types/react": "^18.3.12", "@types/react": "^19.0.1",
"@types/react-dom": "^18.3.1", "@types/react-dom": "^19.0.2",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"next": "^15.0.3", "next": "^15.1.0",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"react": "^18.3.1", "react": "^18.3.1",
"tailwindcss": "^3.4.15", "tailwindcss": "^3.4.16",
"typescript": "^5.7.2" "typescript": "^5.7.2"
} }
} }

4825
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -117,9 +117,17 @@ function runCommand(command, args, options) {
async function installComponents() { async function installComponents() {
try { try {
console.log('Installing all default Shadcn components in directory:', targetDir); console.log('Installing all default Shadcn components in directory:', targetDir);
const registry = await fetch('https://ui.aceternity.com/registry');
const registryJson = await registry.json();
const components = registryJson
.filter(
(item) =>
!['card-spotlight', 'canvas-reveal-effect', 'sparkles', 'cover'].includes(item.name),
)
.map((item) => `https://ui.aceternity.com/registry/${item.name}.json`);
// Install AceternityUI a Shadcn components // Install AceternityUI a Shadcn components
await runCommand('npx', ['aceternity-ui@latest', 'add', '-y', '-o', '-a'], { await runCommand('npx', ['shadcn@latest', 'add', ...components], {
cwd: targetDir, cwd: targetDir,
shell: true, shell: true,
}); });