diff --git a/shadcn-admin/.vercel/project.json b/shadcn-admin/.vercel/project.json new file mode 100644 index 0000000..2303514 --- /dev/null +++ b/shadcn-admin/.vercel/project.json @@ -0,0 +1,4 @@ +{ + "orgId": "team_k7XASAgXeoo4C8RJJzrkEMK3", + "projectId": "prj_E7eJmO5ydZwNTgA5OH1ECjr4JnO9" +} diff --git a/shadcn-admin/index.html b/shadcn-admin/index.html index f569fc3..a2e0019 100644 --- a/shadcn-admin/index.html +++ b/shadcn-admin/index.html @@ -1,5 +1,5 @@ - + - Shadcn Admin - + WEIAI 角色卡 + - - + + - - + + diff --git a/shadcn-admin/src/assets/logo.tsx b/shadcn-admin/src/assets/logo.tsx index 7571f44..1f92db4 100644 --- a/shadcn-admin/src/assets/logo.tsx +++ b/shadcn-admin/src/assets/logo.tsx @@ -4,7 +4,7 @@ import { cn } from '@/lib/utils' export function Logo({ className, ...props }: SVGProps) { return ( ) diff --git a/shadcn-admin/src/components/command-menu.tsx b/shadcn-admin/src/components/command-menu.tsx index 223b04d..2862df8 100644 --- a/shadcn-admin/src/components/command-menu.tsx +++ b/shadcn-admin/src/components/command-menu.tsx @@ -30,10 +30,10 @@ export function CommandMenu() { return ( - + - No results found. + 没有找到结果。 {sidebarData.navGroups.map((group) => ( {group.items.map((navItem, i) => { @@ -71,17 +71,17 @@ export function CommandMenu() { ))} - + runCommand(() => setTheme('light'))}> - Light + 浅色 runCommand(() => setTheme('dark'))}> - Dark + 深色 runCommand(() => setTheme('system'))}> - System + 跟随系统 diff --git a/shadcn-admin/src/components/confirm-dialog.tsx b/shadcn-admin/src/components/confirm-dialog.tsx index 2db6b25..eb4656a 100644 --- a/shadcn-admin/src/components/confirm-dialog.tsx +++ b/shadcn-admin/src/components/confirm-dialog.tsx @@ -51,14 +51,14 @@ export function ConfirmDialog(props: ConfirmDialogProps) { {children} - {cancelBtnText ?? 'Cancel'} + {cancelBtnText ?? '取消'} diff --git a/shadcn-admin/src/components/data-table/column-header.tsx b/shadcn-admin/src/components/data-table/column-header.tsx index 180037a..8e84cfd 100644 --- a/shadcn-admin/src/components/data-table/column-header.tsx +++ b/shadcn-admin/src/components/data-table/column-header.tsx @@ -52,18 +52,18 @@ export function DataTableColumnHeader({ column.toggleSorting(false)}> - Asc + 升序 column.toggleSorting(true)}> - Desc + 降序 {column.getCanHide() && ( <> column.toggleVisibility(false)}> - Hide + 隐藏 )} diff --git a/shadcn-admin/src/components/data-table/faceted-filter.tsx b/shadcn-admin/src/components/data-table/faceted-filter.tsx index eff125c..1323c1b 100644 --- a/shadcn-admin/src/components/data-table/faceted-filter.tsx +++ b/shadcn-admin/src/components/data-table/faceted-filter.tsx @@ -59,7 +59,7 @@ export function DataTableFacetedFilter({ variant='secondary' className='rounded-sm px-1 font-normal' > - {selectedValues.size} selected + 已选 {selectedValues.size} 项 ) : ( options @@ -83,7 +83,7 @@ export function DataTableFacetedFilter({ - No results found. + 没有找到结果。 {options.map((option) => { const isSelected = selectedValues.has(option.value) @@ -133,7 +133,7 @@ export function DataTableFacetedFilter({ onSelect={() => column?.setFilterValue(undefined)} className='justify-center text-center' > - Clear filters + 清除筛选 diff --git a/shadcn-admin/src/components/data-table/pagination.tsx b/shadcn-admin/src/components/data-table/pagination.tsx index f9bcd81..39a3174 100644 --- a/shadcn-admin/src/components/data-table/pagination.tsx +++ b/shadcn-admin/src/components/data-table/pagination.tsx @@ -39,7 +39,7 @@ export function DataTablePagination({ >
- Page {currentPage} of {totalPages} + 第 {currentPage} / {totalPages} 页
-

Rows per page

+

每页行数

- Page {currentPage} of {totalPages} + 第 {currentPage} / {totalPages} 页
@@ -98,7 +98,7 @@ export function DataTablePagination({ className='h-8 min-w-8 px-2' onClick={() => table.setPageIndex((pageNumber as number) - 1)} > - Go to page {pageNumber} + 跳到第 {pageNumber} 页 {pageNumber} )} @@ -111,7 +111,7 @@ export function DataTablePagination({ onClick={() => table.nextPage()} disabled={!table.getCanNextPage()} > - Go to next page + 下一页
diff --git a/shadcn-admin/src/components/data-table/toolbar.tsx b/shadcn-admin/src/components/data-table/toolbar.tsx index 473e6b0..03dc138 100644 --- a/shadcn-admin/src/components/data-table/toolbar.tsx +++ b/shadcn-admin/src/components/data-table/toolbar.tsx @@ -22,7 +22,7 @@ type DataTableToolbarProps = { export function DataTableToolbar({ table, - searchPlaceholder = 'Filter...', + searchPlaceholder = '筛选...', searchKey, filters = [], }: DataTableToolbarProps) { @@ -74,7 +74,7 @@ export function DataTableToolbar({ }} className='h-8 px-2 lg:px-3' > - Reset + 重置 )} diff --git a/shadcn-admin/src/components/data-table/view-options.tsx b/shadcn-admin/src/components/data-table/view-options.tsx index f972624..5431233 100644 --- a/shadcn-admin/src/components/data-table/view-options.tsx +++ b/shadcn-admin/src/components/data-table/view-options.tsx @@ -26,11 +26,11 @@ export function DataTableViewOptions({ className='ms-auto hidden h-8 lg:flex' > - View + 视图 - Toggle columns + 显示列 {table .getAllColumns() diff --git a/shadcn-admin/src/components/layout/app-sidebar.tsx b/shadcn-admin/src/components/layout/app-sidebar.tsx index 32d9443..2241ffa 100644 --- a/shadcn-admin/src/components/layout/app-sidebar.tsx +++ b/shadcn-admin/src/components/layout/app-sidebar.tsx @@ -6,22 +6,17 @@ import { SidebarHeader, SidebarRail, } from '@/components/ui/sidebar' -// import { AppTitle } from './app-title' +import { AppTitle } from './app-title' import { sidebarData } from './data/sidebar-data' import { NavGroup } from './nav-group' import { NavUser } from './nav-user' -import { TeamSwitcher } from './team-switcher' export function AppSidebar() { const { collapsible, variant } = useLayout() return ( - - - {/* Replace with the following - /* if you want to use the normal app title instead of TeamSwitch dropdown */} - {/* */} + {sidebarData.navGroups.map((props) => ( diff --git a/shadcn-admin/src/components/layout/app-title.tsx b/shadcn-admin/src/components/layout/app-title.tsx index 112e463..f8f667f 100644 --- a/shadcn-admin/src/components/layout/app-title.tsx +++ b/shadcn-admin/src/components/layout/app-title.tsx @@ -25,8 +25,8 @@ export function AppTitle() { onClick={() => setOpenMobile(false)} className='grid flex-1 text-start text-sm leading-tight' > - Shadcn-Admin - Vite + ShadcnUI + WEIAI + 角色卡管理
@@ -58,7 +58,7 @@ function ToggleSidebar({ > - Toggle Sidebar + 切换侧边栏 ) } diff --git a/shadcn-admin/src/components/layout/data/sidebar-data.ts b/shadcn-admin/src/components/layout/data/sidebar-data.ts index 738a130..8240b48 100644 --- a/shadcn-admin/src/components/layout/data/sidebar-data.ts +++ b/shadcn-admin/src/components/layout/data/sidebar-data.ts @@ -1,209 +1,28 @@ -import { - Construction, - LayoutDashboard, - Monitor, - Bug, - ListTodo, - FileX, - HelpCircle, - Lock, - Bell, - Package, - Palette, - ServerOff, - Settings, - Wrench, - UserCog, - UserX, - Users, - MessagesSquare, - ShieldCheck, - AudioWaveform, - Command, - GalleryVerticalEnd, -} from 'lucide-react' -import { ClerkLogo } from '@/assets/clerk-logo' +import { Command, Users } from 'lucide-react' import { type SidebarData } from '../types' export const sidebarData: SidebarData = { user: { - name: 'satnaing', - email: 'satnaingdev@gmail.com', - avatar: '/avatars/shadcn.jpg', + name: 'WEIAI', + email: 'weiai@example.com', + avatar: '/avatars/01.png', }, teams: [ { - name: 'Shadcn Admin', + name: 'WEIAI', logo: Command, - plan: 'Vite + ShadcnUI', - }, - { - name: 'Acme Inc', - logo: GalleryVerticalEnd, - plan: 'Enterprise', - }, - { - name: 'Acme Corp.', - logo: AudioWaveform, - plan: 'Startup', + plan: '角色卡', }, ], navGroups: [ { - title: 'General', + title: '功能', items: [ { - title: 'Dashboard', - url: '/', - icon: LayoutDashboard, - }, - { - title: 'Tasks', - url: '/tasks', - icon: ListTodo, - }, - { - title: 'Characters', + title: '角色卡', url: '/characters', icon: Users, }, - { - title: 'Apps', - url: '/apps', - icon: Package, - }, - { - title: 'Chats', - url: '/chats', - badge: '3', - icon: MessagesSquare, - }, - { - title: 'Users', - url: '/users', - icon: Users, - }, - { - title: 'Secured by Clerk', - icon: ClerkLogo, - items: [ - { - title: 'Sign In', - url: '/clerk/sign-in', - }, - { - title: 'Sign Up', - url: '/clerk/sign-up', - }, - { - title: 'User Management', - url: '/clerk/user-management', - }, - ], - }, - ], - }, - { - title: 'Pages', - items: [ - { - title: 'Auth', - icon: ShieldCheck, - items: [ - { - title: 'Sign In', - url: '/sign-in', - }, - { - title: 'Sign In (2 Col)', - url: '/sign-in-2', - }, - { - title: 'Sign Up', - url: '/sign-up', - }, - { - title: 'Forgot Password', - url: '/forgot-password', - }, - { - title: 'OTP', - url: '/otp', - }, - ], - }, - { - title: 'Errors', - icon: Bug, - items: [ - { - title: 'Unauthorized', - url: '/errors/unauthorized', - icon: Lock, - }, - { - title: 'Forbidden', - url: '/errors/forbidden', - icon: UserX, - }, - { - title: 'Not Found', - url: '/errors/not-found', - icon: FileX, - }, - { - title: 'Internal Server Error', - url: '/errors/internal-server-error', - icon: ServerOff, - }, - { - title: 'Maintenance Error', - url: '/errors/maintenance-error', - icon: Construction, - }, - ], - }, - ], - }, - { - title: 'Other', - items: [ - { - title: 'Settings', - icon: Settings, - items: [ - { - title: 'Profile', - url: '/settings', - icon: UserCog, - }, - { - title: 'Account', - url: '/settings/account', - icon: Wrench, - }, - { - title: 'Appearance', - url: '/settings/appearance', - icon: Palette, - }, - { - title: 'Notifications', - url: '/settings/notifications', - icon: Bell, - }, - { - title: 'Display', - url: '/settings/display', - icon: Monitor, - }, - ], - }, - { - title: 'Help Center', - url: '/help-center', - icon: HelpCircle, - }, ], }, ], diff --git a/shadcn-admin/src/components/layout/nav-user.tsx b/shadcn-admin/src/components/layout/nav-user.tsx index daa75da..6db7444 100644 --- a/shadcn-admin/src/components/layout/nav-user.tsx +++ b/shadcn-admin/src/components/layout/nav-user.tsx @@ -1,18 +1,9 @@ -import { Link } from '@tanstack/react-router' -import { - BadgeCheck, - Bell, - ChevronsUpDown, - CreditCard, - LogOut, - Sparkles, -} from 'lucide-react' +import { ChevronsUpDown, LogOut } from 'lucide-react' import useDialogState from '@/hooks/use-dialog-state' import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' import { DropdownMenu, DropdownMenuContent, - DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, @@ -50,7 +41,7 @@ export function NavUser({ user }: NavUserProps) { > - SN + WA
{user.name} @@ -69,7 +60,7 @@ export function NavUser({ user }: NavUserProps) {
- SN + WA
{user.name} @@ -78,40 +69,12 @@ export function NavUser({ user }: NavUserProps) {
- - - - Upgrade to Pro - - - - - - - - Account - - - - - - Billing - - - - - - Notifications - - - - setOpen(true)} > - Sign out + 退出登录 diff --git a/shadcn-admin/src/components/profile-dropdown.tsx b/shadcn-admin/src/components/profile-dropdown.tsx index 8d8cb87..e48ef3d 100644 --- a/shadcn-admin/src/components/profile-dropdown.tsx +++ b/shadcn-admin/src/components/profile-dropdown.tsx @@ -1,11 +1,9 @@ -import { Link } from '@tanstack/react-router' import useDialogState from '@/hooks/use-dialog-state' import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, - DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, @@ -23,45 +21,23 @@ export function ProfileDropdown() {
-

satnaing

+

WEIAI

- satnaingdev@gmail.com + weiai@example.com

- - - - Profile - ⇧⌘P - - - - - Billing - ⌘B - - - - - Settings - ⌘S - - - New Team - - setOpen(true)}> - Sign out + 退出登录 ⇧⌘Q diff --git a/shadcn-admin/src/components/search.tsx b/shadcn-admin/src/components/search.tsx index 3539340..5d9c2ae 100644 --- a/shadcn-admin/src/components/search.tsx +++ b/shadcn-admin/src/components/search.tsx @@ -11,7 +11,7 @@ type SearchProps = { export function Search({ className = '', - placeholder = 'Search', + placeholder = '搜索', }: SearchProps) { const { setOpen } = useSearch() return ( diff --git a/shadcn-admin/src/components/sign-out-dialog.tsx b/shadcn-admin/src/components/sign-out-dialog.tsx index c4eb368..02c2803 100644 --- a/shadcn-admin/src/components/sign-out-dialog.tsx +++ b/shadcn-admin/src/components/sign-out-dialog.tsx @@ -27,9 +27,9 @@ export function SignOutDialog({ open, onOpenChange }: SignOutDialogProps) { - Toggle theme + 切换主题 setTheme('light')}> - Light{' '} + 浅色{' '} setTheme('dark')}> - Dark + 深色 setTheme('system')}> - System + 跟随系统
-

Shadcn Admin

+

WEIAI

{children}
diff --git a/shadcn-admin/src/features/auth/sign-in/components/user-auth-form.tsx b/shadcn-admin/src/features/auth/sign-in/components/user-auth-form.tsx index 05c8e71..2540aec 100644 --- a/shadcn-admin/src/features/auth/sign-in/components/user-auth-form.tsx +++ b/shadcn-admin/src/features/auth/sign-in/components/user-auth-form.tsx @@ -5,9 +5,8 @@ import { zodResolver } from '@hookform/resolvers/zod' import { Link, useNavigate } from '@tanstack/react-router' import { Loader2, LogIn } from 'lucide-react' import { toast } from 'sonner' -import { IconFacebook, IconGithub, IconGoogle } from '@/assets/brand-icons' import { useAuthStore } from '@/stores/auth-store' -import { sleep, cn } from '@/lib/utils' +import { cn } from '@/lib/utils' import { Button } from '@/components/ui/button' import { supabase } from '@/lib/supabase' import { @@ -85,22 +84,6 @@ export function UserAuthForm({ } } - const handleGoogleLogin = async () => { - setIsLoading(true) - try { - const { error } = await supabase.auth.signInWithOAuth({ - provider: 'google', - options: { - redirectTo: `${window.location.origin}/`, - }, - }) - if (error) throw error - } catch (error: any) { - toast.error(error.message || 'Google login failed') - setIsLoading(false) - } - } - return (
( - Email + 邮箱 @@ -126,7 +109,7 @@ export function UserAuthForm({ name='password' render={({ field }) => ( - Password + 密码 @@ -135,14 +118,14 @@ export function UserAuthForm({ to='/forgot-password' className='absolute end-0 -top-0.5 text-sm font-medium text-muted-foreground hover:opacity-75' > - Forgot password? + 忘记密码? )} />
@@ -151,7 +134,7 @@ export function UserAuthForm({
- Or continue with + 或使用以下方式
diff --git a/shadcn-admin/src/features/auth/sign-in/index.tsx b/shadcn-admin/src/features/auth/sign-in/index.tsx index 7269446..945b13b 100644 --- a/shadcn-admin/src/features/auth/sign-in/index.tsx +++ b/shadcn-admin/src/features/auth/sign-in/index.tsx @@ -17,10 +17,9 @@ export function SignIn() { - Sign in + 登录 - Enter your email and password below to
- log into your account + 请输入邮箱和密码登录账号
@@ -28,19 +27,19 @@ export function SignIn() {

- By clicking sign in, you agree to our{' '} + 点击登录即表示你同意我们的{' '} - Terms of Service + 服务条款 {' '} - and{' '} + 和{' '} - Privacy Policy + 隐私政策 .

diff --git a/shadcn-admin/src/features/auth/sign-in/sign-in-2.tsx b/shadcn-admin/src/features/auth/sign-in/sign-in-2.tsx index 484a90a..1eda086 100644 --- a/shadcn-admin/src/features/auth/sign-in/sign-in-2.tsx +++ b/shadcn-admin/src/features/auth/sign-in/sign-in-2.tsx @@ -11,32 +11,31 @@ export function SignIn2() {
-

Shadcn Admin

+

WEIAI

-

Sign in

+

登录

- Enter your email and password below
- to log into your account + 请输入邮箱和密码登录账号

- By clicking sign in, you agree to our{' '} + 点击登录即表示你同意我们的{' '} - Terms of Service + 服务条款 {' '} - and{' '} + 和{' '} - Privacy Policy + 隐私政策 .

@@ -54,14 +53,14 @@ export function SignIn2() { className='dark:hidden' width={1024} height={1151} - alt='Shadcn-Admin' + alt='WEIAI' /> Shadcn-Admin
diff --git a/shadcn-admin/src/features/characters/components/character-dialog.tsx b/shadcn-admin/src/features/characters/components/character-dialog.tsx index 20016b8..ec2f11a 100644 --- a/shadcn-admin/src/features/characters/components/character-dialog.tsx +++ b/shadcn-admin/src/features/characters/components/character-dialog.tsx @@ -82,13 +82,13 @@ export function CharacterDialog() { console.log('🔧 处理后的数据:', sanitizedValues); if (isEdit) { - console.log('🔄 更新角色,ID:', character.id); + console.log('🔄 更新角色卡,ID:', character.id); await updateCharacter({ ...sanitizedValues, id: character.id } as any); - toast.success('角色更新成功'); + toast.success('角色卡更新成功'); } else { - console.log('➕ 创建新角色'); + console.log('➕ 创建新角色卡'); await createCharacter(sanitizedValues as any); - toast.success('角色创建成功'); + toast.success('角色卡创建成功'); } setOpen(false); queryClient.invalidateQueries({ queryKey: ['characters'] }); @@ -100,7 +100,7 @@ export function CharacterDialog() { ? error.message : JSON.stringify(error); - toast.error(`保存角色失败: ${errorMessage}`); + toast.error(`保存角色卡失败: ${errorMessage}`); } }; @@ -108,11 +108,11 @@ export function CharacterDialog() { - {isEdit ? '编辑角色' : '创建角色'} + {isEdit ? '编辑角色卡' : '创建角色卡'} {isEdit - ? '在下方修改角色详情。' - : '填写详情以创建新角色。'} + ? '在下方修改角色卡详情。' + : '填写详情以创建新角色卡。'} @@ -140,7 +140,7 @@ export function CharacterDialog() { 名称 - + @@ -150,13 +150,13 @@ export function CharacterDialog() { ( - - 角色头像 - - ( + + 角色卡头像 + + @@ -172,7 +172,7 @@ export function CharacterDialog() { 描述 -