diff --git a/apps/v4/app/(app)/themes/layout.tsx b/apps/v4/app/(app)/themes/layout.tsx deleted file mode 100644 index 99951af1ae..0000000000 --- a/apps/v4/app/(app)/themes/layout.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { type Metadata } from "next" -import Link from "next/link" - -import { Announcement } from "@/components/announcement" -import { - PageActions, - PageHeader, - PageHeaderDescription, - PageHeaderHeading, -} from "@/components/page-header" -import { Button } from "@/registry/new-york-v4/ui/button" - -const title = "Pick a Color. Make it yours." -const description = - "Try our hand-picked themes. Copy and paste them into your project. New theme editor coming soon." - -export const metadata: Metadata = { - title, - description, - openGraph: { - images: [ - { - url: `/og?title=${encodeURIComponent( - title - )}&description=${encodeURIComponent(description)}`, - }, - ], - }, - twitter: { - card: "summary_large_image", - images: [ - { - url: `/og?title=${encodeURIComponent( - title - )}&description=${encodeURIComponent(description)}`, - }, - ], - }, -} - -export default function ThemesLayout({ - children, -}: { - children: React.ReactNode -}) { - return ( -
- - - {title} - {description} - - - - - - {children} -
- ) -} diff --git a/apps/v4/app/(app)/themes/page.tsx b/apps/v4/app/(app)/themes/page.tsx deleted file mode 100644 index a9d44bd5f6..0000000000 --- a/apps/v4/app/(app)/themes/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { CardsDemo } from "@/components/cards" -import { ThemeCustomizer } from "@/components/theme-customizer" - -export const dynamic = "force-static" -export const revalidate = false - -export default function ThemesPage() { - return ( - <> -
-
- -
-
-
-
- -
-
- - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/analytics-date-picker.tsx b/apps/v4/app/(examples)/dashboard-03/components/analytics-date-picker.tsx deleted file mode 100644 index 54a8ff7ab4..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/analytics-date-picker.tsx +++ /dev/null @@ -1,61 +0,0 @@ -"use client" - -import * as React from "react" -import { addDays, format } from "date-fns" -import { CalendarIcon } from "lucide-react" -import { type DateRange } from "react-day-picker" - -import { cn } from "@/lib/utils" -import { Button } from "@/registry/new-york-v4/ui/button" -import { Calendar } from "@/registry/new-york-v4/ui/calendar" -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/registry/new-york-v4/ui/popover" - -export function AnalyticsDatePicker() { - const [date, setDate] = React.useState({ - from: new Date(new Date().getFullYear(), 0, 20), - to: addDays(new Date(new Date().getFullYear(), 0, 20), 20), - }) - - return ( - - - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/app-sidebar.tsx b/apps/v4/app/(examples)/dashboard-03/components/app-sidebar.tsx deleted file mode 100644 index cbae5e4c6f..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/app-sidebar.tsx +++ /dev/null @@ -1,84 +0,0 @@ -"use client" - -import * as React from "react" -import { - ChartLineIcon, - FileIcon, - HomeIcon, - LifeBuoy, - Send, - Settings2Icon, - ShoppingBagIcon, - ShoppingCartIcon, - UserIcon, -} from "lucide-react" - -import { Sidebar, SidebarContent } from "@/registry/new-york-v4/ui/sidebar" -import { NavMain } from "@/app/(examples)/dashboard-03/components/nav-main" -import { NavSecondary } from "@/app/(examples)/dashboard-03/components/nav-secondary" - -const data = { - navMain: [ - { - title: "Dashboard", - url: "/dashboard", - icon: HomeIcon, - }, - { - title: "Analytics", - url: "/dashboard/analytics", - icon: ChartLineIcon, - }, - { - title: "Orders", - url: "/dashboard/orders", - icon: ShoppingBagIcon, - }, - { - title: "Products", - url: "/dashboard/products", - icon: ShoppingCartIcon, - }, - { - title: "Invoices", - url: "/dashboard/invoices", - icon: FileIcon, - }, - { - title: "Customers", - url: "/dashboard/customers", - icon: UserIcon, - }, - { - title: "Settings", - url: "/dashboard/settings", - icon: Settings2Icon, - }, - ], - navSecondary: [ - { - title: "Support", - url: "#", - icon: LifeBuoy, - }, - { - title: "Feedback", - url: "#", - icon: Send, - }, - ], -} - -export function AppSidebar({ ...props }: React.ComponentProps) { - return ( - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/chart-revenue.tsx b/apps/v4/app/(examples)/dashboard-03/components/chart-revenue.tsx deleted file mode 100644 index f6cc9eb946..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/chart-revenue.tsx +++ /dev/null @@ -1,110 +0,0 @@ -"use client" - -import { TrendingUp } from "lucide-react" -import { Bar, BarChart, CartesianGrid, XAxis, YAxis } from "recharts" - -import { - Card, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" -import { - ChartContainer, - ChartTooltip, - ChartTooltipContent, - type ChartConfig, -} from "@/registry/new-york-v4/ui/chart" - -const chartData = [ - { month: "January", desktop: 186, mobile: 80 }, - { month: "February", desktop: 305, mobile: 200 }, - { month: "March", desktop: 237, mobile: 120 }, - { month: "April", desktop: 73, mobile: 190 }, - { month: "May", desktop: 209, mobile: 130 }, - { month: "June", desktop: 346, mobile: 140 }, - { month: "July", desktop: 321, mobile: 275 }, - { month: "August", desktop: 132, mobile: 95 }, - { month: "September", desktop: 189, mobile: 225 }, - { month: "October", desktop: 302, mobile: 248 }, - { month: "November", desktop: 342, mobile: 285 }, - { month: "December", desktop: 328, mobile: 290 }, -] - -const chartConfig = { - desktop: { - label: "Desktop", - color: "var(--chart-1)", - }, - mobile: { - label: "Mobile", - color: "var(--chart-2)", - }, -} satisfies ChartConfig - -export function ChartRevenue() { - return ( - - - January - June 2024 - - $45,231.89 - - - - - - - value.slice(0, 3)} - /> - value.toLocaleString()} - domain={[0, "dataMax"]} - /> - } - /> - - - - - - -
- Trending up by 5.2% this month -
-
- Showing total visitors for the last 6 months -
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/chart-visitors.tsx b/apps/v4/app/(examples)/dashboard-03/components/chart-visitors.tsx deleted file mode 100644 index 472af3c5be..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/chart-visitors.tsx +++ /dev/null @@ -1,199 +0,0 @@ -"use client" - -import * as React from "react" -import { Label, Pie, PieChart, Sector } from "recharts" -import type { - PieSectorDataItem, - PieSectorShapeProps, -} from "recharts/types/polar/Pie" - -import { - Card, - CardAction, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" -import { - ChartContainer, - ChartStyle, - ChartTooltip, - ChartTooltipContent, - type ChartConfig, -} from "@/registry/new-york-v4/ui/chart" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" - -const desktopData = [ - { month: "january", desktop: 186, fill: "var(--color-january)" }, - { month: "february", desktop: 305, fill: "var(--color-february)" }, - { month: "march", desktop: 237, fill: "var(--color-march)" }, - { month: "april", desktop: 173, fill: "var(--color-april)" }, - { month: "may", desktop: 209, fill: "var(--color-may)" }, -] - -const chartConfig = { - visitors: { - label: "Visitors", - }, - desktop: { - label: "Desktop", - }, - mobile: { - label: "Mobile", - }, - january: { - label: "January", - color: "var(--chart-1)", - }, - february: { - label: "February", - color: "var(--chart-2)", - }, - march: { - label: "March", - color: "var(--chart-3)", - }, - april: { - label: "April", - color: "var(--chart-4)", - }, - may: { - label: "May", - color: "var(--chart-5)", - }, -} satisfies ChartConfig - -export function ChartVisitors() { - const id = "pie-interactive" - const [activeMonth, setActiveMonth] = React.useState(desktopData[0].month) - - const activeIndex = React.useMemo( - () => desktopData.findIndex((item) => item.month === activeMonth), - [activeMonth] - ) - const months = React.useMemo(() => desktopData.map((item) => item.month), []) - - const renderPieShape = React.useCallback( - ({ index, outerRadius = 0, ...props }: PieSectorShapeProps) => { - if (index === activeIndex) { - return ( - - - - - ) - } - - return - }, - [activeIndex] - ) - - return ( - - - - January - June 2024 - 1,234 visitors - - - - - - - - } - /> - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/mode-toggle.tsx b/apps/v4/app/(examples)/dashboard-03/components/mode-toggle.tsx deleted file mode 100644 index ca63bb877b..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/mode-toggle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -"use client" - -import * as React from "react" -import { MoonIcon, SunIcon } from "lucide-react" -import { useTheme } from "next-themes" - -import { Button } from "@/registry/new-york-v4/ui/button" - -export function ModeToggle() { - const { setTheme, resolvedTheme } = useTheme() - - const toggleTheme = React.useCallback(() => { - setTheme(resolvedTheme === "dark" ? "light" : "dark") - }, [resolvedTheme, setTheme]) - - return ( - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/nav-main.tsx b/apps/v4/app/(examples)/dashboard-03/components/nav-main.tsx deleted file mode 100644 index e445bb29fe..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/nav-main.tsx +++ /dev/null @@ -1,91 +0,0 @@ -"use client" - -import { usePathname } from "next/navigation" -import { ChevronRight, type LucideIcon } from "lucide-react" - -import { - Collapsible, - CollapsibleContent, - CollapsibleTrigger, -} from "@/registry/new-york-v4/ui/collapsible" -import { - SidebarGroup, - SidebarGroupLabel, - SidebarMenu, - SidebarMenuAction, - SidebarMenuButton, - SidebarMenuItem, - SidebarMenuSub, - SidebarMenuSubButton, - SidebarMenuSubItem, -} from "@/registry/new-york-v4/ui/sidebar" - -export function NavMain({ - items, -}: { - items: { - title: string - url: string - icon: LucideIcon - isActive?: boolean - items?: { - title: string - url: string - }[] - disabled?: boolean - }[] -}) { - const pathname = usePathname() - - return ( - - Dashboard - - {items.map((item) => ( - - - - - - {item.title} - - - {item.items?.length ? ( - <> - - - - Toggle - - - - - {item.items?.map((subItem) => ( - - - - {subItem.title} - - - - ))} - - - - ) : null} - - - ))} - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/nav-secondary.tsx b/apps/v4/app/(examples)/dashboard-03/components/nav-secondary.tsx deleted file mode 100644 index 66924a12dc..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/nav-secondary.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import * as React from "react" -import { type LucideIcon } from "lucide-react" - -import { - SidebarGroup, - SidebarGroupContent, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, -} from "@/registry/new-york-v4/ui/sidebar" - -export function NavSecondary({ - items, - ...props -}: { - items: { - title: string - url: string - icon: LucideIcon - }[] -} & React.ComponentPropsWithoutRef) { - return ( - - - - {items.map((item) => ( - - - - - {item.title} - - - - ))} - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/nav-user.tsx b/apps/v4/app/(examples)/dashboard-03/components/nav-user.tsx deleted file mode 100644 index 12c05be3a2..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/nav-user.tsx +++ /dev/null @@ -1,90 +0,0 @@ -"use client" - -import { BadgeCheck, Bell, CreditCard, LogOut, Sparkles } from "lucide-react" - -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/registry/new-york-v4/ui/avatar" -import { Button } from "@/registry/new-york-v4/ui/button" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/registry/new-york-v4/ui/dropdown-menu" - -export function NavUser({ - user, -}: { - user: { - name: string - email: string - avatar: string - } -}) { - return ( - - - - - - -
- - - CN - -
- {user.name} - - {user.email} - -
-
-
- - - - - Upgrade to Pro - - - - - - - Account - - - - Billing - - - - Notifications - - - - - - Log out - -
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/products-table.tsx b/apps/v4/app/(examples)/dashboard-03/components/products-table.tsx deleted file mode 100644 index 2fb0ac58f6..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/products-table.tsx +++ /dev/null @@ -1,217 +0,0 @@ -import { - ArrowUpDownIcon, - EllipsisVerticalIcon, - ListFilterIcon, - PlusIcon, -} from "lucide-react" - -import { Badge } from "@/registry/new-york-v4/ui/badge" -import { Button } from "@/registry/new-york-v4/ui/button" -import { - Card, - CardContent, - CardFooter, - CardHeader, -} from "@/registry/new-york-v4/ui/card" -import { Checkbox } from "@/registry/new-york-v4/ui/checkbox" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@/registry/new-york-v4/ui/dropdown-menu" -import { - Pagination, - PaginationContent, - PaginationEllipsis, - PaginationItem, - PaginationLink, - PaginationNext, - PaginationPrevious, -} from "@/registry/new-york-v4/ui/pagination" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/registry/new-york-v4/ui/table" -import { Tabs, TabsList, TabsTrigger } from "@/registry/new-york-v4/ui/tabs" - -export function ProductsTable({ - products, -}: { - products: { - id: string - name: string - price: number - stock: number - dateAdded: string - status: string - }[] -}) { - return ( - - - - - All Products - In Stock - Low Stock - - - - - -
- - - - - -
-
- - - - - - - - Product - Price - Stock - Status - Date Added - - - - - {products.map((product) => ( - - - - - {product.name} - - ${product.price.toFixed(2)} - - {product.stock} - - - {product.status} - - - - {new Date(product.dateAdded).toLocaleDateString("en-US", { - month: "long", - day: "numeric", - year: "numeric", - })} - - - - - - - - Edit - - Delete - - - - - - ))} - -
-
- -
- Showing 1-10 of 100 products -
- - - - - - - 1 - - - - 2 - - - - 3 - - - - - - - - - -
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/search-form.tsx b/apps/v4/app/(examples)/dashboard-03/components/search-form.tsx deleted file mode 100644 index 0491880e4d..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/search-form.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Search } from "lucide-react" - -import { Label } from "@/registry/new-york-v4/ui/label" -import { SidebarInput } from "@/registry/new-york-v4/ui/sidebar" - -export function SearchForm({ ...props }: React.ComponentProps<"form">) { - return ( -
-
- - - -
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/components/site-header.tsx b/apps/v4/app/(examples)/dashboard-03/components/site-header.tsx deleted file mode 100644 index 4fad66816f..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/components/site-header.tsx +++ /dev/null @@ -1,103 +0,0 @@ -"use client" - -import { Fragment, useMemo } from "react" -import { usePathname } from "next/navigation" -import { SidebarIcon } from "lucide-react" - -import { ThemeSelector } from "@/components/theme-selector" -import { SearchForm } from "@/registry/new-york-v4/blocks/sidebar-16/components/search-form" -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "@/registry/new-york-v4/ui/breadcrumb" -import { Button } from "@/registry/new-york-v4/ui/button" -import { Separator } from "@/registry/new-york-v4/ui/separator" -import { useSidebar } from "@/registry/new-york-v4/ui/sidebar" -import { ModeToggle } from "@/app/(examples)/dashboard-03/components/mode-toggle" -import { NavUser } from "@/app/(examples)/dashboard-03/components/nav-user" - -export function SiteHeader() { - const { toggleSidebar } = useSidebar() - const pathname = usePathname() - - // Faux breadcrumbs for demo. - const breadcrumbs = useMemo(() => { - return pathname - .split("/") - .filter((path) => path !== "") - .map((path, index, array) => ({ - label: path, - href: `/${array.slice(0, index + 1).join("/")}`, - })) - }, [pathname]) - - return ( -
-
- - - - - - - Home - - - - {breadcrumbs.map((breadcrumb, index) => - index === breadcrumbs.length - 1 ? ( - - - {breadcrumb.label} - - - ) : ( - - - - {breadcrumb.label} - - - - - ) - )} - - -
- - - - -
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/customers/page.tsx b/apps/v4/app/(examples)/dashboard-03/customers/page.tsx deleted file mode 100644 index 512a007ea2..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/customers/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -export default function CustomersPage() { - return ( -
-
Input
-
Input 50
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/layout.tsx b/apps/v4/app/(examples)/dashboard-03/layout.tsx deleted file mode 100644 index 6b4daad53c..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/layout.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { cookies } from "next/headers" - -import { - SidebarInset, - SidebarProvider, -} from "@/registry/new-york-v4/ui/sidebar" -import { AppSidebar } from "@/app/(examples)/dashboard-03/components/app-sidebar" -import { SiteHeader } from "@/app/(examples)/dashboard-03/components/site-header" - -export default async function DashboardLayout({ - children, -}: { - children: React.ReactNode -}) { - const cookieStore = await cookies() - const defaultOpen = cookieStore.get("sidebar_state")?.value === "true" - - return ( -
- - -
- - {children} -
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/page.tsx b/apps/v4/app/(examples)/dashboard-03/page.tsx deleted file mode 100644 index 5cc7dce9c8..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/page.tsx +++ /dev/null @@ -1,206 +0,0 @@ -import { type Metadata } from "next" -import { - DownloadIcon, - FilterIcon, - TrendingDownIcon, - TrendingUpIcon, -} from "lucide-react" - -import { Badge } from "@/registry/new-york-v4/ui/badge" -import { Button } from "@/registry/new-york-v4/ui/button" -import { - Card, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" -import { - Tabs, - TabsContent, - TabsList, - TabsTrigger, -} from "@/registry/new-york-v4/ui/tabs" -import { AnalyticsDatePicker } from "@/app/(examples)/dashboard-03/components/analytics-date-picker" -import { ChartRevenue } from "@/app/(examples)/dashboard-03/components/chart-revenue" -import { ChartVisitors } from "@/app/(examples)/dashboard-03/components/chart-visitors" -import { ProductsTable } from "@/app/(examples)/dashboard-03/components/products-table" - -export const metadata: Metadata = { - title: "Dashboard", - description: "An example dashboard to test the new components.", -} - -// Load from database. -const products = [ - { - id: "1", - name: "BJÖRKSNÄS Dining Table", - price: 599.99, - stock: 12, - dateAdded: "2023-06-15", - status: "In Stock", - }, - { - id: "2", - name: "POÄNG Armchair", - price: 249.99, - stock: 28, - dateAdded: "2023-07-22", - status: "In Stock", - }, - { - id: "3", - name: "MALM Bed Frame", - price: 399.99, - stock: 15, - dateAdded: "2023-08-05", - status: "In Stock", - }, - { - id: "4", - name: "KALLAX Shelf Unit", - price: 179.99, - stock: 32, - dateAdded: "2023-09-12", - status: "In Stock", - }, - { - id: "5", - name: "STOCKHOLM Rug", - price: 299.99, - stock: 8, - dateAdded: "2023-10-18", - status: "Low Stock", - }, - { - id: "6", - name: "KIVIK Sofa", - price: 899.99, - stock: 6, - dateAdded: "2023-11-02", - status: "Low Stock", - }, - { - id: "7", - name: "LISABO Coffee Table", - price: 149.99, - stock: 22, - dateAdded: "2023-11-29", - status: "In Stock", - }, - { - id: "8", - name: "HEMNES Bookcase", - price: 249.99, - stock: 17, - dateAdded: "2023-12-10", - status: "In Stock", - }, - { - id: "9", - name: "EKEDALEN Dining Chairs (Set of 2)", - price: 199.99, - stock: 14, - dateAdded: "2024-01-05", - status: "In Stock", - }, - { - id: "10", - name: "FRIHETEN Sleeper Sofa", - price: 799.99, - stock: 9, - dateAdded: "2024-01-18", - status: "Low Stock", - }, -] - -export default function DashboardPage() { - return ( -
- -
- - Overview - Analytics - Reports - - Exports - - -
- - - -
-
- -
- - - Total Revenue - $1,250.00 in the last 30 days - - - - - +12.5% - - - - - - New Customers - -12 customers from last month - - - - - -20% - - - - - - Active Accounts - +2,345 users from last month - - - - - +12.5% - - - - - - Growth Rate - +12.5% increase per month - - - - - +4.5% - - - -
-
- - -
- -
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard-03/settings/page.tsx b/apps/v4/app/(examples)/dashboard-03/settings/page.tsx deleted file mode 100644 index 76bbe89d44..0000000000 --- a/apps/v4/app/(examples)/dashboard-03/settings/page.tsx +++ /dev/null @@ -1,500 +0,0 @@ -import { type Metadata } from "next" - -import { cn } from "@/lib/utils" -import { Button } from "@/registry/new-york-v4/ui/button" -import { - Card, - CardAction, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" -import { Checkbox } from "@/registry/new-york-v4/ui/checkbox" -import { Input } from "@/registry/new-york-v4/ui/input" -import { Label } from "@/registry/new-york-v4/ui/label" -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectLabel, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { Switch } from "@/registry/new-york-v4/ui/switch" -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/registry/new-york-v4/ui/table" -import { - Tabs, - TabsContent, - TabsList, - TabsTrigger, -} from "@/registry/new-york-v4/ui/tabs" - -export const metadata: Metadata = { - title: "Settings", - description: "Manage your account settings", -} - -const timezones = [ - { - label: "Americas", - timezones: [ - { value: "America/New_York", label: "(GMT-5) New York" }, - { value: "America/Los_Angeles", label: "(GMT-8) Los Angeles" }, - { value: "America/Chicago", label: "(GMT-6) Chicago" }, - { value: "America/Toronto", label: "(GMT-5) Toronto" }, - { value: "America/Vancouver", label: "(GMT-8) Vancouver" }, - { value: "America/Sao_Paulo", label: "(GMT-3) São Paulo" }, - ], - }, - { - label: "Europe", - timezones: [ - { value: "Europe/London", label: "(GMT+0) London" }, - { value: "Europe/Paris", label: "(GMT+1) Paris" }, - { value: "Europe/Berlin", label: "(GMT+1) Berlin" }, - { value: "Europe/Rome", label: "(GMT+1) Rome" }, - { value: "Europe/Madrid", label: "(GMT+1) Madrid" }, - { value: "Europe/Amsterdam", label: "(GMT+1) Amsterdam" }, - ], - }, - { - label: "Asia/Pacific", - timezones: [ - { value: "Asia/Tokyo", label: "(GMT+9) Tokyo" }, - { value: "Asia/Shanghai", label: "(GMT+8) Shanghai" }, - { value: "Asia/Singapore", label: "(GMT+8) Singapore" }, - { value: "Asia/Dubai", label: "(GMT+4) Dubai" }, - { value: "Australia/Sydney", label: "(GMT+11) Sydney" }, - { value: "Asia/Seoul", label: "(GMT+9) Seoul" }, - ], - }, -] as const - -const loginHistory = [ - { - date: "2024-01-01", - ip: "192.168.1.1", - location: "New York, USA", - }, - { - date: "2023-12-29", - ip: "172.16.0.100", - location: "London, UK", - }, - { - date: "2023-12-28", - ip: "10.0.0.50", - location: "Toronto, Canada", - }, - { - date: "2023-12-25", - ip: "192.168.2.15", - location: "Sydney, Australia", - }, -] as const - -const activeSessions = [ - { - device: "MacBook Pro", - browser: "Chrome", - os: "macOS", - }, - { - device: "iPhone", - browser: "Safari", - os: "iOS", - }, - { - device: "iPad", - browser: "Safari", - os: "iOS", - }, - { - device: "Android Phone", - browser: "Chrome", - os: "Android", - }, -] as const - -export default function SettingsPage() { - return ( -
- -
- - Account - Security - Notifications - Privacy - -
- - - - Account Settings - - Make changes to your account here. - - - -
- - - - - - - - This is your public display name. - - - - - - - - - - - - - - - -
-
- - - -
- - - Notifications - - Manage how you receive notifications. - - - -
- - - - -
- - -
-
- - -
-
- - -
-
- - Choose how you want to receive notifications. - -
- - - -
- - -
-
- - -
-
- - -
-
- - Choose how you want to receive notifications. - -
-
-
-
- - - -
-
- - - - Security Settings - - Make changes to your security settings here. - - - -
- - - - - - - - This is your current password. - - - - - - - - - - - - - - - - - - - - - This will add an extra layer of security to your account. - Make this an extra long description to test the layout. - - - -
-
- - - -
- - - Login History - - Recent login activities on your account. - - - - - - - Date - - IP - - Location - - - - {loginHistory.map((login) => ( - - -
- {new Date(login.date).toLocaleDateString("en-US", { - year: "numeric", - month: "long", - day: "numeric", - })} - - {login.ip} - -
-
- - {login.ip} - - {login.location} -
- ))} -
-
-
-
- - - Active Sessions - - Current active sessions on your account. - - - - - - - - - - Device - Browser - OS - - - - {activeSessions.map((session) => ( - - {session.device} - {session.browser} - {session.os} - - ))} - -
-
-
-
-
-
- ) -} - -function FieldGroup({ children }: React.ComponentProps<"div">) { - return ( -
- {children} -
- ) -} - -function Field({ children, className, ...props }: React.ComponentProps<"div">) { - return ( -
- {children} -
- ) -} - -function FieldControl({ - children, - className, - ...props -}: React.ComponentProps<"div">) { - return ( -
- {children} -
- ) -} - -function FieldDescription({ - children, - className, - ...props -}: React.ComponentProps<"p">) { - return ( -

- {children} -

- ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/app-sidebar.tsx b/apps/v4/app/(examples)/dashboard/components/app-sidebar.tsx deleted file mode 100644 index 62bf35cb11..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/app-sidebar.tsx +++ /dev/null @@ -1,181 +0,0 @@ -"use client" - -import * as React from "react" -import { - IconCamera, - IconChartBar, - IconDashboard, - IconDatabase, - IconFileAi, - IconFileDescription, - IconFileWord, - IconFolder, - IconHelp, - IconInnerShadowTop, - IconListDetails, - IconReport, - IconSearch, - IconSettings, - IconUsers, -} from "@tabler/icons-react" - -import { - Sidebar, - SidebarContent, - SidebarFooter, - SidebarHeader, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, -} from "@/registry/new-york-v4/ui/sidebar" -import { NavDocuments } from "@/app/(examples)/dashboard/components/nav-documents" -import { NavMain } from "@/app/(examples)/dashboard/components/nav-main" -import { NavSecondary } from "@/app/(examples)/dashboard/components/nav-secondary" -import { NavUser } from "@/app/(examples)/dashboard/components/nav-user" - -const data = { - user: { - name: "shadcn", - email: "m@example.com", - avatar: "/avatars/shadcn.jpg", - }, - navMain: [ - { - title: "Dashboard", - url: "#", - icon: IconDashboard, - }, - { - title: "Lifecycle", - url: "#", - icon: IconListDetails, - }, - { - title: "Analytics", - url: "#", - icon: IconChartBar, - }, - { - title: "Projects", - url: "#", - icon: IconFolder, - }, - { - title: "Team", - url: "#", - icon: IconUsers, - }, - ], - navClouds: [ - { - title: "Capture", - icon: IconCamera, - isActive: true, - url: "#", - items: [ - { - title: "Active Proposals", - url: "#", - }, - { - title: "Archived", - url: "#", - }, - ], - }, - { - title: "Proposal", - icon: IconFileDescription, - url: "#", - items: [ - { - title: "Active Proposals", - url: "#", - }, - { - title: "Archived", - url: "#", - }, - ], - }, - { - title: "Prompts", - icon: IconFileAi, - url: "#", - items: [ - { - title: "Active Proposals", - url: "#", - }, - { - title: "Archived", - url: "#", - }, - ], - }, - ], - navSecondary: [ - { - title: "Settings", - url: "#", - icon: IconSettings, - }, - { - title: "Get Help", - url: "#", - icon: IconHelp, - }, - { - title: "Search", - url: "#", - icon: IconSearch, - }, - ], - documents: [ - { - name: "Data Library", - url: "#", - icon: IconDatabase, - }, - { - name: "Reports", - url: "#", - icon: IconReport, - }, - { - name: "Word Assistant", - url: "#", - icon: IconFileWord, - }, - ], -} - -export function AppSidebar({ ...props }: React.ComponentProps) { - return ( - - - - - - - - Acme Inc. - - - - - - - - - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/chart-area-interactive.tsx b/apps/v4/app/(examples)/dashboard/components/chart-area-interactive.tsx deleted file mode 100644 index cb6b5fc22e..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/chart-area-interactive.tsx +++ /dev/null @@ -1,292 +0,0 @@ -"use client" - -import * as React from "react" -import { Area, AreaChart, CartesianGrid, XAxis } from "recharts" - -import { useIsMobile } from "@/registry/new-york-v4/hooks/use-mobile" -import { - Card, - CardAction, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" -import { - ChartContainer, - ChartTooltip, - ChartTooltipContent, - type ChartConfig, -} from "@/registry/new-york-v4/ui/chart" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { - ToggleGroup, - ToggleGroupItem, -} from "@/registry/new-york-v4/ui/toggle-group" - -export const description = "An interactive area chart" - -const chartData = [ - { date: "2024-04-01", desktop: 222, mobile: 150 }, - { date: "2024-04-02", desktop: 97, mobile: 180 }, - { date: "2024-04-03", desktop: 167, mobile: 120 }, - { date: "2024-04-04", desktop: 242, mobile: 260 }, - { date: "2024-04-05", desktop: 373, mobile: 290 }, - { date: "2024-04-06", desktop: 301, mobile: 340 }, - { date: "2024-04-07", desktop: 245, mobile: 180 }, - { date: "2024-04-08", desktop: 409, mobile: 320 }, - { date: "2024-04-09", desktop: 59, mobile: 110 }, - { date: "2024-04-10", desktop: 261, mobile: 190 }, - { date: "2024-04-11", desktop: 327, mobile: 350 }, - { date: "2024-04-12", desktop: 292, mobile: 210 }, - { date: "2024-04-13", desktop: 342, mobile: 380 }, - { date: "2024-04-14", desktop: 137, mobile: 220 }, - { date: "2024-04-15", desktop: 120, mobile: 170 }, - { date: "2024-04-16", desktop: 138, mobile: 190 }, - { date: "2024-04-17", desktop: 446, mobile: 360 }, - { date: "2024-04-18", desktop: 364, mobile: 410 }, - { date: "2024-04-19", desktop: 243, mobile: 180 }, - { date: "2024-04-20", desktop: 89, mobile: 150 }, - { date: "2024-04-21", desktop: 137, mobile: 200 }, - { date: "2024-04-22", desktop: 224, mobile: 170 }, - { date: "2024-04-23", desktop: 138, mobile: 230 }, - { date: "2024-04-24", desktop: 387, mobile: 290 }, - { date: "2024-04-25", desktop: 215, mobile: 250 }, - { date: "2024-04-26", desktop: 75, mobile: 130 }, - { date: "2024-04-27", desktop: 383, mobile: 420 }, - { date: "2024-04-28", desktop: 122, mobile: 180 }, - { date: "2024-04-29", desktop: 315, mobile: 240 }, - { date: "2024-04-30", desktop: 454, mobile: 380 }, - { date: "2024-05-01", desktop: 165, mobile: 220 }, - { date: "2024-05-02", desktop: 293, mobile: 310 }, - { date: "2024-05-03", desktop: 247, mobile: 190 }, - { date: "2024-05-04", desktop: 385, mobile: 420 }, - { date: "2024-05-05", desktop: 481, mobile: 390 }, - { date: "2024-05-06", desktop: 498, mobile: 520 }, - { date: "2024-05-07", desktop: 388, mobile: 300 }, - { date: "2024-05-08", desktop: 149, mobile: 210 }, - { date: "2024-05-09", desktop: 227, mobile: 180 }, - { date: "2024-05-10", desktop: 293, mobile: 330 }, - { date: "2024-05-11", desktop: 335, mobile: 270 }, - { date: "2024-05-12", desktop: 197, mobile: 240 }, - { date: "2024-05-13", desktop: 197, mobile: 160 }, - { date: "2024-05-14", desktop: 448, mobile: 490 }, - { date: "2024-05-15", desktop: 473, mobile: 380 }, - { date: "2024-05-16", desktop: 338, mobile: 400 }, - { date: "2024-05-17", desktop: 499, mobile: 420 }, - { date: "2024-05-18", desktop: 315, mobile: 350 }, - { date: "2024-05-19", desktop: 235, mobile: 180 }, - { date: "2024-05-20", desktop: 177, mobile: 230 }, - { date: "2024-05-21", desktop: 82, mobile: 140 }, - { date: "2024-05-22", desktop: 81, mobile: 120 }, - { date: "2024-05-23", desktop: 252, mobile: 290 }, - { date: "2024-05-24", desktop: 294, mobile: 220 }, - { date: "2024-05-25", desktop: 201, mobile: 250 }, - { date: "2024-05-26", desktop: 213, mobile: 170 }, - { date: "2024-05-27", desktop: 420, mobile: 460 }, - { date: "2024-05-28", desktop: 233, mobile: 190 }, - { date: "2024-05-29", desktop: 78, mobile: 130 }, - { date: "2024-05-30", desktop: 340, mobile: 280 }, - { date: "2024-05-31", desktop: 178, mobile: 230 }, - { date: "2024-06-01", desktop: 178, mobile: 200 }, - { date: "2024-06-02", desktop: 470, mobile: 410 }, - { date: "2024-06-03", desktop: 103, mobile: 160 }, - { date: "2024-06-04", desktop: 439, mobile: 380 }, - { date: "2024-06-05", desktop: 88, mobile: 140 }, - { date: "2024-06-06", desktop: 294, mobile: 250 }, - { date: "2024-06-07", desktop: 323, mobile: 370 }, - { date: "2024-06-08", desktop: 385, mobile: 320 }, - { date: "2024-06-09", desktop: 438, mobile: 480 }, - { date: "2024-06-10", desktop: 155, mobile: 200 }, - { date: "2024-06-11", desktop: 92, mobile: 150 }, - { date: "2024-06-12", desktop: 492, mobile: 420 }, - { date: "2024-06-13", desktop: 81, mobile: 130 }, - { date: "2024-06-14", desktop: 426, mobile: 380 }, - { date: "2024-06-15", desktop: 307, mobile: 350 }, - { date: "2024-06-16", desktop: 371, mobile: 310 }, - { date: "2024-06-17", desktop: 475, mobile: 520 }, - { date: "2024-06-18", desktop: 107, mobile: 170 }, - { date: "2024-06-19", desktop: 341, mobile: 290 }, - { date: "2024-06-20", desktop: 408, mobile: 450 }, - { date: "2024-06-21", desktop: 169, mobile: 210 }, - { date: "2024-06-22", desktop: 317, mobile: 270 }, - { date: "2024-06-23", desktop: 480, mobile: 530 }, - { date: "2024-06-24", desktop: 132, mobile: 180 }, - { date: "2024-06-25", desktop: 141, mobile: 190 }, - { date: "2024-06-26", desktop: 434, mobile: 380 }, - { date: "2024-06-27", desktop: 448, mobile: 490 }, - { date: "2024-06-28", desktop: 149, mobile: 200 }, - { date: "2024-06-29", desktop: 103, mobile: 160 }, - { date: "2024-06-30", desktop: 446, mobile: 400 }, -] - -const chartConfig = { - visitors: { - label: "Visitors", - }, - desktop: { - label: "Desktop", - color: "var(--primary)", - }, - mobile: { - label: "Mobile", - color: "var(--primary)", - }, -} satisfies ChartConfig - -export function ChartAreaInteractive() { - const isMobile = useIsMobile() - const [timeRange, setTimeRange] = React.useState("90d") - - React.useEffect(() => { - if (isMobile) { - setTimeRange("7d") - } - }, [isMobile]) - - const filteredData = chartData.filter((item) => { - const date = new Date(item.date) - const referenceDate = new Date("2024-06-30") - let daysToSubtract = 90 - if (timeRange === "30d") { - daysToSubtract = 30 - } else if (timeRange === "7d") { - daysToSubtract = 7 - } - const startDate = new Date(referenceDate) - startDate.setDate(startDate.getDate() - daysToSubtract) - return date >= startDate - }) - - return ( - - - Total Visitors - - - Total for the last 3 months - - Last 3 months - - - - Last 3 months - Last 30 days - Last 7 days - - - - - - - - - - - - - - - - - - - { - const date = new Date(value) - return date.toLocaleDateString("en-US", { - month: "short", - day: "numeric", - }) - }} - /> - { - return new Date(value).toLocaleDateString("en-US", { - month: "short", - day: "numeric", - }) - }} - indicator="dot" - /> - } - /> - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/data-table.tsx b/apps/v4/app/(examples)/dashboard/components/data-table.tsx deleted file mode 100644 index def0a697fe..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/data-table.tsx +++ /dev/null @@ -1,807 +0,0 @@ -"use client" - -import * as React from "react" -import { - closestCenter, - DndContext, - KeyboardSensor, - MouseSensor, - TouchSensor, - useSensor, - useSensors, - type DragEndEvent, - type UniqueIdentifier, -} from "@dnd-kit/core" -import { restrictToVerticalAxis } from "@dnd-kit/modifiers" -import { - arrayMove, - SortableContext, - useSortable, - verticalListSortingStrategy, -} from "@dnd-kit/sortable" -import { CSS } from "@dnd-kit/utilities" -import { - IconChevronDown, - IconChevronLeft, - IconChevronRight, - IconChevronsLeft, - IconChevronsRight, - IconCircleCheckFilled, - IconDotsVertical, - IconGripVertical, - IconLayoutColumns, - IconLoader, - IconPlus, - IconTrendingUp, -} from "@tabler/icons-react" -import { - flexRender, - getCoreRowModel, - getFacetedRowModel, - getFacetedUniqueValues, - getFilteredRowModel, - getPaginationRowModel, - getSortedRowModel, - useReactTable, - type ColumnDef, - type ColumnFiltersState, - type Row, - type SortingState, - type VisibilityState, -} from "@tanstack/react-table" -import { Area, AreaChart, CartesianGrid, XAxis } from "recharts" -import { toast } from "sonner" -import { z } from "zod" - -import { useIsMobile } from "@/registry/new-york-v4/hooks/use-mobile" -import { Badge } from "@/registry/new-york-v4/ui/badge" -import { Button } from "@/registry/new-york-v4/ui/button" -import { - ChartContainer, - ChartTooltip, - ChartTooltipContent, - type ChartConfig, -} from "@/registry/new-york-v4/ui/chart" -import { Checkbox } from "@/registry/new-york-v4/ui/checkbox" -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerDescription, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "@/registry/new-york-v4/ui/drawer" -import { - DropdownMenu, - DropdownMenuCheckboxItem, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/registry/new-york-v4/ui/dropdown-menu" -import { Input } from "@/registry/new-york-v4/ui/input" -import { Label } from "@/registry/new-york-v4/ui/label" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { Separator } from "@/registry/new-york-v4/ui/separator" -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/registry/new-york-v4/ui/table" -import { - Tabs, - TabsContent, - TabsList, - TabsTrigger, -} from "@/registry/new-york-v4/ui/tabs" - -export const schema = z.object({ - id: z.number(), - header: z.string(), - type: z.string(), - status: z.string(), - target: z.string(), - limit: z.string(), - reviewer: z.string(), -}) - -// Create a separate component for the drag handle -function DragHandle({ id }: { id: number }) { - const { attributes, listeners } = useSortable({ - id, - }) - - return ( - - ) -} - -const columns: ColumnDef>[] = [ - { - id: "drag", - header: () => null, - cell: ({ row }) => , - }, - { - id: "select", - header: ({ table }) => ( -
- table.toggleAllPageRowsSelected(!!value)} - aria-label="Select all" - /> -
- ), - cell: ({ row }) => ( -
- row.toggleSelected(!!value)} - aria-label="Select row" - /> -
- ), - enableSorting: false, - enableHiding: false, - }, - { - accessorKey: "header", - header: "Header", - cell: ({ row }) => { - return - }, - enableHiding: false, - }, - { - accessorKey: "type", - header: "Section Type", - cell: ({ row }) => ( -
- - {row.original.type} - -
- ), - }, - { - accessorKey: "status", - header: "Status", - cell: ({ row }) => ( - - {row.original.status === "Done" ? ( - - ) : ( - - )} - {row.original.status} - - ), - }, - { - accessorKey: "target", - header: () =>
Target
, - cell: ({ row }) => ( -
{ - e.preventDefault() - toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), { - loading: `Saving ${row.original.header}`, - success: "Done", - error: "Error", - }) - }} - > - - -
- ), - }, - { - accessorKey: "limit", - header: () =>
Limit
, - cell: ({ row }) => ( -
{ - e.preventDefault() - toast.promise(new Promise((resolve) => setTimeout(resolve, 1000)), { - loading: `Saving ${row.original.header}`, - success: "Done", - error: "Error", - }) - }} - > - - -
- ), - }, - { - accessorKey: "reviewer", - header: "Reviewer", - cell: ({ row }) => { - const isAssigned = row.original.reviewer !== "Assign reviewer" - - if (isAssigned) { - return row.original.reviewer - } - - return ( - <> - - - - ) - }, - }, - { - id: "actions", - cell: () => ( - - - - - - Edit - Make a copy - Favorite - - Delete - - - ), - }, -] - -function DraggableRow({ row }: { row: Row> }) { - const { transform, transition, setNodeRef, isDragging } = useSortable({ - id: row.original.id, - }) - - return ( - - {row.getVisibleCells().map((cell) => ( - - {flexRender(cell.column.columnDef.cell, cell.getContext())} - - ))} - - ) -} - -export function DataTable({ - data: initialData, -}: { - data: z.infer[] -}) { - const [data, setData] = React.useState(() => initialData) - const [rowSelection, setRowSelection] = React.useState({}) - const [columnVisibility, setColumnVisibility] = - React.useState({}) - const [columnFilters, setColumnFilters] = React.useState( - [] - ) - const [sorting, setSorting] = React.useState([]) - const [pagination, setPagination] = React.useState({ - pageIndex: 0, - pageSize: 10, - }) - const sortableId = React.useId() - const sensors = useSensors( - useSensor(MouseSensor, {}), - useSensor(TouchSensor, {}), - useSensor(KeyboardSensor, {}) - ) - - const dataIds = React.useMemo( - () => data?.map(({ id }) => id) || [], - [data] - ) - - const table = useReactTable({ - data, - columns, - state: { - sorting, - columnVisibility, - rowSelection, - columnFilters, - pagination, - }, - getRowId: (row) => row.id.toString(), - enableRowSelection: true, - onRowSelectionChange: setRowSelection, - onSortingChange: setSorting, - onColumnFiltersChange: setColumnFilters, - onColumnVisibilityChange: setColumnVisibility, - onPaginationChange: setPagination, - getCoreRowModel: getCoreRowModel(), - getFilteredRowModel: getFilteredRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getSortedRowModel: getSortedRowModel(), - getFacetedRowModel: getFacetedRowModel(), - getFacetedUniqueValues: getFacetedUniqueValues(), - }) - - function handleDragEnd(event: DragEndEvent) { - const { active, over } = event - if (active && over && active.id !== over.id) { - setData((data) => { - const oldIndex = dataIds.indexOf(active.id) - const newIndex = dataIds.indexOf(over.id) - return arrayMove(data, oldIndex, newIndex) - }) - } - } - - return ( - -
- - - - Outline - - Past Performance 3 - - - Key Personnel 2 - - Focus Documents - -
- - - - - - {table - .getAllColumns() - .filter( - (column) => - typeof column.accessorFn !== "undefined" && - column.getCanHide() - ) - .map((column) => { - return ( - - column.toggleVisibility(!!value) - } - > - {column.id} - - ) - })} - - - -
-
- -
- - - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => { - return ( - - {header.isPlaceholder - ? null - : flexRender( - header.column.columnDef.header, - header.getContext() - )} - - ) - })} - - ))} - - - {table.getRowModel().rows?.length ? ( - - {table.getRowModel().rows.map((row) => ( - - ))} - - ) : ( - - - No results. - - - )} - -
-
-
-
-
- {table.getFilteredSelectedRowModel().rows.length} of{" "} - {table.getFilteredRowModel().rows.length} row(s) selected. -
-
-
- - -
-
- Page {table.getState().pagination.pageIndex + 1} of{" "} - {table.getPageCount()} -
-
- - - - -
-
-
-
- -
-
- -
-
- -
-
-
- ) -} - -const chartData = [ - { month: "January", desktop: 186, mobile: 80 }, - { month: "February", desktop: 305, mobile: 200 }, - { month: "March", desktop: 237, mobile: 120 }, - { month: "April", desktop: 73, mobile: 190 }, - { month: "May", desktop: 209, mobile: 130 }, - { month: "June", desktop: 214, mobile: 140 }, -] - -const chartConfig = { - desktop: { - label: "Desktop", - color: "var(--primary)", - }, - mobile: { - label: "Mobile", - color: "var(--primary)", - }, -} satisfies ChartConfig - -function TableCellViewer({ item }: { item: z.infer }) { - const isMobile = useIsMobile() - - return ( - - - - - - - {item.header} - - Showing total visitors for the last 6 months - - -
- {!isMobile && ( - <> - - - - value.slice(0, 3)} - hide - /> - } - /> - - - - - -
-
- Trending up by 5.2% this month{" "} - -
-
- Showing total visitors for the last 6 months. This is just - some random text to test the layout. It spans multiple lines - and should wrap around. -
-
- - - )} -
-
- - -
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- - - - - - -
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/mode-toggle.tsx b/apps/v4/app/(examples)/dashboard/components/mode-toggle.tsx deleted file mode 100644 index 29c689878f..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/mode-toggle.tsx +++ /dev/null @@ -1,27 +0,0 @@ -"use client" - -import * as React from "react" -import { IconBrightness } from "@tabler/icons-react" -import { useTheme } from "next-themes" - -import { Button } from "@/registry/new-york-v4/ui/button" - -export function ModeToggle() { - const { setTheme, resolvedTheme } = useTheme() - - const toggleTheme = React.useCallback(() => { - setTheme(resolvedTheme === "dark" ? "light" : "dark") - }, [resolvedTheme, setTheme]) - - return ( - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/nav-documents.tsx b/apps/v4/app/(examples)/dashboard/components/nav-documents.tsx deleted file mode 100644 index 5a09c82b28..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/nav-documents.tsx +++ /dev/null @@ -1,92 +0,0 @@ -"use client" - -import { - IconDots, - IconFolder, - IconShare3, - IconTrash, - type Icon, -} from "@tabler/icons-react" - -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/registry/new-york-v4/ui/dropdown-menu" -import { - SidebarGroup, - SidebarGroupLabel, - SidebarMenu, - SidebarMenuAction, - SidebarMenuButton, - SidebarMenuItem, - useSidebar, -} from "@/registry/new-york-v4/ui/sidebar" - -export function NavDocuments({ - items, -}: { - items: { - name: string - url: string - icon: Icon - }[] -}) { - const { isMobile } = useSidebar() - - return ( - - Documents - - {items.map((item) => ( - - - - - {item.name} - - - - - - - More - - - - - - Open - - - - Share - - - - - Delete - - - - - ))} - - - - More - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/nav-main.tsx b/apps/v4/app/(examples)/dashboard/components/nav-main.tsx deleted file mode 100644 index 3fcecdd1a0..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/nav-main.tsx +++ /dev/null @@ -1,58 +0,0 @@ -"use client" - -import { IconCirclePlusFilled, IconMail, type Icon } from "@tabler/icons-react" - -import { Button } from "@/registry/new-york-v4/ui/button" -import { - SidebarGroup, - SidebarGroupContent, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, -} from "@/registry/new-york-v4/ui/sidebar" - -export function NavMain({ - items, -}: { - items: { - title: string - url: string - icon?: Icon - }[] -}) { - return ( - - - - - - - Quick Create - - - - - - {items.map((item) => ( - - - {item.icon && } - {item.title} - - - ))} - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/nav-secondary.tsx b/apps/v4/app/(examples)/dashboard/components/nav-secondary.tsx deleted file mode 100644 index e5177a9693..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/nav-secondary.tsx +++ /dev/null @@ -1,71 +0,0 @@ -"use client" - -import * as React from "react" -import { IconBrightness, type Icon } from "@tabler/icons-react" -import { useTheme } from "next-themes" - -import { - SidebarGroup, - SidebarGroupContent, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, -} from "@/registry/new-york-v4/ui/sidebar" -import { Skeleton } from "@/registry/new-york-v4/ui/skeleton" -import { Switch } from "@/registry/new-york-v4/ui/switch" - -export function NavSecondary({ - items, - ...props -}: { - items: { - title: string - url: string - icon: Icon - }[] -} & React.ComponentPropsWithoutRef) { - const { resolvedTheme, setTheme } = useTheme() - const [mounted, setMounted] = React.useState(false) - - React.useEffect(() => { - setMounted(true) - }, []) - - return ( - - - - {items.map((item) => ( - - - - - {item.title} - - - - ))} - - - - - - - - - ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/nav-user.tsx b/apps/v4/app/(examples)/dashboard/components/nav-user.tsx deleted file mode 100644 index bdb066d28e..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/nav-user.tsx +++ /dev/null @@ -1,110 +0,0 @@ -"use client" - -import { - IconCreditCard, - IconDotsVertical, - IconLogout, - IconNotification, - IconUserCircle, -} from "@tabler/icons-react" - -import { - Avatar, - AvatarFallback, - AvatarImage, -} from "@/registry/new-york-v4/ui/avatar" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/registry/new-york-v4/ui/dropdown-menu" -import { - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, - useSidebar, -} from "@/registry/new-york-v4/ui/sidebar" - -export function NavUser({ - user, -}: { - user: { - name: string - email: string - avatar: string - } -}) { - const { isMobile } = useSidebar() - - return ( - - - - - - - - CN - -
- {user.name} - - {user.email} - -
- -
-
- - -
- - - CN - -
- {user.name} - - {user.email} - -
-
-
- - - - - Account - - - - Billing - - - - Notifications - - - - - - Log out - -
-
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/section-cards.tsx b/apps/v4/app/(examples)/dashboard/components/section-cards.tsx deleted file mode 100644 index 8419b5e92a..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/section-cards.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { IconTrendingDown, IconTrendingUp } from "@tabler/icons-react" - -import { Badge } from "@/registry/new-york-v4/ui/badge" -import { - Card, - CardAction, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "@/registry/new-york-v4/ui/card" - -export function SectionCards() { - return ( -
- - - Total Revenue - - $1,250.00 - - - - - +12.5% - - - - -
- Trending up this month -
-
- Visitors for the last 6 months -
-
-
- - - New Customers - - 1,234 - - - - - -20% - - - - -
- Down 20% this period -
-
- Acquisition needs attention -
-
-
- - - Active Accounts - - 45,678 - - - - - +12.5% - - - - -
- Strong user retention -
-
Engagement exceed targets
-
-
- - - Growth Rate - - 4.5% - - - - - +4.5% - - - - -
- Steady performance increase -
-
Meets growth projections
-
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/site-header.tsx b/apps/v4/app/(examples)/dashboard/components/site-header.tsx deleted file mode 100644 index 0796a0aa3a..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/site-header.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Button } from "@/registry/new-york-v4/ui/button" -import { Separator } from "@/registry/new-york-v4/ui/separator" -import { SidebarTrigger } from "@/registry/new-york-v4/ui/sidebar" -import { ModeToggle } from "@/app/(examples)/dashboard/components/mode-toggle" -import { ThemeSelector } from "@/app/(examples)/dashboard/components/theme-selector" - -export function SiteHeader() { - return ( -
-
- - -

Documents

-
- - - -
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/components/theme-selector.tsx b/apps/v4/app/(examples)/dashboard/components/theme-selector.tsx deleted file mode 100644 index a9c2a8cc0a..0000000000 --- a/apps/v4/app/(examples)/dashboard/components/theme-selector.tsx +++ /dev/null @@ -1,103 +0,0 @@ -"use client" - -import { useThemeConfig } from "@/components/active-theme" -import { Label } from "@/registry/new-york-v4/ui/label" -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectLabel, - SelectSeparator, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" - -const DEFAULT_THEMES = [ - { - name: "Default", - value: "default", - }, - { - name: "Blue", - value: "blue", - }, - { - name: "Green", - value: "green", - }, - { - name: "Amber", - value: "amber", - }, -] - -const SCALED_THEMES = [ - { - name: "Default", - value: "default-scaled", - }, - { - name: "Blue", - value: "blue-scaled", - }, -] - -const MONO_THEMES = [ - { - name: "Mono", - value: "mono-scaled", - }, -] - -export function ThemeSelector() { - const { activeTheme, setActiveTheme } = useThemeConfig() - - return ( -
- - -
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/data.json b/apps/v4/app/(examples)/dashboard/data.json deleted file mode 100644 index ec0873641b..0000000000 --- a/apps/v4/app/(examples)/dashboard/data.json +++ /dev/null @@ -1,614 +0,0 @@ -[ - { - "id": 1, - "header": "Cover page", - "type": "Cover page", - "status": "In Process", - "target": "18", - "limit": "5", - "reviewer": "Eddie Lake" - }, - { - "id": 2, - "header": "Table of contents", - "type": "Table of contents", - "status": "Done", - "target": "29", - "limit": "24", - "reviewer": "Eddie Lake" - }, - { - "id": 3, - "header": "Executive summary", - "type": "Narrative", - "status": "Done", - "target": "10", - "limit": "13", - "reviewer": "Eddie Lake" - }, - { - "id": 4, - "header": "Technical approach", - "type": "Narrative", - "status": "Done", - "target": "27", - "limit": "23", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 5, - "header": "Design", - "type": "Narrative", - "status": "In Process", - "target": "2", - "limit": "16", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 6, - "header": "Capabilities", - "type": "Narrative", - "status": "In Process", - "target": "20", - "limit": "8", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 7, - "header": "Integration with existing systems", - "type": "Narrative", - "status": "In Process", - "target": "19", - "limit": "21", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 8, - "header": "Innovation and Advantages", - "type": "Narrative", - "status": "Done", - "target": "25", - "limit": "26", - "reviewer": "Assign reviewer" - }, - { - "id": 9, - "header": "Overview of EMR's Innovative Solutions", - "type": "Technical content", - "status": "Done", - "target": "7", - "limit": "23", - "reviewer": "Assign reviewer" - }, - { - "id": 10, - "header": "Advanced Algorithms and Machine Learning", - "type": "Narrative", - "status": "Done", - "target": "30", - "limit": "28", - "reviewer": "Assign reviewer" - }, - { - "id": 11, - "header": "Adaptive Communication Protocols", - "type": "Narrative", - "status": "Done", - "target": "9", - "limit": "31", - "reviewer": "Assign reviewer" - }, - { - "id": 12, - "header": "Advantages Over Current Technologies", - "type": "Narrative", - "status": "Done", - "target": "12", - "limit": "0", - "reviewer": "Assign reviewer" - }, - { - "id": 13, - "header": "Past Performance", - "type": "Narrative", - "status": "Done", - "target": "22", - "limit": "33", - "reviewer": "Assign reviewer" - }, - { - "id": 14, - "header": "Customer Feedback and Satisfaction Levels", - "type": "Narrative", - "status": "Done", - "target": "15", - "limit": "34", - "reviewer": "Assign reviewer" - }, - { - "id": 15, - "header": "Implementation Challenges and Solutions", - "type": "Narrative", - "status": "Done", - "target": "3", - "limit": "35", - "reviewer": "Assign reviewer" - }, - { - "id": 16, - "header": "Security Measures and Data Protection Policies", - "type": "Narrative", - "status": "In Process", - "target": "6", - "limit": "36", - "reviewer": "Assign reviewer" - }, - { - "id": 17, - "header": "Scalability and Future Proofing", - "type": "Narrative", - "status": "Done", - "target": "4", - "limit": "37", - "reviewer": "Assign reviewer" - }, - { - "id": 18, - "header": "Cost-Benefit Analysis", - "type": "Plain language", - "status": "Done", - "target": "14", - "limit": "38", - "reviewer": "Assign reviewer" - }, - { - "id": 19, - "header": "User Training and Onboarding Experience", - "type": "Narrative", - "status": "Done", - "target": "17", - "limit": "39", - "reviewer": "Assign reviewer" - }, - { - "id": 20, - "header": "Future Development Roadmap", - "type": "Narrative", - "status": "Done", - "target": "11", - "limit": "40", - "reviewer": "Assign reviewer" - }, - { - "id": 21, - "header": "System Architecture Overview", - "type": "Technical content", - "status": "In Process", - "target": "24", - "limit": "18", - "reviewer": "Maya Johnson" - }, - { - "id": 22, - "header": "Risk Management Plan", - "type": "Narrative", - "status": "Done", - "target": "15", - "limit": "22", - "reviewer": "Carlos Rodriguez" - }, - { - "id": 23, - "header": "Compliance Documentation", - "type": "Legal", - "status": "In Process", - "target": "31", - "limit": "27", - "reviewer": "Sarah Chen" - }, - { - "id": 24, - "header": "API Documentation", - "type": "Technical content", - "status": "Done", - "target": "8", - "limit": "12", - "reviewer": "Raj Patel" - }, - { - "id": 25, - "header": "User Interface Mockups", - "type": "Visual", - "status": "In Process", - "target": "19", - "limit": "25", - "reviewer": "Leila Ahmadi" - }, - { - "id": 26, - "header": "Database Schema", - "type": "Technical content", - "status": "Done", - "target": "22", - "limit": "20", - "reviewer": "Thomas Wilson" - }, - { - "id": 27, - "header": "Testing Methodology", - "type": "Technical content", - "status": "In Process", - "target": "17", - "limit": "14", - "reviewer": "Assign reviewer" - }, - { - "id": 28, - "header": "Deployment Strategy", - "type": "Narrative", - "status": "Done", - "target": "26", - "limit": "30", - "reviewer": "Eddie Lake" - }, - { - "id": 29, - "header": "Budget Breakdown", - "type": "Financial", - "status": "In Process", - "target": "13", - "limit": "16", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 30, - "header": "Market Analysis", - "type": "Research", - "status": "Done", - "target": "29", - "limit": "32", - "reviewer": "Sophia Martinez" - }, - { - "id": 31, - "header": "Competitor Comparison", - "type": "Research", - "status": "In Process", - "target": "21", - "limit": "19", - "reviewer": "Assign reviewer" - }, - { - "id": 32, - "header": "Maintenance Plan", - "type": "Technical content", - "status": "Done", - "target": "16", - "limit": "23", - "reviewer": "Alex Thompson" - }, - { - "id": 33, - "header": "User Personas", - "type": "Research", - "status": "In Process", - "target": "27", - "limit": "24", - "reviewer": "Nina Patel" - }, - { - "id": 34, - "header": "Accessibility Compliance", - "type": "Legal", - "status": "Done", - "target": "18", - "limit": "21", - "reviewer": "Assign reviewer" - }, - { - "id": 35, - "header": "Performance Metrics", - "type": "Technical content", - "status": "In Process", - "target": "23", - "limit": "26", - "reviewer": "David Kim" - }, - { - "id": 36, - "header": "Disaster Recovery Plan", - "type": "Technical content", - "status": "Done", - "target": "14", - "limit": "17", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 37, - "header": "Third-party Integrations", - "type": "Technical content", - "status": "In Process", - "target": "25", - "limit": "28", - "reviewer": "Eddie Lake" - }, - { - "id": 38, - "header": "User Feedback Summary", - "type": "Research", - "status": "Done", - "target": "20", - "limit": "15", - "reviewer": "Assign reviewer" - }, - { - "id": 39, - "header": "Localization Strategy", - "type": "Narrative", - "status": "In Process", - "target": "12", - "limit": "19", - "reviewer": "Maria Garcia" - }, - { - "id": 40, - "header": "Mobile Compatibility", - "type": "Technical content", - "status": "Done", - "target": "28", - "limit": "31", - "reviewer": "James Wilson" - }, - { - "id": 41, - "header": "Data Migration Plan", - "type": "Technical content", - "status": "In Process", - "target": "19", - "limit": "22", - "reviewer": "Assign reviewer" - }, - { - "id": 42, - "header": "Quality Assurance Protocols", - "type": "Technical content", - "status": "Done", - "target": "30", - "limit": "33", - "reviewer": "Priya Singh" - }, - { - "id": 43, - "header": "Stakeholder Analysis", - "type": "Research", - "status": "In Process", - "target": "11", - "limit": "14", - "reviewer": "Eddie Lake" - }, - { - "id": 44, - "header": "Environmental Impact Assessment", - "type": "Research", - "status": "Done", - "target": "24", - "limit": "27", - "reviewer": "Assign reviewer" - }, - { - "id": 45, - "header": "Intellectual Property Rights", - "type": "Legal", - "status": "In Process", - "target": "17", - "limit": "20", - "reviewer": "Sarah Johnson" - }, - { - "id": 46, - "header": "Customer Support Framework", - "type": "Narrative", - "status": "Done", - "target": "22", - "limit": "25", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 47, - "header": "Version Control Strategy", - "type": "Technical content", - "status": "In Process", - "target": "15", - "limit": "18", - "reviewer": "Assign reviewer" - }, - { - "id": 48, - "header": "Continuous Integration Pipeline", - "type": "Technical content", - "status": "Done", - "target": "26", - "limit": "29", - "reviewer": "Michael Chen" - }, - { - "id": 49, - "header": "Regulatory Compliance", - "type": "Legal", - "status": "In Process", - "target": "13", - "limit": "16", - "reviewer": "Assign reviewer" - }, - { - "id": 50, - "header": "User Authentication System", - "type": "Technical content", - "status": "Done", - "target": "28", - "limit": "31", - "reviewer": "Eddie Lake" - }, - { - "id": 51, - "header": "Data Analytics Framework", - "type": "Technical content", - "status": "In Process", - "target": "21", - "limit": "24", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 52, - "header": "Cloud Infrastructure", - "type": "Technical content", - "status": "Done", - "target": "16", - "limit": "19", - "reviewer": "Assign reviewer" - }, - { - "id": 53, - "header": "Network Security Measures", - "type": "Technical content", - "status": "In Process", - "target": "29", - "limit": "32", - "reviewer": "Lisa Wong" - }, - { - "id": 54, - "header": "Project Timeline", - "type": "Planning", - "status": "Done", - "target": "14", - "limit": "17", - "reviewer": "Eddie Lake" - }, - { - "id": 55, - "header": "Resource Allocation", - "type": "Planning", - "status": "In Process", - "target": "27", - "limit": "30", - "reviewer": "Assign reviewer" - }, - { - "id": 56, - "header": "Team Structure and Roles", - "type": "Planning", - "status": "Done", - "target": "20", - "limit": "23", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 57, - "header": "Communication Protocols", - "type": "Planning", - "status": "In Process", - "target": "15", - "limit": "18", - "reviewer": "Assign reviewer" - }, - { - "id": 58, - "header": "Success Metrics", - "type": "Planning", - "status": "Done", - "target": "30", - "limit": "33", - "reviewer": "Eddie Lake" - }, - { - "id": 59, - "header": "Internationalization Support", - "type": "Technical content", - "status": "In Process", - "target": "23", - "limit": "26", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 60, - "header": "Backup and Recovery Procedures", - "type": "Technical content", - "status": "Done", - "target": "18", - "limit": "21", - "reviewer": "Assign reviewer" - }, - { - "id": 61, - "header": "Monitoring and Alerting System", - "type": "Technical content", - "status": "In Process", - "target": "25", - "limit": "28", - "reviewer": "Daniel Park" - }, - { - "id": 62, - "header": "Code Review Guidelines", - "type": "Technical content", - "status": "Done", - "target": "12", - "limit": "15", - "reviewer": "Eddie Lake" - }, - { - "id": 63, - "header": "Documentation Standards", - "type": "Technical content", - "status": "In Process", - "target": "27", - "limit": "30", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 64, - "header": "Release Management Process", - "type": "Planning", - "status": "Done", - "target": "22", - "limit": "25", - "reviewer": "Assign reviewer" - }, - { - "id": 65, - "header": "Feature Prioritization Matrix", - "type": "Planning", - "status": "In Process", - "target": "19", - "limit": "22", - "reviewer": "Emma Davis" - }, - { - "id": 66, - "header": "Technical Debt Assessment", - "type": "Technical content", - "status": "Done", - "target": "24", - "limit": "27", - "reviewer": "Eddie Lake" - }, - { - "id": 67, - "header": "Capacity Planning", - "type": "Planning", - "status": "In Process", - "target": "21", - "limit": "24", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 68, - "header": "Service Level Agreements", - "type": "Legal", - "status": "Done", - "target": "26", - "limit": "29", - "reviewer": "Assign reviewer" - } -] diff --git a/apps/v4/app/(examples)/dashboard/layout.tsx b/apps/v4/app/(examples)/dashboard/layout.tsx deleted file mode 100644 index da69ec0595..0000000000 --- a/apps/v4/app/(examples)/dashboard/layout.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { cookies } from "next/headers" - -import { - SidebarInset, - SidebarProvider, -} from "@/registry/new-york-v4/ui/sidebar" -import { AppSidebar } from "@/app/(examples)/dashboard/components/app-sidebar" -import { SiteHeader } from "@/app/(examples)/dashboard/components/site-header" - -import "@/app/(examples)/dashboard/theme.css" - -export default async function DashboardLayout({ - children, -}: { - children: React.ReactNode -}) { - const cookieStore = await cookies() - const defaultOpen = cookieStore.get("sidebar_state")?.value === "true" - - return ( - - - - -
{children}
-
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/page.tsx b/apps/v4/app/(examples)/dashboard/page.tsx deleted file mode 100644 index e6ea868938..0000000000 --- a/apps/v4/app/(examples)/dashboard/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { ChartAreaInteractive } from "@/app/(examples)/dashboard/components/chart-area-interactive" -import { DataTable } from "@/app/(examples)/dashboard/components/data-table" -import { SectionCards } from "@/app/(examples)/dashboard/components/section-cards" -import data from "@/app/(examples)/dashboard/data.json" - -export default function Page() { - return ( -
-
- -
- -
- -
-
- ) -} diff --git a/apps/v4/app/(examples)/dashboard/theme.css b/apps/v4/app/(examples)/dashboard/theme.css deleted file mode 100644 index fd549d6677..0000000000 --- a/apps/v4/app/(examples)/dashboard/theme.css +++ /dev/null @@ -1,105 +0,0 @@ -body { - @apply overscroll-none bg-transparent; -} - -:root { - --font-sans: var(--font-inter); - --header-height: calc(var(--spacing) * 12 + 1px); -} - -.theme-scaled { - @media (min-width: 1024px) { - --radius: 0.6rem; - --text-lg: 1.05rem; - --text-base: 0.85rem; - --text-sm: 0.8rem; - --spacing: 0.222222rem; - } - - [data-slot="card"] { - --spacing: 0.16rem; - } - - [data-slot="select-trigger"], - [data-slot="toggle-group-item"] { - --spacing: 0.222222rem; - } -} - -.theme-default, -.theme-default-scaled { - --primary: var(--color-neutral-600); - --primary-foreground: var(--color-neutral-50); - - @variant dark { - --primary: var(--color-neutral-500); - --primary-foreground: var(--color-neutral-50); - } -} - -.theme-blue, -.theme-blue-scaled { - --primary: var(--color-blue-600); - --primary-foreground: var(--color-blue-50); - - @variant dark { - --primary: var(--color-blue-500); - --primary-foreground: var(--color-blue-50); - } -} - -.theme-green, -.theme-green-scaled { - --primary: var(--color-lime-600); - --primary-foreground: var(--color-lime-50); - - @variant dark { - --primary: var(--color-lime-600); - --primary-foreground: var(--color-lime-50); - } -} - -.theme-amber, -.theme-amber-scaled { - --primary: var(--color-amber-600); - --primary-foreground: var(--color-amber-50); - - @variant dark { - --primary: var(--color-amber-500); - --primary-foreground: var(--color-amber-50); - } -} - -.theme-mono, -.theme-mono-scaled { - --font-sans: var(--font-mono); - --primary: var(--color-neutral-600); - --primary-foreground: var(--color-neutral-50); - - @variant dark { - --primary: var(--color-neutral-500); - --primary-foreground: var(--color-neutral-50); - } - - .rounded-xs, - .rounded-sm, - .rounded-md, - .rounded-lg, - .rounded-xl { - @apply !rounded-none; - border-radius: 0; - } - - .shadow-xs, - .shadow-sm, - .shadow-md, - .shadow-lg, - .shadow-xl { - @apply !shadow-none; - } - - [data-slot="toggle-group"], - [data-slot="toggle-group-item"] { - @apply !rounded-none !shadow-none; - } -} diff --git a/apps/v4/app/(internal)/sink/(pages)/forms/appearance-settings.tsx b/apps/v4/app/(internal)/sink/(pages)/forms/appearance-settings.tsx deleted file mode 100644 index 9ca2857781..0000000000 --- a/apps/v4/app/(internal)/sink/(pages)/forms/appearance-settings.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import Image from "next/image" -import { CheckIcon } from "lucide-react" - -import { - Field, - FieldContent, - FieldDescription, - FieldGroup, - FieldLabel, - FieldLegend, - FieldSeparator, - FieldSet, - FieldTitle, -} from "@/registry/new-york-v4/ui/field" -import { Label } from "@/registry/new-york-v4/ui/label" -import { - RadioGroup, - RadioGroupItem, -} from "@/registry/new-york-v4/ui/radio-group" -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { Switch } from "@/registry/new-york-v4/ui/switch" - -const modes = [ - { - name: "Light", - value: "light", - image: "/placeholder.svg", - }, - { - name: "Dark", - value: "dark", - image: "/placeholder.svg", - }, - { - name: "System", - value: "system", - image: "/placeholder.svg", - }, -] - -const accents = [ - { - name: "Blue", - value: "#007AFF", - }, - { - name: "Purple", - value: "#6A4695", - }, - { - name: "Red", - value: "#FF3B30", - }, - { - name: "Orange", - value: "#FF9500", - }, -] - -export function AppearanceSettings() { - return ( -
- Appearance - - Configure appearance. accent, scroll bar, and more. - - -
- Mode - - Select the mode to use for the appearance. - - - {modes.map((mode) => ( - - {mode.name} - - {mode.name} - - - - ))} - -
- - - - Accent - - Select the accent color to use for the appearance. - - -
- - {accents.map((accent) => ( - - ))} - -
-
- - - - Sidebar Icon Size - - Select the size of the sidebar icons. - - - - - - - - Wallpaper Tinting - - Allow the wallpaper to be tinted with the accent color. - - - - -
-
- ) -} diff --git a/apps/v4/app/(internal)/sink/(pages)/forms/chat-settings.tsx b/apps/v4/app/(internal)/sink/(pages)/forms/chat-settings.tsx deleted file mode 100644 index d77d3b81a4..0000000000 --- a/apps/v4/app/(internal)/sink/(pages)/forms/chat-settings.tsx +++ /dev/null @@ -1,463 +0,0 @@ -"use client" - -import { useState } from "react" -import { CircleIcon, InfoIcon } from "lucide-react" - -import { Button } from "@/registry/new-york-v4/ui/button" -import { Checkbox } from "@/registry/new-york-v4/ui/checkbox" -import { - Field, - FieldContent, - FieldDescription, - FieldGroup, - FieldLabel, - FieldSeparator, - FieldSet, - FieldTitle, -} from "@/registry/new-york-v4/ui/field" -import { - InputGroup, - InputGroupAddon, - InputGroupButton, - InputGroupInput, -} from "@/registry/new-york-v4/ui/input-group" -import { Kbd } from "@/registry/new-york-v4/ui/kbd" -import { - Select, - SelectContent, - SelectItem, - SelectSeparator, - SelectTrigger, - SelectValue, -} from "@/registry/new-york-v4/ui/select" -import { Switch } from "@/registry/new-york-v4/ui/switch" -import { - Tabs, - TabsContent, - TabsList, - TabsTrigger, -} from "@/registry/new-york-v4/ui/tabs" -import { Textarea } from "@/registry/new-york-v4/ui/textarea" -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "@/registry/new-york-v4/ui/tooltip" - -const spokenLanguages = [ - { label: "English", value: "en" }, - { label: "Spanish", value: "es" }, - { label: "French", value: "fr" }, - { label: "German", value: "de" }, - { label: "Italian", value: "it" }, - { label: "Portuguese", value: "pt" }, - { label: "Russian", value: "ru" }, - { label: "Chinese", value: "zh" }, - { label: "Japanese", value: "ja" }, - { label: "Korean", value: "ko" }, - { label: "Arabic", value: "ar" }, - { label: "Hindi", value: "hi" }, - { label: "Bengali", value: "bn" }, - { label: "Telugu", value: "te" }, - { label: "Marathi", value: "mr" }, - { label: "Kannada", value: "kn" }, - { label: "Malayalam", value: "ml" }, -] - -const voices = [ - { label: "Samantha", value: "samantha" }, - { label: "Alex", value: "alex" }, - { label: "Fred", value: "fred" }, - { label: "Victoria", value: "victoria" }, - { label: "Tom", value: "tom" }, - { label: "Karen", value: "karen" }, - { label: "Sam", value: "sam" }, - { label: "Daniel", value: "daniel" }, -] - -const personalities = [ - { - label: "Friendly", - value: "friendly", - description: "Friendly and approachable.", - }, - { - label: "Professional", - value: "professional", - description: "Professional and authoritative.", - }, - { label: "Funny", value: "funny", description: "Funny and light-hearted." }, - { - label: "Sarcastic", - value: "sarcastic", - description: "Sarcastic and witty.", - }, - { label: "Cynical", value: "cynical", description: "Cynical and skeptical." }, -] - -const instructions = [ - { - label: "Witty", - value: "witty", - description: "Use quick and clever responses when appropriate.", - }, - { - label: "Professional", - value: "professional", - description: "Have a professional and authoritative tone.", - }, - { - label: "Funny", - value: "funny", - description: "Use humor and wit to engage the user.", - }, - { - label: "Sarcastic", - value: "sarcastic", - description: "Use sarcasm and wit to engage the user.", - }, - { - label: "Cynical", - value: "cynical", - description: "Use cynicism and skepticism to engage the user.", - }, -] - -export function ChatSettings() { - const [tab, setTab] = useState("general") - const [theme, setTheme] = useState("system") - const [accentColor, setAccentColor] = useState("default") - const [spokenLanguage, setSpokenLanguage] = useState("en") - const [voice, setVoice] = useState("samantha") - const [personality, setPersonality] = useState("friendly") - const [customInstructions, setCustomInstructions] = useState("") - - return ( -
- - - - General - Notifications - Personalization - Security - -
- -
- - - Theme - - - - - Accent Color - - - - - - - Spoken Language - - - For best results, select the language you mainly speak. If - it's not listed, it may still be supported via - auto-detection. - - - - - - - Voice - - - -
-
- - -
- Responses - - Get notified when ChatGPT responds to requests that take time, - like research or image generation. - - - - - - Push notifications - - - -
- -
- Tasks - - Get notified when tasks you've created have updates.{" "} - Manage tasks - - - - - - Push notifications - - - - - - Email notifications - - - -
-
-
- - - - Nickname - - - - - - - - - - - Used to identify you in the chat. N - - - - - - - - - More about you - - Tell us more about yourself. This will be used to help us - personalize your experience. - - -