diff --git a/apps/web/components.json b/apps/web/components.json index 037d4f42..3ab1adb9 100644 --- a/apps/web/components.json +++ b/apps/web/components.json @@ -4,12 +4,14 @@ "rsc": true, "tailwind": { "config": "tailwind.config.js", - "css": "src/app/globals.css", + "css": "../../packages/ui/src/styles/globals.css", "baseColor": "zinc", "cssVariables": true }, "aliases": { - "components": "@/components/shadcn", - "utils": "@/lib/utils/client/cn" + "components": "ui/components", + "hooks": "ui/hooks", + "lib": "ui/lib", + "utils": "ui/lib/utils" } } diff --git a/apps/web/next.config.mjs b/apps/web/next.config.mjs index f98177b1..ce375496 100644 --- a/apps/web/next.config.mjs +++ b/apps/web/next.config.mjs @@ -7,7 +7,7 @@ jiti("./src/env"); /** @type {import('next').NextConfig} */ const nextConfig = { swcMinify: true, - transpilePackages: ["db"], + transpilePackages: ["db", "ui"], images: { remotePatterns: [ { diff --git a/apps/web/package.json b/apps/web/package.json index 55eed01f..fa64270e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -15,44 +15,23 @@ "@clerk/nextjs": "^6.12.12", "@hookform/resolvers": "^3.9.0", "@internationalized/date": "^3.5.4", - "@planetscale/database": "^1.18.0", - "@radix-ui/react-accordion": "^1.1.2", - "@radix-ui/react-alert-dialog": "^1.1.1", - "@radix-ui/react-avatar": "^1.0.3", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-collapsible": "^1.1.12", - "@radix-ui/react-dialog": "^1.0.4", - "@radix-ui/react-dropdown-menu": "^2.0.5", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-popover": "^1.0.6", - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tooltip": "^1.2.8", "@t3-oss/env-nextjs": "^0.10.1", "@tanstack/match-sorter-utils": "^8.19.4", "@tanstack/react-table": "^8.19.3", "@upstash/redis": "^1.34.4", "@yudiel/react-qr-scanner": "^2.1.0", - "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", - "cmdk": "^1.0.0", "config": "workspace:*", "date-fns": "^3.6.0", "date-fns-tz": "^3.1.3", "db": "workspace:*", "drizzle-orm": "^0.39.3", "drizzle-zod": "^0.7.0", - "embla-carousel": "8.1.7", - "embla-carousel-react": "8.1.7", "lucide-react": "^0.411.0", - "nanoid": "^5.0.7", "next": "14.2.35", "next-safe-action": "^7.9.3", "no-profanity": "^1.5.1", "react": "18.3.1", - "react-aria": "^3.33.1", "react-confetti": "^6.1.0", "react-dom": "18.3.1", "react-dropzone": "^14.2.3", @@ -60,16 +39,14 @@ "react-loader-spinner": "^6.1.6", "react-parallax-tilt": "^1.7.232", "react-qr-code": "^2.0.15", - "react-stately": "^3.31.1", "react-timer-hook": "^3.0.7", "react-wrap-balancer": "^1.1.1", "recharts": "^2.12.7", "sonner": "^1.5.0", "superjson": "^2.2.1", - "tailwind-merge": "^2.4.0", + "ui": "workspace:*", "use-debounce": "^10.0.1", "usehooks-ts": "^3.1.0", - "vaul": "^0.9.1", "zod": "^3.25.67" }, "devDependencies": { diff --git a/apps/web/src/app/admin/events/page.tsx b/apps/web/src/app/admin/events/page.tsx index 0e8d25f9..380f139a 100644 --- a/apps/web/src/app/admin/events/page.tsx +++ b/apps/web/src/app/admin/events/page.tsx @@ -2,7 +2,7 @@ import { EventDataTable } from "@/components/events/shared/EventDataTable"; import { columns } from "@/components/events/shared/EventColumns"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { PlusCircle } from "lucide-react"; import Link from "next/link"; import { getAllEvents } from "db/functions"; diff --git a/apps/web/src/app/admin/layout.tsx b/apps/web/src/app/admin/layout.tsx index a28aff89..d7afd77f 100644 --- a/apps/web/src/app/admin/layout.tsx +++ b/apps/web/src/app/admin/layout.tsx @@ -4,12 +4,12 @@ import ClientToast from "@/components/shared/ClientToast"; import { isUserAdmin } from "../../lib/utils/server/admin"; import { getCurrentUser } from "@/lib/utils/server/user"; import { AdminSidebar } from "@/components/admin/shared/sidebar/AdminSidebar"; -import { Separator } from "@/components/shadcn/ui/separator"; +import { Separator } from "ui/components/separator"; import { SidebarInset, SidebarProvider, SidebarTrigger, -} from "@/components/shadcn/ui/sidebar"; +} from "ui/components/sidebar"; import { AdminBreadcrumbs } from "@/components/admin/shared/AdminBreadcrumbs"; import { NavUserProfile } from "@/components/admin/shared/NavUserProfile"; diff --git a/apps/web/src/app/admin/page.tsx b/apps/web/src/app/admin/page.tsx index 79b06ed7..d67687e5 100644 --- a/apps/web/src/app/admin/page.tsx +++ b/apps/web/src/app/admin/page.tsx @@ -5,7 +5,7 @@ import { CardContent, CardTitle, CardDescription, -} from "@/components/shadcn/ui/card"; +} from "ui/components/card"; import { Users, UserCheck, User2, TimerReset, MailCheck } from "lucide-react"; import type { User } from "db/types"; import c from "config"; diff --git a/apps/web/src/app/admin/users/[slug]/page.tsx b/apps/web/src/app/admin/users/[slug]/page.tsx index a72ce8b9..012ff5e8 100644 --- a/apps/web/src/app/admin/users/[slug]/page.tsx +++ b/apps/web/src/app/admin/users/[slug]/page.tsx @@ -1,6 +1,6 @@ import Image from "next/image"; -import { Button } from "@/components/shadcn/ui/button"; -import { Badge } from "@/components/shadcn/ui/badge"; +import { Button } from "ui/components/button"; +import { Badge } from "ui/components/badge"; import { Info, CalendarCheck } from "lucide-react"; import Link from "next/link"; import UpdateRoleDialog from "@/components/admin/users/UpdateRoleDialog"; @@ -15,7 +15,7 @@ import { DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, -} from "@/components/shadcn/ui/dropdown-menu"; +} from "ui/components/dropdown-menu"; import { notFound } from "next/navigation"; import { userHasPermission } from "@/lib/utils/server/admin"; import ApproveUserButton from "@/components/admin/users/ApproveUserButton"; diff --git a/apps/web/src/app/admin/users/page.tsx b/apps/web/src/app/admin/users/page.tsx index d1a6d16b..41e0cd3b 100644 --- a/apps/web/src/app/admin/users/page.tsx +++ b/apps/web/src/app/admin/users/page.tsx @@ -1,7 +1,7 @@ import { db, ilike, or, and, eq } from "db"; import { DataTable } from "@/components/admin/users/UserDataTable"; import { columns } from "@/components/admin/users/UserColumns"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { FolderInput } from "lucide-react"; import { getAllUsers } from "db/functions"; import { notFound } from "next/navigation"; diff --git a/apps/web/src/app/dash/layout.tsx b/apps/web/src/app/dash/layout.tsx index 4d4eac4a..e3c7452d 100644 --- a/apps/web/src/app/dash/layout.tsx +++ b/apps/web/src/app/dash/layout.tsx @@ -3,7 +3,7 @@ import Image from "next/image"; import { currentUser } from "@clerk/nextjs/server"; import Link from "next/link"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import DashNavItem from "@/components/dash/shared/DashNavItem"; import { redirect } from "next/navigation"; import ProfileButton from "@/components/shared/ProfileButton"; diff --git a/apps/web/src/app/dash/pass/page.tsx b/apps/web/src/app/dash/pass/page.tsx index e4cdcb7d..7b31228d 100644 --- a/apps/web/src/app/dash/pass/page.tsx +++ b/apps/web/src/app/dash/pass/page.tsx @@ -5,11 +5,7 @@ import c from "config"; import { format } from "date-fns"; import TiltWrapper from "@/components/dash/shared/TiltWrapper"; import { createQRpayload } from "@/lib/utils/shared/qr"; -import { - Drawer, - DrawerContent, - DrawerTrigger, -} from "@/components/shadcn/ui/drawer"; +import { Drawer, DrawerContent, DrawerTrigger } from "ui/components/drawer"; import { getHacker } from "db/functions"; import { Hacker } from "db/types"; diff --git a/apps/web/src/app/dash/schedule/schedule-timeline.tsx b/apps/web/src/app/dash/schedule/schedule-timeline.tsx index c356b76a..d2c6b855 100644 --- a/apps/web/src/app/dash/schedule/schedule-timeline.tsx +++ b/apps/web/src/app/dash/schedule/schedule-timeline.tsx @@ -1,6 +1,6 @@ -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; import { type EventType as Event } from "@/lib/types/events"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import c from "config"; import { formatInTimeZone } from "date-fns-tz"; import Link from "next/link"; diff --git a/apps/web/src/app/discord-verify/linked/page.tsx b/apps/web/src/app/discord-verify/linked/page.tsx index 646c1667..181b613e 100644 --- a/apps/web/src/app/discord-verify/linked/page.tsx +++ b/apps/web/src/app/discord-verify/linked/page.tsx @@ -1,5 +1,5 @@ import c from "config"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import Link from "next/link"; import { CheckCircleIcon } from "lucide-react"; diff --git a/apps/web/src/app/i/approval/page.tsx b/apps/web/src/app/i/approval/page.tsx index 55604eaf..a15831af 100644 --- a/apps/web/src/app/i/approval/page.tsx +++ b/apps/web/src/app/i/approval/page.tsx @@ -1,6 +1,6 @@ import c from "config"; import Link from "next/link"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; export default function Page() { return ( diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index b0b86cbd..98dea4d7 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,4 +1,4 @@ -import "./globals.css"; +import "ui/styles/globals.css"; import { ClerkProvider } from "@clerk/nextjs"; import { cookies } from "next/headers"; import { defaultTheme } from "config"; diff --git a/apps/web/src/app/register/page.tsx b/apps/web/src/app/register/page.tsx index 905969af..272e3923 100644 --- a/apps/web/src/app/register/page.tsx +++ b/apps/web/src/app/register/page.tsx @@ -6,7 +6,7 @@ import Navbar from "@/components/shared/Navbar"; import Link from "next/link"; import { redisMGet } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { getUser } from "db/functions"; export default async function Page() { diff --git a/apps/web/src/app/rsvp/page.tsx b/apps/web/src/app/rsvp/page.tsx index 31632a65..5a3dfbb4 100644 --- a/apps/web/src/app/rsvp/page.tsx +++ b/apps/web/src/app/rsvp/page.tsx @@ -13,7 +13,7 @@ import { redisGet, } from "@/lib/utils/server/redis"; import Link from "next/link"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { getUser } from "db/functions"; export default async function RsvpPage({ diff --git a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx index eea68213..99026a65 100644 --- a/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx +++ b/apps/web/src/app/sign-up/[[...sign-up]]/page.tsx @@ -2,7 +2,7 @@ import { SignUp } from "@clerk/nextjs"; import { redisMGet } from "@/lib/utils/server/redis"; import { parseRedisBoolean } from "@/lib/utils/server/redis"; import c from "config"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import Link from "next/link"; export default async function Page() { diff --git a/apps/web/src/components/admin/roles/CreateRoleDialog.tsx b/apps/web/src/components/admin/roles/CreateRoleDialog.tsx index 2a7cc8ea..e2a7529f 100644 --- a/apps/web/src/components/admin/roles/CreateRoleDialog.tsx +++ b/apps/web/src/components/admin/roles/CreateRoleDialog.tsx @@ -7,10 +7,10 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/shadcn/ui/dialog"; -import { Button } from "@/components/shadcn/ui/button"; -import { Input } from "@/components/shadcn/ui/input"; -import { Label } from "@/components/shadcn/ui/label"; +} from "ui/components/dialog"; +import { Button } from "ui/components/button"; +import { Input } from "ui/components/input"; +import { Label } from "ui/components/label"; import { PermissionType } from "@/lib/constants/permission"; import { PermissionMask } from "@/lib/utils/shared/permission"; import { useAction } from "next-safe-action/hooks"; diff --git a/apps/web/src/components/admin/roles/DeleteRoleDialog.tsx b/apps/web/src/components/admin/roles/DeleteRoleDialog.tsx index 0c5a1631..4b4330d5 100644 --- a/apps/web/src/components/admin/roles/DeleteRoleDialog.tsx +++ b/apps/web/src/components/admin/roles/DeleteRoleDialog.tsx @@ -1,14 +1,14 @@ "use client"; import { useState } from "react"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/shadcn/ui/dialog"; +} from "ui/components/dialog"; import { useAction } from "next-safe-action/hooks"; import { deleteRole } from "@/actions/admin/role-actions"; import { toast } from "sonner"; diff --git a/apps/web/src/components/admin/roles/RoleCard.tsx b/apps/web/src/components/admin/roles/RoleCard.tsx index 802e3d5d..cbf5039e 100644 --- a/apps/web/src/components/admin/roles/RoleCard.tsx +++ b/apps/web/src/components/admin/roles/RoleCard.tsx @@ -1,12 +1,12 @@ "use client"; import { useState, useEffect } from "react"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { AccordionItem, AccordionTrigger, AccordionContent, -} from "@/components/shadcn/ui/accordion"; +} from "ui/components/accordion"; import Restricted from "@/components/Restricted"; import { PermissionType } from "@/lib/constants/permission"; import { PermissionMask } from "@/lib/utils/shared/permission"; diff --git a/apps/web/src/components/admin/roles/RolesManager.tsx b/apps/web/src/components/admin/roles/RolesManager.tsx index bc258b10..048e7a1f 100644 --- a/apps/web/src/components/admin/roles/RolesManager.tsx +++ b/apps/web/src/components/admin/roles/RolesManager.tsx @@ -2,8 +2,8 @@ import { useState, useEffect } from "react"; import RoleCard from "@/components/admin/roles/RoleCard"; -import { Accordion } from "@/components/shadcn/ui/accordion"; -import { Button } from "@/components/shadcn/ui/button"; +import { Accordion } from "ui/components/accordion"; +import { Button } from "ui/components/button"; import { useAction } from "next-safe-action/hooks"; import { editRole } from "@/actions/admin/role-actions"; import { toast } from "sonner"; diff --git a/apps/web/src/components/admin/scanner/CheckinScanner.tsx b/apps/web/src/components/admin/scanner/CheckinScanner.tsx index 613fad0a..3bf35c98 100644 --- a/apps/web/src/components/admin/scanner/CheckinScanner.tsx +++ b/apps/web/src/components/admin/scanner/CheckinScanner.tsx @@ -15,8 +15,8 @@ import { DrawerFooter, DrawerHeader, DrawerTitle, -} from "@/components/shadcn/ui/drawer"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/drawer"; +import { Button } from "ui/components/button"; import { useRouter, usePathname, useSearchParams } from "next/navigation"; import { toast } from "sonner"; import { FIVE_MINUTES_IN_MILLISECONDS } from "@/lib/constants"; diff --git a/apps/web/src/components/admin/scanner/PassScanner.tsx b/apps/web/src/components/admin/scanner/PassScanner.tsx index e6429b55..48bcc810 100644 --- a/apps/web/src/components/admin/scanner/PassScanner.tsx +++ b/apps/web/src/components/admin/scanner/PassScanner.tsx @@ -16,8 +16,8 @@ import { DrawerFooter, DrawerHeader, DrawerTitle, -} from "@/components/shadcn/ui/drawer"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/drawer"; +import { Button } from "ui/components/button"; import Link from "next/link"; import { useRouter, usePathname, useSearchParams } from "next/navigation"; import { toast } from "sonner"; diff --git a/apps/web/src/components/admin/shared/AdminBreadcrumbs.tsx b/apps/web/src/components/admin/shared/AdminBreadcrumbs.tsx index 6024f89e..b3d5dea9 100644 --- a/apps/web/src/components/admin/shared/AdminBreadcrumbs.tsx +++ b/apps/web/src/components/admin/shared/AdminBreadcrumbs.tsx @@ -10,7 +10,7 @@ import { BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, -} from "@/components/shadcn/ui/breadcrumb"; +} from "ui/components/breadcrumb"; import { BreadcrumbLabels } from "@/lib/constants/admin"; import React from "react"; diff --git a/apps/web/src/components/admin/shared/NavUserProfile.tsx b/apps/web/src/components/admin/shared/NavUserProfile.tsx index e62ce4c6..011e79e5 100644 --- a/apps/web/src/components/admin/shared/NavUserProfile.tsx +++ b/apps/web/src/components/admin/shared/NavUserProfile.tsx @@ -2,11 +2,7 @@ import { ChevronsUpDown } from "lucide-react"; -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/components/shadcn/ui/avatar"; +import { Avatar, AvatarFallback, AvatarImage } from "ui/components/avatar"; import { DropdownMenu, DropdownMenuContent, @@ -14,12 +10,12 @@ import { DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/shadcn/ui/dropdown-menu"; +} from "ui/components/dropdown-menu"; import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, -} from "@/components/shadcn/ui/sidebar"; +} from "ui/components/sidebar"; import { UserWithRole } from "db/types"; import { SignOutButton } from "@clerk/nextjs"; import Link from "next/link"; diff --git a/apps/web/src/components/admin/shared/sidebar/AdminSidebar.tsx b/apps/web/src/components/admin/shared/sidebar/AdminSidebar.tsx index 77650268..71afede3 100644 --- a/apps/web/src/components/admin/shared/sidebar/AdminSidebar.tsx +++ b/apps/web/src/components/admin/shared/sidebar/AdminSidebar.tsx @@ -14,7 +14,7 @@ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, -} from "@/components/shadcn/ui/sidebar"; +} from "ui/components/sidebar"; import c from "config"; import { UserWithRole } from "db/types"; import { userHasPermission } from "@/lib/utils/server/admin"; diff --git a/apps/web/src/components/admin/shared/sidebar/NavMain.tsx b/apps/web/src/components/admin/shared/sidebar/NavMain.tsx index b753e471..55d7ce18 100644 --- a/apps/web/src/components/admin/shared/sidebar/NavMain.tsx +++ b/apps/web/src/components/admin/shared/sidebar/NavMain.tsx @@ -7,7 +7,7 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger, -} from "@/components/shadcn/ui/collapsible"; +} from "ui/components/collapsible"; import { SidebarGroup, SidebarMenu, @@ -17,7 +17,7 @@ import { SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, -} from "@/components/shadcn/ui/sidebar"; +} from "ui/components/sidebar"; export function NavMain({ items, diff --git a/apps/web/src/components/admin/shared/sidebar/NavSecondary.tsx b/apps/web/src/components/admin/shared/sidebar/NavSecondary.tsx index 54eb13b8..b162e9ac 100644 --- a/apps/web/src/components/admin/shared/sidebar/NavSecondary.tsx +++ b/apps/web/src/components/admin/shared/sidebar/NavSecondary.tsx @@ -10,7 +10,7 @@ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, -} from "@/components/shadcn/ui/sidebar"; +} from "ui/components/sidebar"; export function NavSecondary({ items, diff --git a/apps/web/src/components/admin/toggles/NavItemsManager.tsx b/apps/web/src/components/admin/toggles/NavItemsManager.tsx index 237590d6..6454d576 100644 --- a/apps/web/src/components/admin/toggles/NavItemsManager.tsx +++ b/apps/web/src/components/admin/toggles/NavItemsManager.tsx @@ -9,7 +9,7 @@ import { TableHead, TableHeader, TableRow, -} from "@/components/shadcn/ui/table"; +} from "ui/components/table"; import { Dialog, DialogContent, @@ -18,10 +18,10 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/shadcn/ui/dialog"; -import { Button } from "@/components/shadcn/ui/button"; -import { Input } from "@/components/shadcn/ui/input"; -import { Label } from "@/components/shadcn/ui/label"; +} from "ui/components/dialog"; +import { Button } from "ui/components/button"; +import { Input } from "ui/components/input"; +import { Label } from "ui/components/label"; import { Plus, Loader2 } from "lucide-react"; import { useState } from "react"; import { useAction, useOptimisticAction } from "next-safe-action/hooks"; @@ -33,7 +33,7 @@ import { } from "@/actions/admin/modify-nav-item"; import { toast } from "sonner"; import Link from "next/link"; -import { Switch } from "@/components/shadcn/ui/switch"; +import { Switch } from "ui/components/switch"; interface NavItemsManagerProps { navItems: NavItemToggleType[]; diff --git a/apps/web/src/components/admin/toggles/RegistrationSettings.tsx b/apps/web/src/components/admin/toggles/RegistrationSettings.tsx index 116aa1f3..debd3a9e 100644 --- a/apps/web/src/components/admin/toggles/RegistrationSettings.tsx +++ b/apps/web/src/components/admin/toggles/RegistrationSettings.tsx @@ -1,9 +1,9 @@ "use client"; -import { Button } from "@/components/shadcn/ui/button"; -import { Input } from "@/components/shadcn/ui/input"; -import { Label } from "@/components/shadcn/ui/label"; -import { Switch } from "@/components/shadcn/ui/switch"; +import { Button } from "ui/components/button"; +import { Input } from "ui/components/input"; +import { Label } from "ui/components/label"; +import { Switch } from "ui/components/switch"; import { useOptimisticAction } from "next-safe-action/hooks"; import { toast } from "sonner"; import { diff --git a/apps/web/src/components/admin/toggles/UpdateItemWithConfirmation.tsx b/apps/web/src/components/admin/toggles/UpdateItemWithConfirmation.tsx index dc35d3ea..ac6da09a 100644 --- a/apps/web/src/components/admin/toggles/UpdateItemWithConfirmation.tsx +++ b/apps/web/src/components/admin/toggles/UpdateItemWithConfirmation.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; interface UpdateItemWithConfirmationBaseProps { defaultValue: T; diff --git a/apps/web/src/components/admin/users/ApproveUserButton.tsx b/apps/web/src/components/admin/users/ApproveUserButton.tsx index 7267cc6b..28afecb7 100644 --- a/apps/web/src/components/admin/users/ApproveUserButton.tsx +++ b/apps/web/src/components/admin/users/ApproveUserButton.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { useAction } from "next-safe-action/hooks"; import { setUserApproval } from "@/actions/admin/user-actions"; import { toast } from "sonner"; diff --git a/apps/web/src/components/admin/users/BanUserDialog.tsx b/apps/web/src/components/admin/users/BanUserDialog.tsx index 1e0204dd..7bea559f 100644 --- a/apps/web/src/components/admin/users/BanUserDialog.tsx +++ b/apps/web/src/components/admin/users/BanUserDialog.tsx @@ -7,13 +7,13 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/shadcn/ui/dialog"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/dialog"; +import { Button } from "ui/components/button"; import { toast } from "sonner"; import { useAction } from "next-safe-action/hooks"; import { banUser } from "@/actions/admin/user-actions"; import { useState } from "react"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Textarea } from "ui/components/textarea"; interface BanUserDialogProps { userID: string; diff --git a/apps/web/src/components/admin/users/FilterCategory.tsx b/apps/web/src/components/admin/users/FilterCategory.tsx index 8d1a1ae9..c2704c4b 100644 --- a/apps/web/src/components/admin/users/FilterCategory.tsx +++ b/apps/web/src/components/admin/users/FilterCategory.tsx @@ -1,9 +1,6 @@ "use client"; -import { - AccordionItem, - AccordionTrigger, -} from "@/components/shadcn/ui/accordion"; +import { AccordionItem, AccordionTrigger } from "ui/components/accordion"; import FilterItem from "./FilterItem"; export default function FilterCategory({ diff --git a/apps/web/src/components/admin/users/FilterItem.tsx b/apps/web/src/components/admin/users/FilterItem.tsx index 63e84ef6..3b023880 100644 --- a/apps/web/src/components/admin/users/FilterItem.tsx +++ b/apps/web/src/components/admin/users/FilterItem.tsx @@ -1,8 +1,8 @@ "use client"; -import { AccordionContent } from "@/components/shadcn/ui/accordion"; +import { AccordionContent } from "ui/components/accordion"; -import { Checkbox } from "@/components/shadcn/ui/checkbox"; +import { Checkbox } from "ui/components/checkbox"; import { useSearchParams, usePathname, useRouter } from "next/navigation"; import { useRef } from "react"; import { createPath } from "@/lib/utils/shared/pageParams"; diff --git a/apps/web/src/components/admin/users/Filters.tsx b/apps/web/src/components/admin/users/Filters.tsx index 201978d7..92703707 100644 --- a/apps/web/src/components/admin/users/Filters.tsx +++ b/apps/web/src/components/admin/users/Filters.tsx @@ -7,13 +7,13 @@ import { CardFooter, CardHeader, CardTitle, -} from "@/components/shadcn/ui/card"; +} from "ui/components/card"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, -} from "@/components/shadcn/ui/accordion"; +} from "ui/components/accordion"; import FilterCategory from "./FilterCategory"; type categoryMap = { diff --git a/apps/web/src/components/admin/users/RemoveUserBanDialog.tsx b/apps/web/src/components/admin/users/RemoveUserBanDialog.tsx index a592e88d..bcfa56bc 100644 --- a/apps/web/src/components/admin/users/RemoveUserBanDialog.tsx +++ b/apps/web/src/components/admin/users/RemoveUserBanDialog.tsx @@ -1,10 +1,6 @@ "use client"; -import { - Dialog, - DialogContent, - DialogTrigger, -} from "@/components/shadcn/ui/dialog"; -import { Button } from "@/components/shadcn/ui/button"; +import { Dialog, DialogContent, DialogTrigger } from "ui/components/dialog"; +import { Button } from "ui/components/button"; import { toast } from "sonner"; import { useAction } from "next-safe-action/hooks"; import { removeUserBan } from "@/actions/admin/user-actions"; diff --git a/apps/web/src/components/admin/users/ServerSections.tsx b/apps/web/src/components/admin/users/ServerSections.tsx index 76a2c14d..2ab7d17a 100644 --- a/apps/web/src/components/admin/users/ServerSections.tsx +++ b/apps/web/src/components/admin/users/ServerSections.tsx @@ -1,6 +1,6 @@ import UserInfoSection from "@/components/admin/users/UserInfoSection"; import type { Hacker } from "db/types"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import Link from "next/link"; import { clerkClient } from "@clerk/nextjs/server"; import { titleCase } from "@/lib/utils/shared/string"; diff --git a/apps/web/src/components/admin/users/UpdateRoleDialog.tsx b/apps/web/src/components/admin/users/UpdateRoleDialog.tsx index c4c1fe1c..7f37aef5 100644 --- a/apps/web/src/components/admin/users/UpdateRoleDialog.tsx +++ b/apps/web/src/components/admin/users/UpdateRoleDialog.tsx @@ -7,20 +7,20 @@ import { DialogHeader, DialogTitle, DialogTrigger, -} from "@/components/shadcn/ui/dialog"; +} from "ui/components/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@/components/shadcn/ui/select"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/select"; +import { Button } from "ui/components/button"; import { toast } from "sonner"; import { useAction } from "next-safe-action/hooks"; import { updateRole } from "@/actions/admin/user-actions"; import { useState } from "react"; -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; import { titleCase } from "@/lib/utils/shared/string"; interface UpdateRoleDialogProps { diff --git a/apps/web/src/components/admin/users/UserColumns.tsx b/apps/web/src/components/admin/users/UserColumns.tsx index 85ff7b6f..3db71239 100644 --- a/apps/web/src/components/admin/users/UserColumns.tsx +++ b/apps/web/src/components/admin/users/UserColumns.tsx @@ -5,7 +5,7 @@ import { z } from "zod"; import { createSelectSchema } from "drizzle-zod"; import { userCommonData } from "db/schema"; import Link from "next/link"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { DropdownMenu, DropdownMenuCheckboxItem, @@ -14,12 +14,12 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "../../shadcn/ui/dropdown-menu"; -import { Input } from "@/components/shadcn/ui/input"; +} from "ui/components/dropdown-menu"; +import { Input } from "ui/components/input"; import { MoreHorizontal, ArrowUpDown, User } from "lucide-react"; import type { Column, Row } from "@tanstack/react-table"; import { dataTableFuzzyFilter } from "@/lib/utils/client/shared"; -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; const userValidator = createSelectSchema(userCommonData).extend({ role: z.object({ diff --git a/apps/web/src/components/admin/users/UserDataTable.tsx b/apps/web/src/components/admin/users/UserDataTable.tsx index a9a0aa55..4fdcb478 100644 --- a/apps/web/src/components/admin/users/UserDataTable.tsx +++ b/apps/web/src/components/admin/users/UserDataTable.tsx @@ -18,9 +18,9 @@ import { TableHead, TableHeader, TableRow, -} from "@/components/shadcn/ui/table"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/table"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { useEffect, useState } from "react"; import { dataTableFuzzyFilter } from "@/lib/utils/client/shared"; interface DataTableProps { diff --git a/apps/web/src/components/dash/overview/ClientBubbles.tsx b/apps/web/src/components/dash/overview/ClientBubbles.tsx index 8551b01b..18758ce6 100644 --- a/apps/web/src/components/dash/overview/ClientBubbles.tsx +++ b/apps/web/src/components/dash/overview/ClientBubbles.tsx @@ -2,7 +2,7 @@ import { useState } from "react"; import { useTimer } from "react-timer-hook"; -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; interface CountdownProps { title: string; diff --git a/apps/web/src/components/dash/overview/ServerBubbles.tsx b/apps/web/src/components/dash/overview/ServerBubbles.tsx index e01e995b..a07207ed 100644 --- a/apps/web/src/components/dash/overview/ServerBubbles.tsx +++ b/apps/web/src/components/dash/overview/ServerBubbles.tsx @@ -1,4 +1,4 @@ -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import Link from "next/link"; import c from "config"; import { format } from "date-fns"; diff --git a/apps/web/src/components/dash/shared/ProfileButton.tsx b/apps/web/src/components/dash/shared/ProfileButton.tsx index d302da1a..a887ed73 100644 --- a/apps/web/src/components/dash/shared/ProfileButton.tsx +++ b/apps/web/src/components/dash/shared/ProfileButton.tsx @@ -6,13 +6,9 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/shadcn/ui/dropdown-menu"; -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/components/shadcn/ui/avatar"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/dropdown-menu"; +import { Avatar, AvatarFallback, AvatarImage } from "ui/components/avatar"; +import { Button } from "ui/components/button"; import { auth, currentUser } from "@clerk/nextjs/server"; import { SignOutButton } from "@clerk/nextjs"; import Link from "next/link"; diff --git a/apps/web/src/components/dash/shared/RoleBadge.tsx b/apps/web/src/components/dash/shared/RoleBadge.tsx index b9aecb1e..17b8904e 100644 --- a/apps/web/src/components/dash/shared/RoleBadge.tsx +++ b/apps/web/src/components/dash/shared/RoleBadge.tsx @@ -1,4 +1,4 @@ -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; import { BadgeCheck } from "lucide-react"; import { roles } from "db/schema"; import { InferSelectModel } from "drizzle-orm"; diff --git a/apps/web/src/components/events/admin/EditEventForm.tsx b/apps/web/src/components/events/admin/EditEventForm.tsx index d7589ca0..000359a5 100644 --- a/apps/web/src/components/events/admin/EditEventForm.tsx +++ b/apps/web/src/components/events/admin/EditEventForm.tsx @@ -9,7 +9,7 @@ import { FormControl, FormDescription, FormMessage, -} from "@/components/shadcn/ui/form"; +} from "ui/components/form"; import { Select, SelectTrigger, @@ -17,14 +17,14 @@ import { SelectGroup, SelectItem, SelectValue, -} from "@/components/shadcn/ui/select"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/select"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Textarea } from "ui/components/textarea"; import c from "config"; -import { DateTimePicker } from "@/components/shadcn/ui/date-time-picker/date-time-picker"; +import { DateTimePicker } from "ui/components/date-time-picker/date-time-picker"; import { parseAbsolute, getLocalTimeZone } from "@internationalized/date"; import { useCallback, useState } from "react"; import { useRouter } from "next/navigation"; diff --git a/apps/web/src/components/events/admin/EventDetails.tsx b/apps/web/src/components/events/admin/EventDetails.tsx index 2dba3854..07885fc5 100644 --- a/apps/web/src/components/events/admin/EventDetails.tsx +++ b/apps/web/src/components/events/admin/EventDetails.tsx @@ -1,5 +1,5 @@ import c from "config"; -import { Badge } from "@/components/shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; import Balancer from "react-wrap-balancer"; import { formatInTimeZone } from "date-fns-tz"; import { Event } from "db/types"; diff --git a/apps/web/src/components/events/admin/NewEventForm.tsx b/apps/web/src/components/events/admin/NewEventForm.tsx index a486ded3..b66ea3cb 100644 --- a/apps/web/src/components/events/admin/NewEventForm.tsx +++ b/apps/web/src/components/events/admin/NewEventForm.tsx @@ -8,7 +8,7 @@ import { FormControl, FormDescription, FormMessage, -} from "@/components/shadcn/ui/form"; +} from "ui/components/form"; import { Select, SelectTrigger, @@ -16,14 +16,14 @@ import { SelectGroup, SelectItem, SelectValue, -} from "@/components/shadcn/ui/select"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/select"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Textarea } from "ui/components/textarea"; import c from "config"; -import { DateTimePicker } from "@/components/shadcn/ui/date-time-picker/date-time-picker"; +import { DateTimePicker } from "ui/components/date-time-picker/date-time-picker"; import { parseAbsolute, getLocalTimeZone } from "@internationalized/date"; import { useAction } from "next-safe-action/hooks"; import { createEvent } from "@/actions/admin/event-actions"; diff --git a/apps/web/src/components/events/shared/EventColumns.tsx b/apps/web/src/components/events/shared/EventColumns.tsx index fb6ed5a6..06f14e91 100644 --- a/apps/web/src/components/events/shared/EventColumns.tsx +++ b/apps/web/src/components/events/shared/EventColumns.tsx @@ -2,14 +2,14 @@ import { ColumnDef } from "@tanstack/react-table"; import Link from "next/link"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/shadcn/ui/dropdown-menu"; +} from "ui/components/dropdown-menu"; import { AlertDialog, AlertDialogContent, @@ -20,8 +20,8 @@ import { AlertDialogDescription, AlertDialogCancel, AlertDialogAction, -} from "@/components/shadcn/ui/alert-dialog"; -import { Badge } from "@/components/shadcn/ui/badge"; +} from "ui/components/alert-dialog"; +import { Badge } from "ui/components/badge"; import c from "config"; import { eventTableValidatorType } from "@/lib/types/events"; import { useState } from "react"; diff --git a/apps/web/src/components/events/shared/EventDataTable.tsx b/apps/web/src/components/events/shared/EventDataTable.tsx index 30295da7..e32f6933 100644 --- a/apps/web/src/components/events/shared/EventDataTable.tsx +++ b/apps/web/src/components/events/shared/EventDataTable.tsx @@ -14,7 +14,7 @@ import { TableHead, TableHeader, TableRow, -} from "@/components/shadcn/ui/table"; +} from "ui/components/table"; interface DataTableProps { columns: ColumnDef[]; diff --git a/apps/web/src/components/landing/Hero.tsx b/apps/web/src/components/landing/Hero.tsx index 59d5c7da..6230f850 100644 --- a/apps/web/src/components/landing/Hero.tsx +++ b/apps/web/src/components/landing/Hero.tsx @@ -1,6 +1,6 @@ import Image from "next/image"; import Link from "next/link"; -import { Button } from "../shadcn/ui/button"; +import { Button } from "ui/components/button"; export default function Hero() { return ( diff --git a/apps/web/src/components/landing/TeamMember.tsx b/apps/web/src/components/landing/TeamMember.tsx index 870d8eeb..dbfaeeb5 100644 --- a/apps/web/src/components/landing/TeamMember.tsx +++ b/apps/web/src/components/landing/TeamMember.tsx @@ -8,7 +8,7 @@ import { CardFooter, CardHeader, CardTitle, -} from "../shadcn/ui/card"; +} from "ui/components/card"; import { Oswald } from "next/font/google"; import Image from "next/image"; import { useState } from "react"; diff --git a/apps/web/src/components/registration/RegisterForm.tsx b/apps/web/src/components/registration/RegisterForm.tsx index 85abd141..b6a05e7d 100644 --- a/apps/web/src/components/registration/RegisterForm.tsx +++ b/apps/web/src/components/registration/RegisterForm.tsx @@ -8,7 +8,7 @@ import { FormMessage, FormLabel, FormField, -} from "@/components/shadcn/ui/form"; +} from "ui/components/form"; import { Select, SelectContent, @@ -16,12 +16,12 @@ import { SelectTrigger, SelectValue, SelectGroup, -} from "@/components/shadcn/ui/select"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/select"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { zodResolver } from "@hookform/resolvers/zod"; import FormGroupWrapper from "./FormGroupWrapper"; -import { Checkbox } from "@/components/shadcn/ui/checkbox"; +import { Checkbox } from "ui/components/checkbox"; import Link from "next/link"; import c from "config"; import { @@ -31,22 +31,22 @@ import { CommandInput, CommandItem, CommandList, -} from "@/components/shadcn/ui/command"; +} from "ui/components/command"; import { Popover, PopoverContent, PopoverTrigger, PopoverClose, -} from "@/components/shadcn/ui/popover"; +} from "ui/components/popover"; import { Check, ChevronsUpDown } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import { useEffect, useCallback, useState } from "react"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Textarea } from "ui/components/textarea"; import { useAuth } from "@clerk/nextjs"; import { useRouter } from "next/navigation"; import { FileRejection, useDropzone } from "react-dropzone"; import { put } from "@/lib/utils/client/file-upload"; -import { Tag, TagInput } from "@/components/shadcn/ui/tag/tag-input"; +import { Tag, TagInput } from "ui/components/tag/tag-input"; import CreatingRegistration from "./CreatingRegistration"; import { staticUploads } from "config"; import { diff --git a/apps/web/src/components/registration/RegistrationFeedbackAlert.tsx b/apps/web/src/components/registration/RegistrationFeedbackAlert.tsx index 40d1c922..fca8427b 100644 --- a/apps/web/src/components/registration/RegistrationFeedbackAlert.tsx +++ b/apps/web/src/components/registration/RegistrationFeedbackAlert.tsx @@ -9,7 +9,7 @@ import { AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, -} from "../shadcn/ui/alert-dialog"; +} from "ui/components/alert-dialog"; import { CircleAlert } from "lucide-react"; interface RegistrationFeedbackAlertProps { diff --git a/apps/web/src/components/rsvp/ConfirmDialogue.tsx b/apps/web/src/components/rsvp/ConfirmDialogue.tsx index 219c304b..cdf711ea 100644 --- a/apps/web/src/components/rsvp/ConfirmDialogue.tsx +++ b/apps/web/src/components/rsvp/ConfirmDialogue.tsx @@ -2,7 +2,7 @@ import { useWindowSize } from "usehooks-ts"; import Confetti from "react-confetti"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { useState, useEffect } from "react"; import { useAction } from "next-safe-action/hooks"; import { rsvpMyself } from "@/actions/rsvp"; diff --git a/apps/web/src/components/schedule/EventItem.tsx b/apps/web/src/components/schedule/EventItem.tsx index 6fbdb7a0..27922edc 100644 --- a/apps/web/src/components/schedule/EventItem.tsx +++ b/apps/web/src/components/schedule/EventItem.tsx @@ -1,6 +1,6 @@ import { EventType } from "@/lib/types/events"; import Link from "next/link"; -import { Badge } from "../shadcn/ui/badge"; +import { Badge } from "ui/components/badge"; import { formatInTimeZone } from "date-fns-tz"; import c from "config"; diff --git a/apps/web/src/components/settings/AccountSettings.tsx b/apps/web/src/components/settings/AccountSettings.tsx index ace89637..0c3f8129 100644 --- a/apps/web/src/components/settings/AccountSettings.tsx +++ b/apps/web/src/components/settings/AccountSettings.tsx @@ -1,12 +1,12 @@ "use client"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; -import { Label } from "@/components/shadcn/ui/label"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; +import { Label } from "ui/components/label"; import { toast } from "sonner"; import { useAction } from "next-safe-action/hooks"; import { modifyAccountSettings } from "@/actions/user-profile-mod"; -import { Checkbox } from "@/components/shadcn/ui/checkbox"; +import { Checkbox } from "ui/components/checkbox"; import { Loader2 } from "lucide-react"; import { isProfane } from "no-profanity"; import { modifyAccountSettingsSchema } from "@/validators/settings"; @@ -21,7 +21,7 @@ import { FormLabel, FormMessage, FormDescription, -} from "../shadcn/ui/form"; +} from "ui/components/form"; type UserProps = z.infer; diff --git a/apps/web/src/components/settings/DiscordVerifyButton.tsx b/apps/web/src/components/settings/DiscordVerifyButton.tsx index 5a70f7b8..7a942699 100644 --- a/apps/web/src/components/settings/DiscordVerifyButton.tsx +++ b/apps/web/src/components/settings/DiscordVerifyButton.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import { useAction } from "next-safe-action/hooks"; import { confirmVerifyDiscord } from "@/actions/discord-verify"; import { useRouter, useSearchParams } from "next/navigation"; diff --git a/apps/web/src/components/settings/ProfilePhotoSettings.tsx b/apps/web/src/components/settings/ProfilePhotoSettings.tsx index e15133b1..404eba8e 100644 --- a/apps/web/src/components/settings/ProfilePhotoSettings.tsx +++ b/apps/web/src/components/settings/ProfilePhotoSettings.tsx @@ -1,12 +1,12 @@ "use client"; -import { Avatar, AvatarImage } from "../shadcn/ui/avatar"; +import { Avatar, AvatarImage } from "ui/components/avatar"; import { encodeFileAsBase64 } from "@/lib/utils/shared/files"; import { updateProfileImage } from "@/actions/user-profile-mod"; import { useAction } from "next-safe-action/hooks"; import { toast } from "sonner"; import { useRef, useState } from "react"; -import { Input } from "../shadcn/ui/input"; -import { Button } from "../shadcn/ui/button"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { Loader2 } from "lucide-react"; export default function ProfilePhotoSettings({ diff --git a/apps/web/src/components/settings/ProfileSettings.tsx b/apps/web/src/components/settings/ProfileSettings.tsx index d4b0dd42..0db8cd8a 100644 --- a/apps/web/src/components/settings/ProfileSettings.tsx +++ b/apps/web/src/components/settings/ProfileSettings.tsx @@ -1,15 +1,15 @@ "use client"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; -import { Label } from "@/components/shadcn/ui/label"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; +import { Label } from "ui/components/label"; +import { Textarea } from "ui/components/textarea"; import ProfilePhotoSettings from "./ProfilePhotoSettings"; import { modifyProfileData } from "@/actions/user-profile-mod"; import { useAction } from "next-safe-action/hooks"; import { toast } from "sonner"; import { useEffect, useState } from "react"; -import { Tag, TagInput } from "@/components/shadcn/ui/tag/tag-input"; +import { Tag, TagInput } from "ui/components/tag/tag-input"; import { Loader2 } from "lucide-react"; import { useForm } from "react-hook-form"; import { profileSettingsSchema } from "@/validators/settings"; @@ -22,7 +22,7 @@ import { FormItem, FormLabel, FormMessage, -} from "../shadcn/ui/form"; +} from "ui/components/form"; interface ProfileData { pronouns: string; diff --git a/apps/web/src/components/settings/RegistrationForm/RegisterFormSettings.tsx b/apps/web/src/components/settings/RegistrationForm/RegisterFormSettings.tsx index cfb03730..e03f12fa 100644 --- a/apps/web/src/components/settings/RegistrationForm/RegisterFormSettings.tsx +++ b/apps/web/src/components/settings/RegistrationForm/RegisterFormSettings.tsx @@ -8,7 +8,7 @@ import { FormMessage, FormLabel, FormField, -} from "@/components/shadcn/ui/form"; +} from "ui/components/form"; import { Select, SelectContent, @@ -16,13 +16,13 @@ import { SelectTrigger, SelectValue, SelectGroup, -} from "@/components/shadcn/ui/select"; -import { Input } from "@/components/shadcn/ui/input"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/select"; +import { Input } from "ui/components/input"; +import { Button } from "ui/components/button"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import FormGroupWrapper from "@/components/registration/FormGroupWrapper"; -import { Checkbox } from "@/components/shadcn/ui/checkbox"; +import { Checkbox } from "ui/components/checkbox"; import c, { staticUploads } from "config"; import { Command, @@ -31,16 +31,12 @@ import { CommandInput, CommandItem, CommandList, -} from "@/components/shadcn/ui/command"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/shadcn/ui/popover"; +} from "ui/components/command"; +import { Popover, PopoverContent, PopoverTrigger } from "ui/components/popover"; import { Check, ChevronsUpDown } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import { useEffect, useCallback, useState, useRef } from "react"; -import { Textarea } from "@/components/shadcn/ui/textarea"; +import { Textarea } from "ui/components/textarea"; import { FileRejection, useDropzone } from "react-dropzone"; import { put } from "@/lib/utils/client/file-upload"; import { useAction } from "next-safe-action/hooks"; diff --git a/apps/web/src/components/settings/RegistrationSettings.tsx b/apps/web/src/components/settings/RegistrationSettings.tsx index 4d6f9150..9b885a9e 100644 --- a/apps/web/src/components/settings/RegistrationSettings.tsx +++ b/apps/web/src/components/settings/RegistrationSettings.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button } from "@/components/shadcn/ui/button"; +import { Button } from "ui/components/button"; import Link from "next/link"; import { useState } from "react"; import { Loader2 } from "lucide-react"; diff --git a/apps/web/src/components/shared/Loading.tsx b/apps/web/src/components/shared/Loading.tsx index b3ef21c3..574a139a 100644 --- a/apps/web/src/components/shared/Loading.tsx +++ b/apps/web/src/components/shared/Loading.tsx @@ -1,4 +1,4 @@ -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import { Loader2 } from "lucide-react"; interface LoadingProps { className?: string; diff --git a/apps/web/src/components/shared/MobileNavBarLinks.tsx b/apps/web/src/components/shared/MobileNavBarLinks.tsx index bf3cc1c5..f07c64ff 100644 --- a/apps/web/src/components/shared/MobileNavBarLinks.tsx +++ b/apps/web/src/components/shared/MobileNavBarLinks.tsx @@ -2,7 +2,7 @@ import { getAllNavItems } from "@/lib/utils/server/redis"; import { DropdownMenuItem, DropdownMenuSeparator, -} from "@/components/shadcn/ui/dropdown-menu"; +} from "ui/components/dropdown-menu"; import Link from "next/link"; export default async function MobileNavBarLinks() { const navLinks = await getAllNavItems(); diff --git a/apps/web/src/components/shared/Navbar.tsx b/apps/web/src/components/shared/Navbar.tsx index b4ea48a8..7d6cc22e 100644 --- a/apps/web/src/components/shared/Navbar.tsx +++ b/apps/web/src/components/shared/Navbar.tsx @@ -1,12 +1,12 @@ import Link from "next/link"; import Image from "next/image"; import c from "config"; -import { Button } from "../shadcn/ui/button"; +import { Button } from "ui/components/button"; import ProfileButton from "./ProfileButton"; import { auth, currentUser } from "@clerk/nextjs/server"; import NavBarLinksGrouper from "./NavBarLinksGrouper"; import { Oswald } from "next/font/google"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import { getUser } from "db/functions"; const oswald = Oswald({ diff --git a/apps/web/src/components/shared/ProfileButton.tsx b/apps/web/src/components/shared/ProfileButton.tsx index 7b764433..0a05172f 100644 --- a/apps/web/src/components/shared/ProfileButton.tsx +++ b/apps/web/src/components/shared/ProfileButton.tsx @@ -6,13 +6,9 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@/components/shadcn/ui/dropdown-menu"; -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/components/shadcn/ui/avatar"; -import { Button } from "@/components/shadcn/ui/button"; +} from "ui/components/dropdown-menu"; +import { Avatar, AvatarFallback, AvatarImage } from "ui/components/avatar"; +import { Button } from "ui/components/button"; import { auth } from "@clerk/nextjs/server"; import { SignOutButton } from "@clerk/nextjs"; import Link from "next/link"; diff --git a/apps/web/src/components/shared/ThemeSwitcher.tsx b/apps/web/src/components/shared/ThemeSwitcher.tsx index 3f67064f..ac94c2d3 100644 --- a/apps/web/src/components/shared/ThemeSwitcher.tsx +++ b/apps/web/src/components/shared/ThemeSwitcher.tsx @@ -1,5 +1,5 @@ "use client"; -import { DropdownMenuItem } from "@/components/shadcn/ui/dropdown-menu"; +import { DropdownMenuItem } from "ui/components/dropdown-menu"; function toggleTheme() { document.body.classList.toggle("dark"); diff --git a/apps/web/src/lib/utils/server/logError.ts b/apps/web/src/lib/utils/server/logError.ts deleted file mode 100644 index 510590e4..00000000 --- a/apps/web/src/lib/utils/server/logError.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { db } from "db"; -import { errorLog } from "db/schema"; -import { nanoid } from "nanoid"; - -interface LogErrorParams { - error: unknown; - userID?: string; - route: string; -} - -export async function logError({ error, userID, route }: LogErrorParams) { - if (error instanceof Error) { - const errorID = nanoid(); - await db.insert(errorLog).values({ - id: errorID, - message: error.message, - userID: userID || null, - route, - }); - return errorID; - } else { - throw new Error("Error must be an instance of Error"); - } -} diff --git a/apps/web/tailwind.config.js b/apps/web/tailwind.config.js index 138375ed..209cecf5 100644 --- a/apps/web/tailwind.config.js +++ b/apps/web/tailwind.config.js @@ -8,6 +8,7 @@ module.exports = { "./components/**/*.{ts,tsx}", "./app/**/*.{ts,tsx}", "./src/**/*.{ts,tsx}", + "../../packages/ui/src/**/*.{ts,tsx}", ], theme: { container: { diff --git a/packages/ui/components.json b/packages/ui/components.json new file mode 100644 index 00000000..360fb9a5 --- /dev/null +++ b/packages/ui/components.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "../../apps/web/tailwind.config.js", + "css": "src/styles/globals.css", + "baseColor": "zinc", + "cssVariables": true + }, + "aliases": { + "components": "ui/components", + "hooks": "ui/hooks", + "utils": "ui/lib/utils", + "ui": "ui/components", + "lib": "ui/lib" + } +} diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 00000000..00c4194d --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,44 @@ +{ + "name": "ui", + "version": "1.0.0", + "private": true, + "description": "Shared shadcn components for HackKit", + "main": "./src/index.ts", + "types": "./src/index.ts", + "sideEffects": [ + "**/*.css" + ], + "exports": { + ".": "./src/index.ts", + "./components/*": "./src/components/*.tsx", + "./hooks/*": "./src/hooks/*.tsx", + "./lib/*": "./src/lib/*.ts", + "./styles/*": "./src/styles/*" + }, + "peerDependencies": { + "lucide-react": "^0.411.0", + "next": "14.x", + "react": "18.x", + "react-dom": "18.x", + "sonner": "1.5.x" + }, + "dependencies": { + "@internationalized/date": "^3.5.4", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", + "embla-carousel-react": "8.1.7", + "nanoid": "^5.0.7", + "radix-ui": "^1.4.3", + "react-aria": "^3.33.1", + "react-hook-form": "7.52.1", + "react-stately": "^3.31.1", + "tailwind-merge": "^2.4.0", + "vaul": "^0.9.1" + }, + "devDependencies": { + "@types/react": "18.3.3", + "@types/react-dom": "18.3.0", + "typescript": "5.5.3" + } +} diff --git a/apps/web/src/components/shadcn/ui/accordion.tsx b/packages/ui/src/components/accordion.tsx similarity index 94% rename from apps/web/src/components/shadcn/ui/accordion.tsx rename to packages/ui/src/components/accordion.tsx index 20851dab..0bb0f932 100644 --- a/apps/web/src/components/shadcn/ui/accordion.tsx +++ b/packages/ui/src/components/accordion.tsx @@ -1,10 +1,10 @@ "use client"; import * as React from "react"; -import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { Accordion as AccordionPrimitive } from "radix-ui"; import { ChevronDown } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Accordion = AccordionPrimitive.Root; diff --git a/apps/web/src/components/shadcn/ui/alert-dialog.tsx b/packages/ui/src/components/alert-dialog.tsx similarity index 95% rename from apps/web/src/components/shadcn/ui/alert-dialog.tsx rename to packages/ui/src/components/alert-dialog.tsx index 6eddb8ec..ec14cf19 100644 --- a/apps/web/src/components/shadcn/ui/alert-dialog.tsx +++ b/packages/ui/src/components/alert-dialog.tsx @@ -1,10 +1,10 @@ "use client"; import * as React from "react"; -import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; +import { AlertDialog as AlertDialogPrimitive } from "radix-ui"; -import { cn } from "@/lib/utils/client/cn"; -import { buttonVariants } from "@/components/shadcn/ui/button"; +import { cn } from "ui/lib/utils"; +import { buttonVariants } from "ui/components/button"; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/apps/web/src/components/shadcn/ui/avatar.tsx b/packages/ui/src/components/avatar.tsx similarity index 92% rename from apps/web/src/components/shadcn/ui/avatar.tsx rename to packages/ui/src/components/avatar.tsx index 90a2985d..e3df787e 100644 --- a/apps/web/src/components/shadcn/ui/avatar.tsx +++ b/packages/ui/src/components/avatar.tsx @@ -1,9 +1,9 @@ "use client"; import * as React from "react"; -import * as AvatarPrimitive from "@radix-ui/react-avatar"; +import { Avatar as AvatarPrimitive } from "radix-ui"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Avatar = React.forwardRef< React.ElementRef, diff --git a/apps/web/src/components/shadcn/ui/badge.tsx b/packages/ui/src/components/badge.tsx similarity index 90% rename from apps/web/src/components/shadcn/ui/badge.tsx rename to packages/ui/src/components/badge.tsx index cfb359e5..220db883 100644 --- a/apps/web/src/components/shadcn/ui/badge.tsx +++ b/packages/ui/src/components/badge.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const badgeVariants = cva( "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", @@ -25,7 +25,9 @@ const badgeVariants = cva( export interface BadgeProps extends React.HTMLAttributes, - VariantProps {} + VariantProps { + children?: React.ReactNode; +} function Badge({ className, variant, ...props }: BadgeProps) { return ( diff --git a/apps/web/src/components/shadcn/ui/breadcrumb.tsx b/packages/ui/src/components/breadcrumb.tsx similarity index 94% rename from apps/web/src/components/shadcn/ui/breadcrumb.tsx rename to packages/ui/src/components/breadcrumb.tsx index f19046ac..1c3df9fe 100644 --- a/apps/web/src/components/shadcn/ui/breadcrumb.tsx +++ b/packages/ui/src/components/breadcrumb.tsx @@ -1,8 +1,8 @@ import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; +import { Slot as SlotPrimitive } from "radix-ui"; import { ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Breadcrumb = React.forwardRef< HTMLElement, @@ -45,7 +45,7 @@ const BreadcrumbLink = React.forwardRef< asChild?: boolean; } >(({ asChild, className, ...props }, ref) => { - const Comp = asChild ? Slot : "a"; + const Comp = asChild ? SlotPrimitive.Slot : "a"; return ( ( ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button"; + const Comp = asChild ? SlotPrimitive.Slot : "button"; return ( ; diff --git a/apps/web/src/components/shadcn/ui/checkbox.tsx b/packages/ui/src/components/checkbox.tsx similarity index 89% rename from apps/web/src/components/shadcn/ui/checkbox.tsx rename to packages/ui/src/components/checkbox.tsx index 6f1abca5..0ae71b96 100644 --- a/apps/web/src/components/shadcn/ui/checkbox.tsx +++ b/packages/ui/src/components/checkbox.tsx @@ -1,10 +1,10 @@ "use client"; import * as React from "react"; -import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import { Checkbox as CheckboxPrimitive } from "radix-ui"; import { Check } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Checkbox = React.forwardRef< React.ElementRef, diff --git a/apps/web/src/components/shadcn/ui/collapsible.tsx b/packages/ui/src/components/collapsible.tsx similarity index 79% rename from apps/web/src/components/shadcn/ui/collapsible.tsx rename to packages/ui/src/components/collapsible.tsx index cb003d17..acb56414 100644 --- a/apps/web/src/components/shadcn/ui/collapsible.tsx +++ b/packages/ui/src/components/collapsible.tsx @@ -1,6 +1,6 @@ "use client"; -import * as CollapsiblePrimitive from "@radix-ui/react-collapsible"; +import { Collapsible as CollapsiblePrimitive } from "radix-ui"; const Collapsible = CollapsiblePrimitive.Root; diff --git a/apps/web/src/components/shadcn/ui/command.tsx b/packages/ui/src/components/command.tsx similarity index 95% rename from apps/web/src/components/shadcn/ui/command.tsx rename to packages/ui/src/components/command.tsx index a3ca5bd1..31df3c1d 100644 --- a/apps/web/src/components/shadcn/ui/command.tsx +++ b/packages/ui/src/components/command.tsx @@ -1,12 +1,11 @@ "use client"; import * as React from "react"; -import { DialogProps } from "@radix-ui/react-dialog"; import { Command as CommandPrimitive } from "cmdk"; import { Search } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; -import { Dialog, DialogContent } from "@/components/shadcn/ui/dialog"; +import { cn } from "ui/lib/utils"; +import { Dialog, DialogContent } from "ui/components/dialog"; const Command = React.forwardRef< React.ElementRef, @@ -23,7 +22,7 @@ const Command = React.forwardRef< )); Command.displayName = CommandPrimitive.displayName; -interface CommandDialogProps extends DialogProps {} +type CommandDialogProps = React.ComponentProps; const CommandDialog = ({ children, ...props }: CommandDialogProps) => { return ( diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/calendar.tsx b/packages/ui/src/components/date-time-picker/calendar.tsx similarity index 99% rename from apps/web/src/components/shadcn/ui/date-time-picker/calendar.tsx rename to packages/ui/src/components/date-time-picker/calendar.tsx index 4a8575b0..3cb87705 100644 --- a/apps/web/src/components/shadcn/ui/date-time-picker/calendar.tsx +++ b/packages/ui/src/components/date-time-picker/calendar.tsx @@ -19,7 +19,7 @@ import { useLocale, } from "react-aria"; import { CalendarState, useCalendarState } from "react-stately"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; import { Button } from "../button"; function Calendar(props: CalendarProps) { diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/date-field.tsx b/packages/ui/src/components/date-time-picker/date-field.tsx similarity index 96% rename from apps/web/src/components/shadcn/ui/date-time-picker/date-field.tsx rename to packages/ui/src/components/date-time-picker/date-field.tsx index a015fb41..929bd7f9 100644 --- a/apps/web/src/components/shadcn/ui/date-time-picker/date-field.tsx +++ b/packages/ui/src/components/date-time-picker/date-field.tsx @@ -10,7 +10,7 @@ import { useLocale, } from "react-aria"; import { useDateFieldState } from "react-stately"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; function DateField(props: AriaDatePickerProps) { const ref = useRef(null); diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/date-segment.tsx b/packages/ui/src/components/date-time-picker/date-segment.tsx similarity index 95% rename from apps/web/src/components/shadcn/ui/date-time-picker/date-segment.tsx rename to packages/ui/src/components/date-time-picker/date-segment.tsx index 1bc010d6..95945611 100644 --- a/apps/web/src/components/shadcn/ui/date-time-picker/date-segment.tsx +++ b/packages/ui/src/components/date-time-picker/date-segment.tsx @@ -3,7 +3,7 @@ import { useRef } from "react"; import { useDateSegment } from "react-aria"; import { DateFieldState, DateSegment as IDateSegment } from "react-stately"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; interface DateSegmentProps { segment: IDateSegment; diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/date-time-picker.tsx b/packages/ui/src/components/date-time-picker/date-time-picker.tsx similarity index 95% rename from apps/web/src/components/shadcn/ui/date-time-picker/date-time-picker.tsx rename to packages/ui/src/components/date-time-picker/date-time-picker.tsx index 6ebc9b07..908c0c7a 100644 --- a/apps/web/src/components/shadcn/ui/date-time-picker/date-time-picker.tsx +++ b/packages/ui/src/components/date-time-picker/date-time-picker.tsx @@ -9,8 +9,8 @@ import { useInteractOutside, } from "react-aria"; import { DatePickerStateOptions, useDatePickerState } from "react-stately"; -import { useForwardedRef } from "@/lib/hooks/useForwardedRef"; -import { cn } from "@/lib/utils/client/cn"; +import { useForwardedRef } from "ui/hooks/useForwardedRef"; +import { cn } from "ui/lib/utils"; import { Button } from "../button"; import { Popover, PopoverContent, PopoverTrigger } from "../popover"; import { Calendar } from "./calendar"; diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/time-field.tsx b/packages/ui/src/components/date-time-picker/time-field.tsx similarity index 96% rename from apps/web/src/components/shadcn/ui/date-time-picker/time-field.tsx rename to packages/ui/src/components/date-time-picker/time-field.tsx index 7905d22a..928e8e9b 100644 --- a/apps/web/src/components/shadcn/ui/date-time-picker/time-field.tsx +++ b/packages/ui/src/components/date-time-picker/time-field.tsx @@ -9,7 +9,7 @@ import { useTimeField, } from "react-aria"; import { useTimeFieldState } from "react-stately"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; function TimeField(props: AriaTimeFieldProps) { const ref = useRef(null); diff --git a/apps/web/src/components/shadcn/ui/date-time-picker/time-picker.tsx b/packages/ui/src/components/date-time-picker/time-picker.tsx similarity index 100% rename from apps/web/src/components/shadcn/ui/date-time-picker/time-picker.tsx rename to packages/ui/src/components/date-time-picker/time-picker.tsx diff --git a/apps/web/src/components/shadcn/ui/dialog.tsx b/packages/ui/src/components/dialog.tsx similarity index 93% rename from apps/web/src/components/shadcn/ui/dialog.tsx rename to packages/ui/src/components/dialog.tsx index 22dff8ab..09e42bb6 100644 --- a/apps/web/src/components/shadcn/ui/dialog.tsx +++ b/packages/ui/src/components/dialog.tsx @@ -1,20 +1,17 @@ "use client"; import * as React from "react"; -import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { Dialog as DialogPrimitive } from "radix-ui"; import { X } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Dialog = DialogPrimitive.Root; const DialogTrigger = DialogPrimitive.Trigger; -const DialogPortal = ({ - className, - ...props -}: DialogPrimitive.DialogPortalProps) => ( - +const DialogPortal = (props: DialogPrimitive.DialogPortalProps) => ( + ); DialogPortal.displayName = DialogPrimitive.Portal.displayName; diff --git a/apps/web/src/components/shadcn/ui/drawer.tsx b/packages/ui/src/components/drawer.tsx similarity index 98% rename from apps/web/src/components/shadcn/ui/drawer.tsx rename to packages/ui/src/components/drawer.tsx index 12bf68d2..ba745247 100644 --- a/apps/web/src/components/shadcn/ui/drawer.tsx +++ b/packages/ui/src/components/drawer.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import { Drawer as DrawerPrimitive } from "vaul"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const Drawer = ({ shouldScaleBackground = true, diff --git a/apps/web/src/components/shadcn/ui/dropdown-menu.tsx b/packages/ui/src/components/dropdown-menu.tsx similarity index 98% rename from apps/web/src/components/shadcn/ui/dropdown-menu.tsx rename to packages/ui/src/components/dropdown-menu.tsx index 1f6700be..16cdd229 100644 --- a/apps/web/src/components/shadcn/ui/dropdown-menu.tsx +++ b/packages/ui/src/components/dropdown-menu.tsx @@ -1,10 +1,10 @@ "use client"; import * as React from "react"; -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; +import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/apps/web/src/components/shadcn/ui/form.tsx b/packages/ui/src/components/form.tsx similarity index 92% rename from apps/web/src/components/shadcn/ui/form.tsx rename to packages/ui/src/components/form.tsx index b8dba38b..d18de592 100644 --- a/apps/web/src/components/shadcn/ui/form.tsx +++ b/packages/ui/src/components/form.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import * as LabelPrimitive from "@radix-ui/react-label"; -import { Slot } from "@radix-ui/react-slot"; +import { Label as LabelPrimitive, Slot as SlotPrimitive } from "radix-ui"; + import { Controller, ControllerProps, @@ -10,8 +10,8 @@ import { useFormContext, } from "react-hook-form"; -import { cn } from "@/lib/utils/client/cn"; -import { Label } from "@/components/shadcn/ui/label"; +import { cn } from "ui/lib/utils"; +import { Label } from "ui/components/label"; const Form = FormProvider; @@ -102,14 +102,14 @@ const FormLabel = React.forwardRef< FormLabel.displayName = "FormLabel"; const FormControl = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ ...props }, ref) => { const { error, formItemId, formDescriptionId, formMessageId } = useFormField(); return ( - {} diff --git a/apps/web/src/components/shadcn/ui/label.tsx b/packages/ui/src/components/label.tsx similarity index 86% rename from apps/web/src/components/shadcn/ui/label.tsx rename to packages/ui/src/components/label.tsx index add608b6..e0d8c8c9 100644 --- a/apps/web/src/components/shadcn/ui/label.tsx +++ b/packages/ui/src/components/label.tsx @@ -1,10 +1,10 @@ "use client"; import * as React from "react"; -import * as LabelPrimitive from "@radix-ui/react-label"; +import { Label as LabelPrimitive } from "radix-ui"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/lib/utils/client/cn"; +import { cn } from "ui/lib/utils"; const labelVariants = cva( "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", diff --git a/apps/web/src/components/shadcn/ui/pagination.tsx b/packages/ui/src/components/pagination.tsx similarity index 95% rename from apps/web/src/components/shadcn/ui/pagination.tsx rename to packages/ui/src/components/pagination.tsx index 051ca45a..a4d47bfd 100644 --- a/apps/web/src/components/shadcn/ui/pagination.tsx +++ b/packages/ui/src/components/pagination.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react"; import Link from "next/link"; -import { cn } from "@/lib/utils/client/cn"; -import { ButtonProps, buttonVariants } from "@/components/shadcn/ui/button"; +import { cn } from "ui/lib/utils"; +import { ButtonProps, buttonVariants } from "ui/components/button"; const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (