diff --git a/apps/v4/__registry__/index.tsx b/apps/v4/__registry__/index.tsx index 7feee16455..1669332569 100644 --- a/apps/v4/__registry__/index.tsx +++ b/apps/v4/__registry__/index.tsx @@ -3785,4 +3785,43 @@ export const Index: Record = { }), meta: undefined, }, + "products-01": { + name: "products-01", + description: "A table of products", + type: "registry:block", + registryDependencies: [ + "checkbox", + "badge", + "button", + "dropdown-menu", + "pagination", + "table", + "tabs", + "select", + ], + files: [ + { + path: "registry/blocks/products-01/page.tsx", + type: "registry:page", + target: "app/products/page.tsx", + }, + { + path: "registry/blocks/products-01/components/products-table.tsx", + type: "registry:component", + target: "", + }, + ], + component: React.lazy(async () => { + const mod = await import( + "@/registry/new-york-v4/blocks/products-01/page.tsx" + ) + const exportName = + Object.keys(mod).find( + (key) => + typeof mod[key] === "function" || typeof mod[key] === "object" + ) || item.name + return { default: mod.default || mod[exportName] } + }), + meta: undefined, + }, } diff --git a/apps/v4/registry.json b/apps/v4/registry.json index 16b15246ee..34dc348a67 100644 --- a/apps/v4/registry.json +++ b/apps/v4/registry.json @@ -2721,6 +2721,32 @@ "type": "registry:hook" } ] + }, + { + "name": "products-01", + "type": "registry:block", + "description": "A table of products", + "registryDependencies": [ + "checkbox", + "badge", + "button", + "dropdown-menu", + "pagination", + "table", + "tabs", + "select" + ], + "files": [ + { + "path": "registry/new-york-v4/blocks/products-01/page.tsx", + "type": "registry:page", + "target": "app/products/page.tsx" + }, + { + "path": "registry/new-york-v4/blocks/products-01/components/products-table.tsx", + "type": "registry:component" + } + ] } ] } \ No newline at end of file diff --git a/apps/v4/registry/new-york-v4/blocks/products-01/components/products-table.tsx b/apps/v4/registry/new-york-v4/blocks/products-01/components/products-table.tsx new file mode 100644 index 0000000000..06117b03f0 --- /dev/null +++ b/apps/v4/registry/new-york-v4/blocks/products-01/components/products-table.tsx @@ -0,0 +1,209 @@ +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 { 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 + Archived + + + + + +
+ + + + + +
+
+
+ + + + + + + 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 + + + + + + ))} + +
+
+
+ + + + + + + 1 + + + + 2 + + + + 3 + + + + + + + + + +
+
+ ) +} diff --git a/apps/v4/registry/new-york-v4/blocks/products-01/page.tsx b/apps/v4/registry/new-york-v4/blocks/products-01/page.tsx new file mode 100644 index 0000000000..bd780f0bb8 --- /dev/null +++ b/apps/v4/registry/new-york-v4/blocks/products-01/page.tsx @@ -0,0 +1,173 @@ +import { ProductsTable } from "@/registry/new-york-v4/blocks/products-01/components/products-table" + +// 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", + }, + { + id: "11", + name: "NORDEN Extendable Table", + price: 499.99, + stock: 11, + dateAdded: "2024-01-25", + status: "In Stock", + }, + { + id: "12", + name: "BILLY Bookcase", + price: 129.99, + stock: 42, + dateAdded: "2024-02-03", + status: "In Stock", + }, + { + id: "13", + name: "STRANDMON Wing Chair", + price: 349.99, + stock: 16, + dateAdded: "2024-02-12", + status: "In Stock", + }, + { + id: "14", + name: "MALM Dresser", + price: 279.99, + stock: 19, + dateAdded: "2024-02-27", + status: "In Stock", + }, + { + id: "15", + name: "BRIMNES TV Unit", + price: 149.99, + stock: 23, + dateAdded: "2024-03-08", + status: "In Stock", + }, + { + id: "16", + name: "SÖDERHAMN Sectional Sofa", + price: 1299.99, + stock: 5, + dateAdded: "2024-03-15", + status: "Low Stock", + }, + { + id: "17", + name: "BEKANT Desk", + price: 249.99, + stock: 18, + dateAdded: "2024-03-22", + status: "In Stock", + }, + { + id: "18", + name: "IVAR Storage System", + price: 199.99, + stock: 14, + dateAdded: "2024-04-01", + status: "In Stock", + }, + { + id: "19", + name: "RIBBA Picture Frame Set", + price: 49.99, + stock: 36, + dateAdded: "2024-04-09", + status: "In Stock", + }, + { + id: "20", + name: "EKTORP Loveseat", + price: 499.99, + stock: 12, + dateAdded: "2024-04-15", + status: "In Stock", + }, +] + +export default function ProductsPage() { + return ( +
+ +
+ ) +} diff --git a/apps/v4/registry/new-york-v4/ui/button.tsx b/apps/v4/registry/new-york-v4/ui/button.tsx index e1b5d8a97b..cd0857a005 100644 --- a/apps/v4/registry/new-york-v4/ui/button.tsx +++ b/apps/v4/registry/new-york-v4/ui/button.tsx @@ -5,7 +5,7 @@ import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { diff --git a/apps/v4/registry/new-york-v4/ui/select.tsx b/apps/v4/registry/new-york-v4/ui/select.tsx index 25dded8319..9f47e2747f 100644 --- a/apps/v4/registry/new-york-v4/ui/select.tsx +++ b/apps/v4/registry/new-york-v4/ui/select.tsx @@ -33,7 +33,7 @@ function SelectTrigger({ { return !DEPRECATED_ITEMS.includes(item.name) }) diff --git a/apps/www/public/r/styles/new-york-v4/button.json b/apps/www/public/r/styles/new-york-v4/button.json index 4ef9d085eb..057da4d2af 100644 --- a/apps/www/public/r/styles/new-york-v4/button.json +++ b/apps/www/public/r/styles/new-york-v4/button.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/new-york-v4/ui/button.tsx", - "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", + "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", "type": "registry:ui" } ] diff --git a/apps/www/public/r/styles/new-york-v4/products-01.json b/apps/www/public/r/styles/new-york-v4/products-01.json new file mode 100644 index 0000000000..827f9273a2 --- /dev/null +++ b/apps/www/public/r/styles/new-york-v4/products-01.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "products-01", + "type": "registry:block", + "description": "A table of products", + "registryDependencies": [ + "checkbox", + "badge", + "button", + "dropdown-menu", + "pagination", + "table", + "tabs", + "select" + ], + "files": [ + { + "path": "registry/new-york-v4/blocks/products-01/page.tsx", + "content": "import { ProductsTable } from \"@/registry/new-york-v4/blocks/products-01/components/products-table\"\n\n// Load from database.\nconst products = [\n {\n id: \"1\",\n name: \"BJÖRKSNÄS Dining Table\",\n price: 599.99,\n stock: 12,\n dateAdded: \"2023-06-15\",\n status: \"In Stock\",\n },\n {\n id: \"2\",\n name: \"POÄNG Armchair\",\n price: 249.99,\n stock: 28,\n dateAdded: \"2023-07-22\",\n status: \"In Stock\",\n },\n {\n id: \"3\",\n name: \"MALM Bed Frame\",\n price: 399.99,\n stock: 15,\n dateAdded: \"2023-08-05\",\n status: \"In Stock\",\n },\n {\n id: \"4\",\n name: \"KALLAX Shelf Unit\",\n price: 179.99,\n stock: 32,\n dateAdded: \"2023-09-12\",\n status: \"In Stock\",\n },\n {\n id: \"5\",\n name: \"STOCKHOLM Rug\",\n price: 299.99,\n stock: 8,\n dateAdded: \"2023-10-18\",\n status: \"Low Stock\",\n },\n {\n id: \"6\",\n name: \"KIVIK Sofa\",\n price: 899.99,\n stock: 6,\n dateAdded: \"2023-11-02\",\n status: \"Low Stock\",\n },\n {\n id: \"7\",\n name: \"LISABO Coffee Table\",\n price: 149.99,\n stock: 22,\n dateAdded: \"2023-11-29\",\n status: \"In Stock\",\n },\n {\n id: \"8\",\n name: \"HEMNES Bookcase\",\n price: 249.99,\n stock: 17,\n dateAdded: \"2023-12-10\",\n status: \"In Stock\",\n },\n {\n id: \"9\",\n name: \"EKEDALEN Dining Chairs (Set of 2)\",\n price: 199.99,\n stock: 14,\n dateAdded: \"2024-01-05\",\n status: \"In Stock\",\n },\n {\n id: \"10\",\n name: \"FRIHETEN Sleeper Sofa\",\n price: 799.99,\n stock: 9,\n dateAdded: \"2024-01-18\",\n status: \"Low Stock\",\n },\n {\n id: \"11\",\n name: \"NORDEN Extendable Table\",\n price: 499.99,\n stock: 11,\n dateAdded: \"2024-01-25\",\n status: \"In Stock\",\n },\n {\n id: \"12\",\n name: \"BILLY Bookcase\",\n price: 129.99,\n stock: 42,\n dateAdded: \"2024-02-03\",\n status: \"In Stock\",\n },\n {\n id: \"13\",\n name: \"STRANDMON Wing Chair\",\n price: 349.99,\n stock: 16,\n dateAdded: \"2024-02-12\",\n status: \"In Stock\",\n },\n {\n id: \"14\",\n name: \"MALM Dresser\",\n price: 279.99,\n stock: 19,\n dateAdded: \"2024-02-27\",\n status: \"In Stock\",\n },\n {\n id: \"15\",\n name: \"BRIMNES TV Unit\",\n price: 149.99,\n stock: 23,\n dateAdded: \"2024-03-08\",\n status: \"In Stock\",\n },\n {\n id: \"16\",\n name: \"SÖDERHAMN Sectional Sofa\",\n price: 1299.99,\n stock: 5,\n dateAdded: \"2024-03-15\",\n status: \"Low Stock\",\n },\n {\n id: \"17\",\n name: \"BEKANT Desk\",\n price: 249.99,\n stock: 18,\n dateAdded: \"2024-03-22\",\n status: \"In Stock\",\n },\n {\n id: \"18\",\n name: \"IVAR Storage System\",\n price: 199.99,\n stock: 14,\n dateAdded: \"2024-04-01\",\n status: \"In Stock\",\n },\n {\n id: \"19\",\n name: \"RIBBA Picture Frame Set\",\n price: 49.99,\n stock: 36,\n dateAdded: \"2024-04-09\",\n status: \"In Stock\",\n },\n {\n id: \"20\",\n name: \"EKTORP Loveseat\",\n price: 499.99,\n stock: 12,\n dateAdded: \"2024-04-15\",\n status: \"In Stock\",\n },\n]\n\nexport default function ProductsPage() {\n return (\n
\n \n
\n )\n}\n", + "type": "registry:page", + "target": "app/products/page.tsx" + }, + { + "path": "registry/new-york-v4/blocks/products-01/components/products-table.tsx", + "content": "import {\n ArrowUpDownIcon,\n EllipsisVerticalIcon,\n ListFilterIcon,\n PlusIcon,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/registry/new-york-v4/ui/badge\"\nimport { Button } from \"@/registry/new-york-v4/ui/button\"\nimport { Checkbox } from \"@/registry/new-york-v4/ui/checkbox\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/new-york-v4/ui/dropdown-menu\"\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"@/registry/new-york-v4/ui/pagination\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/new-york-v4/ui/select\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/registry/new-york-v4/ui/table\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/new-york-v4/ui/tabs\"\n\nexport function ProductsTable({\n products,\n}: {\n products: {\n id: string\n name: string\n price: number\n stock: number\n dateAdded: string\n status: string\n }[]\n}) {\n return (\n
\n
\n \n \n All Products\n In Stock\n Low Stock\n Archived\n \n \n \n \n \n
\n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n Product\n Price\n Stock\n Status\n Date Added\n \n \n \n \n {products.map((product) => (\n \n \n \n \n {product.name}\n \n ${product.price.toFixed(2)}\n \n {product.stock}\n \n \n {product.status}\n \n \n \n {new Date(product.dateAdded).toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n })}\n \n \n \n \n \n \n \n Edit\n \n Delete\n \n \n \n \n \n ))}\n \n
\n
\n
\n \n \n \n \n \n \n 1\n \n \n \n 2\n \n \n \n 3\n \n \n \n \n \n \n \n \n \n
\n
\n )\n}\n", + "type": "registry:component" + } + ] +} \ No newline at end of file diff --git a/apps/www/public/r/styles/new-york-v4/select.json b/apps/www/public/r/styles/new-york-v4/select.json index 5600d139e3..3e14723e32 100644 --- a/apps/www/public/r/styles/new-york-v4/select.json +++ b/apps/www/public/r/styles/new-york-v4/select.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/new-york-v4/ui/select.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n {children}\n \n \n \n
\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n", "type": "registry:ui" } ]